免的下载直接发算了!!
- (princ "\n加中心线自动识别同心圆,调用命令:zxx (作者:飞诗寻梦;fsxm)")
- (defun c:zxx (/ r+ la k na lst cen r lst2 r&cen p1 p2 p3 p4)
- (while (not (setq ss (ssget '((0 . "*rc*"))))))
- (setq r+ (getdist "\n 请输入中心线超出圆长<5>:"))
- (if (null r+) (setq r+ 5))
- (setq la (assoc 8 (entget (car (entsel "\n 选取中心线层的一个对像:")))))
- (setq k 0)
- (repeat (sslength ss)
- (setq na (ssname ss k))
- (setq k (1+ k))
- (setq lst (entget na))
- (setq cen (assoc 10 lst))
- (setq r (cdr (assoc 40 lst)))
- (setq lst2 (cons (list r cen) lst2))
- )
- (setq lst2 (vl-sort lst2 '(lambda (a b) (> (car a) (car b)))))
- (command ".undo" "BE")
- (while (setq r&cen (car lst2))
- (setq p1 (mapcar '+ (cadr r&cen) (list 0 (+ (car r&cen) r+) 0 0)))
- (setq p2 (mapcar '- (cadr r&cen) (list -1 (+ (car r&cen) r+) 0 0)))
- (setq p3 (mapcar '+ (cadr r&cen) (list 0 0 (+ (car r&cen) r+) 0)))
- (setq p4 (mapcar '- (cadr r&cen) (list -1 0 (+ (car r&cen) r+) 0)))
- (setq
- lst2 (vl-remove-if
- '(lambda (a)
- (EQUAL (cadr a) (cadr r&cen))
- )
- (cdr lst2)
- )
- )
- (entmakex (list '(0 . "line") la p1 p2))
- (entmakex (list '(0 . "line") la p3 p4))
- )
- (command ".undo" "E")
- (princ)
- )
|