Revit SDK 介绍:AttachedDetailGroup

前言

这个例子介绍如何创建带附着的详图组(AttachedDetailGroup)的组(Group),然后单独控制 AttachedDetailGroup 的显示和隐藏。例子在 SDK: Revit 2020 SDK\Samples\AttachedDetailGroup

内容

下面分两个部分来介绍这个例子:

  1. 生成 Ribbon 菜单,有两个按钮,一个负责显示附着的详图组,一个负责隐藏附着的详图组;
  2. 实现两个命令,一个负责显示附着的详图组,一个负责隐藏附着的详图组。

菜单

结果如下:
在这里插入图片描述
例子里面是通过实现一个 IExternalApplication 来让菜单出现在这里。如果想要使用 IExternalApplication,必须加入 addin 文件到对应目录,默认为 C:\ProgramData\Autodesk\Revit\Addins\2020

<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
  <AddIn Type="Application">
    <Name>AttachedDetailGroup</Name>
    <Assembly>AttachedDetailGroup.dll</Assembly>
    <ClientId>91ef7f06-53b0-488c-a5bb-e005abfb542e</ClientId>
    <FullClassName>Revit.SDK.Samples.AttachedDetailGroup.CS.Application</FullClassName>
	<VendorId>ADSK</VendorId>
	<VendorDescription>Autodesk, www.autodesk.com</VendorDescription>
  </AddIn>
</RevitAddIns>

重写IExternalApplication::OnStartup,调用CreateAttachedDetailGroupPanel来创建菜单:

public Result OnStartup(UIControlledApplication application)
{
   CreateAttachedDetailGroupPanel(application);
   return Result.Succeeded;
}

CreateAttachedDetailGroupPanel 里面注意,typeof(Revit.SDK.Samples.AttachedDetailGroup.CS.AttachedDetailGroupShowAllCommand).FullName,这个将对应的命令绑定进来:

private void CreateAttachedDetailGroupPanel(UIControlledApplication application)
{
   // 创建 ribbon panel,用于放置各个菜单。
   RibbonPanel rp = application.CreateRibbonPanel("Attached Detail Group");

   // 创建显示附着的详图组的命令。
   PushButtonData pbdShowAllDetailGroups = new PushButtonData("ShowAttachedDetailGroups", "Show Attached\nDetail Groups",
                  addAssemblyPath,
                  typeof(Revit.SDK.Samples.AttachedDetailGroup.CS.AttachedDetailGroupShowAllCommand).FullName);

   pbdShowAllDetailGroups.LongDescription = "Show all of the selected element group's attached detail groups that are compatible with the current view.";

   PushButton pbShowAllDetailGroups = rp.AddItem(pbdShowAllDetailGroups) as PushButton;
   SetIconsForPushButton(pbShowAllDetailGroups, Revit.SDK.Samples.AttachedDetailGroup.CS.Properties.Resources.ShowAllDetailGroupsIcon);

   // 创建隐藏附着的详图组的命令。
   PushButtonData pbdHideAllDetailGroups = new PushButtonData("HideAttachedDetailGroups", "Hide Attached\nDetail Groups",
                  addAssemblyPath,
                  typeof(Revit.SDK.Samples.AttachedDetailGroup.CS.AttachedDetailGroupHideAllCommand).FullName);

   pbdHideAllDetailGroups.LongDescription = "Hide all of the selected element group's attached detail groups that are compatible with the current view.";

   PushButton pbHideAllDetailGroups = rp.AddItem(pbdHideAllDetailGroups) as PushButton;
         SetIconsForPushButton(pbHideAllDetailGroups, Revit.SDK.Samples.AttachedDetailGroup.CS.Properties.Resources.HideAllDetailGroupsIcon);
      }

实现命令

两个命令分别为 AttachedDetailGroupShowAllCommandAttachedDetailGroupHideAllCommand,最终调用的逻辑都是在 GroupHelper 里面:

public void ShowAllAttachedDetailGroups(Group modelGroup, Document doc, View view)
{
   using (Transaction transaction = new Transaction(doc, "ShowAllAttachedDetailGroups"))
   {
      transaction.Start("Show All Attached Detail Groups");
      modelGroup.ShowAllAttachedDetailGroups(view);
      transaction.Commit();
   }
}

public void HideAllAttachedDetailGroups(Group modelGroup, Document doc, View view)
{
   using (Transaction transaction = new Transaction(doc, "HideAllAttachedDetailGroups"))
   {
      transaction.Start("Hide All Attached Detail Groups");
      modelGroup.HideAllAttachedDetailGroups(view);
      transaction.Commit();
   }
}

从 Revit 界面可以看出 AttachedDetailGroups 和它的 Group 有个从属关系:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值