明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: illcyt

[讨论] 请教自定义命令!请高手帮忙!

[复制链接]
发表于 2014-5-16 00:38 来自手机 | 显示全部楼层
到www.251090706.ys168.com里面去下载WDY工具箱。论坛里面也有这个工具。
 楼主| 发表于 2014-5-16 11:09 | 显示全部楼层
荒野孤行 发表于 2014-5-16 00:38
到www.251090706.ys168.com里面去下载WDY工具箱。论坛里面也有这个工具。

嗯,谢谢你的回复,现在明白了,这种命令编辑要用对话框来实现
发表于 2014-9-19 02:50 | 显示全部楼层
本帖最后由 llsheng_73 于 2014-9-19 02:51 编辑
illcyt 发表于 2014-5-16 11:09
嗯,谢谢你的回复,现在明白了,这种命令编辑要用对话框来实现


如果清楚各个按钮所对应的命令或者函数的正确调用方法,想通过输入自己定义的命令来调用相应的功能而不想调出那个面板,那么可以建立edit_box的key值和对应功能的表,当按“确定”后,通过get_tile得到所自定义的命令与对应的功能函数关联,重新定义该功能的命令后再done_dialog
比如dialog里边有
:EDIT_box{label="功能2";key="key1";}
:EDIT_box{label="功能3";key="key2";}
...
:EDIT_box{label="功能n";key="keyn";}
这些控件都可以不用给它写action
:button{label="确定";key="OK";is_default=true;}
它所对应的action可以写为
(action_tile"OK" "(setq keys(mapcar'get_tile '(\"key1\" \"key2\" ... \"keyn\"))(done_dialog 1)")

有一个功能函数表functions'("fun1" "fun2" ... "funN") 与keys对应的话,接下来还有一个问题是怎么把functions定义为keys,由于defun 后边不能给它变量而只能直接给出sub,我能想到的办法是由程序写一个lisp文件,然后加载它进来,这样可以实现重定义

...(setq fileID(open "文件名" "a"));;;以追加方式写或者直接用"w"方式自己决定
(mapcar '(lambda(x y)
     (if (check   x ))         ;;;check检查 x是否能作为函数名(好象不是所有字符都可以作为函数名,尤其是第一个字母,所以要自己写程序来检查)
     (write (strcat "(defun c:" x "()(" y "))" fileID)))
    keys functions)
(close fileID)
(load  "文件名");;;从道理上说这样是可行的
发表于 2016-1-24 07:35 | 显示全部楼层
学习一下………………
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-8 19:34 , Processed in 0.605407 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表