Torro 发表于 2022-7-5 22:39:40

帮助lisp编辑到defi

大家好,我一直在努力解决这个问题,但是,嗯,我只是不太擅长lisp编辑。。。
 
我一直在使用Lee Mac非常有用的“Label”lisp,但理想情况下我想做的是修改代码,使我的标签自动写入特定层(例如“MISC_TEXT”),而不是当前层。
 
(defun c:label(/*error*\u StartUndo \u EndUndo \u CurveObject-p \u FixDXFData \u CopyNested \u SelectIf \u MakeReadable acdoc acspc d dient factor g1 g2 g3 gr mat msg obj p1 p2 sel str ucsnm ucsxa)(setq factor(/(getvar'textsize)(cond((getvar'cannoscalevalue))(1.0)))*关*(cond(*关*)(1.0))*每*(cond)(*per*)(/pi 2.0))*bak*(cond(*bak*)(:vlax false))(defun*error*(msg)(if(and mat ent)(entdel ent))(if(and obj(not(vlax-erased-p obj))(vla delete obj))(if acdoc(\u EndUndo acdoc))(if(not(wcmatch(strcase msg)”*BREAK,*CANCEL*,*EXIT*)(princ(strcat”\n错误:“msg))(princ))(defun _StartUndo(doc)(_EndUndo doc)(vla StartUndoMark doc))(defun _EndUndo(doc)(while(=8(logand 8(getvar‘UNDOCTL)))(vla EndUndoMark doc))(defun _CurveObject-p(ent)(null(vl-catch-all-error-p(vl catch all apply‘vlax curve getendparam(list ent)))))(defun _fixfdata(elst)(vl remove if’(lambda(pair)(member(car pair)“(5 6 8 102 330))(elst))(defun _CopyNested(ent mat/elst)(setq elst(entget ent))(cond((setq ent(cond)((eq“VERTEX”(cdr(assoc 0 elst))))(entmakex(_fixfdata(entget)(setq ent(cdr(assoc 330 elst \\k))))))(while(not(eq“sequend”(cdr(assoc 0(setq elst(entget(setq ent(entnext ent 107;)аа)а))(entmakex(_FixDXFData elst)))(cdr(assoc 330(entget(entmakex(_FixDXFData elst)а)))((entmakex(_FixDXFData elst))))(如果mat(vla transformby(vlax ename->vla object ent)(vlax tmatrix mat)))(defun _SelectIf(msg pred)((lambda(f/sel)(while(progn(setvar’ERRNO 0)(setq sel(entselp msg))(cond(=7(getvar’ERRNO))(princ“\n失败,再试一次。”)((eq‘ENAME(type(car sel)))(if(and f(null(f(car sel))))(princ“\nInvalid Object.”)))sel)(eval pred))(defun _MakeReadable(a)((lambda(a)(if(and(<(/pi 2.0)a)(

Torro 发表于 2022-7-5 22:57:28

好的,我(终于)用一个宏解决了上面的问题,它改变了图层,激发了标签lisp,然后恢复到上一个图层。如果这对其他人有帮助,那就太好了
 
^粘土工;设置杂项文本^CLB\\layerp;
 
(注意,我已将lisp命令从“label”更改为“LB”)
 
如果有人能帮忙的话,还被第二个完全难住?!

Dadgad 发表于 2022-7-5 23:23:35

如果你不熟悉的话,李有一个很棒的层导演lisp(我在我的创业套件中有这个),
它基本上完成了你想用图层做的事情,你可能想看看。
如果指定的层不存在,它也会创建它,然后在lisp完成后返回到上一层。
 
谢谢李!

Torro 发表于 2022-7-5 23:38:15

我确实做到了,这太棒了,是的(没有他我们该怎么办?)。我将其设置为,当我编写一些新文本时,它会自动将其放入我们的通用文本层MISC\u文本中,然后我可以启动ATC lisp并将其与我的线条对齐。很 完美
 
然而,有时我们不希望文本位于MISC_文本上,而是与它相关的对象位于同一层。我只是想知道是否有可能修改代码,这样当您使用ATC将文本对齐到一行时,它也会在一次单击中采用其图层属性。我认为这将是一些需要写进Lisp程序,但它完全超越了我。并不是说比赛很艰苦,我只是觉得值得一问!

Torro 发表于 2022-7-5 23:53:38

事实上,爸爸,也许你可以帮我解决图层控制器的问题。。。我试着给它添加几个Lisp程序的词,但它们不起作用。例如,我添加了“EM”-高程标记lisp(另一个Lee Mac原件)-但当我输入命令时,它仍然将其放置在当前层上,而不是我想要的“LEVELS”层上。实际上,我以前没有尝试使用它来控制LISP,只使用原生autocad命令,我做错了什么吗?
页: [1]
查看完整版本: 帮助lisp编辑到defi