今天上班的时候,我第一次开始接触AutoLISP,所以请容忍我,因为我确信我的代码很难看
我的第一个程序涉及选择一系列点,该程序将围绕相交区域绘制周长矩形。这部分代码工作得很好(因此无需发布)。
我现在尝试向代码中添加另一个功能,它会询问是否有竖梃或横框,如果有,请在竖梃/横框上选择两个点,程序会在之前绘制的周长矩形内绘制一个额外的矩形。
我遇到的问题是,一旦输入“m”或“t”,程序就会跳过第一个getpoint问题,因此我无法获得变量pt9或pt11。相反,它只询问第二个getpoint问题,并在试图找到交点时崩溃,因为它缺少变量。有没有解决这个问题的建议?
- (defun c:test (/ oldosmode pt5 pt6 pt7 pt8 pt9 pt10 pt11 pt12 mutr TLpt TRpt MTpt MBpt)
-
- (setq pt5 (getpoint "Choose Head Leftmost Stud: "))
- (setq pt6 (getpoint "Choose Head Rightmost Stud: "))
- (setq pt7 (getpoint "Choose Sill Leftmost Stud: "))
- (setq pt8 (getpoint "Choose Sill Rightmost Stud: "))
- (setq mutr (getstring "Mullion(m)/Transom(t)/None(n)"))
- (cond ((= mutr "t") (
- (setq pt9 (getpoint "Select Leftmost Stud on Transom: "))
- (setq pt10 (getpoint "Select Rightmost Stud on Transom: "))
- (setq TLpt (inters pt1 pt2 pt9 pt10 [onseg]))
- (setq TRpt (inters pt3 pt4 pt9 pt10 [onseg]))
- (setq oldosmode (getvar "osmode"))
- (setvar "osmode" 0)
- (command "_rectangle" "_from" TLpt "@5,-5" "_from" TRpt "@-5,5" "")
- (setvar "osmode" oldosmode)
- ))
- ((= mt "m") (
- (setq pt11 (getpoint "Select Upper Stud on Mullion: "))
- (setq pt12 (getpoint "Select Lower Stud on Mullion: "))
- (setq MTpt (inters pt5 pt6 pt11 pt12 [onseg]))
- (setq MBpt (inters pt7 pt8 pt11 pt12 [onseg]))
- (setq oldosmode (getvar "osmode"))
- (setvar "osmode" 0)
- (command "_rectangle" "_from" MTpt "@5,-5" "_from" MBpt "@-5,5" "")
- (setvar "osmode" oldosmode)
- ))
- )
- (princ) ; Exit Cleanly
- )
|