应用程序:AttachedDetailGroup

Revit平台:所有

Revit版本:2019.1

首次发布用于:2019.1

编程语言:C#

技能等级:中等

类别:元素

类型:外部应用

主题:附加细节组

摘要:此示例显示如何显示和隐藏模型组的附着详图组。

相关类:

Autodesk.Revit.UI.IExternalApplication

Autodesk.Revit.UI.IExternalCommand

Autodesk.Revit.DB.Group

项目文件:

Application.cs它包含类Application,该类继承自界面IExternalApplication,并在Revit启动时创建UI功能区组件。

AttachedDetailGroupShowAllCommand.cs它包含从接口IExternalCommand继承并实现Execute方法的类AttachedDetailGroup ShowAllCommand。

AttachedDetailGroupHideAllCommand.cs它包含从接口IExternalCommand继承并实现Execute方法的类AttachedDetailGroup HideAllCommand。

功能:

此示例提供以下功能。

-让用户在活动视图中显示或隐藏模型组的附着详图组。

实施:

打开Revit应用程序。

1.创建两个平行的墙,并在它们之间对齐尺寸标注。

2.选择两面墙和尺寸标注,然后创建一个组。

a.预期结果:创建了一个包含两面墙的模型组和一个包含尺寸标注的附着详图组。

3.选择模型组。

4.选择“加载项”功能区菜单。

5.执行“附着的详图组”功能区面板中的“隐藏所有详图组”命令。

a.预期结果:所附的详细信息组不再可见。

6.执行“附着的详图组”功能区面板中的“显示所有详图组”命令。

a.预期结果:现在可以看到附加的详细信息组。

完整的源代码请加入QQ群649037449,在群文件中下载RevitSDK.exe,解压后在文件夹中搜索本文中应用程序名称即可获得完整源码

Application.cs

//
// (C) Copyright 2003-2016 by Autodesk, Inc. All rights reserved.
//
// Permission to use, copy, modify, and distribute this software in
// object code form for any purpose and without fee is hereby granted
// provided that the above copyright notice appears in all copies and
// that both that copyright notice and the limited warranty and
// restricted rights notice below appear in all supporting
// documentation.

//
// AUTODESK PROVIDES THIS PROGRAM 'AS IS' AND WITH ALL ITS FAULTS.
// AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. AUTODESK, INC.
// DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
// UNINTERRUPTED OR ERROR FREE.
//
// Use, duplication, or disclosure by the U.S. Government is subject to
// restrictions set forth in FAR 52.227-19 (Commercial Computer
// Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
// (Rights in Technical Data and Computer Software), as applicable. 

using System;
using System.Windows;
using System.Windows.Media.Imaging;
using Autodesk.Revit.UI;

namespace Revit.SDK.Samples.AttachedDetailGroup.CS
{
   /// <summary>
   /// Implements the Revit add-in interface IExternalApplication
   /// </summary>
   [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
   [Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
   public class Application : IExternalApplication
   {
      #region IExternalApplication Members

      /// <summary>
      /// Implements the OnShutdown event
      /// </summary>
      /// <param name="application"></param>
      /// <returns></returns>
      public Result OnShutdown(UIControlledApplication application)
      {
         return Result.Succeeded;
      }

      /// <summary>
      /// Implements the OnStartup event
      /// </summary>
      /// <param name="application"></param>
      /// <returns></returns>
      public Result OnStartup(UIControlledApplication application)
      {
         CreateAttachedDetailGroupPanel(application);

         return Result.Succeeded;
      }

      #endregion

      /// <summary>
      /// Sets up the add-in panel for this sample.
      /// </summary>
      private void CreateAttachedDetailGroupPanel(UIControlledApplication application)
      {
         // Create the ribbon panel.
         RibbonPanel rp = application.CreateRibbonPanel("Attached Detail Group");

         // Create the show all detail groups pushbutton.
         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);

         // Create the hide all detail groups pushbutton.
         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);
      }

      /// <summary>
      /// Utility for adding icons to the button.
      /// </summary>
      /// <param name="button">The push button.</param>
      /// <param name="icon">The icon.</param>
      private static void SetIconsForPushButton(PushButton button, System.Drawing.Icon icon)
      {
         button.LargeImage = GetStdIcon(icon);
         button.Image = GetSmallIcon(icon);
      }

      /// <summary>
      /// Gets the standard sized icon as a BitmapSource.
      /// </summary>
      /// <param name="icon">The icon.</param>
      /// <returns>The BitmapSource.</returns>
      private static BitmapSource GetStdIcon(System.Drawing.Icon icon)
      {
         return System.Windows.Interop.Imaging.CreateBitmapSourceFromHIcon(
               icon.Handle,
               Int32Rect.Empty,
               BitmapSizeOptions.FromEmptyOptions());
      }

      /// <summary>
      /// Gets the small sized icon as a BitmapSource.
      /// </summary>
      /// <param name="icon">The icon.</param>
      /// <returns>The BitmapSource.</returns>
      private static BitmapSource GetSmallIcon(System.Drawing.Icon icon)
      {
         System.Drawing.Icon smallIcon = new System.Drawing.Icon(icon, new System.Drawing.Size(16, 16));
         return System.Windows.Interop.Imaging.CreateBitmapSourceFromHIcon(
               smallIcon.Handle,
               Int32Rect.Empty,
               BitmapSizeOptions.FromEmptyOptions());
      }

      /// <summary>
      /// The path to this add-in assembly.
      /// </summary>
      static String addAssemblyPath = typeof(Revit.SDK.Samples.AttachedDetailGroup.CS.Application).Assembly.Location;
   }
}

