为什么两个圆弧不能重合呢?
该程序画的是蜗壳内壁型线,奇怪的是,第2条圆弧终点和第3条的起点始终不能重合,百思不得其解,所以来这向高人求助,望各位大大帮帮忙谢谢了
(defun c:woke()<BR> (progn<BR> <BR> ;输入数据
(setq p0 (getpoint "\n 请输入基准点:"))<BR> (setq s (getreal "\n 绘图比例<默认值 0.1>:"))<BR> (if (null s) (setq s 0.1))<BR> (setq r (getreal "\n 请输入进口半径R<默认值750>:"))<BR> (if (null r) (setq r 750))<BR> (setq r1 (getreal "\n 请蜗壳输入半径R1<默认值818>:"))<BR> (if (null r1) (setq r1 818))<BR> (setq r2 (getreal "\n 请输入蜗壳半径R2<默认值954>:"))<BR> (if (null r2) (setq r2 954))<BR> (setq r3 (getreal "\n 请输入蜗壳半径R3<默认值1090>:"))<BR> (if (null r3) (setq r3 1090))<BR> (setq r4 (getreal "\n 请输入蜗壳半径R4<默认值1226>:"))<BR> (if (null r4) (setq r4 1226))<BR> (setq c (getreal "\n 蜗壳出口长度C<默认值760>:"))<BR> (if (null c) (setq c 760))<BR> (setq l (getreal "\n 请输入蜗壳内壁间距L<默认值544>:"))<BR> (if (null l) (setq l 544))<BR> (setq a (/ l 4))<BR> <BR> (setq px (car p0)<BR> py (cadr p0)<BR> pz (caddr p0))<BR>;定义等边基点坐标<BR>(setq xa1 (+ px (/ a 2))<BR> ya1 (+ py (/ a 2))<BR> xa2 xa1<BR> ya2 (- py (/ a 2))<BR> xa3 (- px (/ a 2))<BR> )<BR> (setq ya3 ya2)<BR> (setq xa4 xa3)<BR> (setq ya4 ya1)<BR> ;蜗壳个弧线端点坐标<BR> (setq xb1 (+ px (+ r (- l c))))<BR> (setq yb1 (+ py (+ (sqrt (- (* r1 r1) (* (+ (+ r (- l c)) (/ a 2)) (+ (+ r (- l c)) (/ a 2))))) (/ a 2))))<BR> (setq xb2 px)<BR> <BR> (setq yb2 (+ py (+ (sqrt (- (* r1 r1) (* (/ a 2) (/ a 2)))) (/ a 2))))<BR> (setq xb3 (- px (sqrt (- (* r2 r2) (* (/ a 2) (/ a 2))))))<BR> (setq yb3 py)<BR> (setq xb4 px)<BR> (setq yb4 (- py (sqrt (- (* r3 r3) (* (/ a 2) (/ a 2))))))<BR> (setq xb5 (+ px (+ r l)))<BR> (setq yb5 py )<BR> (setq xc1 xb1);(+ (- (+ px (sqrt (- (* r4 r4) (* (/ a 2) (/ a 2))))) c) (/ a 2))<BR> (setq yc1 (+ py r4))<BR> (setq xc2 xb5);(+ (+ px (sqrt (- (* r4 r4) (* (/ a 2) (/ a 2))))) (/ a 2)))<BR> (setq yc2 yc1)<BR> <BR> (setq a1 (list xa1 ya1 pz)<BR> a2 (list xa2 ya2 pz)<BR> a3 (list xa3 ya3 pz)<BR> a4 (list xa4 ya4 pz)<BR> b1 (list xb1 yb1 pz)<BR> b2 (list xb2 yb2 pz)<BR> b3 (list xb3 yb3 pz)<BR> b4 (list xb4 yb4 pz)<BR> b5 (list xb5 yb5 pz)<BR> c1 (list xc1 yc1 pz)<BR> c2 (list xc2 yc2 pz))<BR> (command "arc" b1 "c" a4 b2 "")<BR> (command "arc" b2 "c" a3 b3 "")<BR> (command "arc" b3 "c" a2 b4 "")<BR> (command "arc" b4 "c" a1 b5 "")<BR> (command "line" a1 a2 ""<BR> "line" a2 a3 ""<BR> "line" a3 a4 ""<BR> "line" a4 a1 ""<BR> "line" c1 b1 ""<BR> "line" c1 c2 ""<BR> "line" c2 b5 ""<BR> "circle" p0 r<BR> )<BR> <BR> <BR> <BR> )) 可能是你的计算问题,你用起点、中心点、终点的画法不一定按你要求画的,起点和中心点选择后,终点的位置就限制在了这个圆上,你计算出的点如果不是这样,就回导致这种结果 两位也太厉害了,夜里还在战斗吗?
<A name=21687><FONT color=#000066><B>btlelite</B></FONT></A> 2004-5-27 3:02:43
<A name=21700><FONT color=#000066><B>meflying</B></FONT></A> 2004-5-27 7:52:30 在程序前面部分关闭捕捉模式试试看。
(setq os (getvar "osmode"))
(setvar "osmode" 0)
......
(setvar "osmode" os) gare1000发表于2004-5-27 9:01:00static/image/common/back.gif两位也太厉害了,夜里还在战斗吗?
btlelite 2004-5-27 3:02:43
快8点了,还算夜里?你新疆的吗? 计算没有问题,也和计算无关,因为上一个弧的终点就是下一个弧的起点;
不知道会不会和捕捉有关,我试试
谢谢指导 点是没错,可你这样的圆弧是不存在的,起点确定,圆心确定,终点不是随便哪儿都可以的,你可以用手在你的图上画画,起点,终点都按你的给定点,看圆心能不能到你要求的地方 哦,对啊,有道理,我再检查一下 确实是设计本身误差造成的,看来得换方法了.
我想如果追求圆弧能接合到一起,用 起点,终点半径应该可以解决,但是出现了一个新的问题,画不出来啊,也不知道是什么原因,请问一下,用这三个参数应该怎么画呢? 我想让它们的点重合,圆心位置另外做修正,我应该怎么做呢
不是我不愿意动脑筋,我是个初学者,想不出好点子了
页:
[1]
2