ObjectArx开发插件安装及配置
- 下载对应版本的ObjectARX SDK和ObjectARXWizard,配置参考基于图层自动识别算法在CAD图纸基础上快速创建Revit BIM模型 – VS2022 + AutoCAD2024 + ObjectARX环境搭建_浙大计算机学院赵健乔-CSDN博客
-
*注意,出现vs无法自动创建ObjectArx模版项目,一般原因是官方提供的插件配置项里面的版本年份和路径问题,修改配置项的版本年份和路径一般就可以成功创建项目;其次,如果再勾选时遗漏,也可能出现创建某个模版类无效。
- *注意,取消错误检查,不取消会编译失败
项目基础设置
- 创建一个空的解决方案用于项目测试,如演示项目中的DemoEntity
- 右键添加项目,选择c++项目模版中的Autodesk项目
- 右键项目添加类->类->选择Autodesk项目
- 项目类型选择自定义实体
- 勾选MFC(不勾选影响没研究过,网上一般资料都是勾选,界面可以用Winform或者WPF,加上.net wrapper模版以后应该就可以具体依赖没有仔细研究过)
- 项目勾选ATL支持,ATL用在OPM特性面板部分
- 项目勾选.net mixed支持,.net wrapper,将c++的类封装成managed class,用于c#调用
- 改成Release x64
- 修改错误检查类型
- 属性页设置结果如下
![属性页设置]](http://39.102.212.191/wp-content/uploads/2024/08/p10-300×204.png) - 添加 .net wrapper生成时可能报错,缺少System core,添加引用—>程序集—>搜索System.Core->添加成功
创建自定义实体
- 右键添加类->Visual c++-> ObjectARX-> ArxWizCustomObject
- 如果类名前面是c,可能出现如下结果,没仔细研究过具体影响,可能类似于UE中class前面的首字母标识作用,为了不必要的麻烦,不要用C开头
- 按需勾选DWG,DXF输入输出支持,夹点,ViewPort设置等
添加Net wrapper
- 右键添加类->Visual c++-> ObjectARX-> ArxWizNETWrapper
- 类名称以及命名空间设置
- 插件模版生成问题
- 插件修正后,就是”:”后添加上Entity
添加OPM
- 添加OPM支持,自定义实体里面,直接选择添加ArxAtWizComWrapper,单独项目用ArxAtWizDynProp(动态属性),一般选择第一个,如果需要动态添加一些属性选择第二个
- 按照如下操作进行选择
- 修改对应的“项目名称.h”为“项目名称_i.h”
- 头文件添加对应的”CustomObject.h”
项目编写
- 参考链接编写 https://blog.csdn.net/LuanShiWong/article/details/126949713
- 参考 “code\demo”中项目
- Acad::ErrorStatus subGetClassID(CLSID* pClsid) const;用于沟通OPM和Objectarx的Entity,不加属性面板不显示自定义属性
- 基础类型不用Set/GetElementValue等,varient需要解析
- Objectarx的Entity get函数需要加assertReadEnabled(); set函数需要加assertWriteEnabled();不加的话不能worlddraw,OPM属性面板值改变了,但是图形渲染没变
- 枚举重载Set/GetPredefinedValue,用法和Set/GetElementValue相同
- 加UI可以用WPF,Winform等,具体用法demo中未展示,就是一个dialog类型的属性,点击new一个window,设置值
Demo源码获取方式
需要项目demo源码的关注公众号:从零写一个几何内核输入:“AutodekOPM模版代码”
声明:
本文采用
BY-NC-SA
协议进行授权,如无注明均为原创,转载请注明转自
几何代码及文字整理
本文地址: Autodesk代码实践篇一 AutoCAD自定义实体及OPM模版编码
本文地址: Autodesk代码实践篇一 AutoCAD自定义实体及OPM模版编码
您必须 登录 才能发表评论