谁能帮我看看这段程序?问题出现在什么地方?
我编写了一段程序,意在实现选择开启鸟瞰器。在下面的这段程序中,是可以实现这一目的的;开启鸟瞰器
(defun viewer ()
(setq num 0)
(initget 3 "Y y n N")
(setq gcanswer (getkword "\n需要开启鸟瞰图帮助插入吗?(Y/N): "))
(if (or (= gcanswer "Y") (= gcanswer "y"))
(setq num (+ num 1))
)
(if (= gcanswer "Y")
(progn
(command "dsviewer" "on" "")
)
)
)
;选择插入发电机组类型
;选择发电机串1
(defun fadian ()
(command "layer" "s" "linein" "")
(alert "接下操作为选择插入发电机组")
(alert "注意!以下至少要选择一种插入类型的发电机组,即不能全选“N”!!!")
(setq num 0)
(initget 3 "Y y n N")
(setq answerGX (getkword "\n需要插入点在下部的发电机组吗?(Y/N): "))
(if (or (= answerGX "N") (= answerGX "n"))
(setq num (+ num 1))
)
(if (= answerGX "Y")
(progn
(setq nct (getint "\n请输入插入点在下部的发电机组串个数:"))
(prompt "\n请在断路器隔离开关串“下部”指定插入基点: ")
(repeat nct
(setq p22 (getpoint "\n 请找第N个块的插入基点:"))
(command "insert" "c:\\song\\c7a.dwg" p22 bl bl "" "")
)
)
)
;选择发电机串2
(initget 3 "Y y n N")
(setq answerGS (getkword "\n需要插入点在上部的发电机组吗?(Y/N): "))
(if (or (= answerGS "N") (= answerGS "n"))
(setq num (+ num 1))
)
(if (and (= answerGS "Y") (< num 2))
(progn
(setq nct (getint "\n请输入插入点在上部的发电机组串个数:"))
(prompt "\n请在断路器隔离开关串“上部”指定插入基点: ")
(repeat nct
(setq p22 (getpoint "\n 请找第N个块的插入基点:"))
(command "insert" "c:\\song\\c7b.dwg" p22 bl bl "" "")
)
)
)
(if (= num 2)
(progn
(alert "必须插入某种类型的发电机串,即不能全选择N,请重新选择!")
(setq num 0)
(fadian)
)
)
)
(defun clviewer ()
(if (and (= gcanswer "Y") (= num 1))
(progn
(alert "插入任务结束,鸟瞰器关闭")
(command "dsviewer" "off" "")
)
)
)
(defun C:abc ()
(viewer)
(fadian)
(clviewer)
)
即当我只是在(viewer)和(clviewer)中间加(fadian)时,程序完全正常。但是在在下面的程序中却不能实现关闭鸟瞰器了
;开启鸟瞰器
(defun viewer ()
(setq num 0)
(initget 3 "Y y n N")
(setq gcanswer (getkword "\n需要开启鸟瞰图帮助插入吗?(Y/N): "))
(if (or (= gcanswer "Y") (= gcanswer "y"))
(setq num (+ num 1))
)
(if (= gcanswer "Y")
(progn
(command "dsviewer" "on" "")
)
)
)
;请选择出线类型
(defun Xlineout ()
(command "layer" "s" "lineout" "")
(prompt "\n以下操作为出线串类型的选择! ")
(alert "以下操作为出线串类型的选择!")
(alert "注意!在选择出线串类型时请考虑周全,且不能全都选择“N”! ")
(alert "请您慎重选择")
(setq num 0)
;上左上出线串
(initget 3 "Y y n N")
(setq XanswerA (getkword "\n需向上的左侧上部出线串吗?(Y/N): "))
(if (or (= XanswerA "N") (= XanswerA "n"))
(setq num (+ num 1))
)
(if (= XanswerA "Y")
(progn
(setq nct (getint "\n请输上左上串个数:"))
(prompt "请在适当的断路器隔离开关串上指定插入点: ")
(repeat nct
(setq p22 (getpoint "\n 请找第N个上左上串的插入基点:"))
(command "insert" "c:\\song\\c8A.dwg" p22 bl bl "" "")
)
)
)
;上左下出线串
(initget 3 "Y y n N")
(setq XanswerB (getkword "\n需向上的左侧下部出线串吗?(Y/N): "))
(if (or (= XanswerB "N") (= XanswerB "n"))
(setq num (+ num 1))
)
(if (= XanswerB "Y")
(progn
(setq nct (getint "\n请输上左下串个数:"))
(prompt "请在适当的断路器隔离开关串上指定插入点: ")
(repeat nct
(setq p22 (getpoint "\n 请找第N个上左下串的插入基点:"))
(command "insert" "c:\\song\\c8B.dwg" p22 bl bl "" "")
)
)
)
;下右上出线串
(initget 3 "Y y n N")
(setq XanswerH (getkword "\n需向下的右侧上部出线串吗?(Y/N): "))
(if (or (= XanswerH "N") (= XanswerH "n"))
(setq num (+ num 1))
)
(if (and (= XanswerH "Y") (< num 3))
(progn
(setq nct (getint "\n请输下右上串个数:"))
(prompt "请在适当的断路器隔离开关串上指定插入点: ")
(repeat nct
(setq p22 (getpoint "\n 请找第N个下右上串的插入基点:"))
(command "insert" "c:\\song\\c8H.dwg" p22 bl bl "" "")
)
)
)
(if (= num 3)
(progn
(alert "至少要选择一种类型的串,不能全部选N,否则不符合实际情况!")
(alert "请重新选择!")
(setq num 0)
(Xlineout)
)
)
)
(defun clviewer ()
(if (and (= gcanswer "Y") (= num 1))
(progn
(alert "插入任务结束,鸟瞰器关闭")
(command "dsviewer" "off" "")
)
)
)
(defun C:abc ()
(viewer)
(fadian)
(Xlineout)
(clviewer)
)
即我在(fadian)后面又加上(Xlineout)以后,就不能实现关闭鸟瞰器了,请问大家,这个问题出现在什么地方?怎么解决
代码错了
代码错了:(command "dsviewer" "on" "")应该改为:(command "dsviewer")
重复调用:(command "dsviewer") 可直接实现鸟瞰器的开关切换
你没有说对,这样起不到任何作用,同时,你没有看明白我的求助的内容
不知道你做过这样的比较不代码错了:(command "dsviewer" "on" "")
应该改为:(command "dsviewer")
重复调用:(command "dsviewer") 可直接实现鸟瞰器的开关切换
你说的这个根本没有区别,你也没有看我的问题,问题的关键不是开跟关,而是如何控制开跟关的时间。请你先仔细读读我的求助的内容
但是,不管怎么样,还是非常感谢你对我的问题的关心,这里,谢了!
我没有图块,所以检查不了全部的代码
页:
[1]