Revit API修改保温层厚度

start
[Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.Manual)]
public class cmd : IExternalCommand
{
    public Result Execute(ExternalCommandData cmdData, ref string msg, ElementSet elements)
    {
        UIDocument uiDoc = cmdData.Application.ActiveUIDocument;
        Document doc = uiDoc.Document;
        Selection selection = uiDoc.Selection;

        Transaction ts = new Transaction(doc, this.ToString());
        ts.Start();
        //
        Reference refWall = selection.PickObject(ObjectType.Element, "选择墙:");
        Wall wall = doc.GetElement(refWall) as Wall;
        WallType wallType = wall.WallType;
        CompoundStructure cs = wallType.GetCompoundStructure();
        bool bHas = false;//是否拥有保温层
        int iWidth = 100;//要设置的保温层厚度
        IList<CompoundStructureLayer> layers = cs.GetLayers();//找到所有层
        foreach (CompoundStructureLayer layer in layers)
        {
            if (layer.Function == MaterialFunctionAssignment.Insulation)//判断保温层
            {
                bHas = true;
                layer.Width = iWidth / 304.8;
            }
        }
        if (!bHas)//没有保温层则创建
        {
            CompoundStructureLayer newLayer = new CompoundStructureLayer();
            newLayer.Function = MaterialFunctionAssignment.Insulation;
            newLayer.Width = iWidth / 304.8;
            //layers.Add(newLayer);
            layers.Insert(0, newLayer);
        }
        cs.SetLayers(layers);
        wallType.SetCompoundStructure(cs);
        //
        ts.Commit();

        return Result.Succeeded;
    }
}
url:http://greatverve.cnblogs.com/p/revit-api-CompoundStructureLayer.html
posted @ 2014-03-01 08:05  大气象  阅读(1510)  评论(0编辑  收藏  举报
http://www.tianqiweiqi.com