样例文件中的CustomDraw项目使用的是COM API,
但COM API不完整,
某些时候需要使用.NET API,
此时需要将C++项目设置成"公共语言运行时支持(/clr)"
但简单的设置并不能实现项目的顺利编译,
因此我试着使用ObjectARX Wizard向导创建.NET COM混合项目,
之后把C3DCustomDarw样例中的代码移植到新建项目中。

创建ObjectARX项目:

我自己汉化过的截面:

选择ObjectARX(AutoCAD扩展)

可能要用到MFC,所以选择共享MFC扩展DLL

我自己修改过的界面,

如果使用原生的向导,
这里可以选择"导入AutoCAD COM接口",
之后在StdAfx.h文件中添加需要引用的Civil 3D相关的.tlb文件。

例如:

选择.NET混合托管代码支持,
下面的AutoCAD Civil 3D也是我自己的向导中,
后续可以手工添加引用的Dll文件。

项目向导完成后,
首先编译一下,
看是否能成功编译,
因为导入tlb文件的原因,
第一次生成旺旺不能成功,
需要编译第二次。
我刚还原的系统,
VS安装有问题,
就遇到了缺少windows sdk 8.1之类的问题。
确保项目能顺利编译后再进行下一步的设置,
以免众多问题交织到一起,
导致问题难以解决。

增加引用路径:

样例文件夹中的Inc文件夹:

C:\Program Files\Autodesk\Autodesk AutoCAD Civil 3D 2014\Sample\Civil 3D API\COM\VC++\CustomDraw\Inc

添加库目录

C:\Program Files\Autodesk\Autodesk AutoCAD Civil 3D 2014\Sample\Civil 3D API\COM\VC++\CustomDraw\Lib
这个目录2014版中是缺失的,需要自行下载,
下载地址:
http://adndevblog.typepad.com/infrastructure/2013/08/autocad-civil-3d-2014-and-custom-draw-api.html
2016版之后是正常的,
不需单独下载。

添加附件依赖项

从样例文件的acrxEntryPoint.h文件中复制内容到项目的acrxEntryPoint.h。

上面截图中的代码有问题,过会儿再修改!

为了代码更清晰,
新建一个类,

在头文件中添加方法如下:

注意这里我使用了static字段。
方法如何实现,
过会儿再看!

添加另一个类,
注意这个类是托管类,
这个类中将使用.NET API操作Civil 3D对象。

添加简单的代码,
用.NET方法输出对象(这里的对象指的是路线)的句柄。

回过头完善C3DCustomDraw.cpp的代码:

修改acrxEntryPoint.cpp中的错误:
记住需要引用头文件
#include
"AeccCustomDraw.h"
#include
"C3DCustomDraw.h"

编译,加载,创建一条路线,程序将自动输出路线的句柄。


这是一个简单的测试,
其中项目设置的步骤很容易出错,
一不小心就可能掉进坑里,
造成程序无法编译。

最新文章

  1. Type.GetType()反射另外项目中的类时返回null的解决方法
  2. 写自己的ASP.NET MVC框架(上)
  3. jquery 给input赋值错误写法
  4. 消息中间件与JMS标准
  5. 二、Spring——AoP
  6. DNS解析过程
  7. java调用Http请求 -HttpURLConnection学习
  8. java 判断某一天是当年的哪一天
  9. Centos 6.2 安装mysql5.5
  10. codevs 访问艺术馆
  11. linux shell: 搜索字符串,剔除包含特定字符的行
  12. 关于inet_addr() 函数
  13. hbase rowkey 的设计
  14. python打包exe
  15. vue-router2.x使用入门
  16. This function has none of Deterministic,no sql,or reads sql data in its declaration and binary logging is enabled(you *might* want to use the less safe log_bin_trust_function_creators variable
  17. java JDBC (三) 修改
  18. ASP.NET Web API 异常处理 HttpResponseException 以及Angularjs获取异常信息并提示
  19. activity和Task 有关的 Intent启动方式结合intent.setFlags()
  20. Python编写登陆接口

热门文章

  1. odoo8 和odoo10区别
  2. 下拉框选择blur与click冲突问题
  3. 警告:Establishing SSL connection without server's identity verification is not recommended
  4. Python 学习 第十四篇:命名元组
  5. NPOI生成excel并下载
  6. 移动H5页面微信支付踩坑之旅(微信支付、单页面路由模拟、按钮加锁、轮询等常见功能)
  7. Yii1.1框架关于日志的配置的简单使用
  8. C#复习笔记(5)--C#5:简化的异步编程(异步编程的基础知识)
  9. mysql_linux(centos7 mysql 5.7.19)
  10. 902. Kth Smallest Element in a BST