(defunc:k(/oldcmdssss1icenpp1pp2iip1p2ll)(princ"\n选取需要标注的孔:")(setqoldcmd(getvar"cmdecho"))(setvar"cmdecho"0)(setqss(ssget'((0."insert"))))(setqss1'())(setqi0)(rep...
(defun c:k (/ oldcmd ss ss1 i cen pp1 pp2 ii p1 p2 ll)
(princ "\n选取需要标注的孔: ")
(setq oldcmd (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq ss (ssget '((0 . "insert"))))
(setq ss1 '())
(setq i 0)
(repeat (sslength ss)
(setq cen (cdr (assoc 10 (entget (ssname ss i)))))
(setq ss1 (cons cen ss1))
(setq i (1+ i))
)
(setq ss1
(vl-sort ;Vl-sort 排序
ss1
'(lambda (pp1 pp2)
(if (< (abs (- (cadr pp1) (cadr pp2))) 0.01)
(< (car pp1) (car pp2))
(< (cadr pp1) (cadr pp2))
)
)
)
)
(setq ii 0)
(repeat (- (sslength ss) 1)
(setq p1 (nth ii ss1))
(setq p2 (nth (1+ ii) ss1))
(setq ll (rtos (* 1000 (distance p1 p2)) 2 0))
(if (> (* 1000 (distance p1 p2)) 1) ;小于1则不标注
(progn
(command "dimaligned" p1 p2 "t" "" p1)
(princ
(strcat "\n标注孔距=" (rtos (* 1000 (distance p1 p2)) 2 2)) ;标注文字
)
)
)
(setq ii (1+ ii))
)
(setvar "cmdecho" oldcmd)
(prin1)
)
展开