ObjectArx开发笔记(一)---环境配置

一、版本及下载

  • 开发前须知:必须熟悉C++,包括头文件,库函数,指针,类(继承、虚函数。。。),重载等,可参见笔记–》传送门
  • 官方开发者文档(就没中文,妈蛋的):这是个超级大宝库,可以直接搜索,类及方法(重点),后期推一遍开发者文档,修改网址2020为2018~2022,可获得对应版本CAD的开发文档,翻译可以用谷歌浏览器中英文转换,或者百度翻译,或者有道浏览器插件,这玩意英文是个龙门–》 传送门
    在这里插入图片描述

1.1 文档学习方法:

  • 查找到不懂的方法
    在这里插入图片描述
  • 点到基类看所有可用方法
    在这里插入图片描述
  • 之后选取感兴趣的:研究函数参数、返回值 及 描述等(单词不多,啃啃就习惯了)

小贴士:遇到陌生宏或者函数,按住Ctrl点进去,可以直接跳到该函数声明的头文件,查文档前可以先进行这一步

1.2 版本对应表

在这里插入图片描述

注意:高版本arx不可在低版本上运行

1.3 下载链接

二、 环境设置

2.1 objecarx配置

  • 操作:解压(即运行安装包)到C盘根目录,重命名为object2020
  • 子目录简介
      文件夹名  功能
    classmapobject2020的类图(dwg格式)
    docs开发文本指南,其中setup.exe会将帮助文档集成到VS中,运行并记住安装路径
    inc头文件
    inc-x64面向64位PC开发的头文件
    lib-x64面向64位PC开发的库函数
    samples样例的文件夹
    utils专用程序(影像、三维实体等)
    • 注释:
      • 头文件:为了方便使用,通常将各种函数声明,宏和全局变量的声明放到一个单独的文件中,这个文件就是头文件
      • 库函数:函数库是将一系列常会用的函数编译成目标代码(这些代码常常有优化,运行效率更高),然后给出这些函数的声明放到头文件里,在连接时,将代码导入到EXE中

2.2 环境配置

  • 安装VS2017
    在这里插入图片描述


  • 用向导创建arx

    • 将objectarx arx解压到C:\objectarx 2020目录内
      在这里插入图片描述

    • 安装向导objectarx wizard:功能是将cad和arx做链接,安装过程会自动识别二者目录

    • 创建arx项目,并一路next在这里插入图片描述

    • 这里选这个(否则不能用_T和弹出对话框)
      在这里插入图片描述


    • 设置环境
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

三、文件初识

