中望CAD下C#开发独立运行EXE程序

中望CAD的C#二次开发资料非常的匮乏,反正我在官方基本上找不到资料,在CAD软件中输入HELP弹出的帮助窗口,例子全是VBA的,都什么年代了,谁还用VBA啊。
相对于AUTOCAD,中望CAD还支持一种不同的开发方式,可以开发一个独立的EXE程序,但是前提仍然是依赖本机已经安装了中望CAD。

1.新建工程

正常新建一个C#的Console Applicaiton即可。

2.依赖

C#依赖库就在已经安装的中望CAD目录下,加入以下几个DLL即可。

ZWCAD.exe
ZwDatabaseMgd.dll
ZwManaged.dll

3.示例代码

整个逻辑跟用一个普通库一样,底层通信完全屏蔽掉了。
在实际测试中发现,该种方式在试用版(或者你懂得版本)使用时,迭代所有实例对象会出现崩溃,但是正版没问题。说实话,如果把这个当一个DWG读写库来用,还不如几百美元买一个ODA两年的最便宜的授权,远比这种模式好用多了。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Numerics;
using ZWCAD;
using CommandLine;

namespace ZWCADStartup
{
    internal class Program
    {
        public class Options
        {
            [Option('f', "file", Required = true, HelpText = "DWG File")]
            public string File { get; set; }
        }

        private static void Main(string[] args)
        {
            Parser.Default.ParseArguments(args).WithParsed(Run);
        }

        private static void Run(Options option)
        {
            //参数校验
            if (!File.Exists(option.File))
            {
                return;
            }

            ZcadApplication app = new ZcadApplication();
            app.Visible = false;//不显示窗口

            //打开文档,或者新建文档,此处第二个参数表示只读模式打开
            ZcadDocument zdocument = app.Documents.Open(option.File, true);
            if (zdocument != null)
            {
                //数据库
                ZcadDatabase zdatabase = zdocument.Database;
                //模型空间,有何种方便添加对象的函数。
                ZcadModelSpace modelSpace = zdocument.ModelSpace;
                //遍历所有实体
                for (int i = 0; i < modelSpace.Count; ++i)
                {
                    Console.WriteLine(modelSpace.Item(i).Handle);
                }
                
                //如果数据有修改,需要调用ZcadDocument .Save
                zdocument.Close(false, null);
            }

            //关闭ZWCAD
            app.Quit();
        }
    }
}

你可能感兴趣的:(中望CAD下C#开发独立运行EXE程序)