用于层创建的Lisp
大家好!我一直在试图找到一个lisp例程,它可以根据用户输入生成一个特定的层。我已经阅读这些论坛很长时间了,这里的社区太棒了,我想我会寻求一些帮助!我想创建一个lisp例程,它会向用户询问他们想要的层,并且只创建指定的层。在我工作的地方,我们为不同的系统使用许多不同的层,并且取决于我们正在处理的项目,我们可能需要一些层而不是其他层。
我想,如果我们有一个lisp例程,它拥有我们使用的每个层的所有属性,我们可以输入一个命令,比如“Mlayers”,它会提示输入一个“layer”,然后在层的一小部分键入,它会创建一个具有正确颜色、线型和线宽的层。
例如,当它提示输入“layer”时,我们可以键入“Test”,并创建001\u Test\u Main\u,颜色为25,线型连续,线宽为。25
这有意义吗?有可能吗?如果能得到任何帮助,我将不胜感激!
非常感谢。 欢迎来到CADTutor
您应该能够使用本文中的信息构建所描述的程序。
只要问问你是否需要进一步的帮助。
李 亲爱的churchryn!
(defun newlay(a b c d)
(if (not (tblsearch "layer" a)) (command "-layer" "n" a "c" b a "l" c a "lw" d a "")
(command "-layer" "s" a "c" b a "l" c a "lw" d a "")))
;;; Phraseological: (newlay "name" color index "laytype" lineweight), few examples:
(defun C:laykt()
(newlay "KT-CENLine" 2 "CENTER2" 0.13)
(newlay "KT-ENVLine" 2 "CONTINUOUS" 0.30)
.........................................
(prompt "\nCreate layer completed\n"))
祝你好运,玩得开心! 谢谢你的回复,欢迎李!
我看了这篇文章,内容丰富,描述性强,这不是我想要的。
我不希望它创建所有层,只创建指定的层。也许《审判报》上有,我只是不明白。我不确定“if/Then”语句是否是最佳选择,但我希望它会提示输入所需的层,我们可以键入特定的单词。然后根据输入的单词创建受尊重的层。
也许我想要的太多了。我知道我可以制作一个lisp,只创建每个层,或者为每个需要的层创建一个命令。我只是想减少我的伙计们不得不做的击键次数。
例子:
“Mlayer”
“指定图层名:”
“样本”
lisp将创建001\u Sample\u Project\u测试(或与“Sample”关联的任何层)
使用相同的命令,如果我们输入“Current”,我们将得到一个不同的层,它将使002\u Current\u项目_
我可能没有正确解释它,我对lisp例程相当陌生。我道歉。 下面是一个可能有助于更好地解释它的示例,我知道这段代码不起作用。但也许它能更好地说明我在寻找什么。
(定义c:m层(/if-then)
(if(setq name(getstring t“指定图层名:”))
(如果名称=“样本”)
(然后(命令“.Layer”“\u Make”“001示例项目-”“\u Color”“140”“”“LType”“Continuous”“”“”)
(如果名称=“当前”)
(然后(命令“.Layer”“\u Make”“002当前项目-”“\u Color”“4”“”“LType”“Continuous”“”“”)
(如果名称=“测试”)
(然后(命令“.Layer”“\u Make”“003测试系统-”“\u Color”“4”“”“LType”“Continuous”“”“”)
(普林斯)
)
这些层不是我真正要使用的,我们有大约60层,我将添加到这里。如果做不到,请告诉我!
再次感谢您抽出时间! 试试这个,注意层名区分大小写,这意味着Sample不等于Sample。
(defun c:MkLayer (/ Layer nm)
(defun Layer (x c)
(entmake (list '(0 . "LAYER")
'(100 . "AcDbSymbolTableRecord")
'(100 . "AcDbLayerTableRecord")
(cons 2 x)
(cons 62 c)
'(6 . "Continuous")
'(70 . 0)
)
)
)
(if (and (/= "" (setq nm (getstring t "\n Specify layer Name :")))
(if (not (snvalid nm))
(princ "\n invalid Layer name <Try Again> !!")
t
)
(if (not (tblsearch "LAYER" nm))
t
(princ "\n Layer is already existed <Try Again> !!")
)
)
(cond ((eq nm "Sample") (Layer nm 140))
((eq nm "Current") (layer nm 4))
((eq nm "Test") (layer nm 4))
(t (layer nm 256))
)
)
(princ)
)
谢谢Tharwat!!!
这非常有效!
我非常感谢您的帮助和快速反应!
太好了,不客气
Lee提供和准备的链接提供了非常丰富的信息,是用户学习如何创建和处理层的良好开端。 我打开了它,一直在阅读它,并试图练习列出的内容。
我也一直在他的页面上看其他教程!
Lisp例程非常有用!但是非常令人沮丧!!!
哈哈,再次感谢。
对的
页:
[1]
2