只需一步,快速开始
写了一个输入数据的命令,可是不知为什么得不到赋值?请见下面的语句: (setq xn1 (getreal "\n请输入数据 <>: "))(if (/= n1 "") (setq n1 xn1) )
当输入一个数,假如是:1.5可是在后面的语句里: (command "line" (polar p0 (+ ang (* n1 pi)) (* n1 p_d1))语句不认可n1为1.5而直接写成(setq n1 1.5)时 (polar p0 (+ ang (* n1 pi)) (* n1 p_d1))此时的n1又认可为是1.5不知是为什么?望高手指教谢谢
已解决
使用道具 举报
Command: (setq xn1 (getreal "\n请输入数据 <>: "))请输入数据 <>:nil ;<======== "" != nil
-----------------------------------------(setq xn1 (getreal "\n请输入数据 <>: "))(if (/= xn1 nil) (setq n1 xn1) (setq n1 1.0) ; 内定 )
谢谢Andyhon
我去试试
谢谢了
Andyhon发表于2010-11-22 9:10:00Command: (setq xn1 (getreal \"\n请输入数据 <>: \"))请输入数据 <>:nil ;<======== \"\" !
试了试,还是不行
当"\n请输入数据 <>: " 不输数据时,就可以作图,取了内定值;当输入了数据时,作出的图形就不对。
比如:是给它一个数值,让它偏移。当取内定值时,即不输入数据,就能按内定值偏移;输入数值后,则在指定位置画出线条,而不偏移。
不知是为什么?
请指教
谢谢
Andyhon发表于2010-11-22 14:06:00未见您的代码,猜想是受捕捉模式的影响
不是捕捉模式的影响,因为不输数据时能作图,输入数值,则在指定位置的两点画出线条。
代码就是根据两点,再赋值给它:(setq w1 (polar p0 (+ ang (* n1 pi)) (* n1 p_d1)))(setq w2 (polar (polar p0 (+ ang (* n1 pi)) (* n1 p_d1)) ang pl))(command "line" w1 w2 "")
只是不明白,为什么输入值就不行,内定值又可以?
盼得到高手指点
我又在其它的电脑上试了试,运行的结果是一样的。
即在不输入数据时,图形是对的,一旦输入数据,就有误,不是平行作线。不知是为什么,出错在哪里?
请见下面:
(defun c:test ()
(setq xn1 (getreal "\n请输入数据 <>: "))
(if (/= xn1 nil) (setq n1 xn1) (setq n1 0.5)
)
(setq p0 (getpoint "\n请选取第一点:"))
(setq pt1 (getpoint P0 "\n请选取第二点:")) (setq pl (distance p0 pt1))
(setq ang (angle p0 pt1))
(setq p_d1 5)
(setq w1 (polar p0 (+ ang (* n1 pi)) (* n1 p_d1)))(setq w2 (polar (polar p0 (+ ang (* n1 pi)) (* n1 p_d1)) ang pl))(command "line" w1 w2 ""))
望得到高手指教
(setq xn1 (getreal "\n请输入数据 <>: ")) .....(setq w1 (polar p0 (+ ang (* n1 pi)) (* n1 p_d1)))
(+ ang (* n1 pi)) ; Pi 的 倍数值 << 内定值相当于90?
(* n1 p_d1) ; p_d1 的 倍数值 << 用意呢?
本版积分规则 发表回复 回帖后跳转到最后一页
小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 ) ©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途
GMT+8, 2024-10-2 16:21 , Processed in 0.174972 second(s), 27 queries , Gzip On.
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.