明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 莫名

[讨论]如何判断坐标点是否在闭合多段线内

  [复制链接]
发表于 2004-1-5 13:12:00 | 显示全部楼层
这种方式其实是调用ACAD的方法来判断,它还生成一个实体,因而运行的时间是比较长的。
其它的都要自己根据算法来编写一段代码了,算法在计算机图形学里有介绍。
发表于 2004-1-6 20:28:00 | 显示全部楼层
创建一个临时图层,然后使用点坐标在图层上创建一个点对象
使用闭合线域在临时图层上选择,如果选择集的Count>0则在范围内,否则则不在
呵呵
发表于 2004-1-9 09:56:00 | 显示全部楼层
下面的程序是用面域相交的方法判断是否点在封闭的PLine内部。
思路:
1.根据点的坐标生成一个半径很小的圆。
2.将圆和PLine转换为面域。
3.判断生成的两个面域是否相交。
程序如下:

  1. Public Function PtInPline(pts As Variant, pline As AcadEntity) As Boolean
  2.   Const radius = 0.0001 '减少此值可以增加精度
  3.   
  4.   Dim cir As AcadCircle
  5.   Dim regions As Variant
  6.   Dim reg1 As AcadRegion
  7.   Dim reg2 As AcadRegion
  8.   '生成圆
  9.   Set cir = ThisDrawing.ModelSpace.AddCircle(pts, radius)
  10.    
  11.   '转换为面域
  12.   Dim objToRegion(0 To 1) As Object
  13.   Set objToRegion(0) = cir
  14.   Set objToRegion(1) = pline
  15.   regions = ThisDrawing.ModelSpace.AddRegion(objToRegion)
  16.   Set reg1 = regions(0)
  17.   Set reg2 = regions(1)
  18.   
  19.   reg1.Boolean acIntersection, reg2
  20.   '判断是否相交
  21.   PtInPline = False
  22. '  If reg1.Area > 0 Then
  23.   If reg1.Area > 0.9 * 3.14 * radius * radius Then
  24.     PtInPline = True
  25.   End If
  26.   '删除临时生成物体
  27.   cir.Delete
  28.   reg1.Delete
  29.    
  30. End Function

评分

参与人数 1威望 +1 金钱 +10 贡献 +10 激情 +5 收起 理由
mccad + 1 + 10 + 10 + 5 【好评】不错的思路

查看全部评分

发表于 2004-1-9 11:46:00 | 显示全部楼层
使用API判断点是否在多边形中
[WEB]http://bbs.mjtd.com/forum.php?mod=viewthread&tid=15203[/WEB]
发表于 2004-1-9 11:54:00 | 显示全部楼层
[转帖]判断点是否在多边形中的分析
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=15179

[WEB]http://bbs.mjtd.com/forum.php?mod=viewthread&tid=15179[/WEB]
发表于 2005-6-23 10:59:00 | 显示全部楼层
现在给你一个点。怎么判断?
发表于 2005-6-23 11:06:00 | 显示全部楼层
现在给你一个点。怎么判断?
发表于 2005-6-23 22:08:00 | 显示全部楼层
发表于 2005-6-25 15:29:00 | 显示全部楼层
大虾们都在这灌水,去看看我的问题呀,添加多线段的问题
发表于 2009-10-14 08:37:00 | 显示全部楼层
我也遇到同样问题,请大侠指点!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-22 05:31 , Processed in 0.155836 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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