乐筑天下

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

高亮显示块内长方体上的固定边

[复制链接]

2

主题

3

帖子

1

银币

初来乍到

Rank: 1

铜币
11
发表于 2019-11-18 10:23:41 | 显示全部楼层 |阅读模式
您好,
我正在努力突出固定框的边缘。
通过一些帖子,GetSubentityPathsAtGraphicsMarker似乎可以完成这项工作
当长方体直接位于模型空间下时,该方法可以很好地工作,因为在这种情况下,该命令将为最后一个参数接受空输入
我现在遇到的问题是,当框位于块下时,返回的SubEntityPath不能包括top Blockreference的id,即使我已经在GetSubentityPathsAtGraphicsMarker的最后一个参数中输入了容器id
返回的SubEntityPathId仍然只有实体本身。因此,当进入高亮显示时,它将抛出一个异常
我现在拥有的代码如下所示
为什么GSMarker像边缘的0x12、0x16?我通过PromptSelectionOption的另一个编码获得了这个数字,它允许我看到单条边的GSMarker
是否有其他替代方法获取GSMarkers
  1. [CommandMethod("SelectBox")]
  2.         public static void SelectBox()
  3.         {
  4.             Database db = HostApplicationServices.WorkingDatabase;
  5.             Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
  6.             try
  7.             {
  8.                 PromptNestedEntityOptions NEntOpt = new PromptNestedEntityOptions("\nPick a nested entity:");
  9.                 PromptNestedEntityResult NEntRes = ed.GetNestedEntity(NEntOpt);
  10.                
  11.                 if (NEntRes.Status == PromptStatus.OK)
  12.                 {               
  13.                     Point3d pt = NEntRes.PickedPoint;
  14.                     Matrix3d mt = NEntRes.Transform;
  15.                     ObjectId box_id = NEntRes.ObjectId;      
  16.                     using (Transaction tr = db.TransactionManager.StartTransaction())
  17.                     {
  18.                         Entity top_ent = null;
  19.                         if (NEntRes.GetContainers().Length > 0)
  20.                             top_ent = (Entity)tr.GetObject(NEntRes.GetContainers()[0], OpenMode.ForRead);
  21.                         
  22.                         Entity box_ent = (Entity)tr.GetObject(box_id, OpenMode.ForRead);
  23.                         FullSubentityPath[] ips = box_ent.GetSubentityPathsAtGraphicsMarker(SubentityType.Edge, (IntPtr)0x12, pt, mt, NEntRes.GetContainers());  //highlighting a fixed edge with 0x12
  24.                         if (top_ent!=null)
  25.                             top_ent.Highlight(ips[0], false);
  26.                         else
  27.                             box_ent.Highlight(ips[0], false);
  28.                         tr.Commit();
  29.                     }
  30.                 }
  31.             }
  32.             catch (System.Exception ex)
  33.             {
  34.                 ed.WriteMessage(ex.ToString());
  35.             }
  36.         }

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

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

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2024-11-22 04:57 , Processed in 0.254590 second(s), 65 queries .

© 2020-2024 乐筑天下

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