ljxkm 发表于 2014-5-1 20:53:45

lisp如何取得填充圆环的圆心

_donut命令绘制填充的圆环,选取图元后,数据如下,((-1 . <图元名: 7b6fb780>) (0 . "LWPOLYLINE") (330 . <图元名: 7b647ee8>) (5 .
"7BD68") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 .
"AcDbPolyline") (90 . 2) (70 . 1) (43 . 0.5) (38 . 0.0) (39 . 0.0) (10 2240.04
24376.2) (40 . 0.5) (41 . 0.5) (42 . 1.0) (10 2240.54 24376.2) (40 . 0.5) (41 .
0.5) (42 . 1.0) (210 0.0 0.0 1.0))
不知如何取得圆环的圆心

lsjj 发表于 2014-5-1 21:42:23

網上找就有
方法1:取包圍框找中心
方法2:找DXF=10頂點座標,求2座標中點

ZZXXQQ 发表于 2014-5-2 10:24:28

;圆环外径变圆 ZZXXQQ 2009.10.19(defun c:tt ()
(setvar "CMDECHO" 0)
(setq oldos (getvar "OSMODE"))
(if (setq ss (ssget '((0 . "LWPOLYLINE") (70 . 1) (42 . 1.0)))) (progn
(setvar "osmode" 0)
(command ".UNDO" "BE")
(setq i -1)
(repeat (sslength ss)
   (setq en (ssname ss (setq i (1+ i)))
         ent (entget en)
               w (cdr (assoc 40 ent))
               pt (cdr (assoc 10 ent))
               pc (osnap pt "CEN")
               r (+ (distance pc pt) (/ w 2)))
   (command "CIRCLE" pc r)
)
(command ".ERASE" ss "")
(command ".UNDO" "E")
(setvar "osmode" oldos)
))
(setvar "CMDECHO" 1)
(princ)
)

ljxkm 发表于 2014-5-2 12:24:49

实际遇到了,一下无头绪,非常感谢大家的帮助

ljxkm 发表于 2014-5-2 16:22:53

现在还有一个问题,当圆环或其他的图元是块内对象,取得块内对象后,显示的坐标为初建立块时的坐标,如何求得,块内对象在当前图形中的实际坐标,如直线,圆环等对象,块经过复制后插入,并且旋转过后

gaics 发表于 2014-5-6 07:41:54

炸开圆环得到圆心

byghbcx 发表于 2014-5-7 08:59:25

(10 2240.04 24376.2)(10 2240.54 24376.2) 提取10后面的两个点坐标求中点
页: [1]
查看完整版本: lisp如何取得填充圆环的圆心