ObjectArx开发插件安装及配置

  1. 下载对应版本的ObjectARX SDK和ObjectARXWizard,配置参考基于图层自动识别算法在CAD图纸基础上快速创建Revit BIM模型 – VS2022 + AutoCAD2024 + ObjectARX环境搭建_浙大计算机学院赵健乔-CSDN博客

  2. *注意,出现vs无法自动创建ObjectArx模版项目,一般原因是官方提供的插件配置项里面的版本年份和路径问题,修改配置项的版本年份和路径一般就可以成功创建项目;其次,如果再勾选时遗漏,也可能出现创建某个模版类无效。

  3. *注意,取消错误检查,不取消会编译失败

项目基础设置

  1. 创建一个空的解决方案用于项目测试,如演示项目中的DemoEntity
  2. 右键添加项目,选择c++项目模版中的Autodesk项目
  3. 右键项目添加类->类->选择Autodesk项目
    选择Autodesk项目
    右键添加Objectarx
  4. 项目类型选择自定义实体
    项目类型选择自定义实体
  5. 勾选MFC(不勾选影响没研究过,网上一般资料都是勾选,界面可以用Winform或者WPF,加上.net wrapper模版以后应该就可以具体依赖没有仔细研究过)
    勾选MFC
  6. 项目勾选ATL支持,ATL用在OPM特性面板部分
    勾选ATL
  7. 项目勾选.net mixed支持,.net wrapper,将c++的类封装成managed class,用于c#调用
    勾选.net mixed
  8. 改成Release x64
    Release  x64
  9. 修改错误检查类型
    修改错误检查类型
  10. 属性页设置结果如下
    ![属性页设置]](http://39.102.212.191/wp-content/uploads/2024/08/p10-300×204.png)
  11. 添加 .net wrapper生成时可能报错,缺少System core,添加引用—>程序集—>搜索System.Core->添加成功
    生成报错
    搜索System.Core
    添加成功

创建自定义实体

  1. 右键添加类->Visual c++-> ObjectARX-> ArxWizCustomObject
    添加ArxWizCustomObject类
  2. 如果类名前面是c,可能出现如下结果,没仔细研究过具体影响,可能类似于UE中class前面的首字母标识作用,为了不必要的麻烦,不要用C开头
    ‘C’开头类
    正常字母开头类
  3. 按需勾选DWG,DXF输入输出支持,夹点,ViewPort设置等
    按需添加重载

添加Net wrapper

  1. 右键添加类->Visual c++-> ObjectARX-> ArxWizNETWrapper
    添加NETWrapper
  2. 类名称以及命名空间设置
    添加NETWrapper
  3. 插件模版生成问题
    插件模版生成问题1
    插件模版生成问题2
  4. 插件修正后,就是”:”后添加上Entity
    插件模版修正2

添加OPM

  1. 添加OPM支持,自定义实体里面,直接选择添加ArxAtWizComWrapper,单独项目用ArxAtWizDynProp(动态属性),一般选择第一个,如果需要动态添加一些属性选择第二个
    添OPM支持
  2. 按照如下操作进行选择
    添OPM支持步骤1
    添OPM支持步骤2
    添OPM支持步骤3
  3. 修改对应的“项目名称.h”为“项目名称_i.h”
    修改步骤1
    修改步骤2
  4. 头文件添加对应的”CustomObject.h”
    添加自定义实体引用

项目编写

  1. 参考链接编写 https://blog.csdn.net/LuanShiWong/article/details/126949713
  2. 参考 “code\demo”中项目
  3. Acad::ErrorStatus subGetClassID(CLSID* pClsid) const;用于沟通OPM和Objectarx的Entity,不加属性面板不显示自定义属性
  4. 基础类型不用Set/GetElementValue等,varient需要解析
  5. Objectarx的Entity get函数需要加assertReadEnabled(); set函数需要加assertWriteEnabled();不加的话不能worlddraw,OPM属性面板值改变了,但是图形渲染没变
  6. 枚举重载Set/GetPredefinedValue,用法和Set/GetElementValue相同
  7. 加UI可以用WPF,Winform等,具体用法demo中未展示,就是一个dialog类型的属性,点击new一个window,设置值

Demo源码获取方式

需要项目demo源码的关注公众号:从零写一个几何内核输入:“AutodekOPM模版代码”

您必须 登录 才能发表评论