也许这是合适的:
- (defun LM:ProjectArc ( e / el l r n )
- (if (member (cdr (assoc 0 (setq el (entget e)))) '("ARC" "CIRCLE"))
- (entmakex
- (append
- (list
- (cons 0 "ELLIPSE")
- (cons 100 "AcDbEntity")
- (cons 100 "AcDbEllipse")
- )
- (foreach x '(6 8 39 48 62 210)
- (if (assoc x el) (setq l (cons (assoc x el) l)) l)
- )
- (list
- (cons 10 (trans (cdr (assoc 10 el)) e 0))
- (cons 11
- (polar '(0. 0. 0.)
- (angle '(0. 0. 0.)
- (trans (getvar 'UCSXDIR) 0 (setq n (trans '(0. 0. 1.) 1 0 t)) t)
- )
- (setq r (cdr (assoc 40 el)))
- )
- )
- (cons 40 (abs (/ (* r (apply '+ (mapcar '* '(0. 0. 1.) n))) r)))
- (cons 41 (cond ( (cdr (assoc 50 el)) ) ( 0.0 )))
- (cons 42 (cond ( (cdr (assoc 51 el)) ) ( (* 2. pi) )))
- )
- )
- )
- )
- )
- (defun c:test ( / e )
- (if (setq e (car (entsel "\nSelect Arc or Circle: "))) (LM:ProjectArc e))
- (princ)
- )
代码将提供的在WCS中绘制的弧/圆投影到当前UCS |