作为扩展,以下操作应在任何UCS构造平面中的点和圆上成功执行,并将考虑活动UCS旋转-对于点,将使用活动UCS构造平面:
- (defun c:test ( / e h i l n p s v w x )
- (if (and (progn (initget 6) (setq w (getdist "\nSpecify x-dimension: ")))
- (progn (initget 6) (setq h (getdist "\nSpecify y-dimension: ")))
- (setq s (ssget '((0 . "POINT,CIRCLE"))))
- (setq l (mapcar '(lambda ( x ) (mapcar '/ (list w h) x)) '((-2 -2) (2 -2) (2 2) (-2 2)))
- v (trans '(0 0 1) 1 0 t)
- )
- )
- (repeat (setq i (sslength s))
- (setq e (entget (ssname s (setq i (1- i))))
- p (cdr (assoc 10 e))
- )
- (if (= "POINT" (cdr (assoc 0 e)))
- (setq p (trans p 0 v) n (cons 210 v))
- (setq n (assoc 210 e))
- )
- (entmake
- (append
- '( (000 . "LWPOLYLINE")
- (100 . "AcDbEntity")
- (100 . "AcDbPolyline")
- (090 . 4)
- (070 . 1)
- )
- (list (cons 38 (caddr p)))
- (mapcar '(lambda ( x ) (cons 10 (mapcar '+ p (trans x 1 (cdr n) t)))) l)
- (list n)
- )
- )
- )
- )
- (princ)
- )
|