关于程序自动处理“比例”这个问题,你看看TCH是怎么做的就清楚了.
我想说的是开发者必须清楚知道自己在开发什么,思路是不是正确...现在之所以很多国产CAD软件没人用的原因之一就在于此.开发者自己不知道用户是怎样工作的,需要什么,只是想当然...我建议开发者最好先深入理解和掌握AutoCAD.
就lcad的问题,我觉得AutoCAD本身之所以有Layout(PSpace)这个东西来正确实现已经可以说明我上面所说的是什么意思了...
我得咗。
下面的程序可实现通过点击或输入距离画线,键盘输入时自动乘上一个系数(defun c:qq (/ p1 p2 p3 str dis ang)
(setq p1 (getpoint "\n输入第一点:"))
(setq p2 (getpoint p1 "\n输入第二点:"))
(setq str (getvar "lastprompt")) ;本程序的关键
(if (or (wcmatch str "输入第一点:*")
(and(not (wcmatch str "输入第二点:*"))
(not (wcmatch str "*"))
(not (wcmatch str "-*"))
(not (wcmatch str " <*> *"))
(not (wcmatch str " <*> -*"))
)
)
(command "line" p1 p2 "")
(progn
(setq dis (distance p1 p2) ang (angle p1 p2))
(setq p3 (polar p1 ang (* dis 1.5)));1.5为自定义的比例值
(command "line" p1 p3 "")
)
)
(princ)
)
;难点:对不同情况下产生的"lastprompt"值的识别.
点啊,lcad,明解唔明解?记得请饮茶。
很好!
这样做是否可以?
1。使用initget和getpoint得到输入的数据:(initget 128)
(setq pt1 (getpoint "\nFirst Point:"))
2。使用键盘输入,用"-"(或者其他的)符号替代",",返回值是字符串。如果使用鼠标,则返回点坐标。对字符串字符串进行处理,得到坐标值。
如:"200-200" 处理得(200,200,0)。(代码略)
3。重复(1)
(initget 128)
(setq pt2 (getpoint pt1 "\nSecond Point:"))
4。处理pt2得到点坐标,使用pt1,pt2画线
有一点让人介意,就是键盘输入时不能采用点输入的方式。不知你是怎么识别键盘输入和鼠标输入的,可以一起研究研究!
衷心感谢杨少同志,你帮了我大忙了,真乃高手也!
谢谢杨少同志、天狼鼠同志、南子同志、MCCAD同志,交个朋友,不知各位高手现在在哪高就,有没有兴趣出来一起做一个附合中国国情的而且非常易用的CAD,如果有兴趣,请与我联系。其实程序还可以更简洁。
(defun c:qq (/ p1 p2 p3 str dis ang)(setq p1 (getpoint "\n输入第一点:"))
(setq p2 (getpoint p1 "\n输入第二点:"))
(setq str (getvar "lastprompt"))
(if (wcmatch str "*#")
(progn
(setq dis (distance p1 p2) ang (angle p1 p2))
(setq p2 (polar p1 ang (* dis 1.5)))
)
)
(command "line" p1 p2 "")
(princ)
)