lisp用entmake生产圆柱体_如何用entmake 去实现 断点命令 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - 断点,如何 - Power...

本帖最后由 Kye 于 2015-3-26 16:44 编辑

在线段或圆弧上选取任一点,将线段或圆弧打断,用下面这个在2012中好用在2007中又不好用

;_断点

;;;http://cadtips.cadalyst.com/2d-operations/break-a-selected-point

(defun breakpt ( pt1 )

;(setq pt1 (getpoint"Select Braking Point: "))

(command"break" pt1 "@" "")

(princ)

)

所以想改用entmake新建两个圆弧或直线,删除原来圆弧及直线,直线解决了,但圆弧遇到了困难,反正弦函数角度范围(- 0.5pi +0.5pi),下面程序中如果选取点与圆弧起始点的圆心角大于0.5pi 也不清楚如何处理,生成新圆弧的设定条件调试很长时间,没搞定,请哪位大侠出手帮忙指点迷津,或者帮忙提供个新的不用break的断点程序,谢谢了

;_顶角就是要求的圆心角θ,设弦长为h,则sin(θ/2)=(h/2)÷r=h/2r,θ=2arcsin(h/2r).

;_e=(car (entsel))

;_(setq e (car (entsel)))

(defun mkArc (e sa ea)

(setq ed (entget e))

(setq ed (subst (cons 50 sa) ;_ed (entget e)

(assoc 50 ed)

ed

)

ed (subst (cons 51 ea)

(assoc 51 ed)

ed

)

)

(entmake ed)

)

(defun c:TT   ()

;_取得组码值

(defun dxf (e i)

(cdr (assoc i (entget e)))

)

;_反正弦函数

;;; Arcsin(x)

;;; x valid in [-1,1]

;;; Return: Radian

;;; Standard Mathematics defined Arcsin on

;;; [-pi/2, pi/2]

(defun arcsin (x)

(cond

((= x 1.0) (/ pi 2.0))

((= x -1.0) (/ pi -2.0))

((and (> x -1.0) (< x 1.0))

(atan (/ x (sqrt (- 1.0 (* x x)))))

)

(T nil)

)

)

(setq ss (ssget '((0 . "arc"))))

(setq e  (ssname ss 0 )  ed (entget e) )

(setq sa (dxf e 50)) ;_获取起始角度

(setq Ea (dxf e 51)) ;_获取终止角度

(setq r (dxf e 40 ));_获取圆弧半径

(setq cenpt (dxf e 10)) ;_获取圆弧圆心 e=(car (entsel))

(setq sp (polar cenpt sa r) ;_获取圆弧起始点

ep (polar cenpt Ea r) ;_获取圆弧终止点

)

(setq l   (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e)));_圆弧长度

(setq sita (/ l r));_圆心角

(setq getpt (getpoint "\n 选取点:"))

(setq h (distance sp getpt))

(setq x (/ h ( * 2 r)))

(setq ArcAng (* 2 (arcsin x)));_选取点与圆弧起始点的圆心角

(if ( < arcAng 0) (setq ArcAng (- (* pi 2) ArcAng)))

;(setq positionAng (- (angle ep sp) (angle cenpt sp)));_positionAng 方位角

;(if (< positionAng 0)

(if  (equal (abs ( - sa ea)) sita 0.01)

(progn (setq temp (+ sa ArcAng))

(mkArc e sa temp)

(mkArc e temp Ea)

(entdel e)

)

(progn (setq temp (- sa ArcAng))

(mkArc e sa temp)

(mkArc e temp Ea)

(entdel e)

)

)

)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值