www.mxdraw.com
内容索引主面
前一个向上下一个
IMxDrawService 接口

用后台调用,无窗口时,需要使用控件的功能,就使用该组件。

IDL
[ object, uuid(6165D852-038F-4D36-9554-E58CC1C78CC3), dual, nonextensible, helpstring("IMxDrawService interface"), pointer_default(unique) ]
interface IMxDrawService : IDispatch;

MxDrawService.idl

例如: JAVA后台调用例子.

    ActiveXComponent smsg = new ActiveXComponent("MxDrawX.MxDrawService");
    // 获取Active对象
    Dispatch msg = smsg.getObject();
    // 调用组件方法,打开指定dwg文件

    msg.call(msg, "open", myFilePath+dirname+"/"+filename);
    // 参数 jpg保存路径,位图宽度方向的像素,-1取系统默认值:1000 ,位图宽度方向的像素,-1取系统默认值:1000
    Object[] params = new Object[] { myFilePath+picName, 600, 860 };
    //将打开的dwg图纸,保存为jpg文件.

    Object[] colorparams = new Object[] { 255, 255, 255 };
    msg.call(msg, "SetViewColor", colorparams);
    msg.call(msg, "WriteJpg", params);
    //关闭打开的dwg文件
    msg.call(msg, "close");
    smsg.safeRelease();

 

例如: VB代码.

    Dim sver As MxDrawService
    Set sver = New MxDrawService
    sver.Open "c:1.dwg"
    sver.SetViewColor 255, 255, 255
    sver.WriteJpg "c:1.jpg", 1000, 1000
    sver.Close

 

例如: 更多的java调用演示例子.

        package com.jo.work.mxdraw.action;

        import com.jacob.activeX.ActiveXComponent;
        import com.jacob.com.Dispatch;

        public class AutoMxDrawComputeService {

            public static void main(String[] args) throws Exception{
                AutoMxDrawComputeService auto=new AutoMxDrawComputeService();
                auto.autoDraw();
            }



            /*
             * 演示如何在java中调用COM组件
             */
            public void autoDraw() throws Exception{
                 ActiveXComponent smsg = new ActiveXComponent("MxDrawX.MxDrawService");
                 // 获取Active对象
                 Dispatch msg = smsg.getObject();
                 msg.call(msg, "open", "f://empty.dwg");
                 // 调用组件方法,打开指定dwg文件
                 Dispatch databae = msg.call(msg, "GetDatabase").toDispatch();
                 Dispatch blkRec =  databae.call(databae, "CurrentSpace").toDispatch();
                 //文本
                 Object[] text = new Object[] {100,100, "444444", 10};
                 blkRec.call(blkRec,"AddText",text);
                 //线

                 Object[] line = new Object[] {200,200, 700, 200}; 
                 blkRec.call(blkRec,"AddLine",line);
                 //圆

                 Object[] circle = new Object[] {600,600, 50};
                 blkRec.call(blkRec,"AddCircle",circle);
                  //插入图块
                 ActiveXComponent sdatabase = new ActiveXComponent("MxDrawX.MxDrawDatabase");
                 // 获取Active对象
                 Dispatch blkDatabase = sdatabase.getObject();
                 Object[] readdwg = new Object[] {"F://1.dwg",""};
                 blkDatabase.call(blkDatabase, "ReadDwgFile",readdwg);
                 Object[] toblk1 = new Object[] {blkDatabase,"blk1"};
                 databae.call(databae, "Insert",toblk1);
                 Object[] toblk2 = new Object[] {600,600,"blk1",1,0};
                 blkRec.call(blkRec,"InsertBlock",toblk2);
  
                 ActiveXComponent sss = new ActiveXComponent("MxDrawX.MxDrawSelectionSet");
                 Dispatch ss = sss.getObject();
                 ActiveXComponent sfilter = new ActiveXComponent("MxDrawX.MxDrawResbuf");
                 Dispatch filter = sfilter.getObject();
                 Object[] selectparamsrs = new Object[] {filter};
                 ss.call(ss,"AllSelect",selectparamsrs);
                 for (int i = 0; i < ss.get(ss,"Count").toInt(); i++){
                     Object[] paramsrss = new Object[] {i};
                     Dispatch ent = ss.call(ss,"Item",paramsrss).toDispatch();
                     if (ent == null){
                         continue;
                     }
                     if (ent.get(ent,"ObjectName").toString().equals("McDbBlockReference")){
                         //ActiveXComponent blockss = new ActiveXComponent("MxDrawX.MxDrawBlockReference");
                         //Dispatch blockssss = blockss.getObject();
                         Dispatch blkRecs=ent.get(ent,"BlockTableRecord").toDispatch();
        //               Dispatch blkRecsssss=blkRecs.get(blkRecs,"GetEntity").toDispatch();
                         Dispatch iter= blkRecs.call(blkRecs,"NewIterator").toDispatch();
                         Object[] paramsriter = new Object[] {0};
        
         
                         System.out.println(iter.Get);
         
        //               for(int k=0;k<iter.VariantInt;k++){
        //                   Object[] paramsrssit = new Object[] {k};
        //                   Dispatch tmpEnt = blkRecs.get(blkRecs,"GetEntity").toDispatch();
        //               }
        //               System.out.println(iter.VariantInt);
        
        //                 int size=blkRecss.get(blkRecss,"Count").toInt();
        //                 
        //               System.out.println("=size=:"+size);
                     }else if (ent.get(ent,"ObjectName").toString().equals("McDbText")){
                         String texts=ent.get(ent,"TextString").toString();
                         System.out.println("查找的结果:"+texts);
                         ent.put(ent,"TextString",texts+"-替换");
                         System.out.println(ent.get(ent,"TextString"));
                     }
                 }
  
                 //输出文件
                 Object[] paramsrs = new Object[] {"F://a3t.dwg"};
                 msg.call(msg, "SaveDwgFile", paramsrs);
                 smsg.safeRelease(); 
            }
        }

 

例如: C#代码.

           // 创建一个无控件界面的服务器组件对象
         MxDrawService ser = new MxDrawService();

         // 打开文件
         ser.Open("H:\Drawing2.dwg");

         // 得到打开文件的数据库
         MxDrawDatabase databse = ser.GetDatabase();

         // 打开图块文件
         MxDrawDatabase blkDatabase = new MxDrawDatabase();
         blkDatabase.ReadDwgFile("H:\tree.dwg","");

         // 把图块文件插入到前面打开的文件中,用块的形式插入,块名为myblkname
         databse.Insert(blkDatabase, "myblkname");

         // 得到当前打开文件的绘图空间
         MxDrawBlockTableRecord curSpace =  databse.CurrentSpace();

         // 向绘图空间插入一个块引用
         MxDrawBlockReference blkRef =  curSpace.InsertBlock(0, 0, "myblkname");

         // 打碎这个图块引用
         blkRef.Explode();

         // 把当前图纸保存到new.dwg
         ser.SaveDwgFile("H:\new.dwg");
Copyright (c) 2010. All rights reserved.
你认为该帮助怎么样? 发送反馈信息!