乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 19|回复: 19

[编程交流] lisp创建层并调用

[复制链接]

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 09:21:05 | 显示全部楼层 |阅读模式
有没有人有创建图层的例程,允许用户输入图层名称并调用颜色选择器窗口,以便用户可以为图层选择颜色?
 
谢谢
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 09:26:02 | 显示全部楼层
 
 
  1. (defun c:tryme (/ Layername LayerColor)
  2.       (setq Layername (getstring "\nEnter Layer Name:" T)
  3.             LayerColor ([color=blue]acad_colordlg[/color]  1 nil))
  4.   (entmake (list (cons 0 "LAYER")
  5.                 (cons 100 "AcDbSymbolTableRecord")
  6.                 (cons 100 "AcDbLayerTableRecord")
  7.                 (cons 2 Layername)
  8.                 (cons 62 LayerColor)      
  9.                 (cons 70 0)))
  10. (princ (strcat "\nLayer " (strcase Layername) " Created:"))
  11. (princ)
  12. )
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 09:29:12 | 显示全部楼层
谢谢pBe,我已经修改了你给我的:
  1. landowner: dialog
  2. {label = "Landowner Layer Creation";
  3.    : edit_box
  4.             {
  5.    label = "Enter landowner name :";
  6.    key = "name";
  7.    alignment = centered;
  8.    edit_limit = 45;
  9.    edit_width = 50;
  10.    }
  11.    : button   
  12.    {
  13.    key = "accept";
  14.    label = "OK";
  15.    is_default = true;
  16.    fixed_width = true;
  17.    alignment = centered;
  18.    }
  19.    : errtile
  20.    {
  21.    width = 34;
  22.    }
  23. }

 
  1. (defun c:landowner (/ Layername LayerColor name)
  2. (setq SUCE (getvar "cmdecho"))
  3. (setq SUOM (getvar "orthomode"))
  4. (setq SUSM (getvar "osmode"))
  5. (setq SUAB (getvar "angbase"))
  6. (setq SUAD (getvar "angdir"))
  7. (setq SUCL (getvar "clayer"))
  8. (setq SUCR (getvar "cecolor"))
  9. (setq dcl_id (load_dialog "landowner.dcl"))
  10.     (if (not (new_dialog "landowner" dcl_id))
  11.     (exit)
  12.     );if
  13. (if *name1*
  14.    (set_tile "name" *name1*)
  15.    (set_tile "name" "Default")
  16. )
  17. (action_tile "name" "(setq *name1* $value)")
  18. (start_dialog)
  19. (unload_dialog dcl_id)
  20. (setq layername (strcat "CCC_LANDOWNER_"*name1*)
  21.             LayerColor (acad_colordlg 1 nil))
  22.   (entmake (list (cons 0 "LAYER")
  23.                 (cons 100 "AcDbSymbolTableRecord")
  24.                 (cons 100 "AcDbLayerTableRecord")
  25.                 (cons 2 Layername)
  26.                 (cons 62 LayerColor)      
  27.                 (cons 70 0)))
  28. (setvar "clayer" layername)
  29. (command "._pline")
  30. (while (= 1 (logand 1 (getvar "cmdactive")))
  31. (command pause))
  32. (setq pline (entlast)
  33.    elist (entget pline)
  34.    )
  35. (command "_.draworder" pline "" "_F");<--set pline's draw order to front
  36. (setvar "hpname" "honey")
  37. (setvar "hpscale" 2)
  38. (command "-hatch" "S" pline "" "")
  39. (setvar "hpname" ".")
  40. (setvar "cmdecho"   SUCE)
  41. (setvar "orthomode" SUOM)
  42. (setvar "osmode"    SUSM)
  43. (setvar "angbase"   SUAB)
  44. (setvar "angdir"    SUAD)
  45. (setvar "clayer"    SUCL)
  46. (setvar "cecolor"    SUCR)
  47. (princ)
  48. )

 
从调色板中选择颜色时,您可以选择Truecolor或Index color
 
我不明白的是亮度值,你想要不同颜色的普林线边界和图案填充吗?如果是这样。其中一个是按实体着色,另一个是按层
 
 
  1. [color=slategray](unload_dialog dcl_id)[/color]
  2. [color=slategray](setq layername (strcat "CCC_LANDOWNER_"*name1*)[/color]
  3.             [color=slategray]LayerColor [/color][color=blue](acad_truecolordlg '(62 . 7) nil))[/color]
  4.   [color=slategray](entmake [/color][color=blue](vl-remove nil[/color]
  5. [color=slategray](list (cons 0 "LAYER")[/color]
  6. [color=slategray]              (cons 100 "AcDbSymbolTableRecord")[/color]
  7. [color=slategray]              (cons 100 "AcDbLayerTableRecord")[/color]
  8. [color=slategray]              (cons 2 Layername)[/color]
  9.                 [color=blue](car LayerColor) [/color]
  10. [color=blue]              (if (> (length LayerColor) 1)[/color]
  11. [color=blue]                  (car (cdr LayerColor))) [/color]
  12.                [color=slategray] (cons 70 0)[color=blue])[/color]))[/color]
  13. [color=slategray](setvar "clayer" layername)[/color]
  14. [color=slategray]........................[/color]

 
这将pline转换为索引颜色,图案填充将保留为bylayer
 
否则,如果希望所有颜色保持按层,请为图案填充创建单独的层
 
所以顺便问一下,你是如何设置亮度的?你能告诉我怎么做吗?
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 09:32:54 | 显示全部楼层
亮度是HSL颜色模型中的“L”:wink:
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:34:58 | 显示全部楼层
谢谢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
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 09:39:11 | 显示全部楼层
这是一个简短得多的描述方式,但是的,李,这就是我想要的。谢谢
102110gu08u8uja6g80y8j.png
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 09:42:40 | 显示全部楼层
 
当然是这样
 
但我还是不知道
 
我待会儿查,李,谢谢
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 09:45:52 | 显示全部楼层
这可能是一种更简洁的方法:
 
  1. [color=slategray](command pause))[/color]
  2. [color=slategray](setq pline (entlast)[/color]
  3. [color=slategray] elist (entget pline)[/color]
  4. [color=slategray] )[/color]
  5. [color=blue](command "_chprop" pline "" "_color" (cdr (car LayerColor)) "" "")[/color]
  6. [color=slategray](command "_.draworder" pline "" "_F")[/color]
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:48:19 | 显示全部楼层
 
确实如此
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 09:50:19 | 显示全部楼层
伍德曼,
 
您是否希望独立于用户的颜色选择来控制颜色的亮度?一、 e.使用选择中的色调/饱和度值,但将亮度设置为特定值?
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-7 03:22 , Processed in 0.755221 second(s), 74 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表