应用程序:CreateSimpleAreaRein

Revit平台:结构

Revit版本:2011.0

首次发布于:9.0

编程语言:C#

技能水平:中等

类别:结构

类型:ExternalCommand

主题:创建矩形区域钢筋布置。
摘要:本示例旨在展示如何通过Revit API创建区域钢筋布置,并更改其参数。

相关类:

Autodesk.Revit.DB.Structure.AreaReinforcement

Autodesk.Revit.DB.Floor

Autodesk.Revit.DB.Wall

Autodesk.Revit.DB.CurveArray

Autodesk.Revit.DB.Structure.AreaReinforcementType

Autodesk.Revit.DB.Parameter

项目文件:

CreateSimpleAreaRein.cs

实现IExternalCommand接口,展示用户如何创建区域钢筋布置并更改其参数。

AreaReinData.cs

区域钢筋布置的数据和数据管理类。存储当前项目中所有种类的区域钢筋布置类型,并包括可用于更改参数值的方法。

ParameterUtil.cs

该文件定义了一个 ParameterUtil 类,包含用于管理参数的方法,如按名称查找参数和更改参数值。

GeomHelper.cs

该文件定义了一个 GeomHelper 类,提供用于获取用于在墙面或板上创建区域钢筋布置的几何数据的方法。

GeomUtil.cs

该文件定义了一个 GeomUtil 类,提供一些常见的几何估计和计算方法。

功能

该示例会提供以下功能:

-在选择的楼板或墙面(除幕墙和叠墙外)上创建一个矩形形状的区域钢筋布置。边界将与楼板/墙面边界相同。应用程序可以验证所选楼板/墙面的边界是否为矩形。

-用户会收到提示框,询问以下信息:

-选择要创建的钢筋类型

-在“构造”参数组中选择“布置规则”

-所有层都列在“层”参数组中。共有四层。每层都应包括“真”或“假”的选择,“真”表示您可以更改该层上的钢筋属性,否则您无法更改它们。

-如果用户已经在项目中加载了区域钢筋布置类型或已经在当前项目中绘制了区域钢筋布置,则可以在项目中找到用于创建区域钢筋布置的类型。

-楼板/墙面的几何信息可以作为 Floor/Wall 对象的 Geometry 属性获得。

-使用以下通用参数可以从区域钢筋布置中找到“层”参数组中的参数:

-REBAR_SYSTEM_ACTIVE_BOTTOM_DIR_2、

-REBAR_SYSTEM_ACTIVE_BOTTOM_DIR_1、

-REBAR_SYSTEM_ACTIVE_TOP_DIR_2、

-REBAR_SYSTEM_ACTIVE_TOP_DIR_1、

-REBAR_SYSTEM_LAYOUT_RULE

实施:

1.绘制结构水平矩形楼板或结构垂直矩形墙体并选择它。(或者打开“CreateComplexAreaRein”示例的RVT文件)

2.运行此命令。

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

ParameterUtil.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.
//
namespace Revit.SDK.Samples.CreateSimpleAreaRein.CS
{
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Windows.Forms;
    using System.ComponentModel;

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

    using GeoElement = Autodesk.Revit.DB.GeometryElement;
    using Element = Autodesk.Revit.DB.Element;

    /// <summary>
    /// enum of AreaReinforcement's parameter Layout Rules
    /// </summary>
    public enum LayoutRules
    {
        Fixed_Number = 2,
        Maximum_Spacing = 3
    }

    /// <summary>
    /// contain utility methods find or set certain parameter
    /// </summary>
    public class ParameterUtil
    {
        /// <summary>
        /// find certain parameter in a set
        /// </summary>
        /// <param name="paras"></param>
        /// <param name="name">find by name</param>
        /// <returns>found parameter</returns>
        public static Parameter FindParaByName(ParameterSet paras, string name)
        {
            Parameter findPara = null;

            foreach (Parameter para in paras)
            {
                if (para.Definition.Name == name)
                {
                    findPara = para;
                }
            }

            return findPara;
        }

        /// <summary>
        /// set certain parameter of given element to int value
        /// </summary>
        /// <param name="elem">given element</param>
        /// <param name="paraIndex">BuiltInParameter</param>
        /// <param name="value"></param>
        /// <returns></returns>
        public static bool SetParaInt(Element elem, BuiltInParameter paraIndex, int value)
        {
            Parameter para = elem.get_Parameter(paraIndex);
            if (null == para)
            {
                return false;
            }

            para.Set(value);
            return true;
        }
    }
}