;增强型align V1.0 by sailorcwx 2007.01 ;目前只支持包含XY信息的图块,其余的以后增加 (defun c:al1 (/ YH_ALSELECT YH_POINT1 YH_POINT2 YH_POINT3 YH_POINT4) (setq YH_alselect (ssget) YH_point1 (YH_getpoint nil "第一个源点") YH_point2 (YH_getpoint YH_point1 "第一个目标点") YH_point3 (YH_getpoint nil "第二个源点") YH_point4 (YH_getpoint YH_point3 "第二个目标点") ) (command "ALIGN" YH_alselect "" YH_point1 YH_point2 YH_point3 YH_point4 "") (princ) ) (defun YH_getpoint (YH_lastpoint YH_info / YH_BLOCKDATA YH_POINT YH_POINTX YH_POINTY YH_UCSBLOCK) (if (not YH_lastpoint) (setq YH_point (getpoint (strcat "\n选择" YH_info "或选择一个坐标数据:"))) (setq YH_point (getpoint YH_lastpoint (strcat "\n选择" YH_info "或选择一个坐标数据:"))) ) (if (not YH_point) (progn (setq YH_ucsblock (tblobjname "block" (cdr (assoc 2 (entget (car (entsel "\n选择坐标数据:"))))))) (setq YH_pointX nil YH_pointY nil) (while (setq YH_ucsblock (entnext YH_ucsblock)) (setq YH_blockdata (entget YH_ucsblock)) (if (= (cdr (assoc 0 YH_blockdata)) "TEXT") (progn (if (= (substr (cdr (assoc 1 YH_blockdata)) 1 1) "X") (setq YH_pointX (substr (cdr (assoc 1 YH_blockdata)) 3))) (if (= (substr (cdr (assoc 1 YH_blockdata)) 1 1) "Y") (setq YH_pointY (substr (cdr (assoc 1 YH_blockdata)) 3))) ) ) ) (if (and YH_pointX YH_pointY) (setq YH_point (list (atof YH_pointY) (atof YH_pointX)))) ) ) YH_point ) |