Use quando precisar extrair quantitativos de arquivos IFC (BIM). Trigger quando mencionarem "processa o IFC", "extrai quantitativos do IFC", "analisa o modelo BIM", ou quando receber arquivos .ifc para extracao de dados de estrutura, instalacoes, arquitetura.
Extrai quantitativos de arquivos IFC usando ifcopenshell para alimentar orcamentos.
ls projetos/[projeto]/projetos/[disciplina]/IFC/*.ifc
import ifcopenshell
ifc = ifcopenshell.open("caminho/arquivo.ifc")
print(f"Schema: {ifc.schema}")
print(f"Elementos: {len(ifc.by_type('IfcProduct'))}")
# Contar por tipo
for tipo in ['IfcWall', 'IfcColumn', 'IfcBeam', 'IfcSlab', 'IfcFlowSegment', 'IfcFlowTerminal']:
elementos = ifc.by_type(tipo)
if elementos:
print(f" {tipo}: {len(elementos)}")
Estrutura (IfcColumn, IfcBeam, IfcSlab, IfcFooting):
Eletrico (IfcFlowSegment, IfcFlowTerminal):
Hidrossanitario (IfcPipeSegment, IfcPipeFitting):
Telecomunicacoes (IfcFlowSegment com classificacao telecom):
# Usar coordenada X do midpoint para separar torres
import ifcopenshell.util.placement as placement
for elem in ifc.by_type('IfcFlowSegment'):
matrix = placement.get_local_placement(elem.ObjectPlacement)
x = matrix[0][3] # coordenada X
torre = 'A' if x < midpoint_x else 'B'
Calcular midpoint: media das coordenadas X de todos os elementos.
Se o IFC tem 1 arquivo por pavimento (ex: E08 = Tipo x24):
import json
resultado = {
"projeto": "[nome]",
"disciplina": "[disciplina]",
"fonte": "[nome_arquivo.ifc]",
"schema": ifc.schema,
"quantitativos": { ... },
"por_pavimento": { ... },
"por_torre": { ... }
}
with open("output/[projeto]-[disciplina]-quantitativos.json", "w") as f:
json.dump(resultado, f, ensure_ascii=False, indent=2)
Resumo com tabelas de quantitativos, fontes, pendencias.
Salvar em executivos/[projeto]/briefings/[disciplina]-r00.md
| Dado | Disponivel? | Alternativa |
|---|---|---|
| Metragens lineares | Raro (geometria complexa) | Estimar por indice ou DWG |
| Bitolas de cabo | Nao (IFC2X3) | Processar DWGs |
| Especificacoes tecnicas | Limitado | Memorial descritivo |
| Quadros eletricos | Raro | DWGs unifilares |
| Diametros eletroduto | As vezes (PropertySet) | DWGs |
SEMPRE informar o que foi extraido E o que NAO foi encontrado no IFC. Pendencias devem ser listadas explicitamente.