我想改变a层
我已经为我工作的公司创建了一个lisp,它创建了我们的自定义领导,并将添加文本。它工作得很好,我只需要它改变层,线被绘制到某个层,不管当前层是什么,当然文本也在不同的层上。谢谢,我的学校教育在lisping部分没有涵盖这一点。 这很容易,所以试着自己做吧。-创建对象的选择集
-迭代选择集中的每个对象
-使用以下行更改当前图形中存在的图层名称,如下所示。
*(entmod(subst(cons 8“LayerName”)(assoc 8(setq elist(entget)))elist)) 好的,我为对象创建了选择集,但我在迭代选择集中的每个对象时都迷失了方向。
(repeat (setq qty (sslength Selectionset))
(setq ssn (ssname Selectionset (setq qty (1- qty))))
;;; and so on ......
;;; ......
)
你一定对编写代码不感兴趣,无论如何,看看这个。
(defun c:obj2Layer (/ l ss qty e)
(if
(and (or (/= "" (setq l (getstring t "\n Enter name of layer :")))
(/= l nil)
)
(if (not (tblsearch "LAYER" l))
(progn
(alert "Layer name is not existed !!")
nil
)
t
)
(progn
(prompt "\n Select objects to change their layer name ")
(setq ss (ssget "_:L"))
)
)
(repeat (setq qty (sslength ss))
(setq e (entget (ssname ss (setq qty (1- qty)))))
(entmod (subst (cons 8 l) (assoc 8 e) e))
)
)
(princ)
)
存在最简单的层
(setq oldlay (getvar "clayer"))
(setvar "clayer" mylayer)
.do stuff
(setvar "clayer" oldlay)
不确定引线是否可以有一行一层文字?我来看看 难道你不能用一个属性创建一个块,这个属性已经在你想要文本所在的层上了吗。然后可以使用该块创建多重引线样式。完成后,可以将此多重引线样式放在工具选项板中。从那里可以控制引线插入的图层。只是一个想法。
就像比格尔建议的那样,在“创建”行和“文本”之前,将所需层设置为当前层,只需记住在代码中包含一个错误函数。
或
使用tharwat的方法在最后创建的实体上强制执行entmod。这种方法的一个优点是,您不必担心目标层是否存在。
entmod将在实体上指定层,无论该层是否存在。
(defun c:demo()
(command "_line" pause pause "")
(entmod (subst '(8 . "banana")
(assoc 8 (setq l (entget (entlast))))
l))
(princ))
我是否误读了OP的请求,或者其他人是否偏离了这一点?
OP希望确保通过lisp代码(由OP)创建的实体落入特定层(me认为)
页:
[1]
2