本篇不从零开始讲如何制造自定义图元,而是教新手们如何设置了环境之后编译张帆书中的代码.

利用vs2010编译 张帆<AutoCAD ObjectARX(VC)开发基础与实例教程>一书中的自定义图元课程代码.

因为张帆都敲完了,我们肯定要先编译一下他的,再仔细地去看他的书,来学习c++,

看懂代码这种事情,就教给各位自己去学习....

诉求点:

张帆书中所使用的vs2005很破旧,但是开发环境必须有,它有平台集v80.

而vs2010敲代码比vs2005好,ctrl+鼠标滚大字体等等,也就诞生出这篇文章了.

以及vs2010是浩辰cad使用的版本,以及e大说了在vs2010上面可以编译各个版本的arx.

虽然现在已经出到了vs2019....

我这么做的目的,是为了避免在其他教程可能会出现的"向导创建"自定义图元的情况.

因为只要用了向导,发生有可能出现的bug,新手就会卡在这里,必须有一份纯代码,让新手去看.

[配置编程环境]

必须的环境:

win10系统环境(貌似xp及以上都可以吧...)

下载Microsoft Visual Studio 2005并安装(安装最后有个错误,不要紧的)

下载Microsoft Visual Studio 2010并安装 +SP1补丁也要安装......目的是在这里敲代码

下载Daffodil.ENU.msi          为了在vs2010上用v80平台集.(貌似我忘记怎么安装的了,下一步下一步?.....)

下载Acad2008 并安装,请保持默认安装在c盘,因为这样可以快速地使用上书中的代码.最终的安装路径是  C:\Program Files (x86)\AutoCAD 2008

下载Acad2008 ARX SDK

安装SDK的时候,要加注册表用管理员方法,见 edata 博客这篇博文

路径就选择到 D:\ObjectARX 2008,

