本帖最后由 作者 于 2007-8-14 0:39:11 编辑
- ;; ;; (cc2pl) 圆转多义线. 支持保留扩展数据,实体特性.实例: (cc2pl (car(entsel)))
- (defun cc2pl (e / ent cen r p1 p2 lst)
- (setq ent (entget e '("*"))) ;; 支持扩展数据.
- (setq cen (cdr (assoc 10 ent))
- r (cdr (assoc 40 ent))
- p1 (polar cen 0 r)
- p2 (polar cen PI r)
- p1 (list (car p1) (cadr p1))
- p2 (list (car p2) (cadr p2))
- lst (list '(0 . "LWPOLYLINE")
- '(100 . "AcDbEntity")
- '(100 . "AcDbPolyline")
- '(90 . 2)
- '(70 . 1)
- (cons 10 p1)
- '(42 . -1.0)
- (cons 10 p2)
- '(42 . -1.0)))
- (setq ent (vl-remove-if '(lambda (x) (member (car x) '(0 5 -1 40 10 100 330)))ent))
- (entdel e)
- (if (entmake (append lst ent))
- (entlast)
- )
- )
- ;| (ssc2pl ss) = 选集圆转多义线.---by lxx.2007.8
- 参数: ss = 选集(可包含其它实体,程序内自动过滤)
- 返回: 选集.亮显.新多义线存入预选集.可用"p"响应选择.
- 测试: 1. (ssc2pl (setq ss (ssget))) 2. (ssc2pl nil)
- |;
- (defun ssc2pl (ss / n ss2 e e2)
- (if ss
- (setq ss (ssget "p" '((0 . "CIRCLE"))))
- (setq ss (ssget '((0 . "CIRCLE"))))
- )
- (setq ss2 (ssadd))
- (if ss
- (repeat (setq n (sslength ss))
- (setq e (ssname ss (setq n (1- n))))
- (if (setq e2 (cc2pl e)) (ssadd e2 ss2))
- ))
- (car(sssetfirst ss2 ss2))
- )
|