微信公开课小程序热门讨论「AUTO LISP小程序」最新回复-1.首先,同LZ说的,你OSMODE没弄成0,不过我觉得你出的错在于,你求的角度有问题,程序里你求的是角B,就是b对应着的角,而ATAN的范围是(PI/2PI/2),在没判别角的大小时,角B是有可能钝角的,所以就出错了,最好是把ABC按照大小排一下,按你程序里,把b弄成最小的角,就没问题了.2.在程序前面加个判别能否形成三角形的语句,就是最小+次小最大的那个.3.程序末尾最好加个(PROMPT)语句,标明怎么运行这个程序,不然加载了你这个程序不知道怎么打开.刚才又看了下,发现你setqp3(polarp1(*ang1(/180pi))c))这一句也有问题,ATAN返回的本来就是弧度值,而polar也是用弧度值的祝LZ早日学成~附程序,还有缺陷,*ERROR*参数没设置,嫌麻烦(defunc:sbx(/p1p2p3abcphdang1)(setqoldos(getvarosmode))(setvarosmode0)(setvarcmdecho0)(setvarblipmode0)(setqp1(getpoint请输入基点:))(setqa(getdist\n请输入a=:))(setqb(getdist\n请输入b=:))(setqc(getdist\n请输入c=:))(setqc1(maxabc)b1(minabc))(foreachtemp(listabc)(if(and(tempc1)(tempb1))(setqa1temp)))(if((+a1b1)c1)(princ出错,输入的三边不能组成三角形)(progn(setqp(/(+abc)2))(setqh(sqrt(/(*(*4p)(pa)(pb)(pc))(*a1a1))))(setqd(sqrt((*c1c1)(*hh))))(setqang1(atanhd))(setqp3(polarp1ang1c1))(setqp2(polarp10a1))(commandlinep1p2p3c)))(setvarosmodeoldos)(prin1))(prompt********************输入sbx以开始程序********************)(princ)
1,首先,你要把捕捉关闭,你没有关2,有的三条边,可能有两种三角形图,你有在程序里区分吗?3,有的三个长度是不可能构成三角形的,比如1,1,10,不能的 更多有关「AUTO LISP小程序」的疑问请扫码关注微信公开课+小程序!了解更多