乐筑天下

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

[编程交流] 将特定图层指定给工具

[复制链接]

24

主题

109

帖子

85

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-6 16:56:56 | 显示全部楼层
 
我试过了,但它所做的是打开图层(我猜,这样我可以添加一个)。更确切地说,是让它自己添加维度层,然后将维度放在“维度”上,这可能吗?
 
还希望有人知道如何在项目插入后使图层返回到原始图层,而不是对所有我想要更改的内容(图案填充、尺寸标注、继续尺寸标注、视口、文本)使用lisp例程
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 17:02:31 | 显示全部楼层
 
试试这个:
 
-层;“m”;“尺寸”;;
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 17:04:32 | 显示全部楼层
 
我知道你是从哪里来的,但我不知道如何通过点击LISP来重置层,但也许有人已经找到了一种方法。
 
如果您想继续使用LISP方式,可以很容易地修改发布的LISP以适应大多数命令。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 17:08:48 | 显示全部楼层
另一个想法——为什么不只用反应堆呢?
 
这是我在另一个线程上发布的reactor-它将自动将当前层更改为特定层,然后在命令结束或中止后,原始当前层将返回。
 
  1. ; Layer Director by Lee McDonnell
  2. (vl-load-com)
  3. (vlr-command-reactor
  4.    nil
  5.    '((:vlr-commandWillstart . startCommand))
  6. ) ; end command reactor
  7. (vlr-command-reactor
  8.    nil
  9.    '((:vlr-commandEnded . endcommand))
  10. ) ; end command reactor
  11. (vlr-command-reactor
  12.    nil
  13.    '((:vlr-commandCancelled . cancelCommand))
  14. ) ; end command reactor
  15. (defun startCommand (calling-reactor startcommandInfo / thecommandstart)
  16.    (setq oldlay (getvar "clayer"))
  17.    (setq thecommandstart (nth 0 startcommandInfo))
  18.    (cond
  19.    ((= thecommandstart "TEXT")
  20.     (setvar "clayer" "TEXT")
  21.    ) ; end condition 1
  22.    ((= thecommandstart "MTEXT")
  23.     (setvar "clayer" "TEXT")
  24.    ) ; end condition 2
  25.    ((= thecommandstart "DTEXT")
  26.     (setvar "clayer" "TEXT")
  27.    ) ; end condition 3
  28. ;        ---------------------------
  29.    ((= thecommandstart "DIMLINEAR")
  30.     (setvar "clayer" "DIM")
  31.    ) ; end condition 4
  32.    ((= thecommandstart "DIMALIGNED")
  33.     (setvar "clayer" "DIM")
  34.    ) ; end condition 5
  35.    ((= thecommandstart "DIMRADIUS")
  36.     (setvar "clayer" "DIM")
  37.    ) ; end condition 6
  38.    ((= thecommandstart "DIMDIAMETER")
  39.     (setvar "clayer" "DIM")
  40.    ) ; end condition 7
  41.    ((= thecommandstart "DIMANGULAR")
  42.     (setvar "clayer" "DIM")
  43.    ) ; end condition 8
  44.    ((= thecommandstart "DIMORDINATE")
  45.     (setvar "clayer" "DIM")
  46.    ) ; end condition 9
  47. ;        ---------------------------
  48.    ((= thecommandstart "+VPORTS")
  49.     (setvar "clayer" "DEFPOINTS")
  50.    ) ; end condition 10
  51.    ) ; end cond
  52.    (princ)
  53. ) ; end startcommand
  54. (defun endCommand (calling-reactor endcommandInfo / thecommandend)
  55.    (setq thecommandend (nth 0 endcommandInfo))
  56.    (cond
  57.    ((= thecommandend "TEXT")
  58.     (setvar "clayer" oldlay)
  59.    ) ; end condition 1
  60.    ((= thecommandend "MTEXT")
  61.     (setvar "clayer" oldlay)
  62.    ) ; end condition 2
  63.    ((= thecommandend "DTEXT")
  64.     (setvar "clayer" oldlay)
  65.    ) ; end condition 3
  66. ;        ---------------------------
  67.    ((= thecommandend "DIMLINEAR")
  68.     (setvar "clayer" oldlay)
  69.    ) ; end condition 4
  70.    ((= thecommandend "DIMALIGNED")
  71.     (setvar "clayer" oldlay)
  72.    ) ; end condition 5
  73.    ((= thecommandend "DIMRADIUS")
  74.     (setvar "clayer" oldlay)
  75.    ) ; end condition 6
  76.    ((= thecommandend "DIMDIAMETER")
  77.     (setvar "clayer" oldlay)
  78.    ) ; end condition 7
  79.    ((= thecommandend "DIMANGULAR")
  80.     (setvar "clayer" oldlay)
  81.    ) ; end condition 8
  82.    ((= thecommandend "DIMORDINATE")
  83.     (setvar "clayer" oldlay)
  84.    ) ; end condition 9
  85. ;        ---------------------------
  86.    ((= thecommandend "+VPORTS")
  87.     (setvar "clayer" oldlay)
  88.    ) ; end condition 10
  89.    ) ; end cond
  90.    (princ)
  91. ) ; end endCommand
  92. (defun cancelCommand (calling-reactor cancelcommandInfo / thecommandcancel)
  93.    (setq thecommandcancel (nth 0 cancelcommandInfo))
  94.    (cond
  95.    ((= thecommandcancel "TEXT")
  96.     (setvar "clayer" oldlay)
  97.    ) ; end condition 1
  98.    ((= thecommandcancel "MTEXT")
  99.     (setvar "clayer" oldlay)
  100.    ) ; end condition 2
  101.    ((= thecommandcancel "DTEXT")
  102.     (setvar "clayer" oldlay)
  103.    ) ; end condition 3
  104. ;        ---------------------------
  105.    ((= thecommandcancel "DIMLINEAR")
  106.     (setvar "clayer" oldlay)
  107.    ) ; end condition 4
  108.    ((= thecommandcancel "DIMALIGNED")
  109.     (setvar "clayer" oldlay)
  110.    ) ; end condition 5
  111.    ((= thecommandcancel "DIMRADIUS")
  112.     (setvar "clayer" oldlay)
  113.    ) ; end condition 6
  114.    ((= thecommandcancel "DIMDIAMETER")
  115.     (setvar "clayer" oldlay)
  116.    ) ; end condition 7
  117.    ((= thecommandcancel "DIMANGULAR")
  118.     (setvar "clayer" oldlay)
  119.    ) ; end condition 8
  120.    ((= thecommandcancel "DIMORDINATE")
  121.     (setvar "clayer" oldlay)
  122.    ) ; end condition 9
  123. ;        ---------------------------
  124.    ((= thecommandcancel "+VPORTS")
  125.     (setvar "clayer" oldlay)
  126.    ) ; end condition 10
  127.    ) ; end cond
  128.    (princ)
  129. ) ; end cancelCommand
  130. (defun makelay (lay / oldlay)
  131.    (if    (not (tblsearch "LAYER" lay))
  132.    (progn
  133.        (setq oldlay (getvar "clayer"))
  134.        (setvar "cmdecho" 0)
  135.        (command "-layer" "m" lay "")
  136.        (setvar "cmdecho" 1)
  137.        (setvar "clayer" oldlay)
  138.    ) ;_  end progn
  139.    ) ;_  end if
  140. ) ;_  end defun
  141. (mapcar 'makelay '("TEXT" "DIM" "DEFPOINTS"))

 
