CAD二次开发

第一次跳槽来到这家公司(山水比德)

工作的主要任务是对中望CAD软件进行插件的开发工作。用到的主要开发语言是C#语言。开发框架是.NETFramework4.7.2.

熟悉CAD的API接口

主要用到开发接口的两个动态库是ZwDatabaseMgd.dll和ZwManaged.dll。
.在ObjectARX中,“acrxEntryPoint”函数是ARX程序的载入点,程序的初始化和清除均可在该函数中进行,命令在入口函数中注册。而在NET中只需要将命令注册在一个带[CommandMethod()]属性的类中。如:

[assembly:CommandClass(typeof(Sample.CommandClass))]
 namespace Sample{
class CommandClass{
[CommandMethod(“MyCommand”)] 
public void MyCommand()
{
/命令执行代码
}
}

为加快加载速度,可在命名空间前加人[assembly:CommandClass(typeof(命名空间.类名))]属性描述,在加载程序时AutoCAD将直接注册相应命名空间下的类中的命令。否则,AutoCAD将搜索每个类里面注册的命令。
注册命令常用的两种形式:
1)CommandMethodAttribute(string globalName);
2)CommandMethodAttribute(string globalName,CommandFlags flags);
其中CommandFlags枚举值可以用运算符“|”并联。CommandFlags枚举值含义见表51-1。;
在这里插入图片描述
*2、加载程序后自动运行应用程序的方法:定义命令类实现IExtensionApplication接口。该接口包含Initialize与Terminate两个函数。其中Initialize负责加载程序时的初始化操作,Terminate则负责进行卸载程序时的清除操作。

[assembly:ExtensionApplication(typeof(Sample.CommandClass))]
namespace Sample
{
public class CommandClass:IExtensionApplication
{
public void Initialize()
{
/程序加载后立即执行的代码
}
public void Terminate() { 
}
}
}

为加快加载速度,可在命名空间前加入[assembly:ExtensionApplication(typeof(命名空间.类名))属性描述,在加载程序时AutoCAD将直接注册相应命名空间下的类中的命令。否则AutoCAD将搜索dll中所有的类以找到实现IExtensionApplication接口的类。

<think>好的,用户想了解中望CAD插件开发的教程、API文档和示例。首先,我需要回忆之前提供的引用内容。引用[1]提到了一个C++和QT结合的中望CAD二次开发示例,项目地址也给出了。引用[2]是关于AutoCAD自定义图案的示例,可能和中望CAD相关度不高,但可以作为参考。 用户需要的是开发教程、API文档和示例。我应该先推荐官方资源,因为通常官方文档最权威。中望CAD应该有自己的开发者门户,提供API文档和指南。然后,可以提到引用[1]中的示例项目,说明它使用C++和QT,适合初学者,结构清晰,有读取扩展字典的功能。此外,可能还需要提到开发环境配置,比如需要安装中望CAD的开发包,使用Visual Studio和QT Creator等工具。 还需要考虑用户可能的开发语言偏好,虽然示例是C++,但中望CAD可能支持其他语言如.NET或LISP,不过根据引用[1],C++是主要语言。另外,应该建议用户查阅官方文档,加入开发者社区,以及分步学习,从简单功能开始实践。 可能用户是初学者,所以需要强调代码示例的重要性,以及如何获取支持。最后,生成相关问题时,要围绕开发环境、调试、功能扩展、与其他工具集成等常见问题。</think>### 中望CAD插件开发指南 #### 1. 开发基础与资源 中望CAD提供基于C++的二次开发接口(ZRX SDK),开发者可通过以下步骤入门: 1. **安装开发包**:从中望官网下载最新版ZRX SDK,包含API头文件、库文件及开发文档[^1] 2. **配置开发环境**:推荐使用Visual Studio(Windows)或QT Creator,需配置包含路径和库链接 3. **学习API结构**:核心类包括`ZwAcadDocument`(文档对象)、`ZwDbEntity`(图元基类)、`ZwGePoint3d`(几何点)等 #### 2. 官方学习资源 - **API文档**:SDK包含完整的`chm`格式帮助文档,涵盖: - 对象模型图 - 接口函数说明(如`createLine()`创建直线) - 事件处理机制(如`OnMouseMove`事件) - **示例项目**:推荐参考开源的CQT界面示例([项目地址](https://gitcode.com/open-source-toolkit/ba061)),包含: ```cpp // 示例:读取扩展字典 ZwDbDictionary* pDict = ZwDbExtendDict::getExtendedDictionary(pEntity); if(pDict) { ZwDbObjectId dictId = pDict->objectId(); // 处理字典数据... } ``` 该代码演示了如何从图元获取扩展字典数据 #### 3. 开发流程示例(以创建自定义图案为例) 1. **创建命令插件**: ```cpp class MyCommand : public ZwRxCommand { void execute() override { ZwGePoint3d startPt(0,0,0); ZwGePoint3d endPt(100,100,0); createLine(startPt, endPt); // 调用API创建直线 } }; ``` 2. **注册命令**: ```cpp ZwRx::registerCommand("MYCMD", new MyCommand); ``` #### 4. 调试与部署 - 调试模式需配置CAD路径为`ZWCAD_DIR/bin/zwcad.exe` - 编译生成`zwx`格式插件文件,通过`NETLOAD`命令加载测试 - 日志输出建议使用`acedPrintf()`函数 #### 5. 进阶开发建议 - 结合QT对话框实现复杂交互(如示例中的参数输入界面) - 学习COM接口开发实现跨应用程序交互 - 参考AutoCAD开发模式进行功能迁移(如自定义图案实现原理[^2])
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值