乐筑天下

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

[编程交流] 检查/创建图层问题

[复制链接]

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:00:30 | 显示全部楼层
哦,请记住,上面发布的代码不会检查是否加载了线型。
 
要记住的事情。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:04:05 | 显示全部楼层
这将加载未加载的线型
 
  1. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] MkLay [b][color=RED]([/color][/b]Nme Col lTyp lWgt Plt [b][color=BLUE]/[/color][/b] lay[b][color=RED])[/color][/b]
  2. [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b]
  3. [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] lay
  4.    [b][color=RED]([/color][/b][b][color=BLUE]vla-add[/color][/b]
  5.      [b][color=RED]([/color][/b][b][color=BLUE]vla-get-layers[/color][/b]
  6.        [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveDocument[/color][/b]
  7.          [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-acad-object[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] Nme[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  8. [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] Col [b][color=RED]([/color][/b][b][color=BLUE]vla-put-Color[/color][/b] lay Col[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  9. [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] lTyp [b][color=RED]([/color][/b]lTload lTyp[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-put-Linetype[/color][/b] lay lTyp[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  10. [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] lWgt  [b][color=RED]([/color][/b][b][color=BLUE]vla-put-LineWeight[/color][/b] lay lWgt[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  11. [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] Plt[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-put-Plottable[/color][/b] lay :vlax-false[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  12. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] lTload [b][color=RED]([/color][/b]lTyp[b][color=RED])[/color][/b]
  13. [b][color=RED]([/color][/b][b][color=BLUE]or[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]tblsearch[/color][/b] [b][color=#ff00ff]"LTYPE"[/color][/b] lTyp[b][color=RED])[/color][/b]
  14.      [b][color=RED]([/color][/b][b][color=BLUE]vla-load[/color][/b]
  15.        [b][color=RED]([/color][/b][b][color=BLUE]vla-get-Linetypes[/color][/b]
  16.          [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveDocument[/color][/b]
  17.            [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-acad-object[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] lTyp [b][color=#ff00ff]"acad.lin"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  18. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:DoLayers [b][color=RED]([/color][/b][b][color=RED])[/color][/b]
  19. [b][color=#990099][color=Red]([/color][/color][/b][color=#990099][color=black]purgelayers[/color][/color][b][color=#990099][color=Red])[/color][/color][/b]
  20. [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b]MkLay
  21.          [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b] [b][color=#ff00ff]"CEN"[/color][/b]   [b][color=#ff00ff]"DIMS"[/color][/b] [b][color=#ff00ff]"HAT"[/color][/b]  [b][color=#ff00ff]"HID"[/color][/b]   [b][color=#ff00ff]"LOGO"[/color][/b] [b][color=#ff00ff]"OBJ"[/color][/b]  [b][color=#ff00ff]"PAPER"[/color][/b]   [b][color=#ff00ff]"PHAN"[/color][/b]   [b][color=#ff00ff]"TITLE"[/color][/b] [b][color=#ff00ff]"TXT"[/color][/b][b][color=RED])[/color][/b]  [i][color=#990099]; Name[/color][/i]
  22.          [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b]   [b][color=#009900]6[/color][/b]       [b][color=#009900]1[/color][/b]      [b][color=#009900]3[/color][/b]      [b][color=#009900]4[/color][/b]       [b][color=#009900]176[/color][/b]    [b][color=#009900]2[/color][/b]       [b][color=#009900]5[/color][/b]         [b][color=#009900]6[/color][/b]       [b][color=#009900]176[/color][/b]     [b][color=#009900]7[/color][/b]  [b][color=RED])[/color][/b]  [i][color=#990099]; Colours[/color][/i]
  23.          [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#ff00ff]"CENTER"[/color][/b]  [b][color=BLUE]nil[/color][/b]    [b][color=BLUE]nil[/color][/b]  [b][color=#ff00ff]"HIDDEN"[/color][/b]   [b][color=BLUE]nil[/color][/b]   [b][color=BLUE]nil[/color][/b]  [b][color=#ff00ff]"PHANTOM"[/color][/b] [b][color=#ff00ff]"PHANTOM"[/color][/b]   [b][color=BLUE]nil[/color][/b]    [b][color=BLUE]nil[/color][/b] [b][color=RED])[/color][/b]  [i][color=#990099]; LineType[/color][/i]
  24.          [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b]  [b][color=#009999]0.18[/color][/b]   [b][color=#009999]0.18[/color][/b]   [b][color=#009999]0.18[/color][/b]    [b][color=#009999]0.15[/color][/b]    [b][color=#009999]0.09[/color][/b]  [b][color=#009999]0.40[/color][/b]     [b][color=BLUE]nil[/color][/b]      [b][color=#009999]0.18[/color][/b]      [b][color=BLUE]nil[/color][/b]    [b][color=BLUE]nil[/color][/b] [b][color=RED])[/color][/b]  [i][color=#990099]; LineWeight[/color][/i]
  25.          [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b]   [b][color=BLUE]T[/color][/b]       [b][color=BLUE]T[/color][/b]      [b][color=BLUE]T[/color][/b]      [b][color=BLUE]T[/color][/b]        [b][color=BLUE]T[/color][/b]     [b][color=BLUE]T[/color][/b]      [b][color=BLUE]nil[/color][/b]        [b][color=BLUE]T[/color][/b]        [b][color=BLUE]T[/color][/b]      [b][color=BLUE]T[/color][/b]  [b][color=RED])[/color][/b][b][color=RED])[/color][/b] [i][color=#990099]; Plottable (T or nil)[/color][/i]
  26. [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
回复

使用道具 举报

12

主题

57

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 15:07:46 | 显示全部楼层
  1. (defun purgelayers ()
  2. (command "-purge" "LA" "" "N")
  3. )

 
 
这是purgelayers,他们知道我以前没有抄过。基本上,我想清除所有不是lisp中提供的层名称的层
回复

使用道具 举报

12

主题

57

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 15:12:16 | 显示全部楼层
李跑了你的,唯一的事情是没有拿起线宽。所有图层设置均设置为执行linewieght设置为0.00
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:16:05 | 显示全部楼层
 
将检查-
 
你注意到速度差了吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:17:04 | 显示全部楼层
好的,这应该可以:
 
  1. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] MkLay [b][color=RED]([/color][/b]Nme Col lTyp lWgt Plt [b][color=BLUE]/[/color][/b] lay[b][color=RED])[/color][/b]
  2. [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b]
  3. [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] lay
  4.    [b][color=RED]([/color][/b][b][color=BLUE]vla-add[/color][/b]
  5.      [b][color=RED]([/color][/b][b][color=BLUE]vla-get-layers[/color][/b]
  6.        [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveDocument[/color][/b]
  7.          [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-acad-object[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] Nme[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  8. [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] Col [b][color=RED]([/color][/b][b][color=BLUE]vla-put-Color[/color][/b] lay Col[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  9. [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] lTyp [b][color=RED]([/color][/b]lTload lTyp[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-put-Linetype[/color][/b] lay lTyp[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  10. [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] lWgt  [b][color=RED]([/color][/b][b][color=BLUE]vla-put-LineWeight[/color][/b] lay [b][color=RED]([/color][/b][b][color=BLUE]eval[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]read[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] [b][color=#ff00ff]"acLnWt"[/color][/b] lWgt[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  11. [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] Plt[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-put-Plottable[/color][/b] lay :vlax-false[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  12. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] lTload [b][color=RED]([/color][/b]lTyp[b][color=RED])[/color][/b]
  13. [b][color=RED]([/color][/b][b][color=BLUE]or[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]tblsearch[/color][/b] [b][color=#ff00ff]"LTYPE"[/color][/b] lTyp[b][color=RED])[/color][/b]
  14.      [b][color=RED]([/color][/b][b][color=BLUE]vla-load[/color][/b]
  15.        [b][color=RED]([/color][/b][b][color=BLUE]vla-get-Linetypes[/color][/b]
  16.          [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveDocument[/color][/b]
  17.            [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-acad-object[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] lTyp [b][color=#ff00ff]"acad.lin"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  18. [b][color=BLUE]t[/color][/b][b][color=RED])[/color][/b]
  19. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:DoLayers [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] cm[b][color=RED])[/color][/b]
  20. [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b]
  21. [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] cm [b][color=RED]([/color][/b][b][color=BLUE]getvar[/color][/b] [b][color=#ff00ff]"CMDECHO"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  22. [b][color=RED]([/color][/b][b][color=BLUE]setvar[/color][/b] [b][color=#ff00ff]"CMDECHO"[/color][/b] [b][color=#009900]0[/color][/b][b][color=RED])[/color][/b]
  23. [b][color=RED]([/color][/b][b][color=BLUE]vl-cmdf[/color][/b] [b][color=#ff00ff]"_.-purge"[/color][/b] [b][color=#ff00ff]"_LA"[/color][/b] [b][color=#ff00ff]"*"[/color][/b] [b][color=#ff00ff]"_N"[/color][/b][b][color=RED])[/color][/b]
  24. [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b]MkLay
  25.          
  26.          [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b] [b][color=#ff00ff]"CEN"[/color][/b]   [b][color=#ff00ff]"DIMS"[/color][/b] [b][color=#ff00ff]"HAT"[/color][/b]  [b][color=#ff00ff]"HID"[/color][/b]   [b][color=#ff00ff]"LOGO"[/color][/b] [b][color=#ff00ff]"OBJ"[/color][/b]  [b][color=#ff00ff]"PAPER"[/color][/b]   [b][color=#ff00ff]"PHAN"[/color][/b]   [b][color=#ff00ff]"TITLE"[/color][/b] [b][color=#ff00ff]"TXT"[/color][/b][b][color=RED])[/color][/b]  [i][color=#990099]; Name [str][/color][/i]
  27.          [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b]   [b][color=#009900]6[/color][/b]       [b][color=#009900]1[/color][/b]      [b][color=#009900]3[/color][/b]      [b][color=#009900]4[/color][/b]       [b][color=#009900]176[/color][/b]    [b][color=#009900]2[/color][/b]       [b][color=#009900]5[/color][/b]         [b][color=#009900]6[/color][/b]       [b][color=#009900]176[/color][/b]     [b][color=#009900]7[/color][/b]  [b][color=RED])[/color][/b]  [i][color=#990099]; Colours [int][/color][/i]
  28.          [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#ff00ff]"CENTER"[/color][/b]  [b][color=BLUE]nil[/color][/b]    [b][color=BLUE]nil[/color][/b]  [b][color=#ff00ff]"HIDDEN"[/color][/b]   [b][color=BLUE]nil[/color][/b]   [b][color=BLUE]nil[/color][/b]  [b][color=#ff00ff]"PHANTOM"[/color][/b] [b][color=#ff00ff]"PHANTOM"[/color][/b]   [b][color=BLUE]nil[/color][/b]    [b][color=BLUE]nil[/color][/b] [b][color=RED])[/color][/b]  [i][color=#990099]; LineType [str][/color][/i]
  29.          [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b] [b][color=#ff00ff]"018"[/color][/b]   [b][color=#ff00ff]"018"[/color][/b]  [b][color=#ff00ff]"018"[/color][/b]  [b][color=#ff00ff]"015"[/color][/b]    [b][color=#ff00ff]"009"[/color][/b] [b][color=#ff00ff]"040"[/color][/b]    [b][color=BLUE]nil[/color][/b]      [b][color=#ff00ff]"018"[/color][/b]     [b][color=BLUE]nil[/color][/b]    [b][color=BLUE]nil[/color][/b] [b][color=RED])[/color][/b]  [i][color=#990099]; LineWeight [str] 0.18 = "018"[/color][/i]
  30.          [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b]   [b][color=BLUE]T[/color][/b]       [b][color=BLUE]T[/color][/b]      [b][color=BLUE]T[/color][/b]      [b][color=BLUE]T[/color][/b]        [b][color=BLUE]T[/color][/b]     [b][color=BLUE]T[/color][/b]      [b][color=BLUE]nil[/color][/b]        [b][color=BLUE]T[/color][/b]        [b][color=BLUE]T[/color][/b]      [b][color=BLUE]T[/color][/b]  [b][color=RED])[/color][/b][b][color=RED])[/color][/b] [i][color=#990099]; Plottable (T or nil)[/color][/i]
  31. [b][color=RED]([/color][/b][b][color=BLUE]setvar[/color][/b] [b][color=#ff00ff]"CMDECHO"[/color][/b] cm[b][color=RED])[/color][/b]
  32. [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
回复

使用道具 举报

59

主题

327

帖子

268

银币

后起之秀

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

铜币
295
发表于 2022-7-6 15:19:25 | 显示全部楼层
李,这就是我的解决方案。
 
我想在插入特定块时创建一个特定层,即在层“box”、线型中心、设置为非打印的层中插入一个名为“box”的块,我使用内部菜单中的宏:
 
  1. ^C^Ccreatelayer;Center;m_boxes;3;n;

 
这是打开图形时启动的lisp:
 
  1. (defun c:createlayer (/ ltname layname laycol cmdold lay)
  2. (vl-load-com)
  3. (setq ltname (getstring "\nPlease enter the name of the linetype: ")
  4.        layname (getstring "\nPlease enter the name of the layer: ")
  5.        laycol (getint "\nPlease enter the colour of the layer: ")
  6. layplot (getstring "\nDo you want the layer to be <Plot> or <Non plot>: ")
  7.        cmdold (getvar "CMDECHO"))
  8. (setvar "CMDECHO" 0)
  9. ;; Loading Linetype  ~ Another option to consider:
  10. (if (not (tblsearch "LTYPE" ltname))
  11.    (vla-load
  12.      (vla-get-Linetypes
  13.        (vla-get-ActiveDocument
  14.          (vlax-get-acad-object))) ltname "acad.lin"))
  15. ;; Layer Checking & Creation
  16. (if (not (tblsearch "LAYER" layname))
  17.    (command "_.-layer" "_M" layname "_L" ltname layname "_C" laycol layname "_P" layplot "" "")
  18.    (setvar "CLAYER" layname))
  19. ;; Another Option for Layer Creation to Consider:
  20. (if (not (tblsearch "LAYER" layname))
  21.    (progn
  22.      (setq lay (vla-add
  23.                  (vla-get-layers
  24.                    (vla-get-ActiveDocument
  25.                      (vlax-get-acad-object))) layname))
  26.      (vla-put-color lay laycol)
  27.      (vla-put-linetype lay ltname)))
  28. (setvar "CLAYER" layname)
  29. ;; Reset CMDECHO
  30. (setvar "CMDECHO" cmdold)
  31. (princ))

 
所以现在我在宏中指定层,这给了我很大的灵活性,每当有一种新的块要插入时,我就创建层。。。
 
但是所有的功劳都要归功于李,没有你的帮助,我是不可能做到的。
回复

使用道具 举报

12

主题

57

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 15:24:51 | 显示全部楼层
 
 
是的,李,快一点谢谢
 
哦,你使用的vl-load-com和vla是什么?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:27:41 | 显示全部楼层
 
它们是Visual LISP方法-AfraLISP有很多关于它们的信息
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:31:27 | 显示全部楼层
 
谢谢Marco,
 
但请记住,对于您的代码,您有两个部分做相同的事情。-您可能需要考虑删除一个。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 00:26 , Processed in 0.703895 second(s), 70 queries .

© 2020-2025 乐筑天下

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