上述内容可以修改以适应不同的层结构。
回复

使用道具 举报

24

主题

109

帖子

85

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-6 17:11:08 | 显示全部楼层
和Lisp程序一样,我对反应堆不太熟悉。我试一下那个反应堆,但我怎么用呢?例如,我如何将其设置为适用于单行文字?请记住,我不知道它是如何工作的,所以我需要知道如何加载它,如果我像用lisps等保存它一样。谢谢李
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 17:12:41 | 显示全部楼层
 
使用reactor,将其保存到记事本文档(.lsp),就像LISP一样,然后将其加载到ACAD启动中。因为它是一个反应器,所以没有语法可以输入——它是自动运行的。
 
您可能需要修改它以适合您的层结构,但请尝试一下,看看它是否适合您的使用。
回复

使用道具 举报

24

主题

109

帖子

85

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-6 17:15:53 | 显示全部楼层
李看起来不错。有一个请求,你能给它加上舱口吗?我只使用单个hatch命令,我希望它位于名为“hatch”的图层上
回复

使用道具 举报

24

主题

109

帖子

85

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-6 17:19:25 | 显示全部楼层
还有李,我发现在我做了一个视口后,它并没有将图层更改回原始状态。我会自己解决它,希望能解决它,但如果没有,你能看看吗?
回复

