13648893846 发表于 2018-4-19 13:18:16

分享一个多段线端点至直线的垂直距离函数,用于断面图标注

;;;(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
)

yoyoho 发表于 2018-4-19 15:04:41

缺函数 LC-WH-VXS

13648893846 发表于 2018-4-19 21:49:58

上传漏了,随后上传

shh1980 发表于 2018-4-20 12:36:52

顶!顶!顶!

xyp1964 发表于 2018-4-24 07:29:40

(defun dist-point-line (p0 line)(distance p0 (vlax-curve-getclosestpointto line p0)))

13648893846 发表于 2018-4-24 13:17:16

;;[功能] 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) )

13648893846 发表于 2018-4-24 13:19:26

院长的代码好精炼

yoyoho 发表于 2018-4-25 08:11:28

学习了! 顶!顶!顶!

13648893846 发表于 2018-4-25 23:20:14

随后完善了避让功能放出源码

hefamiao222 发表于 2019-1-22 12:10:11

好东西,能不能再优化下呢,直接点地面线交点直接以地面线高程计算
页: [1]
查看完整版本: 分享一个多段线端点至直线的垂直距离函数,用于断面图标注