分享一个多段线端点至直线的垂直距离函数,用于断面图标注
;;;(setq sssjx (LC-WH-vxs (car (entsel "\n 请选择要标注的设计线"))));;;(setq sskdx (car (entsel "\n 请选择刻度尺直线")))
;;;(setq hxbl (getint"\n请输入横向比例:"))
;;;(LC-LWPOLYLINE-line-DIST SSSJX sskdx hxbl)
;;;(setq pt1 (getpoint "\n 请选择直线起点")
;;; pt2 (getpoint "\n 请选择直线终点"))
;获取多段线到直线的距离(断面图中的偏距),已经套上横向断面比例
(defun LC-LWPOLYLINE-line-DIST (sssjx sskdx hxbl/)
(foreach temp sssjx
(PRINT (* (* hxbl 0.001) (LC-point_line-DIST TEMP (cdr(assoc 10 (entget sskdx))) (cdr(assoc 11 (entget sskdx))))))
)
(princ)
)
;[功能];;;;点到直线的垂直距离,返回距离
;[用法];;;;(LC-point_line-DIST pt pt1 pt2)
;;;(setq PT (getpoint "\n 请选择直线外一点")
;;; pt1 (getpoint "\n 请选择直线起点")
;;; pt2 (getpoint "\n 请选择直线终点"))
(defun LC-point_line-DIST (pt pt1 pt2 / ptangle ptn pt pt1 pt2 dist jptx)
(setq ptangle(angle pt1 pt2)
ptn (polar pt (+ (* 0.5 pi) ptangle) 0.01)
jptx (inters pt ptn pt1 pt2 nil)
dist (distance pt jptx)
)
dist
)
缺函数 LC-WH-VXS
上传漏了,随后上传 顶!顶!顶! (defun dist-point-line (p0 line)(distance p0 (vlax-curve-getclosestpointto line p0))) ;;[功能] pline,lwpline点坐标表By 无痕 ;;[用法] (LC-WH-vxs (car (entsel))),返回三维点坐标 (defun LC-WH-vxs (e / i v lst) (setq i -1) (while (setq v (vlax-curve-getpointatparam e (setq i (1+ i)))) (setq lst (cons v lst)) ) (reverse lst) ) 院长的代码好精炼 学习了! 顶!顶!顶! 随后完善了避让功能放出源码
好东西,能不能再优化下呢,直接点地面线交点直接以地面线高程计算
页:
[1]