马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
 - (defun C:af (/ 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
上面是网上找到双边偏移代码,能否实现双边偏移后把中间线(箭头所指的线)删除掉。
最后重点把堵头封死。
谢谢大神,谢谢大神,谢谢大神!!!
|