明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1931|回复: 7

求助!一个三角形的编程

[复制链接]
发表于 2003-11-6 19:42:00 | 显示全部楼层 |阅读模式
我是编程初学者,但我很努力的!我遇到了问题,请大家帮忙!这是一个知道三条边的三角形.
我运行的时候它说,参数太少,是什么意思!
我还想问一下,我如何做,能让计算机告诉我,我错在哪里呢?就是我运行的时候!好使我马上修改,不用像现在,去CAD状态下,才告诉我错啦!
(defun C:abc(a b c s h g p1 p2 p3 )
   (setq a (getdist "输入三角形底边:"))
   (setq b (getdist "输入三角形左边:"))
   (setq c (getdist "输入三角形右边:"))
   (setq s (/ (+ a b c) 2))
   (setq h (/ (* s (- s a) (- s b) (- s c)) 2))
   (setq g (sqrt (- (* c c) (* h h))))
   (setq jiao (atan(/ h g)))
   (setq p1 (getpoint "输入三角形的基点:"))
   (setq p2 (polar p1 jiao c))
   (setq p3 (polar p1 0 a))
   (command "pline",p1,p2,p3,"c")
(prinl)
)
发表于 2003-11-6 19:51:00 | 显示全部楼层
(defun C:abc(/ a b c s h g p1 p2 p3 )
   (setq a (getdist "输入三角形底边:"))
   (setq b (getdist "输入三角形左边:"))
   (setq c (getdist "输入三角形右边:"))
   (setq s (/ (+ a b c) 2))
   (setq h (/ (* s (- s a) (- s b) (- s c)) 2))
   (setq g (sqrt (- (* c c) (* h h))))
   (setq jiao (atan(/ h g)))
   (setq p1 (getpoint "输入三角形的基点:"))
   (setq p2 (polar p1 jiao c))
   (setq p3 (polar p1 0 a))
   (command "pline",p1,p2,p3,"c")
(prinl)
)
也许这样可以!因为C:abc之后的(a b c s h g p1 p2 p3 )应该都是局部变量,其前面应该加“/ ”,否则都是全局变量,就需要在调用时给足参数!
发表于 2003-11-6 19:53:00 | 显示全部楼层
我是不是班门弄斧?你的文章、财产比我多得多!嘻嘻?哈哈!我是大菜鸟!
发表于 2003-11-6 20:17:00 | 显示全部楼层
水平不是一财产和文章论的,很多没来这里的人,那高手多得是。

VLISP不能像C那样自动找到错误地方,你可以用设置断点,然后跟踪参数变量的值,一步一步找到错误地方,当然,这个需要技巧,否则,如果一个很长的程序,你一步一步找过去,等找到的时候都累死了。这个在使用中会慢慢找到方法的。
 楼主| 发表于 2003-11-6 21:02:00 | 显示全部楼层
谢谢大家!
我改正了我的程序.原来我的程序错误百出啊!
真的是很丢人!但是也只有这样才能进步!希望大家好好给我指点!我现在能运行很多了,但到了等我输入基点后,说我C是未知命令!不知道错在哪啊!

(defun C:abc(/ a b d s h g jiao p1 p2 p3 )
   (setq a (getdist "输入三角形底边:"))
   (setq b (getdist "输入三角形左边:"))
   (setq d (getdist "输入三角形右边:"))
   (setq s (/ (+ a b d) 2))
   (setq h (/ (sqrt (* s (- s a) (- s b) (- s d)))(* a 2)))
   (setq g (sqrt (- (* d d ) (* h h))))
   (setq jiao (atan(/ h g)))
   (setq p1 (getpoint "输入三角形的基点:"))
   (setq p2 (polar p1 jiao d))
   (setq p3 (polar p1 0 a))
   (command "pline",p1,p2,p3,"c")
(prin1)
)
发表于 2003-11-6 21:38:00 | 显示全部楼层
有meflying的鼓励,那么我就斗胆再修改一下了:
(defun C:abc (/ a b d s h g jiao p1 p2 p3)
  (setq a (getdist "输入三角形底边:"))
  (setq b (getdist "输入三角形左边:"))
  (setq d (getdist "输入三角形右边:"))
  (setq s (/ (+ a b d) 2))
  (setq h (/ (sqrt (* s (- s a) (- s b) (- s d))) (* a 2)))
  (setq g (sqrt (- (* d d) (* h h))))
  (setq jiao (atan (/ h g)))
  (setq p1 (getpoint "输入三角形的基点:"))
  (setq p2 (polar p1 jiao d))
  (setq p3 (polar p1 0 a))
  (command "pline"  p1 p2 p3  "c")
  (prin1)
)
是最后一句出问题,你看清了吗?
其实我也是菜鸟,刚才还在调试我的程序,就为了偷懒,不想再图上手工加上千个小圆圈—表示灌溉管道的出水口。嘻嘻,见笑了!
发表于 2003-11-6 21:45:00 | 显示全部楼层
楼主,你的程序真有意思!纯粹是练习吧?找些实际问题,想办法解决了,那才有具体作用,并且不要害怕出错,不出错学不到东西!
学LISP,我就开始用“选择集”处理问题,虽不是什么高深东西,但是会遇到CAD—DXF内部问题。
 楼主| 发表于 2003-11-8 01:01:00 | 显示全部楼层
是的,我刚学编程,只是练习练习的! 原来是没有逗号的啊!嘿嘿!谢谢哥们!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-27 04:22 , Processed in 0.176854 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表