几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » ObjectARX(C++)
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


 
 
主题工具 搜索本主题 显示模式
旧 2009-04-16, 09:12 AM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】autocad arx 学习笔记(三)(转载)

autocad arx 学习笔记(三)(转载)
autocad arx 学习笔记(三)(转载)
来源:leo的日志-网易博客()
autocad arx 学习笔记(三)
今天是学习autocad objectarx的第三天,三天来一直在看一本叫《autocad objectarx 0 开发技术指南》技术从书,当今天看objectarx 7开发文档的时候,突然感觉自己都已经看过了,虽然都是英文的。汗,结果两者一样。大汗一把!现在的出版的书… 竟然书上还写着谁谁著。
objectarx应用程序是一个动态链接库,它共享autocad的地址空间并且直接调用autocad函数。
创建一个objectarx应用程序通常包括以下几个步骤:
1、 创建实现新命令的自定义类。一般都是从objectarx提供的类派生出来的自定义类。
2、 决定我们的objectarx应用程序将处理哪一个autocad消息。autocad向objectarx应用程序发送各种消息,指出在autocad内发生了特定的事件,我们决定应用程序将对哪一个消息作出响应,并触发哪一个操作。
3、 为autocad提供入口。在objectarx7以上的版本中有一默认的入口定义文件(acrxdefault.def)不用用户再创建。
4、 实现初始化。在objectarx应用程序内,我们需要初始化已创建的任何自定义,并且重建objectarx运行时类树;如果要添加命令,必须注册在autocad中的命令。
5、 卸载准备。卸载前必须删除所有自定义类和命令。
注册新命令的方法可以用acedcommandstack的addcommand的方法和aceddefun还有acedregfunc的方法。后两咱们以后再说,主要是addcommand注册命令的方法。
autocad命令是由acedcommandstack类定义的,按组存储在命令栈中。一般况下用addcommand函数一次添加一个命令,并用removegroup函数成组的删除命令,也可以用removecmd函数一次删除一个命令。作为退出前消除工作的一部分,我们应用程序需要删除它注册的所有命令。
addcommand函数的原型声明为:
acad::errorstatus
addcommand(
const char* cmdgroupname,
const char* cmdglobalname,
const char* cmdlocalname,
adesk::int32 commandflags,
acrxfunctionptr functionaddr,
aceduicontext *uicontext = null,
int fcode=-1);
其中:
cmdgroupname
需要添加命令的组名(用ascii表示)。如果组不存在,则会自动在添加命令前创建组。
cmdglobalname
要添加的命令名(用ascii表示)。该名字是全局的。
cmdlocalname
要添加的命令名(用ascii表示)。该名字是本地的。
commandflags
与命令有关的标记,有效值为: acrx_cmd_transparent, acrx_cmd_modal, acrx_cmd_usepickset, 和 acrx_cmd_redraw。
functionaddr
当执行命令时,要执行的函数地址。
uicontext
aceduicontext回调类的输入指针。
fcode
分配给命令的输入整形码。
removecmd()函数的原型声明为:
virtual acad::errorstatus
acedcommandstack::removecmd(
const char * cmdgroupname,
const char * cmdglobalname) = 0;
removegroup()函数原型声明为:
virtual acad::errorstatus
acedcommandstack:: removegroup (
const char * cmdgroupname);
对于命令的查找顺序可以用acedcommandstack:opgrouptotop()函数放在栈顶,autocad会首先查找这个组。
全局与本地命令名的区别是:全局命令名可以在任何语言环境中使用,而本地命令名是用于非英语版autocad命令名的翻译。
透明与模态命令,我的理解是像对话框一样,非模态与模态的区别。
到此,自己完全可以看着文档做一个例子出来了!享受你的成果吧!
推荐两本新书,如arx8之类
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
 


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭

相似的主题
主题 主题发起者 论坛 回复 最后发表
【转帖】arx里头如何写调用带参数的lisp呀? yang686526 ObjectARX(C++) 0 2009-04-16 09:08 AM
【转帖】arx的官方例子也有bug?cedit及其派生类在删除文本框中的字符时显示有问题 yang686526 ObjectARX(C++) 0 2009-04-14 03:47 PM
【转帖】arx初级的问题 yang686526 ObjectARX(C++) 0 2009-04-14 03:33 PM
【转帖】arx初学请教如何设置osmode变量 yang686526 ObjectARX(C++) 0 2009-04-14 03:32 PM
【转帖】arx函数库(电子版) yang686526 ObjectARX(C++) 0 2009-04-14 03:32 PM


所有的时间均为北京时间。 现在的时间是 12:59 AM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多