cad偏移后自动变色lisp_高手帮忙修改,批量偏移 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...

;;用LISP实现将PL环向内或向外偏移

;;http://www.mjtd.com/Develop/ArticleShow.asp?ArticleID=654

(defun C:TEE ( / curve ent holdcmd holdosmode jang n pt pt1 pt2 ss tmp x)

(defun LEN (CURVE / TLEN)

(setq TLEN (vlax-curve-getdistatparam

CURVE

(vlax-curve-getendparam CURVE)

)

)

)

(command "_.UNDO" "BE")

(if (null tee_dist)

(setq tee_dist 1000.0)

) ;_设置全局变量

(setq HOLDOSMODE (getvar "OSMODE"))

(setq HOLDCMD (getvar "CMDECHO"))

(setvar "CMDECHO" 0)

(setvar "OSMODE" 0)

(if (setq ss (ssget '((0 . "*LINE,CIRCLE,ARC"))))

(progn

(setq n 0)

(initget 2)

(if (setq tmp

(getdist

(strcat "\n指定偏移距离(正__向外偏移 /负__向内偏移):

(rtos tee_dist 2)

">"

)

)

)

(setq tee_dist tmp)

) ;_不输入时自动使用上一次输入数值

(repeat (sslength ss)

(setq ent (ssname ss n)

n   (1+ n)

)

(setq CURVE (vlax-ename->vla-object ENT)

x     (vlax-curve-getParamAtDist curve (/ (len curve) 3.33))

pt    (vlax-curve-getPointAtParam curve x)

);_获得线上指定距离值的点及参数

(setq JANG (angle '(0 0 0) (vlax-curve-getfirstderiv CURVE X)))

(setq PT1 (polar PT (+ JANG (* 0.5 pi)) 0.00000001))

(setq PT2 (polar PT (- JANG (* 0.5 pi)) 0.00000001))

(command "_.OFFSET" (abs tee_dist) ENT PT1 "")

(if (or (and (> tee_dist 0) (> (LEN CURVE) (LEN (entlast))))

(and (< tee_dist 0) (< (LEN CURVE) (LEN (entlast))))

)

(progn

(entdel (entlast))

(command "_.OFFSET" (abs tee_dist) ENT PT2 "")

)

)

)

)

)

(setvar "OSMODE" HOLDOSMODE)

(setvar "CMDECHO" HOLDCMD)

(command "_.UNDO" "E")

(princ)

)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值