明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1234|回复: 8

[求助]高手请进帮我看一下这个程序的错误之处,谢谢!

[复制链接]
发表于 2005-3-18 20:49 | 显示全部楼层 |阅读模式
看看我编的这个程序有什么错误啊?是画圆锥体的,可怎么画不出来图形呢? 请高手指点一下!谢谢!! (defun c:yzt()
(setq p (getpoint "\n请输入圆锥体底面圆中心:"))
(setq h (getreal "\n请输入圆锥体高:"))
(setq r (getreal "\n底面圆半径"))
(setq a (car p))
(setq b (cdr p))
(setq p1 (list ((+ a r) b)))
(setq p2 (list ((- a r) b)))
(setq p3 (list (a (sqrt (+ (* h h) (* r r))))))
(setq o '(a r))
(command "pline" p1 p2 p3 "c")
(command "circle" o r "")
)
发表于 2005-3-18 22:43 | 显示全部楼层
(setq o '(a r)) --> (setq o (list a r))
 楼主| 发表于 2005-3-19 00:56 | 显示全部楼层
怎么还不行呢?还是出错,CAD上的错误是 Command: yzt 请输入圆锥体底面圆中心:
请输入圆锥体高:50 底面圆半径60
; error: bad function: 360.761 是什么意思啊?高手请指点一下 谢谢!!
发表于 2005-3-19 10:08 | 显示全部楼层
流浪狗发表于2005-3-19 0:56:00怎么还不行呢?还是出错,CAD上的错误是 Command: yzt 请输入圆锥体底面圆中心:请输入圆锥体高:50 底面圆半径60; error: bad function: 360....

这几句都有错误: (setq p1 (list ((+ a r) b)))
(setq p2 (list ((- a r) b)))
(setq p3 (list (a (sqrt (+ (* h h) (* r r))))))
(setq o '(a r)) 构成一个新的坐标点的格式是 (list X Y Z),所以 (setq p1 (list ((+ a r) b)))---写成--->(setq p1(list (+ a r) b))
 楼主| 发表于 2005-3-19 11:44 | 显示全部楼层
(defun c:yzt()
(setq p (getpoint "\n请输入圆锥体底面圆中心:"))
(setq h (getreal "\n请输入圆锥体高:"))
(setq r (getreal "\n请输入底面圆半径:"))
(setq a (car p))
(setq b (cdr p))
(setq p1 (list (+ a r) b))
(setq p2 (list (- a r) b))
(setq p3 (list a (sqrt (+ (* h h) (* r r)))))
(setq o (list a (+ r 30)))
(command "line" p1 p2 p3 "c")
(command "circle" o r "")
) 非常感谢啊!!可我照上面的运行可还是有问题,能看到俯视图 圆,但是看不到主视图 三角形,再寻高手啊!!!1 CAD命令行显示的是 Command: yzt 请输入圆锥体底面圆中心:
请输入圆锥体高:200 请输入底面圆半径:100
pline
Specify start point:
Command:
Command:
Command: c Unknown command "C". Press F1 for help. Command: circle Specify center point for circle or [3P/2P/Ttr (tan tan radius)]:
Specify radius of circle or [Diameter] <100.0000>: 100.0000000000000
Command: YZT Unknown command "YZT". Press F1 for help. Command: nil
发表于 2005-3-19 12:14 | 显示全部楼层
其实我还是不明白楼主最终要的结果,下面这个程序是我修改过的,不知道结果是不是你想要的。 (defun c:yzt ()
(setq p (getpoint "\n请输入圆锥体底面圆中心:"))
(setq h (getreal "\n请输入圆锥体高:"))
(setq r (getreal "\n请输入底面圆半径:"))
(setq a (car p))
(setq b (cadr p))
(setq p1 (list (+ a r) b))
(setq p2 (list (- a r) b))
(setq p3 (polar p (* pi 0.5) h))
(setq o (polar p (* pi 1.5) (+ r 30)))
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(command "line" p1 p2 p3 "c")
(command "circle" o r )
(setvar "osmode" os)
)
 楼主| 发表于 2005-3-19 13:42 | 显示全部楼层
是啊 就是啊!!!谢谢!!谢谢!!!非常感谢!!好高兴啊!


这个程序只是个草案,以后我还要添加修改呢。如果以后我再遇到麻烦,希望再能帮帮我!!其实我学VLISP的时间才两个星期,而且这只是我的专业选修课,但是我对它很感兴趣!


再次感谢!
 楼主| 发表于 2005-3-19 13:53 | 显示全部楼层
对了,我还想请教一下,如果要把上面的二维的圆锥体试图变成三维的,该怎么做呢?
发表于 2005-3-19 14:04 | 显示全部楼层
圆锥体三维生成的命令现成就有,不用这么麻烦!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-19 03:45 , Processed in 0.187808 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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