通过设置多重引线比例
大家好我正在尝试解决如何做到这一点,但关键是它是针对AutoCAd Mac的,因此没有visual lisp。
我想使用dimscale设置多重引线比例。这是我到目前为止得到的:
(defun c:MLP ()
(setvar "cmdecho" 0)
(setvar "dimscale" (/ 1.0 (getvar "CANNOSCALEVALUE")))
(cond
(= (getvar 'dimscale) 1)
(= (getvar 'dimscale) 2)
(= (getvar 'dimscale) 5)
(= (getvar 'dimscale) 10)
(= (getvar 'dimscale) 20)
(= (getvar 'dimscale) 25)
(= (getvar 'dimscale) 50)
(= (getvar 'dimscale) 100)
(= (getvar 'dimscale) 200)
(= (getvar 'dimscale) 250)
(= (getvar 'dimscale) 500)
(= (getvar 'dimscale) 1000)
(= (getvar 'dimscale) 2000)
(= (getvar 'dimscale) 2500)
(= (getvar 'dimscale) 5000)
(= (getvar 'dimscale) 10000)
)
(command "cmleaderstyle" "standard")
(command "-layer" "Make" "PL-TEXT-LEAD" "")
(prompt "\n Please pick your start point for MultiLeaderPlus ")
(setvar "mleaderscale" (* 1.0(getvar "dimscale" ""))
(initdia)
(command "mleader" "" pause)
(setvar "cmdecho" 1)
(princ)
)
通过消除过程,我发现这行代码有问题——尽管可能还有更多问题。。。
(setvar "mleaderscale" (* 1.0(getvar "dimscale" ""))
有人知道这是否可能吗?我读过很多人的帖子,他们说没有visual lisp是不可能的。
当做
保罗 (defun c:MLP (/ oldcmd oldcmls oldlay oldmls *error*)
(defun *error* (msg)
(setvar 'cmleaderstyle oldcmls)
(setvar 'clayer oldlay)
(setvar 'mleaderscale oldmls)
(setvar "cmdecho" oldcmd)
(princ msg)(princ)
)
(setq oldcmd (getvar 'cmdecho)
oldcmls (getvar 'cmleaderstyle)
oldlay (getvar 'clayer)
oldmls (getvar 'mleaderscale)
)
(setvar "cmdecho" 0)
(setvar "cmleaderstyle" "standard")
(if
(not (tblsearch "LAYER" "PL-TEXT-LEAD"))
(command "-layer" "Make" "PL-TEXT-LEAD" "")
)
(setvar 'clayer "PL-TEXT-LEAD")
(setvar "mleaderscale" (/ 1.0 (getvar "CANNOSCALEVALUE")))
(initcommandversion 2)
(princ "\n Please pick your start point for MultiLeaderPlus : ")
(command "mleader")
(while (> (logand (getvar "CMDACTIVE") 0) 1)
(command pause )
)
(setvar 'cmleaderstyle oldcmls)
(setvar 'clayer oldlay)
(setvar 'mleaderscale oldmls)
(setvar "cmdecho" oldcmd)
(princ)) 嗨,jdiala
非常感谢您的回复。很抱歉回复太晚,但我错过了你的帖子-今天是父亲节。
你的代码运行得很好,而且比我的代码更简洁。这并不是说我理解你所有的代码做什么。
再次感谢!
保罗 嘿,Jdiala,
这太棒了!我一直在寻找一种基于INSUNIT比例插入多重引线的方法(因此我不需要为英寸、英尺、米、毫米等保留多种多重引线样式)。
我已经修改了您发布的代码来实现这一点,除非注释性多重引线样式是当前样式(因为它需要用于此办公室),您不能将MLEADERSCALE设置为除1之外的任何值。
有什么想法吗?谢谢你的指导!!!
我对红色代码的编辑:
(defun c:MLP (/ oldcmd oldcmls oldlay oldmls SCL *error*)
(defun *error* (msg)
(setvar 'cmleaderstyle oldcmls)
(setvar 'clayer oldlay)
(setvar 'mleaderscale oldmls)
(setvar "cmdecho" oldcmd)
(princ msg)(princ)
)
(setq oldcmd (getvar 'cmdecho)
oldcmls (getvar 'cmleaderstyle)
oldlay (getvar 'clayer)
oldmls (getvar 'mleaderscale)
)
(cond ((= (getvar "INSUNITS") 1) (setq SCL 1))
((= (getvar "INSUNITS") 2) (setq SCL 0.08333))
((= (getvar "INSUNITS") 4) (setq SCL 25.4))
((= (getvar "INSUNITS") 5) (setq SCL 2.54))
((= (getvar "INSUNITS") 6) (setq SCL 0.0254))
(t (alert "Current DWG set to non-standard units.Check UNITS settings"))
)
(setvar "cmdecho" 0)
(setvar "cmleaderstyle" "standard")
(if
(not (tblsearch "LAYER" "PL-TEXT-LEAD"))
(command "-layer" "Make" "PL-TEXT-LEAD" "")
)
(setvar 'clayer "PL-TEXT-LEAD")
(command "mleaderscale" SCL)
(initcommandversion 2)
(princ "\n Please pick your start point for MultiLeaderPlus : ")
(command "mleader")
(while (> (logand (getvar "CMDACTIVE") 0) 1)
(command pause )
)
(setvar 'cmleaderstyle oldcmls)
(setvar 'clayer oldlay)
(setvar 'mleaderscale oldmls)
(setvar "cmdecho" oldcmd)
(princ))
页:
[1]