求图纸比例缩放程序,但标注数字不变
要求用户指定比例因子,如果用户不输入,则选择图中标注尺寸数字,量取相应尺寸间的距离,自动计算比例,然后用户框选需缩放的图元,指定基点。缩放完成。这个G版已解决
图形大小缩放,标注尺寸值不变,用于局部视图
(defun c:cs (/ ss pt ss2 flag alst)
(defun lt:ss->list (ss / en)
(vl-remove nil (mapcar '(lambda (x)
(if (= (type (setq en (cadr x))) 'ename) en)
)
(ssnamex ss)
)
)
)
(if (and (setq ss (ssget))
(setq pt (getpoint "\n指定缩放的基点: "))
)
(progn
(if (setq ss2 (ssget "_p" '((0 . "DIMENSION"))))
(progn
(setq alst (mapcar '(lambda (d)
(setq d (vlax-ename->vla-object d))
(list d (vla-get-Measurement d))
)
(lt:ss->list ss2)
)
flag T
)
)
)
(princ "\n指定缩放的比例因子: ")
(command "_.scale" ss "" pt "\\")
(if flag
(mapcar '(lambda (x / d)
(setq d (car x))
(vla-put-LinearScaleFactor d (* (/ (cadr x) (vla-get-Measurement d))
(vla-get-LinearScaleFactor d)
)
)
)
alst
)
)
)
)
(princ)
) 上图,这个不难,说白了是读取文本数值,付给比例,批量中点缩放图元 http://bbs.mjtd.com/thread-95939-1-1.html (defun c:xx ( / dist lts po s1 ss txt)
(setq s1 (car (xx-get-entsel '((0 . "TEXT")(1 . "~*[~`--9]*")) "数字文本"))
txt (read (xx-get-dxf 1 s1)) ; 文字值
dist (xx-dist 7 "" "真实距离" dist nil nil)
ss (ssget)
po (getpoint "基点")
lts (/ txt dist)
)
(if (= lts nil)
(setq lts (xx-dist 7 "" "比例" lts nil 1))
)
(xx-sc ss po lts)
) 如果是纯autolisp就好了 848818376 发表于 2013-3-4 02:40 static/image/common/back.gif
这个G版已解决
图形大小缩放,标注尺寸值不变,用于局部视图
(defun c:cs (/ ss pt ss2 flag alst)
经常来明经会有无限惊喜哦! 太好了,很棒。 这个可以有,不错的程序 很给力,就是不自动G板是哪位大神,一直有人说G版
页:
[1]
2