乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 84|回复: 4

从一个点找到最近的物体

[复制链接]

1

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2018-3-30 10:14:44 | 显示全部楼层 |阅读模式
我正在寻找一个解决方案,从一个点找到最近的对象(大多数情况下是折线)。
有什么想法吗?

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2018-3-30 10:58:28 | 显示全部楼层
嗨,
这里有一个,可能不是最有效的,但你可以从中获得灵感
[CommandMethod(“FINDNEARESTCURVE”,CommandFlags.Redraw)]
公共void FindNearestCurve()
{
var doc=Application.DocumentManager.MdiActiveDocument
var db=doc.Database
var-ed=doc.Editor
var-ppr=ed.GetPoint(“\n点击一个点:”)
如果(ppr.Status!=PromptStatus.OK)
返回
var pt=ppr.Value.TransformBy(ed.CurrentUserCoordinateSystem)
var-curveClass=RXObject.GetClass(typeof(Curve))
ObjectId closestId=ObjectId.Null
使用(var tr=new OpenCloseTransaction())
{
var-space=(BlockTableRecord)tr.GetObject(db.CurrentSpaceId,OpenMode.ForRead)
double dist=double.MaxValue
foreach(空间中的ObjectId)
{
如果(id.ObjectClass.IsDerivedFrom(curveClass))
{
var曲线=(曲线)tr。GetObject(id,OpenMode.ForRead)
双d=曲线。GetClosestPointTo(pt,false)。DistanceTo(pt)
如果(d
{
closestId=id
dist=d
}
}
}
}
如果(!closestId.IsNull)
{
ed.SetImpliedSelection(新[]{closestId})
}
}
回复

使用道具 举报

7

主题

60

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
88
发表于 2018-4-6 17:31:00 | 显示全部楼层
请注意,距离测试非常昂贵
如此昂贵,以至于当您在循环中处理数千件事情时,必须剔除不属于候选项的项目
如果“最接近”是指在任何方向上,则可以使用边界框进行此操作
如果你的意思是像Civil一样最接近的“垂直偏移”,你必须对每一个都进行昂贵的测试,没有捷径。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2018-4-6 21:06:20 | 显示全部楼层
首先,我不在.Net中写。也许用户使用交叉窗口而不是随机搜索可以使用grread绘制一个圆圈来限制正在搜索的对象。踏入圆圈是另一种方式,再次限制外部。如果是pline vertice类型的请求,则可以使用偏移量继续搜索对象,但同样,这是一项有点慢的任务。
回复

使用道具 举报

16

主题

506

帖子

6

银币

中流砥柱

Rank: 25

铜币
570
发表于 2018-4-9 09:52:13 | 显示全部楼层
更好地定义“对象”和“最近的”,例如,如果它是一条多段线,如何测量-最近的顶点?沿着它的长度有点吗?块参照呢?这是插入点吗?它的子几何体上的一个点?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-4 10:36 , Processed in 0.146829 second(s), 62 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表