找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 821|回复: 5

[求助] [LISP函数]:求助如何正确结束循环命令和设定关启捕捉?

[复制链接]
发表于 2004-5-4 22:31:54 | 显示全部楼层 |阅读模式

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

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

×
为了移偏方便试编了如下程序
(defun C:vvv()   ;由下至上偏移
(setq pt1 (getpoint "\n 指定第一点:"))
(setq pt2 (getpoint "\n 指定第二点:"))
(setq l2 0)
(setq l1 (getint "\n 指定下一个偏移距离:"))
(setq loop T)
(while loop
(setq l2 (+ l1 l2))
(command "line" (polar pt1 ( / pi 2 ) l2 ) (polar pt2 ( / pi 2 ) l2 ) "")
(setq l1 (getint "\n 指定偏移距离:"))
(if ( = l1 * )
(setq loop nil)
);if
);while
);defun C:sss

问题一在
(if ( = l1 * ) 这句中不知怎样设才能正确返回一个值可以结束命令的?
问题二,
使用上程序时如果偏移距离过小时,受捕捉的影响无法正确偏移,请各位指教如何解决?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1个

财富等级: 恭喜发财

发表于 2004-5-5 20:09:07 | 显示全部楼层
关于判断你可以用零来作退出的标志
(= l1 0)因为若偏移距离为0的话是没有意义的。

  1. (setq l1 (getint "\n 指定偏移距离(退出请输入0):"))
  2. (if ( = l1 0)
  3.     (setq loop nil)
  4. );if

其它退出循环的方式有很多。
多读其他网友的程序
-----------------------------------------------


  1. ;;关闭捕捉
  2. (setq osmode_old (getvar "osmode"))
  3. (setvar "osmode" 0)

  4. ;;你的程序代码

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

使用道具 举报

 楼主| 发表于 2004-5-6 15:20:07 | 显示全部楼层
非常感谢你的指教,请问哪里能找到关于类似于捕足, 偏移, 这些CAD修改命令的函数调用方法的资料。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-6 15:28:36 | 显示全部楼层
你指的应是系统变量,不通过命令形式而在程序中直接改变、储存、恢复的变量,参看Autocad帮助中command reference(命令参考)中的system variables(系统变量)一节
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-22 16:44:53 | 显示全部楼层
在这里有一个问题,系统变量"osmode"大于零时,对象捕捉不一定是开的,也有可能是关的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-23 09:15:57 | 显示全部楼层
osmode

类型: 整型
保存方式: 图形
初始值: 0
本系统变量通过以下位码控制对象捕捉模式。

0        NON(无)
1        END(端点)
2        MID(中点)
4        CEN(圆心)
8        NOD(节点)
16        QUA(象限点)
32        INT(交点)
64        INS(插入点)
128        PER(垂足)
256        TAN(切点)
512        NEA(最近点)
1024        QUI(快速)
2048        APP(外观交点)
要指定多个对象捕捉方式,可以输入它们值的和。例如,输入 3 指定“端点”(位码 1)和“中点”(位码 2)对象捕捉。输入 4095 指定全部对象捕捉方式。
当使用状态行上的“对象捕捉”按钮关闭了对象捕捉模式时,除了返回 OSMODE 的普通值外,还将返回位码 16384 (0x4000)。这个附加值可以帮助开发人员在为 AutoCAD 编写应用程序时,将此模式与通过“对象捕捉设置”关闭的对象捕捉模式区别开。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 05:13 , Processed in 0.185853 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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