编程修改对象参数值的几点Tips and Tricks

Revit 产品通过参数保存许多属性。我们常常需要修改参数的值。

1. 如果在对象的属性对话框中,点击参数,如果该参数右侧显示一个文本编辑对话框,这类参数的修改最简单,直接用Parameter.Set() 函数来修改参数值,包括整形,长度,字符串等。

2. 如果点击一个参数,右侧显示一个下拉列表,此时存储在该参数中可能是一个ElementId类型的变量,指向文件中的一个对象;也可能是一个ElementId类型,ElementId.IntegerValue 是一个小于0的整数常量, 但是没有指向Revit文件中的一个对象。 怎么修改这种参数的值呢?

   获取目标值的大小

    a. 把该参数值手动设置为你希望在编程中设置的值。

    b. 编写一段程序,读取该参数的ElementId,并获取Id值(ElementId.IntegerValue),比如获得的值是-1

   设置参数值:

     a. 创建一个ElementId 对象,把获取到的目标参数值传入:这里传入-1

      ElementId id = new ElementId(-1);

     b.  把这个ElementId对象赋值给参数 。 如下所示:

          e.get_Parameter("Underlay").Set(id);

    请看下面的完整代码。修改一个楼层平面图是否显示下面的楼层。有2个选择: 1. 设置下面的某一个楼层,2. 不显示任何楼层。 下面代码演示不显示任何楼层。

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

using  Autodesk.Revit .DB;
using Autodesk.Revit.UI;
using Autodesk.Revit .ApplicationServices;
using Autodesk.Revit.Attributes ;



  [TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)]
public class RevitCommand : IExternalCommand
{
    public Result Execute(ExternalCommandData commandData, ref string messages, ElementSet elements)
    {

      UIApplication app = commandData.Application;
      Document doc = app.ActiveUIDocument.Document;

       FilteredElementCollector collector = new FilteredElementCollector(doc);
      collector.OfClass(typeof(ViewPlan));
      IList<Element> planViews = collector.ToElements();

      Transaction trans = new Transaction(doc, "ExComm");
      trans.Start();
      foreach (Element e in planViews)
      {        
        if(e.Name.Equals("Level 1")
        {
          ElementId id = new ElementId(-1);
          e.get_Parameter("Underlay").Set(id); //don't show other level's slice         
        }
      }

      trans.Commit();    
      return Result.Succeeded ;
    }
}


 

3. 如果参数右侧出现一个按钮,点击按钮弹出一个对话框,这种参数的值一般不能用编程的方式来修改。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值