3.1 编写首个arx插件

  • 进入编程界面
    • 选择:菜单栏中Release,x64
    • 解决方案资源管理器中找到:acrxEntryPoint.cpp文件

      功能:acad.exe是CAD接入操作系统的入口,此文件是编写的arx进入CAD的入口

  • 添加命令(宏方法)

    注意:以下/*…*/行即为需修改行

    #include "StdAfx.h"
    #include "resource.h"
    // 定义组名:新建arx项目时填在方框内的
    #define szRDS _RXST("ADSK")
    
    // 程序自动创建项目类CArxProject1,解决方案名ArxProject1
    class CArxProject1App : public AcRxArxApp {
    public:
    	// 类默认构造函数:此处取空,啥也不做
    	CArxProject1App () : AcRxArxApp () {}
    
    	// 加载并初始化应用:第二篇注册命令方法二会在此处注册命令
    	virtual AcRx::AppRetCode On_kInitAppMsg (void *pkt) {
    		AcRx::AppRetCode retCode =AcRxArxApp::On_kInitAppMsg (pkt) ;
    		// 返回AcRx::AppRetCode类型的状态码给主程序以明确此函数执行正常或异常类型
    		return (retCode) ;
    	}
    
    	// 卸载应用:注册的命令必须在此处卸载命令
    	virtual AcRx::AppRetCode On_kUnloadAppMsg (void *pkt) {
    		//此处为开发者调用卸载命令卸载命令组,命令组来自于页面底部宏
    
    		// 向导写的后续卸载操作
    		AcRx::AppRetCode retCode =AcRxArxApp::On_kUnloadAppMsg (pkt) ;
    		// 卸载依赖项,开发者根据需要填写
    		return (retCode) ;
    	}
    
    	// 注册服务组件区:默认不动
    	virtual void RegisterServerComponents () {}
    	
    	/* --- 宏注册命令会调用的函数:
    					注意函数写法是:组名+命令名(){},
    					二者名字来自于页面底宏---
    	*/
    	static void ADSKMyGroupMyCommand () {
    		// cad打印函数:_T解释见代码底注释,全文件只加了这一句
    		acutPrintf(_T("\n这是第一个arx程序"));
    	}
    
    	// 选择集相关:默认不动
    	static void ADSKMyGroupMyPickFirst () {
    		ads_name result ;
    		int iRet =acedSSGet (ACRX_T("_I"), NULL, NULL, NULL, result) ;
    		if ( iRet == RTNORM ){}
    		else{}
    	}
    	// 会话命令:默认不动
    	static void ADSKMyGroupMySessionCmd () {}
    
    	// lisp命令:默认不动
    	static int ads_MyLispFunction () {
    		return (RTNORM) ;
    	}	
    } ;
    
    // 宏区域
    IMPLEMENT_ARX_ENTRYPOINT(CArxProject1App)
    /* --- 宏对应ADSKMyGroupMyCommand函数
    	   宏注册命令:
    			项目名,
    			组名,
    			命令名(跟ADSKMyGroupMyCommand对应),
    			命令别名(随便写),
    			命令参数(下篇写),
    			默认调用函数(NULL即为上面ADSKMyGroupMyCommand函数)---*/	
    ACED_ARXCOMMAND_ENTRY_AUTO(CArxProject1App, 
    						   ADSKMyGroup, 
    						   MyCommand, 
    						   MyCommandLocal, 
    						   ACRX_CMD_MODAL, 
    						   NULL)
    // 宏对应CHUMyGroupMyPickFirst函数
    ACED_ARXCOMMAND_ENTRY_AUTO(CArxProject1App, 
    						   ADSKMyGroup, 
    						   MyPickFirst, 
    						   MyPickFirstLocal, 
    						   ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET, 
    						   NULL)
    // 宏对应CHUMyGroupMySessionCmd函数
    ACED_ARXCOMMAND_ENTRY_AUTO(CArxProject1App, 
    						   ADSKMyGroup, 
    						   MySessionCmd, 
    						   MySessionCmdLocal, 
    						   ACRX_CMD_MODAL | ACRX_CMD_SESSION, 
    						   NULL)
    // 宏对应ads_MyLispFunction函数
    ACED_ADSSYMBOL_ENTRY_AUTO(CArxProject1App, 
    						  MyLispFunction, 
    						  false)
    
    • _T功能:_T是一个宏,如果项目使用了Unicode字符集(定义了UNICODE宏),则自动在字符串前面加上L,否则字符串不变。因此,Visual C++里面,定义字符串的时候,用_T来保证兼容性。VC支持ascii和unicode两种字符类型,用_T可以保证从ascii编码类型转换到unicode编码类型的时候,程序不需要修改。

3.2 编译

  • 按F5:程序会自动打开CAD2020,下方调出调试界面,需要手动加载,见下节
  • 常见问题
    • 找不到ctype.h
      回复:用everything软件找下ctype.h,然后将路径添加到VC++目录的包含目录中
      注意:类似于C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt
    • 找不到ucrt.lib
      回复:用everything软件找下ucrt.lib,然后将路径添加到VC++目录的库目录中
      注意:类似于C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\ucrt\x64

3.3 加载及运行

  • 方法一:
    • CAD中加载:arx选择L
    • CAD中输入:MyCommand来验证结果,输入MyCommandLocal来验证结果
    • CAD中卸载:arx选择U
  • 方法二:界面加载:菜单栏:工具==>加载应用==》找到arx加载,卸载同位置
  • 方法三:应用内加载:acedArxLoad函数、卸载:acedArxUnload函数,后续篇

