偏移变色lisp_有没有懂LISP的大神帮忙修改一下代码

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

;;;**************************************

(defun C:sd (/ 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)/指定单向偏移距离:")))

(if (= (Type OffDist) 'STR)

(progn

(initget "Y N")

(setq IsDelete (getkword (strcat "\n是(Y)/否(N)删除原曲线对象?:")))

(if (Null IsDelete) (setq IsDelete #AY_OFF2ISDELETE) (setq #AY_OFF2ISDELETE IsDelete))

(initget "Y N")

(setq IsCurLayer (getkword (strcat "\n是(Y)/否(N)将偏移后的对象置到当前层?:")))

(if (Null IsCurLayer) (setq IsCurLayer #AY_OFF2ISCURLAYER) (setq #AY_OFF2ISDELETE IsCurLayer))

(setq OffDist (getdist (strcat "\n指定单向偏移距离:")))

);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

这段代码是双边偏移的代码 LZ很喜欢 但是有个小问题就是 编写的是单边偏移量 而我平时操作都是习惯用双边偏移量 打个比方就是 我画一条中线 双偏移一条1米5的线 代码中实现的双偏是左右各偏移出一条1米5的线 屌丝想要的是双边偏移总数是1米5 有没有大神能帮我改改 屌丝不懂编程 应该不难改吧 试过融合我以前的LSP代码 但是不行 求大神啊

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值