wanhongron 发表于 2016-9-29 11:49:36

★★问题不断,如何求多段线上水平等距点的坐标★★

画渠道又碰到另一个问题了,渠道纵剖面还要对每隔一定水平长度的地面线求坐标,网上有很多求定距坐标的,但都是按多段线长度来求的,不是按水平距来求的,继续恳请各位英雄大侠帮帮忙解决。

自贡黄明儒 发表于 2016-9-29 12:36:55

最简单的方式,临时产生一条竖直射线,求交点

xyp1964 发表于 2016-9-29 13:32:19

有图无码:


Sylvanas 发表于 2016-9-29 13:39:21

本帖最后由 Sylvanas 于 2016-9-29 15:04 编辑

(defun c:tt ()
(setq ptlst nil)
(setq ent (car (entsel "\n选择要定距等分的对象:")))
(if (= (cdr (assoc 0 (setq data (entget ent)))) "LWPOLYLINE")
    (progn (setq obj          (vlax-ename->vla-object ent)
               ;totallen (vla-get-length obj)
               dis          (getdist "\n指定线段长度:")
               pts (vlax-curve-getStartPoint obj)
               pte (vlax-curve-getEndPoint obj)
               totallen (abs (- (car pts) (car pte)))
               k          1
         )
         (while (<= (* k dis) totallen)
             (setq dislast (* k dis))
             (setq pt (list (+ (car pts) dislast) (cadr pts)))
             (setq
               ptlst (cons (vlax-curve-getClosestPointToProjection obj pt '(0 1 0))

                     ;(vlax-curve-getPointAtDist obj dislast)
                           ptlst)
             )
             (setq k (1+ k))
         )
    )
)
(reverse ptlst)
)

用你给的代码改的,试一下

wanhongron 发表于 2016-9-29 15:37:51

Sylvanas侠的代码正是我需要的,没想到这么快就有结果了,非常惊喜,非常感谢!!

wanhongron 发表于 2016-9-29 16:01:49

谢谢大家的关注,尤其感谢贡献源码的大侠!!

wanhongron 发表于 2016-9-29 16:49:58

能将各点坐标在对应上点用text文本写出来吗?不只是在命令行显示,如果能将终点坐标写出来就更好了!!

fan_zh 发表于 2016-9-30 09:07:23

好学的妹纸, 上面有源码了 ,改改就可以了

Sylvanas 发表于 2016-9-30 09:26:55

wanhongron 发表于 2016-9-29 16:49
能将各点坐标在对应上点用text文本写出来吗?不只是在命令行显示,如果能将终点坐标写出来就更好了!!

已有点表ptlst,foreach+entmake应该不是什么难事吧?

wanhongron 发表于 2016-9-30 10:19:03

好的,见笑了,目前还停留在抄袭的水平,非常感谢!!
页: [1]
查看完整版本: ★★问题不断,如何求多段线上水平等距点的坐标★★