应用程序: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
}
}
版权所有 :无锡模信建筑科技有限公司 苏ICP备2021028830号-1 BIM建模|BIM技术应用|BIM软件开发
联系地址:江苏省无锡市新吴区龙山路4号B座705 手机:18761516598