java 导出CAD:

import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.util.Enumeration;

import com.ysystems.lib.yutil.YutilIOHandler;
import com.ysystems.lib.yutil.YutilIOHandlerName;
import com.ysystems.lib.yutil.YutilProperties;
import com.ysystems.ycad.lib.ydxf.YdxfGetHandler;
import com.ysystems.ycad.lib.yxxf.Yxxf;
import com.ysystems.ycad.lib.yxxf.YxxfPrtViewHandler;
import com.ysystems.ycad.lib.yxxf.YxxfShape;
import com.ysystems.ycad.lib.yxxf.YxxfTblStyle;

public class Demo {
    public static void main(String[] args) {
        Demo demo=new Demo();
        BufferedImage bufimg = demo.createEffect_ycadv1
                ("src=dat/test1.dxf stylesrc=dat/fonts/txt.shx bgcolor=#FF0000 width=640 height=480",
                 640, 480, null);
        
        System.out.println(bufimg);
    }


//==========================================================================
/**
 * Create effect layer - Ycadv type 1 - DXF file view imprint.
 */
private BufferedImage createEffect_ycadv1(String ycadv1PropertiesString,
                                          int img_width, int img_height, Applet applet)
{
    // Create image
    BufferedImage ycadv1image = new BufferedImage(img_width, img_height,
                                                  BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2 = ycadv1image.createGraphics();


    // Imprint image
    // ====

    // Prepend bounds to properties string
     ycadv1PropertiesString = "xoffset=" + 0 + " " +
                             "yoffset=" + 0 + " " +
                             "width="   + ycadv1image.getWidth() + " " +
                             "height="  + ycadv1image.getHeight() + " " +
                             ycadv1PropertiesString;

     createEffect_ycadv1_render(ycadv1PropertiesString, g2, applet);

    // ====


    g2.dispose();


    return ycadv1image;
}
//==========================================================================


//==========================================================================
/**
 * Create effect layer - Ycadv type 1 - DXF file view imprint.
 *<UL>
 *   <LI> Set up drawing:
 *   <LI> - Create drawing
 *   <LI> - Create I/O handler and I/O name in drawing
 *   <LI> - Create Get handler
 *   <LI> Process properties - sets I/O name values
 *   <LI> Set up view handler
 *   <LI> - Create view handler
 *   <LI> Start Input with drawing - viewer is rolling
 *</UL>
 */
private void createEffect_ycadv1_render(String ycadv1PropertiesString,
                                        Graphics jgc, Applet applet)
{
    // System.out.println("++ycadv1:render|BEG");
    // System.out.println("++ycadv1:render|str=[" + ycadv1PropertiesString + "]");
    // System.out.println("++ycadv1:render|jgc=[" + jgc + "]");
    // System.out.println("++ycadv1:render|bnd=[" + xoffset + ":" + yoffset + ":" + width + ":" + height + "]");

    if (ycadv1PropertiesString == null)
    {
        System.out.println("++ycadv1:render|parameter error, ycadv1PropertiesString=null");
        System.out.println("++ycadv1:render|END");
        return;
    }
    if (jgc == null)
    {
        System.out.println("++ycadv1:render|parameter error, jgc=null");
        System.out.println("++ycadv1:render|END");
        return;
    }


    // ============================================================
    // Set up drawing
    //
    // Create drawing
    // Create I/O handler and I/O name in drawing
    // Create Get handler
    // ============================================================

    // Create drawing
    Yxxf D = new Yxxf();

    // Create I/O Handler
    if (applet == null)
        D.iohandler = new YutilIOHandler();
    else
        D.iohandler = new YutilIOHandler(applet);

    // Create empty main drawing ioname
    D.ioname = new YutilIOHandlerName("main");


    // Create Get Handler
    YdxfGetHandler gethandler = new YdxfGetHandler();




    // ============================================================
    // Create and set user properties (props_user)
    // Sets I/O name values
    // ============================================================
    YutilProperties props_user = new YutilProperties();

    // Set bounds defaults (file and url have none)      
    props_user.setPropertiesDefaults("xoffset=" + 0, false);
    props_user.setPropertiesDefaults("yoffset=" + 0, false);
    props_user.setPropertiesDefaults("width="   + 160, false);
    props_user.setPropertiesDefaults("height="  + 120, false);

    // Process properties string populating props_user and Drawing I/O structure.
    createEffect_ycadv1_processProperties(ycadv1PropertiesString, props_user, D);

    // Extract bounds
    int param_xoffset = props_user.getProperty_int("xoffset");
    int param_yoffset = props_user.getProperty_int("yoffset");
    int param_width   = props_user.getProperty_int("width");
    int param_height  = props_user.getProperty_int("height");




    // ============================================================
    // Create view handler
    // Get viewer panel from view handler and add to Applet
    // ============================================================
    // System.out.println("++ycadv1:render|setting up view");

    //
    // Create view handler (Observer)
    //
    YxxfPrtViewHandler vhandler = new YxxfPrtViewHandler();

    // Set parameters in view handler
    // Copy in all properties from props_user that are not used here
    for (Enumeration ep = props_user.propertyNames(); ep.hasMoreElements(); )
    {
        String key = ((String)ep.nextElement()).toLowerCase();
        String keylower = key.toLowerCase();

        if (!keylower.equals("baseurl") &&
            !keylower.equals("src") &&
            !keylower.equals("srcfile") &&
            !keylower.equals("srcurl") &&
            !keylower.startsWith("stylesrc") &&
            !keylower.startsWith("stylesrcfile") &&
            !keylower.startsWith("stylesrcurl"))
        {
            String val = key + "=" + props_user.getProperty(key);
            vhandler.setProperties(val, false);
        }
    }
    vhandler.commandViewHandler_command_init(D, jgc);
    vhandler.commandViewHandler_command_start();


    // ============================================================
    // Start Input
    // ============================================================
    // Start get drawing
    // System.out.println("++ycadv1:render|BEG gethandler.commandGetStart");
    gethandler.commandGetStart(D);
    // System.out.println("++ycadv1:render|END gethandler.commandGetStart");


    // ============================================================
    // Wait for completion
    // ============================================================
    // System.out.println("++ycadv1:render|BEG vhandler.commandViewHandler_command_wait_for_complete");

    vhandler.waitDrawingViewReady();
    // for (int i = 0; i < 12; i++)
    //     vhandler.commandViewHandler_toolbar_zoom_in();
    // vhandler.commandViewHandler_toolbar_zoom_out();
     vhandler.commandViewHandler_toolbar_redraw();
    vhandler.commandViewHandler_command_wait_for_complete();
    // System.out.println("++ycadv1:render|END vhandler.commandViewHandler_command_wait_for_complete");


    // System.out.println("++ycadv1:render|END");
}
//==========================================================================


//==========================================================================
/**
 * Process properties.
 *<UL>
 *  <LI>Set defaults (file and url have none).
 *  <LI>Load properties.
 *  <LI>Set local params.
 *  <LI>All user params examined - do post processing of source names.
 *</UL>
 */
private
void createEffect_ycadv1_processProperties(String ycadv1Properties, YutilProperties props_user, Yxxf D)
{
    // Load properties
    props_user.setProperties(ycadv1Properties, true);


    // Set local params
    // System.out.println("++ycadv1:processProperties|props_user BEG");
    for (Enumeration e = props_user.propertyNames(); e.hasMoreElements(); )
    {
        String key = (String)e.nextElement();
        String val = props_user.getProperty(key);
        // System.out.println("++ycadv1:processProperties|key=[" + key + "],val=[" + val + "]");

        String keylower = key.toLowerCase();


       //
        // Main drawing source
        //
        if (keylower.equals("baseurl"))
        {   // Base URL for all sources
            D.ioname.baseurl = val;
        }
        else


        if (keylower.equals("src"))
        {
            D.ioname.src = val;
        }
        else

        if (keylower.equals("srcfile"))
        {
            D.ioname.srcfile = val;
        }
        else

        if (keylower.equals("srcurl"))
        {
            D.ioname.srcurl = val;
        }
        else


       //
        // Style shape source
        //
        if (keylower.startsWith("stylesrc") ||
            keylower.startsWith("stylesrcfile") ||
            keylower.startsWith("stylesrcurl"))
        {
            String stylename = ""; // Default style name is empty string

            // Extract style name from key name
            if (keylower.startsWith("stylesrc"))
            {
                if (keylower.length() > 8)
                    stylename = keylower.substring(8).toUpperCase();
            }
            else
            if (keylower.startsWith("stylesrcfile"))
            {
                if (keylower.length() > 12)
                    stylename = keylower.substring(12).toUpperCase();
            }
            else
            if (keylower.startsWith("stylesrcurl"))
            {
                if (keylower.length() > 11)
                    stylename = keylower.substring(11).toUpperCase();
            }


            // Find matching style element
            YxxfTblStyle style = D.secTables.findStyle_add(stylename);

            if (style.shape == null)
            {
                style.shape = new YxxfShape(); // all styles will use shapes
            }

            if (style.shape.ioname == null)
            {   // not set yet, create
                style.shape.ioname = new YutilIOHandlerName(stylename);
            }


            // Set proper value
            if (keylower.startsWith("stylesrc"))
                style.shape.ioname.src = val;
            else
            if (keylower.startsWith("stylesrcfile"))
                style.shape.ioname.srcfile = val;
            else
            if (keylower.startsWith("stylesrcurl"))
                style.shape.ioname.srcurl = val;
        }

    }
    // System.out.println("++ycadv1:processProperties|props_user END");


    // All user params examined - do post processing of source names
    // System.out.println("++ycadv1:processProperties|D.ioname=[" + D.ioname + "]");

    // For each style
    // 1) Set iohandler in each style to match main iohandler
    // 2) Set baseurl in each style ioname to match main ioname
    // System.out.println("++ycadv1:processProperties|style ioname.e_ioname BEG");
    for (Enumeration e_ioname = D.secTables.tblStyle.elements(); e_ioname.hasMoreElements(); ) // eieio
    {
        YxxfTblStyle style = (YxxfTblStyle)e_ioname.nextElement();

        if (style.shape == null)
        {
            continue;
        }

        if (style.shape.ioname == null)
        {
            continue;
        }

        // 1)
        style.shape.iohandler = D.iohandler;

        // 2)
        style.shape.ioname.baseurl = D.ioname.baseurl;
        // System.out.println("++ycadv1:processProperties|style ioname:name=[" + style.getName() + "],ioname=[" + style.shape.ioname + "]");
    }
}
}
    // System.out.println("++ycadv1:processProperties|style ioname.e_ioname END");

//==========================================================================

 

java 导出CAD:
CAD:计算机辅助设计(Computer Aided Design)指利用计算机及其图形设备帮助设计人员进行设计工作

AutoCAD的几种文件格式:
1. DWG:是原始图纸格式,包含了图纸所有的信息,Autodesk公司出于安全考虑没有给出详细的格式说明
2. DWF:比DWG文件小很多,用于其他用户浏览,添加备注等,不能编辑
3. DXF:是用于和其他CAD系统交换数据的文件格式,分二进制和ASCII格式,AutoCAD的帮助里包含了DXF文件的详细描述


https://sourceforge.net/projects/ycad/reviews

http://www.iteye.com/topic/821044

 

http://www.zwcad.com/download/

转载于:https://www.cnblogs.com/liuxuelin/p/10008088.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值