 -
- ;;程序名称:对象水平垂直程序
- ;;执行命令:ahobj
- ;;程序功能:将选定的对象左对齐、右对齐或对中。
- ;;
- ;;
- (defun c:QD (/ selobjs oldcmdecho)
- (setq oldcmdecho (getvar "cmdecho"))
- (setvar "cmdecho" 0)
- (setq selobjs (ssget))
- (if (or (not selobjs) (= (sslength selobjs) 1))
- (princ "\n你必须选定两个或两个以上的对象")
- (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 T MT B")
- (setq amode
- (getkword
- "\n选择对齐方式[左对齐(L)/对中(M)/右对齐(R)/上对齐(T)/中间(MT)/下对齐(B)]<左对齐>:"
- )
- )
- (if (not amode)
- (setq amode "L")
- )
- (initget 1)
- (setq apnt (getpoint "\n选择对齐方向的对齐点:"))
- (setq apnt_x (car apnt)
- apnt_y (cadr apnt)
- )
- (vl-load-com)
- (setq count 0)
- (setvar "osmode" 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))
- (setq ext_t (cadr maxext))
- (setq ext_b (cadr minext))
- (setq ext_mt (+ (/ (abs (- ext_t ext_b)) 2) ext_b))
- (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))
- )
- ((= amode "T")
- (SETQ tpnt (list apnt_x ext_t))
- )
- ((= amode "MT")
- (setq tpnt (list apnt_x ext_mt))
- )
- ((= amode "B")
- (setq tpnt (list apnt_x ext_b))
- )
- )
- (print tpnt)
- (if tpnt
- (command "_move" objname "" tpnt apnt)
- )
- (setq count (1+ count))
- )
- )
选择对齐点之后在关捕捉不就好了吗
|