明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: 荒野孤行

[讨论] 求两条多段线的中线

[复制链接]
发表于 2014-1-9 13:15:42 | 显示全部楼层
荒野孤行 发表于 2014-1-9 11:13
哥们,我更新了源码,有些问题,再帮我看下吧,谢谢。

当两根边线顶点数不一样多,主要走向也不平行时,内插的点到边线距离相等会出现岐义,这个时候到底取边线顶点连线中点还是取一条线的顶点到另一条线的垂线的中点是不一样的,这个具体取哪个点作为所插入线的顶点可能根据用途不同会有不同取舍吧
发表于 2014-1-9 14:13:45 | 显示全部楼层
荒野孤行 发表于 2014-1-9 11:13
哥们,我更新了源码,有些问题,再帮我看下吧,谢谢。

绘制的pl会多点。
对于直线与折线,如果选择相反,将出错,还不如原来了。
对等折线的中线还是有问题,不过平行折线正常,但是会多点。。。。
关键还得适合自己用。
 楼主| 发表于 2014-1-9 15:22:13 来自手机 | 显示全部楼层
edata 发表于 2014-1-9 14:13
绘制的pl会多点。
对于直线与折线,如果选择相反,将出错,还不如原来了。
对等折线的中线还是有问题, ...

我的思路是把一条多段线的顶点投影到另外一条多段线上(找最近点)这些点在多段线上有对应的param值,然后把这些点用vl-sort排序(比较点的param),再将这些点投影到另外一条多段线上,对应的两个顶点之间找中点,通过中点绘制出需要的多段线。

投影点就是最近点
另外我不知道param代表的是什么,是不是每个点在曲线上的位置参数、序号的意思?
发表于 2014-1-21 15:24:42 | 显示全部楼层
;;不好意思,没看你的代码.就是我的简单思路....
  1. (defun dpl (e)
  2.         (mapcar        'cdr(vl-remove-if-not '(lambda (x) (= (car x) 10))(entget e)))
  3. )
  4. (defun mid (p1 p2)
  5.     (mapcar '* '(0.5 0.5 0.5) (mapcar '+ p1 p2))
  6.     )
  7. (defun pt2per (pt e)
  8.   (if (and pt e)
  9.     (vlax-curve-getclosestpointto (vlax-ename->vla-object e) pt t)
  10.   )
  11. )
  12. (defun c:tt ( / a al b bl cl dl x y)
  13.         (while (setq a (car (entsel))
  14.                 b (car (entsel))
  15.                 al (dpl a)
  16.                 bl (dpl b)
  17.         )
  18.                 (if (> (length al) (length bl))
  19.                 (setq cl (mapcar '(lambda(x) (pt2per x b)) al)
  20.                                 dl (mapcar '(lambda(x y) (mid x y)) al cl)
  21.                         )
  22.                 (setq cl (mapcar '(lambda(x) (pt2per x a)) bl)
  23.                                 dl (mapcar '(lambda(x y) (mid x y)) bl cl)
  24.                         )
  25.         )
  26.         (xyp-pline dl nil)
  27.         )
  28. )
发表于 2014-1-21 15:25:37 | 显示全部楼层
(xyp-pline dl nil)

院长函数..就是画多段线 ....好写
发表于 2014-11-6 16:40:11 | 显示全部楼层
多谢,可以参考下
发表于 2019-10-9 17:01:09 | 显示全部楼层
牛逼,是个好东西,真好用,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-18 16:00 , Processed in 0.188303 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表