我试过了,但它所做的是打开图层(我猜,这样我可以添加一个)。更确切地说,是让它自己添加维度层,然后将维度放在“维度”上,这可能吗?
还希望有人知道如何在项目插入后使图层返回到原始图层,而不是对所有我想要更改的内容(图案填充、尺寸标注、继续尺寸标注、视口、文本)使用lisp例程
试试这个:
-层;“m”;“尺寸”;;
我知道你是从哪里来的,但我不知道如何通过点击LISP来重置层,但也许有人已经找到了一种方法。
如果您想继续使用LISP方式,可以很容易地修改发布的LISP以适应大多数命令。 另一个想法——为什么不只用反应堆呢?
这是我在另一个线程上发布的reactor-它将自动将当前层更改为特定层,然后在命令结束或中止后,原始当前层将返回。
; Layer Director by Lee McDonnell
(vl-load-com)
(vlr-command-reactor
nil
'((:vlr-commandWillstart . startCommand))
) ; end command reactor
(vlr-command-reactor
nil
'((:vlr-commandEnded . endcommand))
) ; end command reactor
(vlr-command-reactor
nil
'((:vlr-commandCancelled . cancelCommand))
) ; end command reactor
(defun startCommand (calling-reactor startcommandInfo / thecommandstart)
(setq oldlay (getvar "clayer"))
(setq thecommandstart (nth 0 startcommandInfo))
(cond
((= thecommandstart "TEXT")
(setvar "clayer" "TEXT")
) ; end condition 1
((= thecommandstart "MTEXT")
(setvar "clayer" "TEXT")
) ; end condition 2
((= thecommandstart "DTEXT")
(setvar "clayer" "TEXT")
) ; end condition 3
; ---------------------------
((= thecommandstart "DIMLINEAR")
(setvar "clayer" "DIM")
) ; end condition 4
((= thecommandstart "DIMALIGNED")
(setvar "clayer" "DIM")
) ; end condition 5
((= thecommandstart "DIMRADIUS")
(setvar "clayer" "DIM")
) ; end condition 6
((= thecommandstart "DIMDIAMETER")
(setvar "clayer" "DIM")
) ; end condition 7
((= thecommandstart "DIMANGULAR")
(setvar "clayer" "DIM")
) ; end condition 8
((= thecommandstart "DIMORDINATE")
(setvar "clayer" "DIM")
) ; end condition 9
; ---------------------------
((= thecommandstart "+VPORTS")
(setvar "clayer" "DEFPOINTS")
) ; end condition 10
) ; end cond
(princ)
) ; end startcommand
(defun endCommand (calling-reactor endcommandInfo / thecommandend)
(setq thecommandend (nth 0 endcommandInfo))
(cond
((= thecommandend "TEXT")
(setvar "clayer" oldlay)
) ; end condition 1
((= thecommandend "MTEXT")
(setvar "clayer" oldlay)
) ; end condition 2
((= thecommandend "DTEXT")
(setvar "clayer" oldlay)
) ; end condition 3
; ---------------------------
((= thecommandend "DIMLINEAR")
(setvar "clayer" oldlay)
) ; end condition 4
((= thecommandend "DIMALIGNED")
(setvar "clayer" oldlay)
) ; end condition 5
((= thecommandend "DIMRADIUS")
(setvar "clayer" oldlay)
) ; end condition 6
((= thecommandend "DIMDIAMETER")
(setvar "clayer" oldlay)
) ; end condition 7
((= thecommandend "DIMANGULAR")
(setvar "clayer" oldlay)
) ; end condition 8
((= thecommandend "DIMORDINATE")
(setvar "clayer" oldlay)
) ; end condition 9
; ---------------------------
((= thecommandend "+VPORTS")
(setvar "clayer" oldlay)
) ; end condition 10
) ; end cond
(princ)
) ; end endCommand
(defun cancelCommand (calling-reactor cancelcommandInfo / thecommandcancel)
(setq thecommandcancel (nth 0 cancelcommandInfo))
(cond
((= thecommandcancel "TEXT")
(setvar "clayer" oldlay)
) ; end condition 1
((= thecommandcancel "MTEXT")
(setvar "clayer" oldlay)
) ; end condition 2
((= thecommandcancel "DTEXT")
(setvar "clayer" oldlay)
) ; end condition 3
; ---------------------------
((= thecommandcancel "DIMLINEAR")
(setvar "clayer" oldlay)
) ; end condition 4
((= thecommandcancel "DIMALIGNED")
(setvar "clayer" oldlay)
) ; end condition 5
((= thecommandcancel "DIMRADIUS")
(setvar "clayer" oldlay)
) ; end condition 6
((= thecommandcancel "DIMDIAMETER")
(setvar "clayer" oldlay)
) ; end condition 7
((= thecommandcancel "DIMANGULAR")
(setvar "clayer" oldlay)
) ; end condition 8
((= thecommandcancel "DIMORDINATE")
(setvar "clayer" oldlay)
) ; end condition 9
; ---------------------------
((= thecommandcancel "+VPORTS")
(setvar "clayer" oldlay)
) ; end condition 10
) ; end cond
(princ)
) ; end cancelCommand
(defun makelay (lay / oldlay)
(if (not (tblsearch "LAYER" lay))
(progn
(setq oldlay (getvar "clayer"))
(setvar "cmdecho" 0)
(command "-layer" "m" lay "")
(setvar "cmdecho" 1)
(setvar "clayer" oldlay)
) ;_end progn
) ;_end if
) ;_end defun
(mapcar 'makelay '("TEXT" "DIM" "DEFPOINTS"))
上述内容可以修改以适应不同的层结构。 和Lisp程序一样,我对反应堆不太熟悉。我试一下那个反应堆,但我怎么用呢?例如,我如何将其设置为适用于单行文字?请记住,我不知道它是如何工作的,所以我需要知道如何加载它,如果我像用lisps等保存它一样。谢谢李
使用reactor,将其保存到记事本文档(.lsp),就像LISP一样,然后将其加载到ACAD启动中。因为它是一个反应器,所以没有语法可以输入——它是自动运行的。
您可能需要修改它以适合您的层结构,但请尝试一下,看看它是否适合您的使用。 李看起来不错。有一个请求,你能给它加上舱口吗?我只使用单个hatch命令,我希望它位于名为“hatch”的图层上 还有李,我发现在我做了一个视口后,它并没有将图层更改回原始状态。我会自己解决它,希望能解决它,但如果没有,你能看看吗? 李,我用我绝对超凡的技能自己想办法做舱口。我要感谢你,虽然有一个问题是,我看到你添加了添加图层的功能,如果它们不在DWG中,我尝试在文字“hatch”中添加,我认为它会去,所以它也适用于hatch,但由于某些原因,它没有。另外,当它生成“文本”层时,我们是否可以将其设置为黄色,而不是出现的白色?所以我的3个问题是:
1、图案填充层如果不存在,则不会添加到图纸中。
2、文字层变为黄色。
3.当视口已打开时,定义点不会更改为旧层。
这是我的代码:
; Layer Director by Lee McDonnell
(vl-load-com)
(vlr-command-reactor
nil
'((:vlr-commandWillstart . startCommand))
) ; end command reactor
(vlr-command-reactor
nil
'((:vlr-commandEnded . endcommand))
) ; end command reactor
(vlr-command-reactor
nil
'((:vlr-commandCancelled . cancelCommand))
) ; end command reactor
(defun startCommand (calling-reactor startcommandInfo / thecommandstart)
(setq oldlay (getvar "clayer"))
(setq thecommandstart (nth 0 startcommandInfo))
(cond
((= thecommandstart "TEXT")
(setvar "clayer" "TEXT")
) ; end condition 1
((= thecommandstart "MTEXT")
(setvar "clayer" "TEXT")
) ; end condition 2
((= thecommandstart "DTEXT")
(setvar "clayer" "TEXT")
) ; end condition 3
; ---------------------------
((= thecommandstart "DIMLINEAR")
(setvar "clayer" "DIMENSIONS")
) ; end condition 4
((= thecommandstart "DIMALIGNED")
(setvar "clayer" "DIMENSIONS")
) ; end condition 5
((= thecommandstart "DIMRADIUS")
(setvar "clayer" "DIMENSIONS")
) ; end condition 6
((= thecommandstart "DIMCONTINUE")
(setvar "clayer" "DIMENSIONS")
) ; end condition 7
((= thecommandstart "DIMANGULAR")
(setvar "clayer" "DIMENSIONS")
) ; end condition 8
((= thecommandstart "QLEADER")
(setvar "clayer" "DIMENSIONS")
) ; end condition 9
; ---------------------------
((= thecommandstart "BHATCH")
(setvar "clayer" "HATCH")
) ; end condition 11
; ---------------------------
((= thecommandstart "+VPORTS")
(setvar "clayer" "DEFPOINTS")
) ; end condition 10
) ; end cond
(princ)
) ; end startcommand
(defun endCommand (calling-reactor endcommandInfo / thecommandend)
(setq thecommandend (nth 0 endcommandInfo))
(cond
((= thecommandend "TEXT")
(setvar "clayer" oldlay)
) ; end condition 1
((= thecommandend "MTEXT")
(setvar "clayer" oldlay)
) ; end condition 2
((= thecommandend "DTEXT")
(setvar "clayer" oldlay)
) ; end condition 3
; ---------------------------
((= thecommandend "DIMLINEAR")
(setvar "clayer" oldlay)
) ; end condition 4
((= thecommandend "DIMALIGNED")
(setvar "clayer" oldlay)
) ; end condition 5
((= thecommandend "DIMRADIUS")
(setvar "clayer" oldlay)
) ; end condition 6
((= thecommandend "DIMCONTINUE")
(setvar "clayer" oldlay)
) ; end condition 7
((= thecommandend "DIMANGULAR")
(setvar "clayer" oldlay)
) ; end condition 8
((= thecommandend "QLEADER")
(setvar "clayer" oldlay)
) ; end condition 9
((= thecommandend "BHATCH")
(setvar "clayer" oldlay)
) ; end condition 11
; ---------------------------
((= thecommandend "+VPORTS")
(setvar "clayer" oldlay)
) ; end condition 10
) ; end cond
(princ)
) ; end endCommand
(defun cancelCommand (calling-reactor cancelcommandInfo / thecommandcancel)
(setq thecommandcancel (nth 0 cancelcommandInfo))
(cond
((= thecommandcancel "TEXT")
(setvar "clayer" oldlay)
) ; end condition 1
((= thecommandcancel "MTEXT")
(setvar "clayer" oldlay)
) ; end condition 2
((= thecommandcancel "DTEXT")
(setvar "clayer" oldlay)
) ; end condition 3
; ---------------------------
((= thecommandcancel "DIMLINEAR")
(setvar "clayer" oldlay)
) ; end condition 4
((= thecommandcancel "DIMALIGNED")
(setvar "clayer" oldlay)
) ; end condition 5
((= thecommandcancel "DIMRADIUS")
(setvar "clayer" oldlay)
) ; end condition 6
((= thecommandcancel "DIMCONTINUE")
(setvar "clayer" oldlay)
) ; end condition 7
((= thecommandcancel "DIMANGULAR")
(setvar "clayer" oldlay)
) ; end condition 8
((= thecommandcancel "QLEADER")
(setvar "clayer" oldlay)
) ; end condition 9
((= thecommandcancel "BHATCH")
(setvar "clayer" oldlay)
) ; end condition 11
; ---------------------------
((= thecommandcancel "+VPORTS")
(setvar "clayer" oldlay)
) ; end condition 10
) ; end cond
(princ)
) ; end cancelCommand
(defun makelay (lay / oldlay)
(if (not (tblsearch "LAYER" lay))
(progn
(setq oldlay (getvar "clayer"))
(setvar "cmdecho" 0)
(command "-layer" "m" lay "")
(setvar "cmdecho" 1)
(setvar "clayer" oldlay)
) ;_end progn
) ;_end if
) ;_end defun
(mapcar 'makelay '("TEXT" "Dimensions" "DEFPOINTS"))xt" "Dimensions" "Defpoints")) 我已经更新了LISP以包括这一点。
同样,LISP已经更新,以包括这一点。
我似乎没有这个问题:我去查看>视口>新视口>然后绘制视口,在完成绘制视口后,图层将恢复为原始图层。
无论如何,试试这个:
3
页:
1
[2]