zoukankan      html  css  js  c++  java
  • Civil 3D CustomDraw .NET混合项目设置

    样例文件中的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 FilesAutodeskAutodesk AutoCAD Civil 3D 2014SampleCivil 3D APICOMVC++CustomDrawInc

    添加库目录

    C:Program FilesAutodeskAutodesk AutoCAD Civil 3D 2014SampleCivil 3D APICOMVC++CustomDrawLib
    这个目录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"

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


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

  • 相关阅读:
    【转贴】SMP、NUMA、MPP体系结构介绍
    【转贴】内存重要参数详解 RAS CAS
    【转贴】内存系列二:深入理解硬件原理
    [百度]将ftp添加到本地映射磁盘的方法
    [百家号]7nm ARM 64核!华为Hi1620高性能CPU公开:3.0GHz
    CISCO系列交换机如何清空配置
    绝对实用 NAT + VLAN +ACL管理企业网络
    思科 vlan 相关操作
    思科路由器的密码忘记了用简单的命令来重置思科路由器密码
    字符串驱动技术—— MethodAddress , MethodName , ObjectInvoke
  • 原文地址:https://www.cnblogs.com/myzw/p/8403936.html
Copyright © 2011-2022 走看看