scampymoogin 发表于 2022-7-5 17:16:19

快速选择Lisp

你好
 
 
我正在寻找一个lisp,它将帮助我执行以下操作:
 
[列表]
[*]快速选择z值大于0.0m的所有三维多段线
[*]从当前截面快速选择所有三维多段线
[*]将此选择移动到层“0.001-1.0m等高线”
[/列表]
在cad中很容易做到这一点,但问题是我需要为10个不同的图层这样做,并且源图形会经常更改。我想要的是能够查看lisp例程并自己编辑变量(图层名/z值),以便根据需要更改它们。这样我就可以运行lisp例程,而不必每次源图形(三维等高线/多段线)更改时都执行此过程。
 
 
不确定这是否可行,但如有任何提示/意见/帮助,将不胜感激。
 
 
谢谢

BIGAL 发表于 2022-7-5 17:59:02

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

Dadgad 发表于 2022-7-5 18:24:55

欢迎来到CADTutorscampy!
 
听起来这个场景可能适合使用LAYTRANS命令。
页: [1]
查看完整版本: 快速选择Lisp