样例文件中的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"

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


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

转载于:https://www.cnblogs.com/myzw/p/8403936.html

Civil 3D CustomDraw .NET混合项目设置相关推荐

  1. Civil 3D 二次开发 新建CLR项目出现错误C2143

    新建CLR项目出现错误C2143 按照Objectarx Training创建.net混合项目,编译时出现一下错误: 原因不明: 解决方法: 在Stdafx.h文件中添加: #define WIN32 ...

  2. Civil 3d设置横断面图样式

    一位网友提出这样一个问题: 在使用SectionView.StyleName属性时, 会抛出异常:need to override property StyleName. 我测试的结果一样, 同时测试 ...

  3. AutoCAD/Civil 3D 学习笔记

    Civil学习笔记 1.环境配置 1.添加引用: Civil二次开发需要5个基本的AutoCAD的dll引用-acdbmgd.dll, acmgd.dll, accoremgd.dll, AecBas ...

  4. FME对Autodesk AutoCAD Civil 3D的支持

    原文发布时间:2013-06-18 翻译文章链接:http://fmepedia.safe.com/articles/FAQ/Autodesk-AutoCAD-Civil-3D 翻译:毛毛虫 目前FM ...

  5. 初级php工程师考试,Autodesk AutoCAD Civil 3D初级工程师

    试题说明: 考题数量:共 50 道,考试通过答对题目数:30 题 考试时间:180 分钟 试题种类:单选题和多选题 考试内容: [考试知识点] (10%)概述 (5 题) (20%)基本操作 (10 ...

  6. .NET项目开发的几个非常重要的项目设置

    在开发.NET项目的时候,包括Winform项目和Web方面的项目,编译和部署的时候,都需要考虑到是32位的X86方式,还是64位的方式,有时候还需要进行调试,如果没有合理设置好这些关系,还可能出现无 ...

  7. AutoCAD.net/Map 3D/AIMS/MapGuide/Civil 3D二次开发学习指南

    作者:杜长宇 Autodesk Infrastructure Map Server(AIMS)/MapGuide API二次开发学习指南 Autodesk Infrastructure Map Ser ...

  8. System.Diagnostics.Process启动Civil 3D及AutoCAD

    QQ群友提出问题, 如何启动Civil 3D或者AutoCAD, Kean的博客里有相关的文章 http://through-the-interface.typepad.com/through_the ...

  9. 支持Windows 7的CAD—AutoCAD Civil 3D 2010

    Windows 7终于千呼万唤的出来后,紧跟着的就是应用软件了.有没有支持Windows 7的 CAD软件呢?好消息,现在已经有了,AutoCAD Civil 3D 2010!峻祁连在前面的文章中介绍 ...

最新文章

  1. elasticsearch mapping之dynamic
  2. html中隐藏内容蜘蛛会抓取吗,蜘蛛会抓取识别JS、CSS、JSON,对SEO有什么影响
  3. qtvs添加qchart_如何使用Qt Designer在窗体中插入QChartView?
  4. 算法:单词匹配290. Word Pattern
  5. 基于JSP和sql server小区物业管理系统毕业论文
  6. HTML5期末大作业:绿色特产商城网站设计——绿色特产商城购物网(11页) HTML+CSS+JavaScript 网页设计作业,网页制作作业, 学生网页作业, 网页作业成品, 网页作业模板
  7. 【Android】mina框架使用详情
  8. 前车之鉴:从被回绝的系列原因出发,解读应聘阿里的注意事项
  9. mysql密码过期批处理_批处理脚本一键重置mysql的root密码
  10. java计算机毕业设计青岛地区常见昆虫图鉴与论坛源码+数据库+lw文档+系统
  11. Word控件Spire.Doc 【文本】教程(14) ;如何用图片替换Word中的文字
  12. java连接twitter登录,twitter应用程序只认证java android与twitter4j
  13. h5难做吗_欢庆网:对于H5,可能没你想的那么难!
  14. Mac重装系统失败-没有符合安装资格的软件包
  15. 生活总是麻烦不断,我还不习惯
  16. Javascript 技法100第一篇
  17. ARM 指令 LDR
  18. C++设计模式 - 代理模式详解一
  19. mysql聚合函数求数据总和的语句_以下聚合函数求数据总和的是( )_学小易找答案...
  20. echarts 柱状图形状修改成等腰三角形

热门文章

  1. 一个非常标准的Java连接Oracle数据库的示例代码
  2. ASP.NET GridView中使用搜索框(SearchableGridView)
  3. FFmpeg AVFMT_NOFILE宏定义剖析
  4. C#设计模式(13)——代理模式(Proxy Pattern)
  5. 重识JavaScript 之 数据类型的相互转换
  6. 【通过操作指针,与指针做函数參数#39;实现字串在主串中出现的次数,然后将出现的部分依照要求进行替换 】...
  7. 使用ubuntu 10.04中的中文乱码问题解决
  8. 桌面虚拟化之盗梦空间
  9. VISTA中注册表项LEGACY_****的删除--另一种方法:使用psExec
  10. Go 编码建议——功能篇