;;1 "当前选择集"与ssget

- (defun C:w1 (/ ss)
- (sslength (setq ss (ssget)))
- )
- (defun C:w2 ()
- (sslength (ssget "_p"))
- )
Command: (C:w1)
Select objects: Specify opposite corner: 2 found
Select objects:
2
Command: (C:w2)
2
由此可见,"当前选择集"Autocad保存在某个地方
;;2 ssgetfirst与ssget

- (defun w3 (/ SS)
- (sslength (setq ss (cadr (ssgetfirst))))
- )
- (defun w4 ()
- (sslength (ssget "_p"))
- )
先选择3个对象,然后执行(w3)
Command: (w3)
3
Command: (w4)
3
表面上看来,通过ssgetfirst,可以取得"当前选择集"。断续看下面的

- (defun W5 (/ SS1 SS2)
- (sslength (setq ss1 (ssget)));这里假定选择2个对象
- (sslength (setq ss2 (ssget)));这里假定选择3个对象
- (sssetfirst ss1 ss1)
- (princ "\n")
- (princ (sslength (cadr (ssgetfirst))))
- (princ "\n")
- (princ(sslength (ssget "_p")))
- (princ)
- )
Command: (w5)
Select objects: Specify opposite corner: 2 found
Select objects:
Select objects: Specify opposite corner: 3 found
Select objects:
2
3
从这个例子可看出,"当前选择集"是用户作出的选择,可以(ssget "_p")的方式取得,是ss2(同w4);ssgetfirst取得的是sssetfirst的选择集ss1(同w3)。
通过sssetfirst亮显的对象,不能做为"当前选择集"。与以上执w3不同,当我们先选择时,就已经取得了"当前选择集"。
;;4 选选择,后执行
使用Autocad时,通常可以先选择后执行,也可执行命令对象。

- (defun W6 (/ ss)
- (setq ss (ssget '((0 . "DIMENSION"))))
- )
如果先选择对象,然后执行(w6),则不提示选择对象
;;[功能] 先选择,后执行通用函数
;;(sslength (StrartSSget '((0 . "DIMENSION"))))

- (defun StrartSSget (fil / SS)
- (cond ((cadr (ssgetfirst)) (setq ss (apply 'ssget (list "p" fil)))))
- (cond (SS (sssetfirst nil nil))
- (T (setq ss (apply 'ssget (list fil))))
- )
- ss
- )
看过w5,则StrartSSget完全可以改写如下

- (defun StrartSSget (fil / SS)
- (apply 'ssget (list fil))
- )
|