EaBIM一直以来积极响应国家“十二五”推进建筑业信息化的号召,对建筑领域的信息技术开展深入技术交流和探讨!致力于打造“BIM-建筑师-生态技术”三位一体综合资源交流共享平台,希望为BIM与可持续设计理念及技术的普及做出微小的贡献!!!

EaBIM

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 585|回复: 1
打印 上一主题 下一主题

我们经常会添加自己的参数到对象中,一个参数可以添加到多个类别的对象。2011提供...

[复制链接]

1514

主题

7465

帖子

1万

积分

admin

Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10

积分
12396

社区QQ达人

跳转到指定楼层
楼主
发表于 2014-1-9 12:31:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
元素的参数分普通的属性参数和类型属性参数。

参数的值可能是一个整数,一个字符串,也可能是一个元素对象。比如是一种材质。

材质也分多种,管道有管道对齐的材质。

  1. <div align="left">using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;

  5. using WinForm = System.Windows.Forms;

  6. using Autodesk.Revit.UI;
  7. using Autodesk.Revit.DB;
  8. using Autodesk.Revit.Attributes;

  9. using Autodesk.Revit.DB.Mechanical;
  10. using Autodesk.Revit.UI.Selection;
  11. using Autodesk.Revit.ApplicationServices;

  12. using Autodesk.Revit.DB.Structure;
  13. using Autodesk.Revit.DB.ExtensibleStorage;
  14. using Autodesk.Revit.DB.Plumbing;
  15. using Autodesk.Revit.DB.Architecture;

  16. using System.Xml;

  17. namespace RevitCodes
  18. {

  19.     [TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)]
  20.     public class cmdParameter : IExternalCommand
  21.     {
  22.         public Result Execute(ExternalCommandData commandData, ref string messages, ElementSet elements)
  23.         {
  24.             UIApplication uiApp = commandData.Application;
  25.             Document doc = uiApp.ActiveUIDocument.Document;
  26.             Selection sel = uiApp.ActiveUIDocument.Selection;

  27.             Transaction ts = new Transaction(doc, "http://revit.5d6d.com");
  28.             ts.Start();
  29.             //选中的元素,这里选中一个管道Pipe
  30.             Element elemPick = null;
  31.             foreach (Element elem in sel.Elements)
  32.             {
  33.                 elemPick = elem;
  34.                 break;
  35.             }

  36.             //遍历元素的普通参数
  37.             string strParameter = "";
  38.             foreach (Parameter p in elemPick.Parameters)
  39.             {
  40.                 strParameter += p.Definition.ParameterGroup + "," + p.Definition.Name + "," + p.AsValueString() + "\n";
  41.             }
  42.             TaskDialog.Show("parameter", strParameter);
  43.             //遍历元素的类型属性
  44.             Pipe pipe = elemPick as Pipe;
  45.             foreach (Parameter p in pipe.PipeType.Parameters)
  46.             {
  47.                 if (p.Definition.Name == "材质")
  48.                 {
  49.                     //元素的参数值可能是一个元素,比如材质的参数值是一个Material元素
  50.                     PipeMaterialType pipeMater = doc.get_Element(p.AsElementId()) as PipeMaterialType;
  51.                     //材质还分管道材质这里不能转化为Material
  52.                     TaskDialog.Show("类型属性", pipeMater.Category.Name + "," + pipeMater.Name);
  53.                 }
  54.             }
  55.             //系统包含的材质元素
  56.             string strMaterial = "";
  57.             Materials materials = doc.Settings.Materials;
  58.             foreach (Material ma in materials)
  59.             {
  60.                 strMaterial += ma.Name + "\n";
  61.             }
  62.             TaskDialog.Show("Material", strMaterial);

  63.             ts.Commit();

  64.             return Result.Succeeded;
  65.         }
  66.         //元素的参数,参数组,即属性面版中可以折叠的部分,这里读Pipe
  67.         public Parameter FindParameter(Element element)
  68.         {
  69.             Parameter foundParameter = null;
  70.             int i = 0;
  71.             foreach (Parameter parameter in element.Parameters)
  72.             {
  73.                 //BuiltInParameterGroup.PG_MECHANICAL//机械
  74.                 //BuiltInParameterGroup.PG_CONSTRAINTS//限制条件
  75.                 //BuiltInParameterGroup.PG_GEOMETRY//尺寸标注
  76.                 //BuiltInParameterGroup.PG_PHASING//阶段化
  77.                 //BuiltInParameterGroup.PG_IDENTITY_DATA//标识数据
  78.                 //BuiltInParameterGroup.PG_INSULATION//绝缘层
  79.                 if (BuiltInParameterGroup.PG_GEOMETRY == parameter.Definition.ParameterGroup)
  80.                 {
  81.                     TaskDialog.Show("g", parameter.Definition.Name);
  82.                     i += 1;
  83.                 }
  84.                 Definition definition = parameter.Definition;//参数的基类
  85.                 //过滤参数
  86.                 if (definition.ParameterGroup == BuiltInParameterGroup.PG_MATERIALS &&
  87.                         definition.ParameterType == ParameterType.Material)
  88.                 {
  89.                     foundParameter = parameter;
  90.                     break;
  91.                 }
  92.             }
  93.             TaskDialog.Show("i", i + "个");
  94.             return foundParameter;
  95.         }
  96.     }

  97. }</div>
复制代码

from:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
工作时间:工作日的9:00-12:00/13:30-18:00,节假日不在线,请勿留言

5

主题

874

帖子

1406

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1406
2F
发表于 2014-2-20 14:48:25 | 只看该作者
(*^__^*) 嘻嘻……
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|EaBIM网 ( 苏ICP备2020058923号-1  苏公网安备32011502011255号

GMT+8, 2024-9-29 14:22

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表