博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Revit API“普通参数”和“类型属性参数”的区别
阅读量:6814 次
发布时间:2019-06-26

本文共 2910 字,大约阅读时间需要 9 分钟。

元素的参数分普通的属性参数和类型属性参数。
参数的值可能是一个整数,一个字符串,也可能是一个元素对象。比如是一种材质。
材质也分多种,管道有管道对齐的材质。
using
 System;
using
 System.Collections.Generic;
using
 System.Linq;
using
 System.Text;
using
 WinForm 
=
 System.Windows.Forms;
using
 Autodesk.Revit.UI;
using
 Autodesk.Revit.DB;
using
 Autodesk.Revit.Attributes;
using
 Autodesk.Revit.DB.Mechanical;
using
 Autodesk.Revit.UI.Selection;
using
 Autodesk.Revit.ApplicationServices;
using
 Autodesk.Revit.DB.Structure;
using
 Autodesk.Revit.DB.ExtensibleStorage;
using
 Autodesk.Revit.DB.Plumbing;
using
 Autodesk.Revit.DB.Architecture;
using
 System.Xml;
namespace
 RevitCodes
{
    [TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)]
    
public
 
class
 cmdParameter : IExternalCommand
    {
        
public
 Result Execute(ExternalCommandData commandData, 
ref
 
string
 messages, ElementSet elements)
        {
            UIApplication uiApp 
=
 commandData.Application;
            Document doc 
=
 uiApp.ActiveUIDocument.Document;
            Selection sel 
=
 uiApp.ActiveUIDocument.Selection;
            Transaction ts 
=
 
new
 Transaction(doc, 
"
http://revit.5d6d.com
"
);
            ts.Start();
            
//
选中的元素,这里选中一个管道Pipe
            Element elemPick 
=
 
null
;
            
foreach
 (Element elem 
in
 sel.Elements)
            {
                elemPick 
=
 elem;
                
break
;
            }
            
//
遍历元素的普通参数
            
string
 strParameter 
=
 
""
;
            
foreach
 (Parameter p 
in
 elemPick.Parameters)
            {
                strParameter 
+=
 p.Definition.ParameterGroup 
+
 
"
,
"
 
+
 p.Definition.Name 
+
 
"
,
"
 
+
 p.AsValueString() 
+
 
"
\n
"
;
            }
            TaskDialog.Show(
"
parameter
"
, strParameter);
            
//
遍历元素的类型属性
            Pipe pipe 
=
 elemPick 
as
 Pipe;
            
foreach
 (Parameter p 
in
 pipe.PipeType.Parameters)
            {
                
if
 (p.Definition.Name 
==
 
"
材质
"
)
                {
                    
//
元素的参数值可能是一个元素,比如材质的参数值是一个Material元素
                    PipeMaterialType pipeMater 
=
 doc.get_Element(p.AsElementId()) 
as
 PipeMaterialType;
                    
//
材质还分管道材质这里不能转化为Material
                    TaskDialog.Show(
"
类型属性
"
, pipeMater.Category.Name 
+
 
"
,
"
 
+
 pipeMater.Name);
                }
            }
            
//
系统包含的材质元素
            
string
 strMaterial 
=
 
""
;
            Materials materials 
=
 doc.Settings.Materials;
            
foreach
 (Material ma 
in
 materials)
            {
                strMaterial 
+=
 ma.Name 
+
 
"
\n
"
;
            }
            TaskDialog.Show(
"
Material
"
, strMaterial);
            ts.Commit();
            
return
 Result.Succeeded;
        }
        
//
元素的参数,参数组,即属性面版中可以折叠的部分,这里读Pipe
        
public
 Parameter FindParameter(Element element)
        {
            Parameter foundParameter 
=
 
null
;
            
int
 i 
=
 
0
;
            
foreach
 (Parameter parameter 
in
 element.Parameters)
            {
                
//
BuiltInParameterGroup.PG_MECHANICAL
//
机械
                
//
BuiltInParameterGroup.PG_CONSTRAINTS
//
限制条件
                
//
BuiltInParameterGroup.PG_GEOMETRY
//
尺寸标注
                
//
BuiltInParameterGroup.PG_PHASING
//
阶段化
                
//
BuiltInParameterGroup.PG_IDENTITY_DATA
//
标识数据
                
//
BuiltInParameterGroup.PG_INSULATION
//
绝缘层
                
if
 (BuiltInParameterGroup.PG_GEOMETRY 
==
 parameter.Definition.ParameterGroup)
                {
                    TaskDialog.Show(
"
g
"
, parameter.Definition.Name);
                    i 
+=
 
1
;
                }
                Definition definition 
=
 parameter.Definition;
//
参数的基类
                
//
过滤参数
                
if
 (definition.ParameterGroup 
==
 BuiltInParameterGroup.PG_MATERIALS 
&&
                        definition.ParameterType 
==
 ParameterType.Material)
                {
                    foundParameter 
=
 parameter;
                    
break
;
                }
            }
            TaskDialog.Show(
"
i
"
, i 
+
 
"
"
);
            
return
 foundParameter;
        }
    }
}
from:

转载地址:http://vpzzl.baihongyu.com/

你可能感兴趣的文章
三个关键字
查看>>
TCP/IP详解学习笔记(9)-TCP协议概述
查看>>
【翻译】地形教程-简介
查看>>
什么是Docker
查看>>
生产CPU使用率180%问题排查
查看>>
一些 gem
查看>>
qt creator 添加调试工具
查看>>
springmvc拦截器
查看>>
三篇文章了解 TiDB 技术内幕 —— 谈调度
查看>>
JsonSort 对json排序
查看>>
MySQL常识篇
查看>>
一起学Java7新功能扩展——深入历险分享(一)
查看>>
关于parentNode和firstChild的一些坑
查看>>
JSP六种标准动作
查看>>
HTML DOM 节点
查看>>
hadoop两大核心之一:MapReduce总结
查看>>
JDBC & MySql - datetime类型字段的NULL值处理
查看>>
Redis 集群常用命令
查看>>
sql 更新数据
查看>>
java LinkedList简单运用
查看>>