应用程序: ProjectInfo

Revit 平台: 所有

Revit 版本: 2011.0

首次发布于: 2008.0

编程语言: C#

技能水平: 初学者

类别: 基础

类型: ExternalCommand

主题: 显示项目信息

概述:

演示了如何操作项目信息。

相关类:

Autodesk.Revit.DB.Element

Autodesk.Revit.DB.ProjectInfo

Autodesk.Revit.DB.Analysis.EnergyDataSettings

Autodesk.Revit.DB.BuiltInParameter

Autodesk.Revit.DB.Analysis.gbXMLBuildingType

Autodesk.Revit.DB.Mechanical.MEPBuildingConstruction

Autodesk.Revit.DB.Analysis.gbXMLServiceType

Autodesk.Revit.DB.ProjectLocation

Autodesk.Revit.DB.ProjectPosition

Autodesk.Revit.DB.Construction

项目文件:

Command.cs

该文件包含继承自 IExternalCommand 的类 Command

Wrappers 文件夹

该文件夹包含接口 IWrapper 及其子类。这些类是类 ProjectInfoEnergyDataSettingsConstruction 等的包装器。

ProjectInfoForm.cs

该文件包含一个窗体类 ProjectInfoForm,其中包含 okcancel 按钮和一个 PropertyGrid,它将显示项目信息。

Converters 文件夹

该文件夹包含用于 PropertyGrid 使用的 TypeConverters

WrapperCustomDescriptor.cs

该文件包含一个自定义描述符,与 RevitVersionAttribute 一起使用以控制不同 Revit 平台中属性的可见性。

描述:

本示例旨在显示单击 Revit 菜单“Settings->Project Information…”所显示的相同功能,不同平台的 Revit 将显示不同的信息。

- 要获取文档的项目信息,请使用 Document.ProjectInformation 属性。

- 要获取“能源数据”,请使用 EnergyDataSettings.GetFromDocument(Document)

- 要获取 SiteLocation,请使用 Document.SiteLocation

- 要获取所有城市,请使用 Application.Cities

- 要获取 SiteLocation,请使用 Document.SiteLocation

- 要获取 ProjectLocation,请使用 Document.ActiveProjectLocation

- 要获取所有 ProjectLocations,请使用 Document.ProjectLocations

- 要获取所有 BuildingConstruction,请使用 EnergyDataSettings.GetBuildingConstructionSetElementId

- 要获取 Construction,请使用 BuildingConstruction.GetBuildingConstruction(ConstructionType)

- 要获取所有 Constructions,请使用 MEPBuildingConstruction.GetConstructions(ConstructionType)

- 使用 TypeConverterAttribute DisplayNameAttribute 控制属性的显示,使用 BrowasableAttribute RevitVersionAttribute 控制其可见性。

说明:

1. 运行命令,会显示一个窗体。

2. 修改属性表格中的一些信息,然后单击“OK”按钮保存更改。

3. 在不同的 Revit 产品中运行示例(例如,ArchitectureStructureMEP),您将在属性表格中看到不同的信息。

源代码:

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

RevitVersionAttribute.cs

//
// (C) Copyright 2003-2019 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 System;
using System.Collections.Generic;
using System.Text;
using System.Collections.ObjectModel;
using Autodesk.Revit.ApplicationServices;
namespace Revit.SDK.Samples.ProjectInfo.CS
{
    /// <summary>
    /// Attribute which designates Revit version names
    /// </summary>
    public sealed class RevitVersionAttribute : Attribute
    {
        #region Fields
        /// <summary>
        /// Revit version name array
        /// </summary>
        List<ProductType> m_products = new List<ProductType>(); 
        #endregion
        #region Properties
        /// <summary>
        /// Gets Revit version names
        /// </summary>
        public ReadOnlyCollection<ProductType> Names
        {
            get { return m_products.AsReadOnly(); }
        } 
        #endregion
        #region Constructors
        /// <summary>
        /// Initializes Revit version name array
        /// </summary>
        /// <param name="names"></param>
        public RevitVersionAttribute(params ProductType[] names)
        {
            m_products.AddRange(names);
        } 
        #endregion
    };
}