端点对齐
;;端点对齐(defun c:dddq (/ ent index ptd_y ptl_x ptr_x pts ptu_y ss ss_lst vt)
(vl-load-com)
(setq eh-*error*-bak *error*)
(defun *error* (msg)
(setq *error* eh-*error*-bak)
(setvar "osmode" eh_os_g)
(vla-endundomark eh_doc_g)
(setvar "nomutt" 0)
(setvar "cmdecho" 1)
(print msg)
)
(setvar "cmdecho" 0)
(if (null eh_doc_g)(setq eh_doc_g (vla-get-activedocument (vlax-get-acad-object))))
(vla-startundomark eh_doc_g)
(if (< (setq eh_os_g (getvar "osmode")) 16384)
(setvar "osmode" (+ eh_os_g 16384))
)
(princ "\n左右端拉长对齐--空格默认为左端对齐<1>--右端对齐<2>--上对齐<3>--下对齐<4>:")
(initget 6)
(setq index (getint))
(if (or (null index)(= index 1))
(setq index 1)
)
(print index)
(setq ss (ssget '((0 . "LWPOLYLINE"))))
(setq pts (eh-ss-9pt ss '(1 9)))
(setq ss_lst (eh-ss->list ss))
(setq
ptl_x (car (nth 0 pts));左x
ptr_x (car (nth 1 pts));右x
ptd_y (cadr (nth 0 pts));下y
ptu_y (cadr (nth 1 pts));上y
)
(foreach x ss_lst
(setq ent (entget x))
(setq vt (EH-Get-EntDxf x '10))
(cond
((= index 1) (setq vt (vl-sort vt (function (lambda (a b) (< (cara)(car b)))))))
((= index 2) (setq vt (vl-sort vt (function (lambda (a b) (> (cara)(car b)))))))
((= index 3) (setq vt (vl-sort vt (function (lambda (a b) (> (cadr a) (cadr b)))))))
((= index 4) (setq vt (vl-sort vt (function (lambda (a b) (< (cadr a) (cadr b)))))))
(T nil)
)
(cond
((or (= index 1)(= index 2))
(setq ent (subst (list 10 (if (= index 1) ptl_x ptr_x) (cadr (carvt))) (cons 10 (carvt)) ent))
(setq ent (subst (list 10 (if (= index 1) ptl_x ptr_x) (cadr (cadr vt))) (cons 10 (cadr vt)) ent))
)
((or (= index 3)(= index 4))
(setq ent (subst (list 10 (car (carvt)) (if (= index 3) ptu_y ptd_y)) (cons 10 (car vt)) ent))
(setq ent (subst (list 10 (car (cadr vt)) (if (= index 3) ptu_y ptd_y)) (cons 10 (cadr vt)) ent))
)
(T nil)
)
(entmod ent) (entupd x)
)
(setq *error* eh-*error*-bak)
(setvar "osmode" eh_os_g)
(vla-endundomark eh_doc_g)
(setvar "nomutt" 0)
(setvar "cmdecho" 1)
(princ)
);defun_end
谢谢! Gray-wolf 分享收藏了!!!! 缺少自定义函数 EH-Get-EntDxfeh-ss-9pteh-ss->list
页:
[1]