明经CAD社区

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2400|回复: 13

求图纸比例缩放程序,但标注数字不变

[复制链接]
发表于 2013-3-4 02:40 | 显示全部楼层 |阅读模式
30明经币
要求用户指定比例因子,如果用户不输入,则选择图中标注尺寸数字,量取相应尺寸间的距离,自动计算比例,然后用户框选需缩放的图元,指定基点。缩放完成。

最佳答案

查看完整内容

这个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 ...
发表于 2013-3-4 02:40 | 显示全部楼层
这个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)
)

点评

太好了,感谢  发表于 2013-3-21 13:52
回复

使用道具 举报

发表于 2013-3-4 07:57 | 显示全部楼层
上图,这个不难,说白了是读取文本数值,付给比例,批量中点缩放图元
回复

使用道具 举报

发表于 2013-3-4 10:45 | 显示全部楼层

点评

你没理解上面的意思,你提供处仅是对尺寸标注而言  发表于 2013-3-4 12:26
回复

使用道具 举报

发表于 2013-3-11 09:08 | 显示全部楼层
[code="lisp] (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)
)[/code]
回复

使用道具 举报

 楼主| 发表于 2013-3-21 14:09 | 显示全部楼层
如果是纯autolisp就好了
回复

使用道具 举报

发表于 2013-3-22 11:29 | 显示全部楼层
848818376 发表于 2013-3-4 02:40
这个G版已解决
图形大小缩放,标注尺寸值不变,用于局部视图
(defun c:cs (/ ss pt ss2 flag alst)

经常来明经会有无限惊喜哦!
回复

使用道具 举报

发表于 2013-4-8 13:35 | 显示全部楼层
太好了,很棒。
回复

使用道具 举报

发表于 2013-5-8 17:05 | 显示全部楼层
这个可以有,不错的程序
回复

使用道具 举报

发表于 2013-6-7 15:27 | 显示全部楼层
很给力,就是不自动G板是哪位大神,一直有人说G版
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号  
©2000-2017 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2018-4-26 04:27 , Processed in 0.209156 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表