[求助]已知两点和半径作圆?
弧-(中心)-圆有其它办法吗? 有!
计算:
两点连线作为x轴,连线中点为坐标原点,两点间距一半为a(即两点x坐标值的绝对值),半径为r,勾股定理得另一边长b(即圆心坐标y值)! 使用“弧-(中心)-圆”是最好的了,做成程序后使用相当简单,参考:(注:未考虑另一种情况)(defun c:test( / pt1 pt2 r ent ptCenter)
(setq pt1 (getpoint "\n第一点:"))
(setq pt2 (getpoint "\n第二点:"))
(setq r (getreal "\n半径:"))
(command "_.arc" pt1 "e" pt2 "r" r)
(setq ptCenter (cdr (assoc 10 (entget (setq ent (entlast))))))
(entdel ent)
(command "_.circle" ptCenter (distance ptCenter pt1))
(princ)
) (defun c:shg ()<BR> (setq os (getvar "osmode"))<BR> (setq cm (getvar "cmdecho"))<BR> (setvar "cmdecho" 0)<BR> (setvar "osmode" 0)<BR> (shg1)<BR> (setvar "cmdecho" cm)<BR> (setvar "osmode" os)<BR>)<BR>(defun shg1 ()<BR> (setq end (car (entsel "\n最大圆弧:")))<BR> (setq enddata (entget end))<BR> (command "lengthen" end "")<BR> (setq hu (getvar "perimeter"))<BR> (setq rd (cdr (assoc 40 enddata)))<BR> (setq pdcen (cdr (assoc 10 enddata)))<BR> (setq pdtemp (polar pdcen (* 0.5 pi) rd))<BR> (setq enx (car (entsel "\n最小圆弧:")))<BR> (setq enxdata (entget enx))<BR> (setq rx (cdr (assoc 40 enxdata)))<BR> (setq pxcen (cdr (assoc 10 enxdata)))<BR> (setq pxtemp (polar pxcen (* 0.5 pi) rx))<BR> (setq px1 (polar pxcen (cdr (assoc 50 enxdata)) rx))<BR> (setq px2 (polar pxcen (cdr (assoc 51 enxdata)) rx))<BR> (shg2)<BR>)<BR>(defun shg2 ()<BR> (setq bb (getint "\n阵列数:"))<BR> (setq rr (fix (/ (* (+ hu 3.5) bb) (+ pi pi))))<BR> (setq pxx (polar pdtemp (* 1.5 pi) rr))<BR> (setq dd (fix (distance pxx px1)))<BR> (command "arc" px1 "e" px2 "r" dd "")<BR> (setq hux (entlast))<BR> (setq px (cdr (assoc 10 (entget hux))))<BR> (command "circle" px dd "")<BR> (command "erase" hux "")<BR> <BR>)
TO:<A name=39032><FONT color=#000066><B>meflying</B></FONT></A>
其实还是这个问题,我想此时完成阵列,但不知如何获取截面图形,可以指点? 能给个测试的图,并说说你要做什么吗? meflying发表于2004-7-30 16:25:00static/image/common/back.gif能给个测试的图,并说说你要做什么吗?
<BR><A href="dispbbs.asp?boardID=25&ID=23834&page=1" target="_blank" >dispbbs.asp?boardID=25&ID=23834&page=1</A> 关于这个问题,精确的计算蛮复杂的,还没有找到好的办法
其他人的回答的那个方法作为近似计算,还是可以的,而且在一般情况下,结果也应该是正确的
页:
[1]