[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;
}
}
[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;
}
}