lisp创建层并调用
有没有人有创建图层的例程,允许用户输入图层名称并调用颜色选择器窗口,以便用户可以为图层选择颜色?谢谢
(defun c:tryme (/ Layername LayerColor)
(setq Layername (getstring "\nEnter Layer Name:" T)
LayerColor (acad_colordlg1 nil))
(entmake (list (cons 0 "LAYER")
(cons 100 "AcDbSymbolTableRecord")
(cons 100 "AcDbLayerTableRecord")
(cons 2 Layername)
(cons 62 LayerColor)
(cons 70 0)))
(princ (strcat "\nLayer " (strcase Layername) " Created:"))
(princ)
) 谢谢pBe,我已经修改了你给我的:
landowner: dialog
{label = "Landowner Layer Creation";
: edit_box
{
label = "Enter landowner name :";
key = "name";
alignment = centered;
edit_limit = 45;
edit_width = 50;
}
: button
{
key = "accept";
label = "OK";
is_default = true;
fixed_width = true;
alignment = centered;
}
: errtile
{
width = 34;
}
}
(defun c:landowner (/ Layername LayerColor name)
(setq SUCE (getvar "cmdecho"))
(setq SUOM (getvar "orthomode"))
(setq SUSM (getvar "osmode"))
(setq SUAB (getvar "angbase"))
(setq SUAD (getvar "angdir"))
(setq SUCL (getvar "clayer"))
(setq SUCR (getvar "cecolor"))
(setq dcl_id (load_dialog "landowner.dcl"))
(if (not (new_dialog "landowner" dcl_id))
(exit)
);if
(if *name1*
(set_tile "name" *name1*)
(set_tile "name" "Default")
)
(action_tile "name" "(setq *name1* $value)")
(start_dialog)
(unload_dialog dcl_id)
(setq layername (strcat "CCC_LANDOWNER_"*name1*)
LayerColor (acad_colordlg 1 nil))
(entmake (list (cons 0 "LAYER")
(cons 100 "AcDbSymbolTableRecord")
(cons 100 "AcDbLayerTableRecord")
(cons 2 Layername)
(cons 62 LayerColor)
(cons 70 0)))
(setvar "clayer" layername)
(command "._pline")
(while (= 1 (logand 1 (getvar "cmdactive")))
(command pause))
(setq pline (entlast)
elist (entget pline)
)
(command "_.draworder" pline "" "_F");<--set pline's draw order to front
(setvar "hpname" "honey")
(setvar "hpscale" 2)
(command "-hatch" "S" pline "" "")
(setvar "hpname" ".")
(setvar "cmdecho" SUCE)
(setvar "orthomode" SUOM)
(setvar "osmode" SUSM)
(setvar "angbase" SUAB)
(setvar "angdir" SUAD)
(setvar "clayer" SUCL)
(setvar "cecolor" SUCR)
(princ)
)
从调色板中选择颜色时,您可以选择Truecolor或Index color
我不明白的是亮度值,你想要不同颜色的普林线边界和图案填充吗?如果是这样。其中一个是按实体着色,另一个是按层
(unload_dialog dcl_id)
(setq layername (strcat "CCC_LANDOWNER_"*name1*)
LayerColor (acad_truecolordlg '(62 . 7) nil))
(entmake (vl-remove nil
(list (cons 0 "LAYER")
(cons 100 "AcDbSymbolTableRecord")
(cons 100 "AcDbLayerTableRecord")
(cons 2 Layername)
(car LayerColor)
(if (> (length LayerColor) 1)
(car (cdr LayerColor)))
(cons 70 0))))
(setvar "clayer" layername)
........................
这将pline转换为索引颜色,图案填充将保留为bylayer
否则,如果希望所有颜色保持按层,请为图案填充创建单独的层
所以顺便问一下,你是如何设置亮度的?你能告诉我怎么做吗? 亮度是HSL颜色模型中的“L”:wink: 谢谢pBe,太棒了。这正是我想要的,但反过来。我希望pline保持按层,图案填充为索引颜色。
我所说的亮度是“颜色”对话框中RGB选项卡上的幻灯片。我想设置一个标准偏移值,如果用户从“索引颜色”对话框中选择红色,它将转换为RGB,这将成为bylayer颜色。CAd中主要索引颜色的亮度值为50。因此,当亮度增加到80时,就会产生一种新的颜色,因此新颜色是索引颜色的较浅阴影。也许有一种非常简单的方法可以做到这一点,甚至可以解释它,但这就是我希望做的。https://www.cadtutor.net/file:///C:/DOCUME%7E1/BDEASY%7E1.CCC/LOCALS%7E1/Temp/msohtml1/01/clip_image002.jpg
https://www.cadtutor.net/file:///C:/DOCUME%7E1/BDEASY%7E1.CCC/LOCALS%7E1/Temp/msohtml1/01/clip_image002.jpg 这是一个简短得多的描述方式,但是的,李,这就是我想要的。谢谢
当然是这样
但我还是不知道
我待会儿查,李,谢谢 这可能是一种更简洁的方法:
(command pause))
(setq pline (entlast)
elist (entget pline)
)
(command "_chprop" pline "" "_color" (cdr (car LayerColor)) "" "")
(command "_.draworder" pline "" "_F")
确实如此 伍德曼,
您是否希望独立于用户的颜色选择来控制颜色的亮度?一、 e.使用选择中的色调/饱和度值,但将亮度设置为特定值?
页:
[1]
2