快速选择Lisp
你好我正在寻找一个lisp,它将帮助我执行以下操作:
[列表]
[*]快速选择z值大于0.0m的所有三维多段线
[*]从当前截面快速选择所有三维多段线
[*]将此选择移动到层“0.001-1.0m等高线”
[/列表]
在cad中很容易做到这一点,但问题是我需要为10个不同的图层这样做,并且源图形会经常更改。我想要的是能够查看lisp例程并自己编辑变量(图层名/z值),以便根据需要更改它们。这样我就可以运行lisp例程,而不必每次源图形(三维等高线/多段线)更改时都执行此过程。
不确定这是否可行,但如有任何提示/意见/帮助,将不胜感激。
谢谢 2件事一条多段线的z值可以反映为一个“高程”,一条三维多段线的每个垂直都有单独的z值。
也就是说
; this is for plines with an elevation
; remove just for testing
(command "-layer" "N" "0.001 - 1.0m contours" "N" "1.001 - 2.0m contours" "")
(defun defun1 ()
(setq ht (vla-get-elevation obj))
)
(defun defun2 ()
(setq ht (nth 2 (vlax-safearray->list (vlax-variant-value (vlax-get-property obj "Coordinates")))))
)
(defun c:test2 ( / ss ht x itis)
(setq ss (ssget ))
(repeat (setq x (sslength ss))
(setq obj (vlax-ename->vla-object (ssname ss (setq x (- x 1)))))
(setq itis (vla-get-objectname obj))
(cond ((= "AcDbPolyline" itis)(defun1))
((= "AcDb3dPolyline" itis)(defun2))
) ;cond
(cond ((< ht 1.0)(vla-put-layer obj "0.001 - 1.0m contours"))
((< ht 2.0)(vla-put-layer obj "1.001 - 2.0m contours"))
)
) ; repeat
) ; defun
欢迎来到CADTutorscampy!
听起来这个场景可能适合使用LAYTRANS命令。
页:
[1]