御猪最呆 御猪最呆
关注数: 6 粉丝数: 53 发帖数: 2,380 关注贴吧数: 40
有没有懂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)/指定单向偏移距离<" (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 这段代码是双边偏移的代码 LZ很喜欢 但是有个小问题就是 编写的是单边偏移量 而我平时操作都是习惯用双边偏移量 打个比方就是 我画一条中线 双偏移一条1米5的线 代码中实现的双偏是左右各偏移出一条1米5的线 屌丝想要的是双边偏移总数是1米5 有没有大神能帮我改改 屌丝不懂编程 应该不难改吧 试过融合我以前的LSP代码 但是不行 求大神啊
1 下一页