- 积分
- 27975
- 明经币
- 个
- 注册时间
- 2003-4-2
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
楼主 |
发表于 2011-6-9 20:31:06
|
显示全部楼层
本帖最后由 小菜123 于 2011-6-9 20:52 编辑
非常感谢高飞鸟这样的高手参加这个贴子的讨论!
我也希望做成可以在lisp程序运行时仍然可以透明执行的命令,但做成这样的命令以后,正常运行SS命令后,不会返回选择集,有时候用起来不方便。看看这个命令序列:
Command: ss
请选择样板实体(H-Help/ N-关闭块属性显示/ B-关闭动态块特性显示,当前状态:块属性打开,动态块特性打开):
使用过滤器:((-4 . "<OR") (0 . "LINE") (-4 . "OR>"))
Select objects: Specify opposite corner: 2 found
Select objects:
共选中了2个实体。<Selection set: c>
透明命令的执行结果后面没有了<Selection set: c>,不知道有没有办法解决这个问题?
再看这个透明命令的执行情况:
Command: (setq s1 (ssget))
Select objects: 'ss
>>请选择样板实体(H-Help/ N-关闭块属性显示/ B-关闭动态块特性显示,当前状态:块属性打开,动态块特性打开):
使用过滤器:((-4 . "<OR") (0 . "LINE") (-4 . "OR>"))
>>Select objects: >>Specify opposite corner: 2 found
>>Select objects:
共选中了2个实体。
Select objects: p
2 found
Select objects:
<Selection set: 17>
虽然可以在lisp中透明使用了,但在执行以后,仍然需要用“p"响应原来的”select objects"与先使用ss,然后再执行命令,用"p"的效果相差不大。
(if (= 0 (getvar "cmdactive")) (command "select" ss "" "pselect" ss ""))
改成:
(sssetfirst ss ss)
是否更好?
---哦,我明白了,不用改了。
-----写这一句是经过研究的,但现在我也忘了为什么这么写的了,印象中没有那个command,似乎做不到相同的效果(置为当前选择集,同时带夹点高亮显示)?command那句有办法代替么?
查lisp参考有这么一段:注意 不要在 AutoCAD 执行命令的过程中调用 sssetfirst。是不是用了sssetfirst也不适合变成透明命令?
|
|