找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 781|回复: 3

[LISP函数]:双线偏移使用问题

[复制链接]
发表于 2007-9-22 12:38:35 | 显示全部楼层 |阅读模式

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

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

×
我在网站下载了双线偏移LISP原代码,使用的时候发现,双线偏移只能为默然设置,每次更改设置,必须每次重新设。我想问,为什么不能设置一次后,以后使用也能按上次设置要求双线偏移。
请高手帮我修改修改双线偏移LISP原代码。
+++++++++++++++++++++++++++++++++++
(defun C:sxpy(/ ss1 entName1 OffDist n i sPt Pt1 Pt2 tAngle IsDelete IsCurLayer oldOSnap)
;(CMDINIT0);保存用户系统变量.
(vl-load-com)
(setq oldOSnap (getvar "OSmode"))
(if (= #AY_OFF2ISDELETE nil) (setq #AY_OFF2ISDELETE "N"))
(if (= #AY_OFF2ISCURLAYER nil) (setq #AY_OFF2ISCURLAYER "N"))
(initget "S" 0)
(setq OffDist (getdist (strcat "\n设置(S)/指定单向偏移距离<" (rtos (getvar "offsetdist")) ">:")))
(if (= (Type OffDist) 'STR)
(progn
(initget "Y N")
(setq IsDelete (getkword (strcat "\n是(Y)/否(N)删除原曲线对象?<" #AY_OFF2ISDELETE ">:")))
(if (Null IsDelete) (setq IsDelete #AY_OFF2ISDELETE) (setq #AY_OFF2ISDELETE IsDelete))
(initget "Y N")
(setq IsCurLayer (getkword (strcat "\n是(Y)/否(N)将偏移后的对象置到当前层?<" #AY_OFF2ISCURLAYER ">:")))
(if (Null IsCurLayer) (setq IsCurLayer #AY_OFF2ISCURLAYER) (setq #AY_OFF2ISDELETE IsCurLayer))
(setq OffDist (getdist (strcat "\n指定单向偏移距离<" (rtos (getvar "offsetdist")) ">:")))
);end_progn
);end_if
(if (null OffDist) (setq OffDist (getvar "offsetdist")));
(setq ss1 (ssget ))
(setq n (sslength ss1))
(setq i 0)
(setvar "osmode" 0)
(while (< i n)
(setq entName1 (ssname ss1 i))
(setq sPt (vlax-curve-getStartPoint entName1))
(setq tAngle (angle '(0.0 0.0 0.0) (vlax-curve-getFirstDeriv entName1
(vlax-curve-getparamatpoint entName1
(vlax-curve-getclosestpointto entName1 sPt)))))
(setq Pt1 (polar sPt (+ tAngle (/ pi 2.0)) OffDist))
(setq Pt2 (polar sPt (- tAngle (/ pi 2.0)) OffDist))
(command "_.OFFSET" OffDist entName1 Pt1 "")
(if (= IsCurLayer "Y")
(progn
(setq ent1 (entget (entlast)))
(setq ent1 (subst (cons 8 (getvar "clayer")) (assoc 8 ent1) ent1))
(entmod ent1)
);end_progn
);end_if
(command "_.OFFSET" OffDist entName1 Pt2 "")
(if (= IsCurLayer "Y")
(progn
(setq ent1 (entget (entlast)))
(setq ent1 (subst (cons 8 (getvar "clayer")) (assoc 8 ent1) ent1))
(entmod ent1)
);end_progn
);end_if
(if (= IsDelete "Y") (command"_.Erase" entName1 ""))
(setq i (1+ i))
);end_while
(setvar "osmode" oldOSnap)
(princ)
;(CMDINIT1);恢复用户系统变量.
);end_defun
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2007-9-22 15:29:24 | 显示全部楼层
到这再去下一个吧! 包你好用。http://www.xdcad.net/forum/showthread.php?s=&threadid=641253
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-22 16:10:56 | 显示全部楼层
谢谢楼上的高手回复。可是你那个稍微简单了,没办法对双向偏移设置。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 04:28 , Processed in 0.170227 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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