CAD.net二次开发--找到与制定点最近的2个实体

 
public static class Class2 { public static ObjectId[] fun(Point3d point) { Database db = HostApplicationServices.WorkingDatabase; Editor ed = Application.DocumentManager.MdiActiveDocument.Editor; Point3dCollection points = new Point3dCollection(); List<string> wenben = new List<string>(); List<double> distance = new List<double>(); ObjectId[] s = new ObjectId[2]; ObjectIdCollection textids = new ObjectIdCollection(); TypedValue[] values = new TypedValue[] { new TypedValue((int)DxfCode.LayerName,"TK"), new TypedValue((int)DxfCode.Start,"TEXT") }; SelectionFilter selfilter = new SelectionFilter(values); PromptSelectionResult psr = ed.SelectAll(selfilter); if (psr.Status == PromptStatus.OK) { SelectionSet ss = psr.Value; using (Transaction trans = db.TransactionManager.StartTransaction()) { foreach (ObjectId id in ss.GetObjectIds()) { DBText mytext = trans.GetObject(id, OpenMode.ForRead) as DBText; if (mytext != null) { points.Add(mytext.Position); wenben.Add(mytext.TextString); // mytext.TextString = ""; textids.Add(id); distance.Add(point.DistanceTo(mytext.Position)); } } trans.Commit(); } } else { ed.WriteMessage("错误"); return s; } ////冒泡 double temp = 0; string wenbentemp = ""; ObjectId tempid = new ObjectId(); for (int i = distance.Count; i > 0; i--) { for (int j = 0; j < i - 1; j++) { if (distance[j] > distance[j + 1]) { temp = distance[j]; wenbentemp = wenben[j]; tempid = textids[j]; distance[j] = distance[j + 1]; wenben[j] = wenben[j + 1]; textids[j] = textids[j + 1]; distance[j + 1] = temp; wenben[j + 1] = wenbentemp; textids[j + 1] = tempid; } } } /////冒泡结束 s[0] = textids[0]; s[1] = textids[1]; return s; } }


学习点:找到与制定点最近的2个实体的ID;冒泡排序,选择集;以及基本的CAD二次开发过程

转载于:https://www.cnblogs.com/w-lumi/p/5701028.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值