Lisp使用不同的线型
我想让我的lisp对一些隐藏线使用不同的线型。可能还需要更换图层!(command "-linetype" "_l" "DASHED2" "acad.lin" "")
这段代码是从ASMI的帖子中借来的,一个问题是我还不明白这一切“DASHED2”acad.lin“到底是什么意思!
任何朝着正确方向的想法或刺激都会受到感激。
抢劫 命令名前面的“-”强制线型在命令行模式下工作(即没有对话框和用户确认);为了理解其他参数,可以在此模式下测试线型。
“L”=要求将线定义加载到图形,
“DASHED2”=要加载的线定义(替换为所需类型),
“ACAD.LIN”=具有行定义的内置数据库(可以改为用户数据库),
“”=最终完成命令(重复)。
添加“_”是为了确保此代码也适用于AutoCAD的本地化版本。
希望这能澄清这个问题。
当做 加载线型的另一种方法是使用vla加载。 感谢您澄清,msasu它确实会有所帮助。
Lee有很多vla命令,但我真的不确定所有的基本lisp语言眨眼:
我的平开窗绘图代码已经转移到平开窗和滴水槽的侧面和平面视图,我花了几天的时间研究,花了大约一个小时左右的时间才使代码生效。一次一个小胜利,我就会征服密码。
抢劫 又卡住了!!很抱歉
(setq OLDTYPE (getvar "LINETYPE")
)
(command "_linetype" "_l" "ACAD_ISO03W100" "Acad.lin" ""
)
(command "_.PLINE" F25 F26 "" ;to be hidden dashed line linetype ACAD_ISO03W100
)
(command "_.PLINE" F33 F34 "" ;to be hidden dashed line
)
(command "_.PLINE" F27 F38 "" ;to be hidden dashed line
)
(command "_.PLINE" F39 F40 "" ;to be hidden dashed line
)
(setvar "LINETYPE" OLDTYPE)
这就是我目前所拥有的。我试图存储现有线型,然后在新线型中绘制几条所需的线,然后恢复旧线型。
我今天不太喜欢跑腿和打电话,所以我可能没想到这件事很简单。
嘿Rob,
试试这个,把这个函数放在程序的某个地方。
;;; Layer Function - Set Layer & Linetype. ;Function Description
(defun SLL (NLAY CLR LT / LAY FRZ) ;Define function, Declare local variables and arguments
(setq LAY(tblsearch "layer" NLAY)) ;Search drawing to find layer, Note: (NOT USED)
(if ;If the following returns true
(not LAY) ;Layer not in drawing
(command "_.layer" "m" NLAY "c" CLR "" "lt" LT "" "") ;Layer command ~ make new layer with color and linetype
(progn ;Then do the following
(setq FRZ (cdr (assoc 70 LAY))) ;Variable FRZ is frozen layer
(if (= FRZ 65) ;Layer frozen from last edit
(progn ;Then do the following
(command "_.layer" "t" NLAY "") ;Thaw new layer if frozen
(command "_.layer" "s" NLAY "")) ;Set new layer
(command "_.layer" "s" NLAY "")))) ;Set new layer
) ;End define function
当你想添加图层时放置这个。
如果图层、颜色和线型不存在或
如果确实存在,请设置它。
(SLL "Mylayer" "Mycolor" "MyLinetype") ;Go to SLL Layer Function, Set Layer, Color & Linetype
注意:线型定义需要在ACAD中。要设置的线型的lin文件。
任何进一步的帮助,只要问。
秃鹰 在这里,您可以演示该程序,看看它是如何工作的。
加载此函数并键入HIDLAY。它将创建一个名为Mylayer的层,具有红色和隐藏线型。
(defun C:HIDLAY ()
(SLL "Mylayer" "1" "HIDDEN") ;Go to SLL Layer Function
(princ)
)
;;; Layer Function - Set Layer & Linetype. ;Function Description
(defun SLL (NLAY CLR LT / LAY FRZ) ;Define function, Declare local variables and arguments
(setq LAY(tblsearch "layer" NLAY)) ;Search drawing to find layer, Note: (NOT USED)
(if ;If the following returns true
(not LAY) ;Layer not in drawing
(command "_.layer" "m" NLAY "c" CLR "" "lt" LT "" "") ;Layer command ~ make new layer with color and linetype
(progn ;Then do the following
(setq FRZ (cdr (assoc 70 LAY))) ;Variable FRZ is frozen layer
(if (= FRZ 65) ;Layer frozen from last edit
(progn ;Then do the following
(command "_.layer" "t" NLAY "") ;Thaw new layer if frozen
(command "_.layer" "s" NLAY "")) ;Set new layer
(command "_.layer" "s" NLAY "")))) ;Set new layer
) ;End define function 谢谢Buzzard。
为了让我的心态在这一点上正确,我所要做的就是改变;
(SLL“Mylayer”“Mycolor”“MyLinetype”)
将Mylayer交换为我想要的层的名称
Mycolor表示浅棕色为63
&Mylinetype到Acad_ISO03W100
如果这是真的,那么我相信我已经做到了!
我突然意识到,我可能需要做几次这样的defun来组织框架、窗框和扇形窗等的层和线型!如果是这样的话,对他们来说最好的地方就是在任何地方之前_线路或_pline命令:与用户输入命令一起分组?
问候Rob。
确切地
下面是创建新层并在完成后恢复旧层的相同例程。只是想让你看到不同的可能性。
(defun C:HIDLAY () ;Define function
(setq OLDLAY (getvar "CLAYER")) ;Save current layer to old layer
(SLL "Mylayer" "1" "HIDDEN") ;Go to SLL Layer Function
(setvar "CLAYER" OLDLAY) ;Restore old layer
(princ) ;Exit quietly
) ;End define function
;;; Layer Function - Set Layer & Linetype. ;Function Description
(defun SLL (NLAY CLR LT / LAY FRZ) ;Define function, Declare local variables and arguments
(setq LAY(tblsearch "layer" NLAY)) ;Search drawing to find layer, Note: (NOT USED)
(if ;If the following returns true
(not LAY) ;Layer not in drawing
(command "_.layer" "m" NLAY "c" CLR "" "lt" LT "" "") ;Layer command ~ make new layer with color and linetype
(progn ;Then do the following
(setq FRZ (cdr (assoc 70 LAY))) ;Variable FRZ is frozen layer
(if (= FRZ 65) ;Layer frozen from last edit
(progn ;Then do the following
(command "_.layer" "t" NLAY "") ;Thaw new layer if frozen
(command "_.layer" "s" NLAY "")) ;Set new layer
(command "_.layer" "s" NLAY "")))) ;Set new layer
) ;End define function 谢谢Buzzard,我觉得你的教名很适合你。
今天我的电话忙得不可开交,所以当我试图回复时,我和一个可能的客户挂断了电话,真的,难道他们没有意识到我有比解释一个三岁孩子会明白加税就是加税(英国的增值税)更重要的事情要做吗
在写这篇文章的时候,我又打了17分钟的电话:滚:
页:
[1]
2