明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1397|回复: 3

谁能帮我看看这段程序?问题出现在什么地方?

[复制链接]
发表于 2003-5-31 10:15:00 | 显示全部楼层 |阅读模式
我编写了一段程序,意在实现选择开启鸟瞰器。在下面的这段程序中,是可以实现这一目的的
;开启鸟瞰器
(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)以后,就不能实现关闭鸟瞰器了,请问大家,这个问题出现在什么地方?怎么解决
发表于 2003-6-3 17:06:00 | 显示全部楼层

代码错了

代码错了:(command "dsviewer" "on" "")
应该改为:(command "dsviewer")

重复调用:(command "dsviewer") 可直接实现鸟瞰器的开关切换
 楼主| 发表于 2003-6-3 23:42:00 | 显示全部楼层

你没有说对,这样起不到任何作用,同时,你没有看明白我的求助的内容

不知道你做过这样的比较不

代码错了:(command "dsviewer" "on" "")
应该改为:(command "dsviewer")

重复调用:(command "dsviewer") 可直接实现鸟瞰器的开关切换


你说的这个根本没有区别,你也没有看我的问题,问题的关键不是开跟关,而是如何控制开跟关的时间。请你先仔细读读我的求助的内容
但是,不管怎么样,还是非常感谢你对我的问题的关心,这里,谢了!
发表于 2003-6-4 13:23:00 | 显示全部楼层

我没有图块,所以检查不了全部的代码

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 16:23 , Processed in 0.172827 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表