直接画当然画不出来,有几种方法,可参考:
第一种方法最简单,就是用其它软件画导成cad。
第二种编一个很短的Autolisp程序就可以了。
程序如下:(defun C:myARC()
(prompt "请选择圆弧起点:")
(setq pt1 (getpoint))
(prompt "\n请选择圆弧终点:")
(setq pt2 (getpoint))
(setq l0 (/ (distance pt1 pt2) (abs (getreal "\n请输入弧长:")))
amax pi amin 0)
(if (>= l0 1)(progn (prompt "弧长小于弦长,出错!")(exit)))
(while (not(equal l l0 1e-14))
(setq a (/ (+ amax amin) 2)
l (/ (sin a) a))
(if (> l l0)(setq amin a)(setq amax a))
)
(command "arc" pt1 "e" pt2 "a" (* a 114.5915590261646417536))
(princ))
加载这个程序,执行myarc命令,根据提示操作就行了。(先选择两个端点,再输入长度,这个圆弧就画出来了。)
第三种估算法
设:平面内任意两点之间的直线距离为L1,过这两点的园弧弧长为L2,弧长所对应的圆心角为φ,最后的方程为:Sin(φ/2)=(πφL1)/(360L2)
z2w
其实这个方程就是:x=sinx/a,已知a,求解x。如果采用一般的计算方法会比较繁复,如果变换一个思路,采用“迭代法”的话会很简单,迭代法是编程非常常用的一种计算方法,它是通过一定次数的迭代使计算结果逼近真实结果,用于解我们这个方程也是很方便的,我介绍一下思路:
1、先假定x=x0(x0是预估的一个结果),公式右边sinx中x变换成x0,则方程变为:x1=sinx0/a
2、把1中得到的方程的解再代入方程x=sinx/a的右边,得到:x2=sinx1/a
3、...... {Tn.BRC
4、反复迭代,迭代次数越多,预估x0越接近真实解,结果越精确;如果迭代25次,则方程变为:
x25=sinx24/a
5、当计算结果满足你需要的精度时,可以停止迭代了,x就解出来了。 uxm0E9e%}%z,jd Q/`$b