土木在线论坛 \ 建筑设计 \ CAD下载及教程 \ [分享]autocad中对齐(左、中、右对齐)文本的lisp代码

[分享]autocad中对齐(左、中、右对齐)文本的lisp代码

发布于:2004-02-28 16:25:28 来自:建筑设计/CAD下载及教程 [复制转发]
;;程序名称:对象水平对齐程序
;;执行命令:ao
;;程序功能:将选定的对象左对齐、右对齐或对中。
;;
;;
(defun c:ao (/ selobjs oldcmdecho)
(setq oldcmdecho (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq selobjs (ssget '((0 . "TEXT"))))
(process selobjs)
(setvar "cmdecho" oldcmdecho)
(princ)
)
(defun process (selobjs / amode apnt apnt_x
apnt_y count objname vlaxobj MinPoint
MaxPoint minext maxext ext_l ext_r
ext_m tpnt
)
(initget "L M R")
(setq amode (getkword
"\n选择对齐方式 <左对齐(l) 中(m) 对齐(r)> <居中> :"
)
)
(if (not amode)
(setq amode "M")
)
(initget 1)
(setq apnt (getpoint "\n选择水平对齐方向的对齐点:"))
(setq apnt_x (car apnt)
apnt_y (cadr apnt)
)
(vl-load-com)
(setq count 0)
(repeat (sslength selobjs)
(setq objname (ssname selobjs count))
(setq vlaxobj (vlax-ename->vla-object objname))
(setq MinPoint (vlax-make-variant))
(setq MaxPoint (vlax-make-variant))
(vla-GetBoundingBox vlaxobj 'MinPoint 'MaxPoint)
(setq minext (vlax-safearray->list MinPoint))
(setq maxext (vlax-safearray->list MaxPoint))
(setq ext_l (car minext))
(setq ext_r (car maxext))
(setq ext_m (+ (/ (abs (- ext_l ext_r)) 2) ext_l))
(cond
((= amode "L")
(setq tpnt (list ext_l apnt_y))
)
((= amode "M")
(setq tpnt (list ext_m apnt_y))
)
((= amode "R")
(setq tpnt (list ext_r apnt_y))
)
)
(if tpnt
(command "_move" objname "" "non" tpnt "non" apnt)
)
(setq count (1+ count))
)
)


全部回复(7 )

只看楼主 我来说两句
  • bsb112233520okok
    下载试试看
    2015-04-08 10:14:08

    回复 举报
    赞同0
  • bsb112233520okok
    谢谢,不错的程序
    2015-04-08 10:11:08

    回复 举报
    赞同0
加载更多
这个家伙什么也没有留下。。。

CAD下载及教程

返回版块

52.09 万条内容 · 682 人订阅

猜你喜欢

阅读下一篇

[求助]哪里还有2000的CAD下载

帮帮忙,,看看那边有2000的版本下载.

回帖成功

经验值 +10