使用道具 举报

24

主题

109

帖子

85

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-6 17:22:56 | 显示全部楼层
李,我用我绝对超凡的技能自己想办法做舱口。我要感谢你,虽然有一个问题是,我看到你添加了添加图层的功能,如果它们不在DWG中,我尝试在文字“hatch”中添加,我认为它会去,所以它也适用于hatch,但由于某些原因,它没有。另外,当它生成“文本”层时,我们是否可以将其设置为黄色,而不是出现的白色?所以我的3个问题是:
 
1、图案填充层如果不存在,则不会添加到图纸中。
2、文字层变为黄色。
3.当视口已打开时,定义点不会更改为旧层。
 
这是我的代码:
  1.   ; Layer Director by Lee McDonnell
  2. (vl-load-com)
  3. (vlr-command-reactor
  4.    nil
  5.    '((:vlr-commandWillstart . startCommand))
  6. ) ; end command reactor
  7. (vlr-command-reactor
  8.    nil
  9.    '((:vlr-commandEnded . endcommand))
  10. ) ; end command reactor
  11. (vlr-command-reactor
  12.    nil
  13.    '((:vlr-commandCancelled . cancelCommand))
  14. ) ; end command reactor
  15. (defun startCommand (calling-reactor startcommandInfo / thecommandstart)
  16.    (setq oldlay (getvar "clayer"))
  17.    (setq thecommandstart (nth 0 startcommandInfo))
  18.    (cond
  19.    ((= thecommandstart "TEXT")
  20.     (setvar "clayer" "TEXT")
  21.    ) ; end condition 1
  22.    ((= thecommandstart "MTEXT")
  23.     (setvar "clayer" "TEXT")
  24.    ) ; end condition 2
  25.    ((= thecommandstart "DTEXT")
  26.     (setvar "clayer" "TEXT")
  27.    ) ; end condition 3
  28. ;        ---------------------------
  29.    ((= thecommandstart "DIMLINEAR")
  30.     (setvar "clayer" "DIMENSIONS")
  31.    ) ; end condition 4
  32.    ((= thecommandstart "DIMALIGNED")
  33.     (setvar "clayer" "DIMENSIONS")
  34.    ) ; end condition 5
  35.    ((= thecommandstart "DIMRADIUS")
  36.     (setvar "clayer" "DIMENSIONS")
  37.    ) ; end condition 6
  38.    ((= thecommandstart "DIMCONTINUE")
  39.     (setvar "clayer" "DIMENSIONS")
  40.    ) ; end condition 7
  41.    ((= thecommandstart "DIMANGULAR")
  42.     (setvar "clayer" "DIMENSIONS")
  43.    ) ; end condition 8
  44.    ((= thecommandstart "QLEADER")
  45.     (setvar "clayer" "DIMENSIONS")
  46.    ) ; end condition 9
  47. ;        ---------------------------
  48.    ((= thecommandstart "BHATCH")
  49.     (setvar "clayer" "HATCH")
  50.    ) ; end condition 11
  51. ;        ---------------------------
  52.    ((= thecommandstart "+VPORTS")
  53.     (setvar "clayer" "DEFPOINTS")
  54.    ) ; end condition 10
  55.    ) ; end cond
  56.    (princ)
  57. ) ; end startcommand
  58. (defun endCommand (calling-reactor endcommandInfo / thecommandend)
  59.    (setq thecommandend (nth 0 endcommandInfo))
  60.    (cond
  61.    ((= thecommandend "TEXT")
  62.     (setvar "clayer" oldlay)
  63.    ) ; end condition 1
  64.    ((= thecommandend "MTEXT")
  65.     (setvar "clayer" oldlay)
  66.    ) ; end condition 2
  67.    ((= thecommandend "DTEXT")
  68.     (setvar "clayer" oldlay)
  69.    ) ; end condition 3
  70. ;        ---------------------------
  71.    ((= thecommandend "DIMLINEAR")
  72.     (setvar "clayer" oldlay)
  73.    ) ; end condition 4
  74.    ((= thecommandend "DIMALIGNED")
  75.     (setvar "clayer" oldlay)
  76.    ) ; end condition 5
  77.    ((= thecommandend "DIMRADIUS")
  78.     (setvar "clayer" oldlay)
  79.    ) ; end condition 6
  80.    ((= thecommandend "DIMCONTINUE")
  81.     (setvar "clayer" oldlay)
  82.    ) ; end condition 7
  83.    ((= thecommandend "DIMANGULAR")
  84.     (setvar "clayer" oldlay)
  85.    ) ; end condition 8
  86.    ((= thecommandend "QLEADER")
  87.     (setvar "clayer" oldlay)
  88.    ) ; end condition 9
  89.    ((= thecommandend "BHATCH")
  90.     (setvar "clayer" oldlay)
  91.    ) ; end condition 11
  92. ;        ---------------------------
  93.    ((= thecommandend "+VPORTS")
  94.     (setvar "clayer" oldlay)
  95.    ) ; end condition 10
  96.    ) ; end cond
  97.    (princ)
  98. ) ; end endCommand
  99. (defun cancelCommand (calling-reactor cancelcommandInfo / thecommandcancel)
  100.    (setq thecommandcancel (nth 0 cancelcommandInfo))
  101.    (cond
  102.    ((= thecommandcancel "TEXT")
  103.     (setvar "clayer" oldlay)
  104.    ) ; end condition 1
  105.    ((= thecommandcancel "MTEXT")
  106.     (setvar "clayer" oldlay)
  107.    ) ; end condition 2
  108.    ((= thecommandcancel "DTEXT")
  109.     (setvar "clayer" oldlay)
  110.    ) ; end condition 3
  111. ;        ---------------------------
  112.    ((= thecommandcancel "DIMLINEAR")
  113.     (setvar "clayer" oldlay)
  114.    ) ; end condition 4
  115.    ((= thecommandcancel "DIMALIGNED")
  116.     (setvar "clayer" oldlay)
  117.    ) ; end condition 5
  118.    ((= thecommandcancel "DIMRADIUS")
  119.     (setvar "clayer" oldlay)
  120.    ) ; end condition 6
  121.    ((= thecommandcancel "DIMCONTINUE")
  122.     (setvar "clayer" oldlay)
  123.    ) ; end condition 7
  124.    ((= thecommandcancel "DIMANGULAR")
  125.     (setvar "clayer" oldlay)
  126.    ) ; end condition 8
  127.    ((= thecommandcancel "QLEADER")
  128.     (setvar "clayer" oldlay)
  129.    ) ; end condition 9
  130.    ((= thecommandcancel "BHATCH")
  131.     (setvar "clayer" oldlay)
  132.    ) ; end condition 11
  133. ;        ---------------------------
  134.    ((= thecommandcancel "+VPORTS")
  135.     (setvar "clayer" oldlay)
  136.    ) ; end condition 10
  137.    ) ; end cond
  138.    (princ)
  139. ) ; end cancelCommand
  140. (defun makelay (lay / oldlay)
  141.    (if    (not (tblsearch "LAYER" lay))
  142.    (progn
  143.        (setq oldlay (getvar "clayer"))
  144.        (setvar "cmdecho" 0)
  145.        (command "-layer" "m" lay "")
  146.        (setvar "cmdecho" 1)
  147.        (setvar "clayer" oldlay)
  148.    ) ;_  end progn
  149.    ) ;_  end if
  150. ) ;_  end defun
  151. (mapcar 'makelay '("TEXT" "Dimensions" "DEFPOINTS"))xt" "Dimensions" "Defpoints"))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 17:25:36 | 显示全部楼层
我已经更新了LISP以包括这一点。 
同样,LISP已经更新,以包括这一点。 
我似乎没有这个问题:我去查看>视口>新视口>然后绘制视口,在完成绘制视口后,图层将恢复为原始图层。 
无论如何,试试这个:
 
  1. 3
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 20:03 , Processed in 0.399498 second(s), 70 queries .

© 2020-2025 乐筑天下

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