明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1915|回复: 10

求一个多点相交的交点个数(分类统计)

[复制链接]
发表于 2019-4-15 12:36 | 显示全部楼层 |阅读模式
1明经币
交点统计,按几个多段线相交于这一点分类,具体可看图。
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

;;简单写了个 ;;需要是pl线,相交处不能有重复节点 ;;你的图的运行结果,是这样么
发表于 2019-4-15 12:36 | 显示全部楼层
本帖最后由 satan421 于 2019-4-15 22:45 编辑

;;简单写了个
;;需要是pl线,相交处不能有重复节点

;;你的图的运行结果,是这样么

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

 楼主| 发表于 2019-4-16 08:08 | 显示全部楼层
satan421 发表于 2019-4-15 22:28
;;简单写了个
;;需要是pl线,相交处不能有重复节点

人工数的结果,两个相交的没数,实际我是不需要的
3个多段线相交的交点个数:26个
4个多段线相交的交点个数:8个
5个多段线相交的交点个数:7个
6个多段线相交的交点个数:2个
   
可能我的问题没描述清楚,我重把文件上传下看
回复

使用道具 举报

 楼主| 发表于 2019-4-16 08:11 | 显示全部楼层
感谢二楼小哥的回复,可能我问题描述的不太清楚,也可能我数的多短线(如6线交点)没交在一个点,麻烦有心人在看看呢,万分感谢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

发表于 2019-4-16 08:22 | 显示全部楼层
夜战双乔 发表于 2019-4-16 08:11
感谢二楼小哥的回复,可能我问题描述的不太清楚,也可能我数的多短线(如6线交点)没交在一个点,麻烦有心 ...

看了下你上传的dwg,有些地方可能是作图的问题,端点看起来重合,实际并不重合

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

 楼主| 发表于 2019-4-16 08:45 | 显示全部楼层
satan421 发表于 2019-4-16 08:22
看了下你上传的dwg,有些地方可能是作图的问题,端点看起来重合,实际并不重合

谢谢,不知道能不能有其他思路数出来
回复

使用道具 举报

发表于 2019-4-16 08:59 | 显示全部楼层
;;我用的思路是,把所有多段线的点都存在一个点表里面,遍历点表,坐标相同点,统计其数量并生成一个表(点 . 数量),再把所有表结合成一个新表,去掉数量为1的表(点 . 1),剩下的表再根据数量统计一次,最后输出统计结果。
;;问题就是点必须完全重合,结果才准确,对作图的要求很高。

;;端点不重合就麻烦了,考虑容差进去的话,就得换个思路,而且可能会有误判

;;cad的分析能力差了点,可以看看GIS软件有没有好用的功能,有的话转换成shp文件去操作
回复

使用道具 举报

 楼主| 发表于 2019-4-16 09:36 | 显示全部楼层
satan421 发表于 2019-4-16 08:59
;;我用的思路是,把所有多段线的点都存在一个点表里面,遍历点表,坐标相同点,统计其数量并生成一个表(点  ...

谢谢,公司电脑,只装的微信TIM和中望CAD,还是初级版CAD,加载不了VLX,VBA编辑器也用不了,其他软件什么也安装不了,没权限,桑心啊,能否发布LIP源码或发我邮箱huyumen@126.com
回复

使用道具 举报

发表于 2019-5-12 08:55 | 显示全部楼层
satan421 发表于 2019-4-16 08:59
;;我用的思路是,把所有多段线的点都存在一个点表里面,遍历点表,坐标相同点,统计其数量并生成一个表(点  ...

您好,我也在写求交点数量的程序,可是有重复点的不知道怎么操作,能借鉴下您 的程序吗?我的邮箱78181417@qq.com
回复

使用道具 举报

发表于 2019-5-12 09:40 | 显示全部楼层
tianying307 发表于 2019-5-12 08:55
您好,我也在写求交点数量的程序,可是有重复点的不知道怎么操作,能借鉴下您 的程序吗?我的邮箱

这个帖子里面的情况,重复点就是交点,应该跟你的情况不一样,你下载这个帖子的DWG附件就知道了。
求交点有inters和vla-intersectwith函数,你研究下。
重复点的话,参考LEE MAC的大作

;; Unique with Fuzz  -  Lee Mac
;; Returns a list with all elements considered duplicate to
;; a given tolerance removed.

(defun LM:UniqueFuzz ( l f / x r )
    (while l
        (setq x (car l)
              l (vl-remove-if (function (lambda ( y ) (equal x y f))) (cdr l))
              r (cons x r)
        )
    )
    (reverse r)
)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-19 06:49 , Processed in 0.193273 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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