中望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<Options>(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();
}
}
}
网友评论