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

萧闫子 发表于 2014-1-15 12:33:02

编程修改某视图中某构件的线型,颜色和线宽



通过Revit 的VV快捷命令可以打开一个视图设置界面。在其中可以修改构件在当前视图下的颜色,线型,填充图案,填充图案颜色等。
Revit开放了接口来支持编程实现修改投影面上对象的线框颜色,线型,线宽;以及剖切面上构件的线的颜色,线型和线框。但是Revit现在还未开放API来修改对象上面的填充图案以及填充颜色,已经向研发部门提出了这个需求。
下面谈谈对已经开放的接口的使用。下面这六个函数是已经开发的接口。从名字我们指导其功能。 Proj 意思是Project,投影部分的显示,Cut是指剪切部分的显示。<p>ProjColorOverrideByElement
ProjLinePatternOverrideByElement
ProjLineWeightOverrideByElement</p><p>
CutColorOverrideByElement
CutLinePatternOverrideByElement
CutLineWeightOverrideByElement</p>
下面代码演示如何修改对象在当前视图下修改墙的线宽。其它函数可以如此调用。<p>using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;</p><p>usingAutodesk.Revit .DB;
using Autodesk.Revit.UI;
using Autodesk.Revit .ApplicationServices;
using Autodesk.Revit.Attributes ;</p><p> </p><p>
public class RevitCommand : IExternalCommand
{
    public Result Execute(ExternalCommandData commandData, ref string messages, ElementSet elements)
    {</p><p>      UIApplication app = commandData.Application;
      Document doc = app.ActiveUIDocument.Document;
      Transaction trans = new Transaction(doc, "ExComm");
      trans.Start();</p><p>      //get all the walls in the current view.
      FilteredElementCollector collector = new FilteredElementCollector(doc, doc.ActiveView.Id);
      collector.OfClass(typeof(Wall));</p><p>      List<ElementId> listIds = new List<ElementId>();
      foreach (Element elem in collector)
      {
      listIds.Add(elem.Id);
      }</p><p>      doc.ActiveView.set_CutLineWeightOverrideByElement(listIds, 12);</p><p>      trans.Commit();
   
      return Result.Succeeded ;
    }
}</p>原文链接: http://blog.csdn.net/joexiongjin/article/details/7671755作者:叶雄进 , Autodesk ADN

OK佬 发表于 2014-2-20 14:12:50

顶!!!!!!!!!!!!!!!!!!!!!!!!!

页: [1]
查看完整版本: 编程修改某视图中某构件的线型,颜色和线宽