本帖最后由 cabinsummer 于 2011-10-31 18:36 编辑
- (defun c:cross(/ ss n ename edata pt pt1 pt2 pt3 pt4)
- (if (setq ss (ssget '((0 . "circle")))) ;;;选择以圆构成的选择集
- (progn
- (setq n 0) ;;;选择集计数
- (repeat (sslength ss) ;;;重复选择集元素的数量次数
- (setq ename (ssname ss n)) ;;;图元名
- (setq edata (entget ename)) ;;;图元数据
- (setq r (cdr (assoc 40 edata))) ;;;提取圆的半径
- (setq pt (cdr (assoc 10 edata))) ;;;提取圆的中心点
- (setq pt1 (polar pt pi (* r 1.3))) ;;;中心线左端点
- (setq pt2 (polar pt 0 (* r 1.3))) ;;;中心线右端点
- (setq pt3 (polar pt (* pi 0.5)(* r 1.3))) ;;;中心线上端点
- (setq pt4 (polar pt (* pi 1.5)(* r 1.3))) ;;;中心线下端点
- (entmake (list '(0 . "line")(cons 10 pt1)(cons 11 pt2)'(8 . "center")));;;画水平线
- (entmake (list '(0 . "line")(cons 10 pt3)(cons 11 pt4)'(8 . "center")));;;画垂直线
- (setq n (1+ n)) ;;;选择集计数加一
- )
- )
- )
- (princ) ;;;静默退出
- )
|