发布于:2004-03-05 22:17:05
来自:水利工程/水利软件
[复制转发]
;;
;;程序名称:对象水平对齐程序
;;执行命令:at
;;程序功能:将选定的对象左对齐、右对齐或对中。
;;
(defun c:at (/ 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))
)
)
完整的附件下载:
upload/forum/200435221652.rar
居中>
左对齐(l)>
申明:内容来自用户上传,著作权归原作者所有,如涉及侵权问题,请点击此处联系,我们将及时处理!
全部回复(14 )
只看楼主 我来说两句:)
回复 举报
回复 举报