获取同心圆中最大圆直径
如何实现,用框选的方式,获取同心圆中最大圆直径和中心点...想过逐个判断但是速度慢,不知是否有更快的方法... 那只有逐个判断了加减少选择集数量了,一般时间应该很快的吧,不知你有多少个同心圆要计算的 怕不快,多虑了,我用cad读取7M的记事本的内容,才用2秒. 怕不快,多虑了,我用cad读取7M的记事本的内容,才用2秒. 本帖最后由 chpmould 于 2011-6-2 23:18 编辑祥子 发表于 2011-6-2 19:39 http://space.mjtd.com/static/image/common/back.gif
那只有逐个判断了加减少选择集数量了,一般时间应该很快的吧,不知你有多少个同心圆要计算的
因为选择时还有不是同心的混合在一起,是同心圆的,有的是5~8个同心不等...比喻选择1000个那循环的次数将是多少,可想而知... LLXXZZ 发表于 2011-6-2 22:29 static/image/common/back.gif
怕不快,多虑了,我用cad读取7M的记事本的内容,才用2秒.
不知你有什么好的方法 (defun c:test(/ S SS I LI CEN RED EN D)
(defun dxf(n ename)
(cdr(assoc n (entget ename)))
)
(princ "\n请选取一个圆")
(setq s(ssget ":S" '((0 . "CIRCLE"))))
(if (and s
(setq ss
(ssget
(list (cons 0 "CIRCLE") (setq cen(assoc 10 (entget (ssname s 0)))))
)
)
)
(progn
(setq i 0 li (list ( dxf 40(ssname s 0))))
(repeat (sslength ss )
(setq en (ssname ss i)
red(dxf 40 en)
li (cons red li )
)
)
(setq d(* 2.0 (apply 'max li)))
(princ "在中心点 ")
(princ (cdr cen ))
(princ " , 最大的同心圆半径= ")
(princ d)
)
)
(princ)
) 祥子 发表于 2011-6-3 22:28 static/image/common/back.gif
(defun c:test(/ S SS I LI CEN RED EN D)
(defun dxf(n ename)
(cdr(assoc n (entget ename)))
谢谢了,不过这种方式只能选择一组,不能实现多组,例如成百上千组... 时间不是问题,我的标注一块模板很快,取出保圆之圆心和直径成表再操作。 690994 发表于 2011-6-4 12:59 static/image/common/back.gif
时间不是问题,我的标注一块模板很快,取出保圆之圆心和直径成表再操作。
圆心和直径成表再操作,能否稍详细一点...