求一个结构用的钢筋断点lisp程序
本帖最后由 石井鱼 于 2014-6-25 10:06 编辑本人菜鸟,画图时经常遇到画钢筋斜钩问题,苦于每次都要先画短线,再倒角,拉长度,繁琐不已,期盼哪位高手解决此问题,不胜感激!(TSSD程序有类似功能“斜钩断点”,但必须是PL线,不是很方便)具体可见附件CAD。
本帖最后由 q3_2006 于 2014-6-25 12:23 编辑
(defun c:tt ( / e en la p pp pt pt1 pt2 px)
(defun mkline (la pt1 pt2) (entmakex (list '(0 . "LINE") (cons 8 la) (cons 10 pt1) (cons 11 pt2))))
(vl-load-com)
(while (setq en (entsel "\n选择钢筋断点:")
pt (getpoint "\n点取弯钩方向:")
)
(setq e (car en)
la (cdr (assoc 8 (entget e)))
p (vlax-curve-getClosestPointTo e (cadr en))
px (vlax-curve-getClosestPointTo e pt)
pp (polar px (angle px p) 1e6)
)
(cond
((equal (* 0.25 pi) (angle p pt) (* 0.249 pi)) (mkline la p (polar p (* 0.25 pi) 100)) (vl-cmdf "break" (list e p) pp))
((equal (* 0.75 pi) (angle p pt) (* 0.249 pi)) (mkline la p (polar p (* 0.75 pi) 100)) (vl-cmdf "break" (list e p) pp))
((equal (* 1.25 pi) (angle p pt) (* 0.249 pi)) (mkline la p (polar p (* 1.25 pi) 100)) (vl-cmdf "break" (list e p) pp))
((equal (* 1.75 pi) (angle p pt) (* 0.249 pi)) (mkline la p (polar p (* 1.75 pi) 100)) (vl-cmdf "break" (list e p) pp))
(t (exit))
)
)
) q3_2006 发表于 2014-6-24 17:57 static/image/common/back.gif
非常感谢“q3_2006”鼎力相助,可能我没有表达清楚,那个形成的钩是在鼠标点击的地方形成,并不是直线的末端头,加钩的同时把45度角另一侧135度的线段截断并删除,不知能否改进,谢谢 另外斜钩在直线中间形成,钩的方向有上下左右,能否鼠标点击4个方向确定 石井鱼 发表于 2014-6-25 09:07 static/image/common/back.gif
非常感谢“q3_2006”鼎力相助,可能我没有表达清楚,那个形成的钩是在鼠标点击的地方形成,并不是直线的末 ...
上面代码改好了.... 加钩的同时把45度角另一侧135度的线段截断并删除....上个图...看不懂.... 关闭捕捉....忘了.... q3_2006 发表于 2014-6-25 11:57 static/image/common/back.gif
加钩的同时把45度角另一侧135度的线段截断并删除....上个图...看不懂....
高手果然不一般!非常接近了,示意一下,就是把剩下的截掉(云线部分),倒个角也行 石井鱼 发表于 2014-6-25 12:19 static/image/common/back.gif
高手果然不一般!非常接近了,示意一下,就是把剩下的截掉(云线部分),倒个角也行
代码已经改了... 非常完美的程序,感激涕零!