pixel8er 发表于 2022-7-5 15:12:43

通过设置多重引线比例

大家好
我正在尝试解决如何做到这一点,但关键是它是针对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是不可能的。
 
当做
保罗

jdiala 发表于 2022-7-5 15:37:55

(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))

pixel8er 发表于 2022-7-5 15:54:27

嗨,jdiala
非常感谢您的回复。很抱歉回复太晚,但我错过了你的帖子-今天是父亲节。
你的代码运行得很好,而且比我的代码更简洁。这并不是说我理解你所有的代码做什么。
再次感谢!
保罗

jpcadconsulting 发表于 2022-7-5 16:25:30

嘿,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]
查看完整版本: 通过设置多重引线比例