四、vs问题补充

  • 解决方案资源管理器误关
    在这里插入图片描述

    解决方法:菜单栏==>视图==>解决方案资源管理器

  • 筛选器丢失
    在这里插入图片描述

    解决方法:点下显示所有文件那个切换按钮即可

  • 拖动到项目文件夹的文件在筛选器中看不到
    在这里插入图片描述

    解决方法:见上图

传送门 返回 列表

  • 7
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: ObjectARX是一种用于AutoCAD软件定制化开发的API。张帆的《ObjectARX开发实例教程》是一本适合初学者入门的书籍,通过实例的方式对ObjectARX进行系统性讲解。 本书共分为18章,从AutoCAD开发环境的搭建开始讲起,引领读者逐步深入了解ObjectARX。每一章都包含了相关实例,全面讲解了AutoCAD编程基础、ObjectARX、COM技术等相关知识点,让读者能够深入了解各种开发技术,如绘图、编辑、图形操作等。 本书中的实例都是实用性强、综合性好的项目,作者在实例中讲述了ObjectARX的各种技术应用,通过详细讲解及代码演示,使读者能够掌握这些方法,进而灵活应用到实际项目中。此外,文中还介绍了D-BASE文件格式、UNIX操作系统等相关知识,以帮助读者更好地理解AutoCAD的架构原理。 总之,张帆的《ObjectARX开发实例教程》是一本详实而全面的AutoCAD相关书籍,适合有编程基础并对AutoCAD感兴趣的读者学习参考。其中的案例演示丰富,对初学者来说十分友好,同时也能帮助已有一定开发经验的开发人员深造提高。 ### 回答2: ObjectARX是AutoCAD的开放式编程接口,使得开发者可以在AutoCAD上创建个性化的工具和应用程序。这使得AutoCAD成为一个灵活性更高的应用程序。 张帆的《ObjectARX开发实例教程》是一本以实践为主的教程,带领读者从零开始学习如何使用ObjectARX进行自定义开发。教程分为四部分,以一个图像处理器为示例介绍了ObjectARX的编写、调试、应用等技术。 第一部分介绍了ObjectARX的介绍、编程工具的准备和环境的搭建。第二部分从绘图交互的角度介绍了如何利用ObjectARX实现AutoCAD图形处理。第三部分以实例介绍了如何利用ObjectARX编写实用功能的插件程序,并介绍了用户界面设计方面的知识。第四部分介绍了如何编写和发布新的应用程序。 在实例教程中,张帆深入深出地剖析了ObjectARX开发的重要概念和技巧,介绍了它们在实际编程过程中的应用。该书比较深入且严谨,可以帮助读者了解ObjectARX中的各种实用细节,同时它也适合有一定编程基础的开发者学习。 总之,《ObjectARX开发实例教程》是入门到高阶的一本好书,对初学者和已有一定开发经验的开发者都非常适用。它既介绍了ObjectARX的基础,又让读者从编写插件和应用程序的角度发掘ObjectARX的灵活性和强大性。这使得读者可以在实践中学习编程技术,提升创造的灵活性和效率。 ### 回答3: “ObjectARX开发实例教程”是一本详细介绍了如何使用Autodesk的ObjectARX编程接口来进行CAD软件二次开发的实战教程。本书作者张帆是一位经验丰富的Autodesk软件开发专家,既有实践经验,也有丰富的教学经验,因此他在本书中将所涉及的内容讲解得非常清晰易懂。 本书从基础概念入手,先介绍了Autodesk的CAD软件和ObjectARX编程接口的基本知识,并且提供了许多实例来帮助读者更好地理解这些知识。在后续章节中,作者则依次介绍了ObjectARX的各个重要模块,如数据库、图形界面、用户界面、3D绘图等,针对每个模块提供了大量的实例代码,并详细讲解了其实现原理和使用技巧。 作为一本实战教程,本书还提供了很多实际应用场景下的编程技巧,例如如何处理大型CAD工程,如何实现CAD联网等等,这些内容将对实际开发非常有帮助。 总之,“ObjectARX开发实例教程”是一本很实用的CAD软件开发教程,对于想要学习ObjectARX编程接口的开发人员来说,读本书将是一种强有力的支持和帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值