在这种情况下,线路可能更简单:
(mapcar '(lambda (a) (assoc a e)) '(0 8 50))
我将ssb和ssr lisp中的行更改为上面的行,它仍然选择由原始块层过滤的块 好啊请澄清要求,简洁完整。
1-lisp按名称和旋转角度选择块,忽略图层
1-lisp仅按名称选择块,忽略图层和其他特性
谢谢你的耐心和帮助 SSR表示块名和旋转,SSB仅表示块名。
(defun C:SSR ( / s1 i e l f o n s2)
(princ "\nSelect source object(s):")
(if
(if
(setq s1 (ssget "I" '((0 . "INSERT"))))
(progn (sssetfirst nil nil) s1)
(setq s1 (ssget '((0 . "INSERT"))))
)
(progn
(repeat (setq i (sslength s1))
(setq i (1- i)
o (vlax-ename->vla-object (ssname s1 i))
e (entget (ssname s1 i))
l (mapcar '(lambda (a) (assoc a e)) '(0 50))
n (cons (vlax-get o (if (vlax-property-available-p o 'EffectiveName) 'EffectiveName 'Name)) n)
)
(if (not (member l f)) (setq f (cons l f)))
)
(setq f (mapcar '(lambda (a) (append '((-4 . "<AND")) a '((-4 . "AND>")))) f))
(setq f (append '((-4 . "<OR")) (apply 'append f) '((-4 . "OR>"))))
(princ "\n\nSelect area for similar blocks...")
(if (setq s2 (ssget f))
(repeat (setq i (sslength s2))
(if
(not (member (vlax-get (setq o (vlax-ename->vla-object (setq e (ssname s2 (setq i (1- i)))))) (if (vlax-property-available-p o 'EffectiveName) 'EffectiveName 'Name)) n))
(ssdel e s2)
)
)
)
(if s2 (princ (strcat (itoa (sslength s2)) " objects")))
(sssetfirst nil s2)
)
)
(if (zerop (getvar 'cmdactive)) (princ) s2)
)
(defun C:SSB ( / s1 i e l o n s2)
(princ "\nSelect source object(s):")
(if
(if
(setq s1 (ssget "I" '((0 . "INSERT"))))
(progn (sssetfirst nil nil) s1)
(setq s1 (ssget '((0 . "INSERT"))))
)
(progn
(repeat (setq i (sslength s1))
(setq o (vlax-ename->vla-object (ssname s1 (setq i (1- i))))
n (vlax-get o (if (vlax-property-available-p o 'EffectiveName) 'EffectiveName 'Name))
)
(if (not (member n l)) (setq l (cons n l)))
)
(princ "\n\nSelect area for similar blocks...")
(if (setq s2 (ssget '((0 . "INSERT"))))
(repeat (setq i (sslength s2))
(if
(not
(member
(vlax-get
(setq o
(vlax-ename->vla-object
(setq e (ssname s2 (setq i (1- i))))
)
)
(if (vlax-property-available-p o 'EffectiveName)
'EffectiveName
'Name
)
)
l
)
)
(ssdel e s2)
)
)
)
(if s2 (princ (strcat (itoa (sslength s2)) " objects")))
(sssetfirst nil s2)
)
)
(if (zerop (getvar 'cmdactive)) (princ) s2)
) @斯特凡BMR
工作完美。。。非常感谢先生
页:
1
[2]