zhaozwf 发表于 2011-6-9 16:48:30

不错啊,呵呵,

highflybird 发表于 2011-6-9 17:08:18

楼主的这个帖子很好。
有如下建议:
1、不一定每次都弹出对话框,如果默认为上次的对话框这样更好。只有当用关键字设置的时候,才弹出对话框。
2、增加到透明命令中。那么以后可以用'ss来选择了,这样无疑方便很多。当然,现在也可以透明地用到命令中。
3、是否可以留有用户定义对象和组码?就像过滤器一样。

小菜123 发表于 2011-6-9 17:16:39

如果默认上次的对话框(即样本实体相同,选项也相同),只要在选择实体提示时直接回车即可。
增加到透明命令以后,返回值(选择集)不能被响应,原因不明,也不知道有没有哪个版本的ACD能正确执行,这点已经试过,不知道怎么解决。
提供源代码的目的可以方便用户增加对象和组码,为了简化编程量,就没去做自动添加的功能,也许应该写个教程,让大家知道怎么添加?

highflybir 发表于 2011-6-9 18:06:44

本帖最后由 highflybir 于 2011-6-9 18:15 编辑

回复 小菜123 的帖子

(vl-doc-export 'C:SS)
(defun c:ss()
   .....
)
(vlax-add-cmd "C:SS" 'C:SS "C:SS" acrx_cmd_transparent)

这样可以增加透明命令,不过,你是C: 开头的函数,就没必要了。

另外我建议把
(if (= 0 (getvar "cmdactive")) (command "select" ss "" "pselect" ss ""))
改成:
(sssetfirst ss ss)
是否更好?
---哦,我明白了,不用改了。

小菜123 发表于 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也不适合变成透明命令?

yewuqiang 发表于 2011-6-10 08:52:05

一直在用选择易,太好用,非常感谢

vvcd 发表于 2011-6-15 23:48:15

这个是经典的不能再经典的程序了,非常的爽

xyz2009xyz 发表于 2011-6-17 08:09:10

:-),还有个建议 附加过滤里面 ----->文字数值--->只能过滤"大于"等单方向数值,能否再添加一个选项,能使之过滤某一区间段的数值,比如说:100<x5<500这样的值?

小菜123 发表于 2011-6-17 08:50:39

分两步过滤,先选出大于100的,然后在当前选择集中再选出小于500的即可

zark 发表于 2011-6-17 11:59:04

好程序,又学习了。
页: 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16
查看完整版本: 小菜版选择易,欢迎使用并提出完善建议