给定桩号获取纵断面中的高程值(c# for civil3d)
2021-04-14 05:28
标签:实现 pen objectid lvf div and nat 循环 read 通过civil3d提供的api,也就是纵断面Profile类提供的方法---public double ElevationAt(double station),就可以很轻松的获取纵断面对象某桩号处的高程值,进而可以批量获取高程值。下面给出实现的代码。 首先写一个纵断面Profile类的扩展方法(扩展方法相当有用),用于返回某桩号处的高程值。 然后就可以通过调用上面的方法,就可以获取桩号对应的高程数据了。 如过想要批量获取高程值得话,借助循环就可以完成了。 给定桩号获取纵断面中的高程值(c# for civil3d) 标签:实现 pen objectid lvf div and nat 循环 read 原文地址:https://www.cnblogs.com/whlkx/p/8967681.html 1 ///
1 [CommandMethod("getElvFromProfile")]
2 public static void GetElvFromProfile()
3 {
4 Document doc = AcadApp.DocumentManager.MdiActiveDocument;
5 Database db = doc.Database;
6 Editor ed = doc.Editor;
7 CivilDocument civilDoc = CivilApplication.ActiveDocument;
8 var opt = new PromptEntityOptions("\n 请拾取一个纵断面对象 ");
9 opt.SetRejectMessage("\n 对象必须是纵断面对象");
10 opt.AddAllowedClass(typeof(Profile), false);
11 var res = ed.GetEntity(opt);
12 if (res.Status != PromptStatus.OK)
13 {
14 ed.WriteMessage("\n你已经取消了选择");
15 return;
16 }
17 var doubleResult = ed.GetDouble("\n请输入一个桩号");
18 double station = doubleResult.Value;
20 using (DocumentLock docLock = doc.LockDocument())
21 using (Transaction trans = db.TransactionManager.StartTransaction())
22 {
23 Profile profile = trans.GetObject(res.ObjectId, OpenMode.ForRead) as Profile;//获取纵断面对象
24 double? elevation = profile.GetElevationFromProfile(station);//调用扩展方法,获取高程值
25 //ed.WriteMessage(profile.GetElevationFromProfile(station).ToString());
26 ed.WriteMessage(elevation?.ToString());
27 }
28 }
文章标题:给定桩号获取纵断面中的高程值(c# for civil3d)
文章链接:http://soscw.com/index.php/essay/75530.html