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

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


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

Civil 3D CustomDraw .NET混合项目设置的更多相关文章

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

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

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

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

  3. AutoCAD/Civil 3D 学习笔记

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

  4. Civil 3D 2017本地化中VBA程序移植到2018版中

    中国本地化包简直就是一块鸡肋, 但对于某些朋友来说还真离不了: 可惜中国本地化包的推出一直滞后, 在最新版软件出来后1年多, 本地化还不一定能够出来, 即使出来了, 也只能是购买了速博服务的用户才能得 ...

  5. Civil 3D 二次开发 创建Civil 3D 对象—— 01 —— 创建几何空间点

    这一小节,我们创建派生于CivilCreateEntityDemo的类CivilCreateCogoPoint,来创建几何空间点. 1 创建类并添加字段及方法 首先在项目资源管理器中向本项目中添加类, ...

  6. 利用Civil 3D API更改曲面的样式

    如果你需要更改曲面的样式,比如更改等高线的颜色等等,在Civil 3D中,你可以通过在toolspace中选中曲面,然后点右键选择“Edit surface style…”然后切换到“Display” ...

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

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

  8. DirectX API 编程起步 #01 项目设置

    =========================================================== 目录: DirectX API 编程起步 #02 窗口的诞生 DirectX A ...

  9. Hybird应用开发实践(一)使用原生/cordova混合项目

    最近准备尝试hybird开发原生应用,因为公司的项目本来就是原生开发的,所以准备选择cordova作为webview嵌入原生项目的开发方式.这里就以mac上整合ios项目为例. 1. 创建cordov ...

随机推荐

  1. vi十六进制编辑

    指定行:n 光标行之前或之后的n个字符nl 之后 2l 光标位置两个字符后nh 之前 2h 光标位置两个字符前 光标行之上或之下的n个字符nk 之上 1k 光标位置1个字符之上nj 之下 1j 光标位 ...

  2. Autofac踩坑经历

    背景 接口框架使用反射,动态生成Controller,使用Autofac进行依赖注入,并替换默认DependencyResolver及IControllerFactory,Controller实例化代 ...

  3. 面试 16:栈的压入压出队列(剑指 Offer 第 22 题)

    我们今天继续来看看周五留下的习题: 面试题:输入两个整数序列,第一个序列表示栈的压入顺序,请判断二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如:压入序列为{1,2,3,4,5},那{ ...

  4. 移动前端webApp开发点滴积累20140524

    #webApp开发几点体会(移动前端) ##前言 本文旨在记录本人涉足移动webApp开发的几点体会,欢迎分享与指正. ##再见,IE678 移动设备,Android跟iPhone是主流,即使是win ...

  5. WebApi集成Swagger

    1.新建一个WebApi空项目 2.新建一个Person实体类: public class Person { public int ID { get; set; } public string Use ...

  6. [2018福大至诚软工助教]UML设计小结

    [2018福大至诚软工助教]UML设计小结 一.得分 总分(50分) 团队信息 (4分) 队名 (1分) 团队成员的学号与姓名(需要标注队长)(1分) 本次作业的博客链接(1分) 三者完全,4分 团队 ...

  7. scrapy之环境安装

    scrapy之环境安装 在之前我安装了scrapy,但是在pycharm中却无法使用. 具体情况是: 我的电脑上存在多个python,有python2,python3,anaconda,其中anaco ...

  8. Java 学习使用常见的开源连接池

    目录 连接池介绍 自定义连接池 JDBC Tomcat Pool DBCP(DataBase Connection Pool) 使用配置文件来设置DBCP C3P0 Druid 连接池介绍 在说连接池 ...

  9. 启动Tomcat的时候8080被占用

    异常来源:启动Tomcat服务器报错: Several ports (8080, 8009) required by Tomcat v7.0 Server at localhost are alrea ...

  10. Yii2几个要注意的小地方

    本人新手, 刚接触Yii, 记录下遇到的坑, 大神请绕道/ 1. //插入数据到数据库, 需要 new 一下,设置属性: $info = new BasicInfo(); $info -> se ...