几何尺寸与公差论坛------致力于产品几何量公差标准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-18, 03:34 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】无模式对话框下的lisp函数调用解决方案讨论

无模式对话框下的lisp函数调用解决方案讨论
无模式对话框下的lisp函数调用解决方案讨论
当时偶从电邮得到楼主的源代码之后用vc debug调试的结果显示, 在无模式对话框下, 调用acedcommand / acedcmd 但不关对话框, autocad将获取不到任何参数, 以至于出现invalid command:nil的错误. 如果这两个命令是在vc提供的标准ok / cancel按钮上呼叫, 那么就能够实现, 但是对话框会被关掉, 也就是和有模对话框并无区别.
原因不清, 偶个人认为是vc无模式对话框建立在堆栈上使得autocad同样使用堆栈的acedcommand / acedcmd无法进入造成. 有模对话框是建立在内存中, 并不占用堆栈, 所以在有模对话框下或者关闭无模对话框释放堆栈指针之后就可以运行acedcommmand / acedcmd.
今天调试出了一个解决方案: 使用acdocmanager的sendstringtoexecute(). 这个命令函数从内存直接向autocad呼叫命令, 不使用堆栈, 所以可以实现无模式对话框的按钮对lisp中已定义的函数的调用.
代码:
假设lisp中已经定义一个名为myfun (x)的函数, x是从对话框edit box获得的int数据.
在无模式对话框的onbutton函数中进行如下操作:
cstring szcommand;
char temp [10];
// 把int转换为string
itoa (m_nedit, temp, 10); // m_nedit为从edit box获得数据的对话框变量, 10是表示用10进制转换.
// 下面开始生成命令字串
szcommand = "(";
szcommand += "myfun "; // 命令名称和参数之间要用空格分开. 如果有多个参数, 参数之间也要用空格分开.
szcommand += temp; // 如果edit box变量类型设定不是int而是cstring, 那么可以省略temp和itoa(), 这一步直接用+= m_nedit
szcommand += ")\n"; // 括号表示直接从autocad command line运行lisp函数命令, \n表示按回车键
// 用命令字串执行
acdocmanager -> sendstringtoexecute ( acdocmanager -> mdiactivedocument(), szcommand, true, true); // 此命令的参数使用可以参考arx帮助
如果lisp中定义的函数是c:xxx, 那么szcommand中就省去括号. 总之, 执行命令时在autocad的命令行中键入的是什么字串, 用sendstringtoexecute送过去的就是什么字串便可.
virtue is like a rich stone, best plain set.
-- francis bacon, <of beauty>
谢谢大侠帮忙,真是好极了,解决了我的大问题啊!!!
大侠,我试了一下,怎么temp的值一直是0,没有接受到edit来的值啊?
应该加上一句updatedata(true);这样才能收到来自edit的输入值。
偶汗....
私下里觉得, updatedata是mfc appwizard最应该替人准备却没有准备的一句话..
virtue is like a rich stone, best plain set.
-- francis bacon, <of beauty>
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
 


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

高级搜索
显示模式

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

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



所有的时间均为北京时间。 现在的时间是 05:32 PM.


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