zoukankan      html  css  js  c++  java
  • 建筑墙体信息获取(材质名称,材质,面积,体积,厚度)

    分别得到:材质名称,材质,面积,体积,厚度

    import clr
    clr.AddReference("RevitNodes")
    import Revit
    clr.ImportExtensions(Revit.Elements)
    
    clr.AddReference("DSCoreNodes")
    import DSCore
    from DSCore import *
    clr.AddReference("RevitServices")
    import RevitServices
    from RevitServices.Persistence import DocumentManager
    
    clr.AddReference("RevitAPI")
    import Autodesk
    from Autodesk.Revit.DB import *
    
    import System
    from System.Collections.Generic import *
    
    doc = DocumentManager.Instance.CurrentDBDocument
    walls = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Walls).WhereElementIsNotElementType().ToElements()
    
    elementmats = list()
    elementareas = list()
    elementvols = list()
    elementnames = list()
    elementthicks = list()
    elementnames_temp = list()
    elementthicks_temp = list()
    paintedmats=False
    for wall in walls:
    
        matlist = list()
        arealist = list()
        vollist = list()
        namelist = list()
        namelist_temp = list()
        thicklist_temp = list()
        thicklist = list()
        for matid in wall.GetMaterialIds(paintedmats):
    
            matlist.append(wall.Document.GetElement(matid))
            arealist.append(wall.GetMaterialArea(matid,paintedmats))
            vollist.append(wall.GetMaterialVolume(matid))
            ele=doc.GetElement(matid)
            namelist.append(ele.Name)
    
    
        layers=wall.WallType.GetCompoundStructure().GetLayers()
        for layer in layers:
            thicklist_temp.append(layer.Width * 304.8)
            ele = doc.GetElement(layer.MaterialId)
            namelist_temp.append(ele.Name)
        elementnames_temp.append(namelist_temp)
        elementthicks_temp.append(thicklist)
        elementmats.append(matlist)
        elementareas.append(arealist)
        elementvols.append(vollist)
        elementnames.append(namelist)
    
        for each in namelist_temp:
            thicklist.append(thicklist_temp[namelist.index(each)])
        elementthicks.append(thicklist)
    
    def flatten_list(a,result=None):
        if result is None:
            result=[]
        for x in a:
            if isinstance(x,list):
                flatten_list(x,result)
            else:
                result.append(x)
        return result
    
    elementnames_e=flatten_list(elementnames)
    elementmats_e=flatten_list(elementmats)
    elementareas_e=flatten_list(elementareas)
    elementvols_e=flatten_list(elementvols)
    elementthicks_e=flatten_list(elementthicks)
    b=set(elementnames_e)
    OUT=(elementnames_e,elementmats_e,elementareas_e,elementvols_e,elementthicks_e)
    '''def Quchong(a):
        b=[]
        for each in a:
            if each not in b:
                b.append(each)'''
  • 相关阅读:
    CSS 中的字体兼容写法:用CSS为英文和中文字体分别设置不同的字体
    利用vue-cropper做的关于图片裁剪、压缩、上传、预览等做的一个公共组件
    解决浏览器拦截弹出窗口问题
    详解Vue中的nextTick
    vue里ref ($refs)用法
    vue组件的hover事件模拟、给第三方组件绑定事件不生效问题
    JS实现千分位
    JS实现异步编程的4种方法
    Cas_个人理解
    zabbix_监控_邮件预警
  • 原文地址:https://www.cnblogs.com/ShirleyX/p/8310804.html
Copyright © 2011-2022 走看看