按线型过滤的选择
大家好§,请帮我纠正这个Lisp程序。
(定义c:测试(/层名称)
;; 按线型在特定图层上选择对象的函数过滤器
(setq ent(car(entsel“\n选择对象以获取其层名称:”));
(setq layername(cdr(assoc 8(entget ent)))
(setq layerinf(tblsearch“LAYER”l_名称))
(setq layerltype(cdr(assoc 6 LAYERNF)))
(setq lay(列表(cons 0“*线”)(cons 8 layername)(cons 6 layerltype));;进行选择,然后输入并高亮显示OBJEST
(普林斯)
) 你想用它实现什么?选择一个项目,获取其图层,然后从该图层中选择其线型直接关联的所有直线/多段线?
同时,请在摘录中添加代码标签。 我想在一个按线型过滤的图层上选择对象。
某些对象由具有“连续”线型的线绘制。而不是以“虚线”为例 我对您的代码做了一些更正:
(defun c:TEST ( / ent layername layerinf linetype lay index)
;; FUNCTION FILTER SELECTION OF OBJECT ON SPECIFIC LAYER BY LINE TYPE
(if (setq ent (car (entsel "\nSelect object to get its layer name : ")))
(progn
(setq layername (cdr (assoc 8 (entget ent))))
(setq layerinf (tblsearch "LAYER" layername))
(setq linetype (cdr (assoc 6 layerinf)))
;; MAKE THE SELECTION SELECTION THEN ENTER AND OBJEST HIGHLIGHTED
(if (setq lay (ssget "_X" (list '(0 . "*LINE") (cons 8 layername) (cons 6 linetype))))
(progn
(setq index 0)
(repeat (sslength lay)
(redraw (cdr (assoc -1 (entget (ssname lay index))))3)
(setq index (1+ index))
)
)
)
)
)
(princ)
) 真实、简单、高效!尤其是当用户打算访问其例程之外的选择集时。我总是忘记这个功能,也许是时候把它贴在我的显示器上了。。。 @MSasu,
考虑:
(defun c:test ( / en la )
(if (setq en (car (entsel)))
(progn
(setq en (entget en)
la (tblsearch "LAYER" (cdr (assoc 8 en)))
)
(sssetfirst nil (ssget "_X" (list '(0 . "*LINE") (assoc 8 en) (assoc 6 la))))
)
)
(princ)
) 谢谢你没有工作。
选择特定图层上按线型过滤的对象,并使其高亮显示,以允许我进行一些修改。 fathihvac,
请编辑您的帖子,包括代码标签! 你试过李提出的那个吗?
或者考虑到李的观察,可能会改变我所改变的。
(defun namedfunction( / ss_lay cnt i nm ent lt nlt)
(setq ss_lay (ssget "X" (list (cons 0 "LINE")(cons 8 "layer name"))))
(if ss_lay
(progn
(setq Cnt (sslength ss_lay))
(setq i 0)
(repeat Cnt
(setq NM (ssname ss_lay i))
(setq ENT (entget NM))
(setq LT (cdr (assoc 6 ent)) NLT "Continuous")
(while (< i cnt)
(if (= LT NLT)
(what ever you want to do with the lines)
);if
);while
(setq i (+ i 1))
);repeat
);progn
);if
);defun
页:
[1]
2