zoukankan      html  css  js  c++  java
  • Revit API遍历系统族布置喷头

    系统族可以通过内参遍历,遍历出来是个FamilySymbol
    喷头属于系统族,但不能通过NewDuct();类似这样的方法布置。
    必须使用
    NewFamilyInstance()
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    using WinForm = System.Windows.Forms;

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

    using Autodesk.Revit.DB.Mechanical;
    using Autodesk.Revit.UI.Selection;
    using Autodesk.Revit.ApplicationServices;

    using Autodesk.Revit.DB.Structure;
    using Autodesk.Revit.DB.ExtensibleStorage;
    using Autodesk.Revit.DB.Plumbing;
    using Autodesk.Revit.DB.Architecture;

    using System.Xml;

    namespace RevitCodes
    {

        [TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)]
        
    public class cmdSprinklers : IExternalCommand
        {
            
    public Result Execute(ExternalCommandData commandData, ref string messages, ElementSet elements)
            {
                UIApplication uiApp 
    = commandData.Application;
                Document doc 
    = uiApp.ActiveUIDocument.Document;
                Selection sel 
    = uiApp.ActiveUIDocument.Selection;

                Transaction ts 
    = new Transaction(doc, "http://revit.5d6d.com");
                ts.Start();

                
    //从系统族中过滤出喷头,是作为一个FamilySymbol存在的
                FilteredElementCollector collector = new FilteredElementCollector(doc);
                
    //此法可以只过滤系统类型
                
    //collector.OfClass(typeof(FamilySymbol)).OfCategory(BuiltInCategory.OST_Sprinklers);
                collector.OfCategory(BuiltInCategory.OST_Sprinklers);
                FamilyInstance fi 
    = null;//如果已经布置了,就是族实例
                int iFi = 0;
                FamilySymbol symbol 
    = null;//系统族是族符号
                int iFs = 0;
                
    foreach (Element el in collector.ToElements())
                {
                    fi 
    = el as FamilyInstance;
                    
    if (fi != null)
                        iFi 
    += 1;
                    symbol 
    = el as FamilySymbol;
                    
    if (symbol != null)
                        iFs 
    += 1;
                }
                TaskDialog.Show(
    "count", iFi + "," + iFs);
                
    if (fi != null)
                    doc.Create.NewFamilyInstance(
    new XYZ(101010), fi.Symbol, StructuralType.Beam);
                
    if (symbol != null)
                    doc.Create.NewFamilyInstance(
    new XYZ(101010), symbol, StructuralType.Beam);

                ts.Commit();

                
    return Result.Succeeded;
            }
            XYZ PointOnFace(PlanarFace face)
            {
                XYZ p 
    = new XYZ(000);
                Mesh mesh 
    = face.Triangulate();

                
    for (int i = 0; i < mesh.NumTriangles; ++i)
                {
                    MeshTriangle triangle 
    = mesh.get_Triangle(i);
                    p 
    += triangle.get_Vertex(0);
                    p 
    += triangle.get_Vertex(1);
                    p 
    += triangle.get_Vertex(2);
                    p 
    *= 0.3333333333333333;
                    
    break;
                }
                
    return p;
            }
        }
    }
    url:http://greatverve.cnblogs.com/p/api-Sprinklers.html
  • 相关阅读:
    一台电脑上的git同时使用两个github账户
    git自己操作命令组集合
    git基本原理
    js如何遍历表单所有控件
    js如何访问表单(四种方法)(博客园+li的方式去掉p标签)
    js如何操作表格(常用属性方法汇总)
    php数学和时间常用函数有哪些(总结表)(看学习视频效率挺高的)(复习)
    swift 笔记 (十九) —— 协议
    ecshop广告调用方法
    K60 启动过程分析
  • 原文地址:https://www.cnblogs.com/greatverve/p/api-Sprinklers.html
Copyright © 2011-2022 走看看