CSharpBoy 发表于 2016-10-19 00:04:29

用.NET API实现亮显POLYLINE子段

下面C#代码提示用户选择多段线,然后输入要亮显的字段的编号,亮显一个子段。



public static void HighlightPolySeg()
{
    Document doc = Application.DocumentManager.MdiActiveDocument;
    Database db = doc.Database;
    Editor ed = doc.Editor;

    PromptEntityOptions peo = new PromptEntityOptions("\nSelect a polyline: ");
    peo.SetRejectMessage("\nMust be a polyline...");
    peo.AddAllowedClass(typeof(Polyline), true);

    PromptEntityResult per = ed.GetEntity(peo);

    if (per.Status != PromptStatus.OK) return;

    using (Transaction Tx = db.TransactionManager.StartTransaction())
    {
      Polyline polyline = Tx.GetObject(per.ObjectId, OpenMode.ForRead) as
            Polyline;

      int nbSegments = polyline.NumberOfVertices;

      if (!polyline.Closed) --nbSegments;

      PromptIntegerOptions pio = new PromptIntegerOptions("\nEnter segment id
             :");
      pio.LowerLimit = 1;
      pio.UpperLimit = nbSegments;

      PromptIntegerResult pir = ed.GetInteger(pio);

      if (pir.Status != PromptStatus.OK) return;

      FullSubentityPath path = new FullSubentityPath(new ObjectId[] {
            polyline.Id }, new SubentityId(SubentityType.Edge, pir.Value));
      polyline.Highlight(path, true);
    }
}

别只看,你有好东西也分享哦!

lhtfhc 发表于 2016-10-19 08:27:56

学习学习,谢谢

lou1981 发表于 2016-11-7 23:20:58

楼主有没有清理pl线重复点的办法?

qq509103902 发表于 2016-11-17 13:34:22

啥也不说了,感谢楼主分享哇!

qq509103902 发表于 2016-11-17 13:36:39


学习学习。。。

pl4419433980 发表于 2016-11-23 18:16:31

正需要,支持楼主大人了!

vosry 发表于 2016-12-5 12:18:11

都是高科技,所以必须要回复

qq509103902 发表于 2016-12-7 10:45:29

啥也不说了,感谢楼主分享哇!

zjy2999 发表于 2016-12-30 12:45:43

学习!!!!!!!!!!!!!!

徐亚龙 发表于 2017-1-16 09:41:59

学习学习!

ppstudy369 发表于 2017-1-19 15:58:38

高亮显示,要是能显示夹点就更好了

lennie 发表于 2017-1-21 17:41:52

xx看看学习学习

Lizzhao 发表于 2017-6-8 19:30:41

学习一下{:1_12:}{:1_12:}{:1_12:}{:1_12:}{:1_12:}

iambingo 发表于 2017-12-17 20:45:46

感谢楼主分享!

yjch 发表于 2017-12-18 11:31:24


感谢分享!好好学习天天向上
页: [1] 2 3
查看完整版本: 用.NET API实现亮显POLYLINE子段