AttachedDetailGroupShowAllCommand.cs

//
// (C) Copyright 2003-2011 by Autodesk, Inc.
//
// Permission to use, copy, modify, and distribute this software in
// object code form for any purpose and without fee is hereby granted,
// provided that the above copyright notice appears in all copies and
// that both that copyright notice and the limited warranty and
// restricted rights notice below appear in all supporting
// documentation.
//
// AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
// AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. AUTODESK, INC.
// DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
// UNINTERRUPTED OR ERROR FREE.
//
// Use, duplication, or disclosure by the U.S. Government is subject to
// restrictions set forth in FAR 52.227-19 (Commercial Computer
// Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
// (Rights in Technical Data and Computer Software), as applicable.
//

using Autodesk.Revit.DB;
using Autodesk.Revit.UI;

namespace Revit.SDK.Samples.AttachedDetailGroup.CS
{
   /// <summary>
   /// The external command that hides all of the selected group's attached detail groups.
   /// </summary>
   [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
   class AttachedDetailGroupShowAllCommand : IExternalCommand
   {
      #region IExternalCommand Members

      /// <summary>
      /// The implementation of the command.
      /// </summary>
      /// <param name="commandData"></param>
      /// <param name="message"></param>
      /// <param name="elements"></param>
      /// <returns></returns>
      public Result Execute(ExternalCommandData commandData, ref string message, Autodesk.Revit.DB.ElementSet elements)
      {
         UIDocument uiDoc = commandData.Application.ActiveUIDocument;
         Document doc = uiDoc.Document;
         View activeView = commandData.View;
         GroupHelper groupHelper = new GroupHelper();
         Group selectedModelGroup;

         if (!groupHelper.getSelectedModelGroup(uiDoc, out selectedModelGroup, out message))
         {
            return Result.Cancelled;
         }

         groupHelper.ShowAllAttachedDetailGroups(selectedModelGroup, doc, activeView);
         return Result.Succeeded;
      }

      #endregion
   }
}

AttachedDetailGroupHideAllCommand.cs

//
// (C) Copyright 2003-2011 by Autodesk, Inc.
//
// Permission to use, copy, modify, and distribute this software in
// object code form for any purpose and without fee is hereby granted,
// provided that the above copyright notice appears in all copies and
// that both that copyright notice and the limited warranty and
// restricted rights notice below appear in all supporting
// documentation.
//
// AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
// AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. AUTODESK, INC.
// DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
// UNINTERRUPTED OR ERROR FREE.
//
// Use, duplication, or disclosure by the U.S. Government is subject to
// restrictions set forth in FAR 52.227-19 (Commercial Computer
// Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
// (Rights in Technical Data and Computer Software), as applicable.
//

using Autodesk.Revit.DB;
using Autodesk.Revit.UI;

namespace Revit.SDK.Samples.AttachedDetailGroup.CS
{
   /// <summary>
   /// The external command that hides all of the selected group's attached detail groups.
   /// </summary>
   [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
   class AttachedDetailGroupHideAllCommand : IExternalCommand
   {
      #region IExternalCommand Members

      /// <summary>
      /// The implementation of the command.
      /// </summary>
      /// <param name="commandData"></param>
      /// <param name="message"></param>
      /// <param name="elements"></param>
      /// <returns></returns>
      public Result Execute(ExternalCommandData commandData, ref string message, Autodesk.Revit.DB.ElementSet elements)
      {
         UIDocument uiDoc = commandData.Application.ActiveUIDocument;
         Document doc = uiDoc.Document;
         View activeView = commandData.View;
         GroupHelper groupHelper = new GroupHelper();
         Group selectedModelGroup;

         if (!groupHelper.getSelectedModelGroup(uiDoc, out selectedModelGroup, out message))
         {
            return Result.Cancelled;
         }

         groupHelper.HideAllAttachedDetailGroups(selectedModelGroup, doc, activeView);
         return Result.Succeeded;
      }

      #endregion
   }
}