- 积分
- 220
- 明经币
- 个
- 注册时间
- 2003-9-12
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
抛物线绘制程序, 出错提示: 参数太少?
;; 版权所有 (C) 1997-2001 郑立楷
;;
;; 本软件免费可供进行任何用途需求的拷贝、修改及发行, 但请遵循下述原则:
;;
;; 1) 上列的版权通告必须出现在每一份拷贝里。
;; 2) 相关的说明文档也必须载有版权通告及本项许可通告。
;;
;; 本软件仅提供作为应用上的参考, 而未声明或隐含任何保证; 对于任何特殊
;; 用途之适应性, 以及商业销售所隐含作出的保证, 在此一概予以否认。
;;
;; 绘制抛物线程序
;; 执行命令:pbl
;; 说明:本程序可通过选择抛物线顶点和焦点参数来绘制抛物线。
;;
;; 明经通道 http://www.mccad.net
;; e-mail mccad@21cn.com
;;
(defun c:pbl (oldcmdecho pa pax pay pp pdist_p pdist
pleng_p pleng py px a b f l)
(setq oldcmdecho (getvar "cmdecho"))
(setvar "cmdecho" 0)
(initget 1)
(setq pa (getpoint "\n请选取抛物线顶点位置:"))
(setq pax (car pa)
pay (cadr pa)
)
(initget 1)
(setq pp (getdist pa "\n请输入焦点参数:"))
(initget 6)
(setq pdist_p (getint "\n请取点的精度(一个焦点参数距离的取点数)<5>:"))
(if (= pdist_p nil)
(setq pdist_p 5)
)
(setq pdist (/ pp pdist_p))
(initget 6)
(setq pleng_p (getint "\n请输入抛物线在Y向的长度(焦点参数的倍数)<5>:") )
(if (= pleng_p nil)
(setq pleng_p 5)
)
(setq pleng (* pp pleng_p))
(setq py pleng)
(setq px (getpntx py pp))
(command "pline" "non" (list (+ pax px) (+ pay py)))
(repeat (* 2 pdist_p pleng_p)
(if (equal y 0 0.000000001)
(setq py 0
px 0
)
(setq py (- py pdist)
px (getpntx py pp)
)
)
(command "non" (list (+ pax px) (+ pay py)))
)
(command "")
(initget "Yes No")
(setq ab(getkword "\n是否绘制主轴AB[是(Y)/否(N)]<否>:"))
(if (= ab "")
(setq ab "No")
)
(if (= ab "Yes")
(command "line" "non" pa "non"(list (+ pax(getpntx pleng pp)) pay) "")
)
(initget "Yes No")
(setq f(getkword"\n是否绘制焦点标记F[是(Y)/否(N)]<否>:"))
(if (= f "")
(setq f "No")
)
(if (= f "Yes")
(progn
(setvar "pdmode" 2)
(setvar "pdsize" -1)
(command "point" "non"(list (+ pax (/ pp 2)) pay) )
)
)
(initget "Yes No")
(setq l(getkword"\n是否绘制准线L[是(Y)/否(N)]<否>:"))
(if (= l "")
(setq l "No")
)
(if (= l "Yes")
(command "line" "non" (list (- pax (/ pp 2)) (+ pay pleng)) "non"(list(- pax(/ pp 2))(- pay pleng))"")
)
(setvar "cmdecho" oldcmdecho)
(princ)
)
(defun getpntx (y p)
(setq x (/ (* y y) (* 2 p)))
) |
|