找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1323|回复: 7

[LISP程序]:对圆,文字和直线以中心点进行缩放

[复制链接]

已领礼包: 9个

财富等级: 恭喜发财

发表于 2007-3-7 23:50:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
;;;对圆,文字和直线以中心点进行缩放
(defun c:msc ( / en ent ll gr ga gb mpt n new num @os sbn sbo sc ss ur)
  (setvar "cmdecho" 0)
  (setq @os (getvar "osmode"))(setvar "osmode" 0)  
  (command "undo" "begin")
  (initget "T Y L")
  (if (not (setq num (getkword "\n请选择缩放实体类别:[Y-圆]/[T-文字]/[L-线]/[回车选择圆进行缩放]: ")))
    (setq num "Y")
  )  
  (cond   
    ((= "T" num)
      (defun @getboundingbox (ent / ll ur)
        (vl-load-com)
        (vla-getboundingbox (vlax-ename->vla-object ent) 'll 'ur)
        (@mpt (vlax-safearray->list ll) (vlax-safearray->list ur))
      )
      (princ "选择要缩放大小的文字:")
      (if (setq ss (ssget '((0 . "text,mtext"))))
        (progn
          (if (not (setq n 0 sc (getreal "\n文字的缩放比例[0.7]:")))
            (setq sc 0.7)
          )
          (repeat (sslength ss)
            (setq mpt (@getboundingbox (setq en (ssname ss n))))
            (command ".scale" en "" mpt sc)
            (setq n (1+ n))
          )
        )
      )
    )
    ((= "L" num)
      (princ "选择要缩放长度的线:")
      (if (setq ss (ssget '((0 . "LINE"))))
        (progn
          (setq sc (getreal "\n线长度的缩放比例:")n 0)
          (repeat (sslength ss)
            (setq en (ssname ss n)
                  sbo (entget en)
                  mpt (@mpt (cdr (assoc 10 sbo)) (cdr (assoc 11 sbo)))
            )
            (command ".scale" en "" mpt sc)
            (setq n (1+ n))
          )
        )
      )
    )
    ((= "Y" num)
      (princ "选择要改变缩放大小的圆:")
      (if (setq ss (ssget '((0 . "CIRCLE"))))
        (progn
          (if (not (setq n 0 sc (getreal "\n圆的缩放比例[0.7]:")))
            (setq sc 0.7)
          )
          (repeat (sslength ss)
            (setq sbo (entget (ssname ss n))
                  new (* sc (cdr (assoc 40 sbo)))
                  sbn (subst (cons 40 new) (assoc 40 sbo) sbo)
            )
            (entmod sbn)
            (setq n (+ n 1))
          )
        )
      )
    )
  )
  (setvar "osmode" @os)
  (command "undo" "end")
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2007-3-8 08:19:14 | 显示全部楼层
no function definition: @MPT
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 9个

财富等级: 恭喜发财

 楼主| 发表于 2007-3-10 01:53:40 | 显示全部楼层
(defun @mpt (pt1 pt2)
  (polar pt1 (angle pt1 pt2) (/ (distance pt1 pt2) 2))
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-3-10 07:01:28 | 显示全部楼层
谢谢分享。
请在程序中加入说明,以方便阅读。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-4-25 18:02:57 | 显示全部楼层
程序思路不错,用起来也挺方便。就是感觉在选择缩放类型时能有一项是“全选”的就好了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-4-28 00:10:17 | 显示全部楼层
刚试用了,感觉还是不错,多谢分享.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 137个

财富等级: 日进斗金

发表于 2020-4-29 07:56:02 | 显示全部楼层
感谢分享 好资料 收藏 谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2023-6-18 00:04:20 | 显示全部楼层
我修改了一下实现了想要的功能
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-22 05:31 , Processed in 0.219559 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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