找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 653|回复: 9

[LISP程序]:下面这个程序如何完善。

[复制链接]
发表于 2003-4-9 11:18:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在下面这个程序中,系统变量的设置形同虚设,更本没有作用。请问该如何设置。

  1. (defun c:m(/ old-osmode old-ortho)
  2.   (setq old-osmode (getvar "osmode") old-ortho (getvar "orthomode"))
  3.   (setvar "osmode" 47)
  4.   (setvar "orthomode" 1)
  5.   (command "_.move")
  6.   (setvar "osmode" old-osmode)
  7.   (setvar "orthomode" old-ortho)
  8.   (princ)
  9.   )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-4-9 11:47:16 | 显示全部楼层

Re: [LISP程序]:下面这个程序如何完善。

[QUOTE]最初由 gchen 发布
[B]在下面这个程序中,系统变量的设置形同虚设,更本没有作用。请问该如何设置。

  1. (defun c:m(/ old-osmode old-ortho)
  2.   (setq old-osmode (getvar "osmode") old-ortho (getvar "orthomode"))
  3.   (setvar "o... [/B][/QUOTE]
  4. 其中[COLOR=red](command "_.move")[/COLOR] 不完整,写完后,系统变量就会起作用,这样修改一下试试:
  5. [CODE]
  6.   [FONT=courier new]
  7. (command "move"  pause "" pause pause)
  8.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-4-9 12:16:22 | 显示全部楼层
当然有可能系统变量的设置形同虚设,因为旧的osmode和orthomode变量值可能已包含(setvar "osmode" 47)
(setvar "orthomode" 1)的值了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-4-9 12:23:13 | 显示全部楼层
谢谢。
但是按照你这样的写法,就等于给move命令限定了操作次数,只能交互三次。
如果把命令改成copy呢,因为其中有m这个选择,pause的次数就很难确定。这样又会引起命令失误,还有别的好办法吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-4-9 14:04:45 | 显示全部楼层
最初由 gchen 发布
[B]谢谢。
但是按照你这样的写法,就等于给move命令限定了操作次数,只能交互三次。
如果把命令改成copy呢,因为其中有m这个选择,pause的次数就很难确定。这样又会引起命令失误,还有别的好办法吗? [/B]

可用WHILE等实现。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-4-10 00:04:57 | 显示全部楼层
检测"CMDACTIVE"的值试试.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-4-10 08:12:53 | 显示全部楼层
最初由 gchen 发布
[B]谢谢。
但是按照你这样的写法,就等于给move命令限定了操作次数,只能交互三次。
如果把命令改成copy呢,因为其中有m这个选择,pause的次数就很难确定。这样又会引起命令失误,还有别的好办法吗? [/B]

用WHILE进行循环。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-4-10 10:37:32 | 显示全部楼层
试过了,我使用(while (= (getvar "cmdactive") 1) (command pause)),但是这样就会出现选择上的问题,就是不能使用窗选了。变成了(entsel)一样的选择。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-4-10 11:22:51 | 显示全部楼层
最初由 gchen 发布
[B]试过了,我使用(while (= (getvar "cmdactive") 1) (command pause)),但是这样就会出现选择上的问题,就是不能使用窗选了。变成了(entsel)一样的选择。 [/B]

我给你修改一下吧

  1.   [FONT=courier new]
  2. (defun c:m (/ old-osmode old-ortho old-cmdecho ss pt1 pt2)
  3.   (setq        old-cmdecho (getvar "cmdecho")
  4.         old-osmode  (getvar "osmode")
  5.         old-ortho   (getvar "orthomode")
  6.   )
  7.   (setvar "osmode" 47)
  8.   (setvar "orthomode" 1)
  9.   (setvar "cmdecho" 0)
  10.   (while (and (setq ss (ssget))
  11.               (setq pt1 (getpoint "\n基准点:"))
  12.               (setq pt2 (getpoint pt1 "\n目的点"))
  13.          )
  14.     (command "_.move" ss "" pt1 pt2)
  15.     (princ
  16.       "\n..............................................................\n"
  17.     )
  18.   )
  19.   (setvar "osmode" old-osmode)
  20.   (setvar "orthomode" old-ortho)
  21.   (setvar "cmdecho" old-cmdecho)
  22.   (princ)
  23. )
  24.   [/FONT]

另外,论坛好象有问题,昨天,我回了第5贴,今天一看,竟然没有,于是补上一贴(第7贴),现在一看,以前的第5贴又出来了,不知为何?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-4-11 14:49:44 | 显示全部楼层
谢谢lijiao的热心,我还有一个疑问,就是除非在程序中完全执行完命令,没有别的方法了吗?
我自己也写了一个模仿copy的小程序。但总觉得不是很完美。
论坛这两天是不是在改什么东西,很不稳定。

  1. (defun c:kkk (/ old-osmode old-ortho old-cmdecho ss pt1 pt2)
  2.   (setq old-cmdecho (getvar "cmdecho")
  3.         old-osmode  (getvar "osmode")
  4.         old-ortho   (getvar "orthomode")
  5.         )
  6.   (setvar "osmode" 47)
  7.   (setvar "orthomode" 1)
  8.   (setvar "cmdecho" 0)
  9.   (setq ss (ssget))
  10.   (if ss
  11.     (progn
  12.       (initget 128)
  13.       (setq
  14.         pt1 (getpoint
  15.               "\nSpecify base point or displacement, or [Multiple]:"
  16.               )
  17.         )
  18.       (if (and (= (type pt1) 'STR)
  19.                (wcmatch "MULTIPLE" (strcat (strcase pt1) "*"))
  20.                )
  21.         (progn
  22.           (setq pt1 (getpoint "Specify base point :"))
  23.           (if pt1
  24.             (while (setq pt2
  25.                           (getpoint
  26.                             pt1
  27.                             "Specify second point of displacement or <use first point as displacement>:"
  28.                             )
  29.                          )
  30.               (command "_.copy" ss "" pt1 pt2)
  31.               )
  32.             )
  33.           )
  34.         (progn
  35.           (if (= (type pt1) 'LIST)
  36.             (if (and (numberp (car pt1))
  37.                      (numberp (cadr pt1))
  38.                      (numberp (caddr pt1))
  39.                      )
  40.               (progn
  41.                 (setq pt2
  42.                        (getpoint
  43.                          pt1
  44.                          "Specify second point of displacement or <use first point as displacement>:"
  45.                          )
  46.                       )
  47.                 (command "_.copy" ss "" pt1 pt2)
  48.                 )
  49.               )
  50.             (princ "\nInvalid input.")
  51.             )
  52.           )
  53.         )
  54.       )
  55.     )
  56.   (setvar "osmode" old-osmode)
  57.   (setvar "orthomode" old-ortho)
  58.   (setvar "cmdecho" old-cmdecho)
  59.   (princ)
  60.   )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-3 21:21 , Processed in 0.207333 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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