该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
;;;**************************************
(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代码 但是不行 求大神啊