然后 D:\ObjectARX 2008\utils\ObjARXWiz 安装里面的向导.. (注意,本篇不使用这个向导,因为向导新建自定义图元会出现一些bug下面会讲

下载张帆的书和代码...

非必要的vs插件:

下载 Visual AssistX 番茄助手,我用是人家翻译的一个中文版,这个是用来敲代码的时候有个提示...

下载 GhostDoc_v4.9  ///可以快速出现头函数注释

下载 IndentGuide       令代码括号有条参照线.....

[向导的bug]

百度有过一篇,用纯向导的方式做自定义实体的文章,但是因为win10的关系,htm文件的版本貌似被微软更改过,导致所有向导文件会有个错误....

e大说过的方法我都试过了,结果没用.....

即使我在xp虚拟机上面运行也有错(可能是我运行环境的问题),所以必须有个纯代码执行让我迫切的知道自定义实体的构成,而非解决这个bug....

[开干]

解压张帆的代码,看到这两个文件,

Common        是张帆的类库(内裤?)

TriangleEntity 是关于一个三角形自定义图元的,在书中的9.2章节上面.

进入 TriangleEntity 文件夹,用 vs2010 打开 TriangleEntity.sln 然后按图片走流程吧.....

然后完成就可以了....

用ctrl选择两个项目,右击属性,配置所有的配置,选择v80,

如果没有v80,代表你没有安装好 Daffodil.ENU.msi

同样的去修改这两个地方

这样就可以编译了...........若不行,请检查下面的位置:

如果有感叹号,表示路径错了.

如果你的cad2008是默认安装的话,那么箭头的路径是 C:\Program Files (x86)\AutoCAD 2008 这里就不用改,

不是的话就卸载这两个,再改去cad2008的安装路径, 或者改到 D:\ObjectARX 2008\inc

ZfgkTriangleEntityDB 这个也可能出现感叹号,不过先不用理它,因为是编译成功就会自动编译好的.

CSharpUseTriangleEntity  是个c#工程

TriangleEntityDB               自定义图元的DBX工程

VcUseTriangleEntity         控制自定义的逻辑arx工程

如果出现这样的报错,

error C1107: 未能找到程序集“acdbmgd.dll”: 请使用 /AI 或通过设置 LIBPATH 环境变量指定程序集搜索路径

就按图修改到你自己的cad2008安装路径上, 因为这里提供给c#工程的命名空间的位置.

应该没有问题了吧.....

[调试]

把这个c#项目的启动项目路径设置为cad的,

命令行参数是不显示启动的标识.

设置好了就直接用F5,启动cad,

输入netload 加载这个 cs开头的dll.

然后输入命令 AddTriangle ,点击鼠标三次..

你就画了一个自定义图元出来了.

这样已经结束了本教程.....

[加载的bug?]

在winxp的虚拟机内安装了cad2008,不知道为什么使用 netload 之后无法加载dll,可能是依懒性地狱.....

所以我直接在win10上面干了.

[net代码怎么看]

在c#的工程下,刚刚输入命令,和输入三个点的就在这里...

[纯arx]

但是我们要纯arx的话,就要去干掉c#的部分....

这里是arx的生成位置,它和辅助的dll会一起生成在这里的.

调试注意了,直接拖拉arx是不可以的,

可以先 netload dll,再拖拉 arx.

或者使用ap命令加载.
  
但是!!!!!!!
如果把 TriangleEntityDB 工程的后缀从.dll改成.dbx,
那么 VcUseTriangleEntity 工程的[调试]-[命令参数]就可以这样设置
/ld $(OutDir)ZfgkTriangleEntityDB.dbx /ld $(OutDir)ZfgkVcUseTriangleEntity.arx
 

用F5就可以启动并自动加载你的dbx和arx.

不过因为改成了.dbx代表了c#工程不能顺利引用它,也就是达到你能纯arx的目的....

  
arx部分...就要各位拿着张帆的书去研究了...

找不到<map>的错误是:

[vc++目录]  包含目录要写完整:

D:\ObjectARX 2008\inc;$(IncludePath)

[vc++目录]  库目录要写完整:

D:\ObjectARX 2008\lib;$(LibraryPath)

cad.arx 自定义实体之编译第一个项目(甜头)的更多相关文章

  1. 解决双击dwg文件ARX自定义实体提示代理的问题

    双击dwg文件的时候,如果没有通过注册表设置会提示代理实体. 注册表自动加载arx 注册表参考路径 R18.1 是cad版本 ACAD-9001:409 是cad的地区语言,409是英文 ,804是中 ...

  2. 用ARX自定义实体

      本文介绍了构造自定义实体的步骤.必须继承的函数和必须注意的事项 1.新建一个从AcDbEntity继承的类,如EntTest,必须添加的头文件: "stdarx.h",&quo ...

  3. 【CAD】自定义实体的步骤(转)

    本文介绍了构造自定义实体的步骤.必须继承的函数和必须注意的事项 1.新建一个从AcDbEntity继承的类,如EntTest,必须添加的头文件: "stdarx.h"," ...

  4. CAD绘制自定义实体(com接口)

    在cad使用过程中,用户可以绘制自定义实体.点击此处下载演示实例. 调用DrawCustomEntity函数,绘制一个自定义实体对象. 下面代码绘制一个自定义实体,C#代码实现如下: private ...

  5. ARX自定义实体

    本文介绍了构造自定义实体的步骤.必须继承的函数和必须注意的事项 1.新建一个从AcDbEntity继承的类,如EntTest,必须添加的头文件: "stdarx.h"," ...

  6. CAD把自定义实体,变成普通实体(com接口VB语言)

    主要用到函数说明: MxDrawXCustomEvent::MxDrawXCustomEntity::explode 把自定义实体,变成普通实体,详细说明如下: 参数 说明 LONGLONG lEnt ...

  7. CAD实现自定义实体夹点移动(com接口VB语言)

    主要用到函数说明: MxDrawXCustomEvent::MxDrawXCustomEntity::moveGripPointsAt 自定义实体事件,自定义实体夹点被移动,详细说明如下: 参数 说明 ...

  8. CAD得到自定义实体拖放夹点(com接口VB语言)

    主要用到函数说明: MxDrawXCustomEvent::MxDrawXCustomEntity::getGripPoints 自定义实体事件,得到拖放夹点,详细说明如下: 参数 说明 LONGLO ...

  9. CAD控件使用教程 自定义实体的实现

    自定义实体的实现 1 .       自定义实体... 3 1.1      说明... 3 1.2      类的类型信息... 3 1.3      worldDraw.. 4 1.4      ...

随机推荐

  1. 通用高效字符串匹配--Sunday算法

    字符串匹配(查找)算法是一类重要的字符串算法(String Algorithm).有两个字符串, 长度为m的haystack(查找串)和长度为n的needle(模式串), 它们构造自同一个有限的字母表 ...

  2. 2019 医渡云java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.医渡云等公司offer,岗位是Java后端开发,因为发展原因最终选择去了医渡云,入职一年时间了,也成为了面试官 ...

  3. FreeMarker学习系列之一

    一. 基本概念 ${...}: FreeMarker将会输出真实的值来替换大括号内的表达式,这样的表达式插值 FTL 标签 (FreeMarker模板的语言标签): FTL标签和HTML标签有一些相似 ...

  4. 不要在 MySQL 中使用“utf8”,请使用“utf8mb4”

    不要在 MySQL 中使用“utf8”,请使用“utf8mb4” 最近我遇到了一个bug,我试着通过Rails在以“utf8”编码的MariaDB中保存一个UTF-8字符串,然后出现了一个离奇的错误: ...

  5. js 实现watch监听数据变化

    1.js /** * @desc 属性改变监听,属性被set时出发watch的方法,类似vue的watch * @author Jason * @study https://www.jianshu.c ...

  6. 隐马尔科夫模型(Hidden Markov Models) 系列之四

    转自:http://blog.csdn.net/eaglex/article/details/6430389 前向算法(Forward Algorithm) 一.如果计算一个可观察序列的概率?   1 ...

  7. token安全之任意密码重置

    前言 偶然间挖了一个漏洞是密码重置,挖掘过程很有趣,可以参考下. 挖掘过程 在说明之前我们可以先走下正常流程,这样才方便查漏~ 正常流程 第一步骤: 正常填写完,点击下一步发送请求: POST /[U ...

  8. android studio学习----The project encoding (windows-1252) does not match the encoding specified in the Gradle build files (UTF-8)

    Warning:The project encoding (windows-1252) does not match the encoding specified in the Gradle buil ...

  9. java 使用tess4j实现OCR的最简单样例

    网上很多教程没有介绍清楚tessdata的位置,以及怎么配置,并且对中文库的描述也存在问题,这里介绍一个最简单的样例. 1.使用maven,直接引入依赖,确保你的工程JDK是1.8以上 <dep ...

  10. itextpdf中表格中单元格的文字水平垂直居中的设置

    在使用itextpdf中,版本是5.5.6,使用Doucument方式生成pdf时,设置单元格中字体的对齐方式时,发现一些问题,并逐渐找到了解决方式. 给我的经验就是:看官网的例子才能保证代码的效果, ...