|
(setq #dim_sc 100)
(defun c:qt (/ dimobj oldDimscale newDimscale)
(setvar "cmdecho" 0)
(command "_.undo" "be")
(setq dim_sc_old (getvar "dimscale"))
(princ "\n调整尺寸全局比例!")
(setq ss (ssget '((0 . "DIMENSION"))))
(setq dim_sc (getint (strcat "\n请输入尺寸全局比例:")))
(setq #dim_sc (if (= dim_sc nil) #dim_sc dim_sc))
(setq newDimscale (/ (float #dim_sc) (float 100)))
(vl-load-com)
(setq num (sslength ss) ee 0)
(while (vla-object nam)
oldDimscale (vla-get-ScaleFactor dimobj))
(if (and (/= nil newDimscale) (/= oldDimscale newDimscale))
(vla-put-ScaleFactor dimobj newDimscale))
(setq ee (1+ ee))
);end while
(setvar "dimscale" dim_sc_old)
(command "_.undo" "e")
(setvar "cmdecho" 1)
(princ))
(princ "\n输入qt,调整尺寸出图比例!")
这是一个改尺寸全局比例(dimscale)的LISP,我不会vlisp,现在急求大侠仿这个改一个尺寸比例(DIMLFAC)的LISP。或者是仿下面这个(看看有没有问题,好像有时候不能运行)
(defun c:ttt (/ el oldDimscale newDimscale xdata)
(setq el (entget (car (entsel "\n选择尺寸:")) '("ACAD")))
(setq oldDimscale
(cdr (assoc 1040 (setq xdata (cdadr (assoc -3 el))))))
(princ "\n新的Dimscale : "))
(if (and (/= nil newDimscale) (/= oldDimscale newDimscale))
(progn
(setq
el
(subst (cons -3
(list
(cons "ACAD"
(subst (cons 1040 newDimscale)
(assoc 1040 xdata)
xdata))))
(assoc -3 el)
el))
(entmod el)
)
)
(princ)
) |
|