美文网首页
Revit族实例的创建和删除

Revit族实例的创建和删除

作者: Karel_ | 来源:发表于2017-09-05 11:39 被阅读1470次

    1.系统族的创建

    系统族的创建方法放在各自的类下或者Document下面。

    比如墙的创建:
    Wall.Create Method (Document, IList(Curve), ElementId, ElementId, Boolean)
    public static Wall Create(
        Document document,
        IList<Curve> profile,
        ElementId wallTypeId,
        ElementId levelId,
        bool structural
    )
    
    测试代码:
    public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
            {
                UIDocument uidoc = commandData.Application.ActiveUIDocument;
                Document doc = uidoc.Document;
    
                XYZ point1 = uidoc.Selection.PickPoint(ObjectSnapTypes.None,"请选择墙的起始点");
                XYZ point2 = uidoc.Selection.PickPoint(ObjectSnapTypes.None,"请选择墙的终点");
    
                Line li = Line.CreateBound(point1, point2);
    
                ElementId id = new ElementId(355);
    
                using (Transaction trans = new Transaction(doc, "创建墙"))
                {
                    trans.Start();
                    Wall.Create(doc, li,id, false);
                    trans.Commit();
                }
    
                return Result.Succeeded;
    
            }
    
    测试结果

    2.可载入族的创建

    可载入族的创建都在Document.NewFamilyInstance ,其实包含若干重载。
    另外NewFamilyInstances2是批量创建。

    创建柱子:
     public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
            {
                UIDocument uidoc = commandData.Application.ActiveUIDocument;
                Document doc = uidoc.Document;
    
                XYZ point = uidoc.Selection.PickPoint(ObjectSnapTypes.None, "柱子的位置");
    
    
                ElementId levelId = new ElementId(355);
                Level lev = doc.GetElement(levelId) as Level;
    
                ElementId columSymbol = new ElementId(263331);
                FamilySymbol fs = doc.GetElement(columSymbol) as FamilySymbol;
    
                using (Transaction trans = new Transaction(doc, "创建柱子"))
                {
                    trans.Start();
                    doc.Create.NewFamilyInstance(point, fs, lev, StructuralType.NonStructural);
                    trans.Commit();
                }
    
                return Result.Succeeded;
    
            } 
    
    测试结果

    3.删除

    删除操作都是一样的。

            public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
            {
                UIDocument uidoc = commandData.Application.ActiveUIDocument;
                Document doc = uidoc.Document;
    
                Reference refer = uidoc.Selection.PickObject(ObjectType.Element);
                Element ele = doc.GetElement(refer);
    
                using (Transaction trans = new Transaction(doc, "删除墙"))
                {
                    trans.Start();
                    doc.Delete(ele.Id);
                    trans.Commit();
                }
          
                return Result.Succeeded;
            }
    

    相关文章

      网友评论

          本文标题:Revit族实例的创建和删除

          本文链接:https://www.haomeiwen.com/subject/fqfujxtx.html