Pular para o conteúdo

planejamento

Arquivos e IA no orçamento de obras

  • obras
  • ia
  • bim
  • dados

Este texto continua o roteiro das oito etapas, mas muda o ângulo: em vez de “o que se faz em cada etapa”, é “com que arquivo, e com que cuidado”. É pensado para quem vai montar isso como pipeline — programação, ciência de dados — não para quem vai orçar na mão.

É uma v1. O objetivo é ter base para errar rápido e corrigir, não um padrão fechado.

O princípio central: IA organiza, não calcula

Vale fixar antes de entrar nos arquivos, porque muda a arquitetura inteira: quantitativo, custo direto, BDI e curva ABC são aritmética determinística. Isso é código — pandas, uma planilha, uma função de CPM —, não é prompt. A área de um IFC não é uma estimativa razoável de um modelo de linguagem; é um número que sai de uma query em IfcQuantityArea.

O lugar da IA é outro: ler texto não estruturado (memorial descritivo, edital, cotação em PDF solto), sugerir classificação (bater descrição de serviço contra código SINAPI), redigir rascunho (dicionário de EAP, relatório de visita) e fazer busca semântica sobre especificação técnica.

Onde a IA sugere algo que vira número na planilha, tem que existir validação humana antes de entrar na conta. Isso volta em cada etapa abaixo.

Quando só chega o DWG

Merece seção própria porque é o caso comum, não a exceção. Quatro níveis de maturidade do que chega do projetista:

  • Nível 0 — PDF escaneado, às vezes nem o CAD original.
  • Nível 1 — DWG. Geometria vetorial, sem dado semântico: uma parede é um conjunto de linhas numa camada, não um objeto com propriedade de área e material. DWG não serve para interação direta, e não é defeito — ele não foi feito para ser lido por código, foi feito para ser plotado.
  • Nível 2 — IFC exportado do BIM autoral (Revit, ArchiCAD, Tekla). Dado estruturado, mas a qualidade do que vem dentro varia muito de escritório para escritório.
  • Nível 3 — IFC validado contra um IDS (Information Delivery Specification, da buildingSMART) ou contra um Plano de Execução BIM acordado. Aqui dá para confiar que o Pset esperado vai estar preenchido.

A maioria do que chega de fora está no nível 1. Duas frentes, que valem rodar em paralelo:

Prevenção, na etapa 1. Havendo qualquer influência sobre o edital ou o contrato de projeto, é o momento de pedir IFC junto com o DWG. A maior parte dos escritórios que já modela em BIM exporta IFC sem custo adicional — só não faz porque ninguém pediu. Um checklist simples de LOD e LOI mínimos evita a etapa 4 inteira virar retrabalho manual.

Fallback, quando só vem DWG. Converter para DXF (ASCII, aberto) com o ODA File Converter e ler com ezdxf. Isso dá acesso a camada, bloco e polilinha — mas a leitura de quantidade dali é a convenção daquele escritório, não um padrão. Um projetista põe parede numa camada ARQ-PAREDE, outro nem separa por camada. Todo quantitativo saído de DXF é rascunho a conferir, nunca número final.

Arquivos por etapa

1. Diagnóstico e definição

Chega: projetos em DWG, IFC ou PDF; edital e memorial em PDF ou DOCX; fotos da visita em JPG.

Lê ou converte: IFC lê direto com ifcopenshell — dá para puxar um resumo (site, edificação, pavimentos, contagem de elementos) e ter noção de escopo antes da leitura manual. DWG, aqui, serve só como visualização: não vale extrair dado ainda, só confirmar o que existe. PDF digital extrai texto com pdfplumber; PDF escaneado precisa de OCR antes de qualquer análise.

Cuidados: cláusula contratual e prazo penal se conferem no texto original, não em resumo de IA — erro aqui tem consequência jurídica, não só técnica. OCR erra número com facilidade: troca 8 por 3, vírgula por ponto. Tabela de quantidade vinda de PDF escaneado se reconfere linha a linha.

Sai: relatório de visita e um resumo estruturado do escopo, que alimenta a etapa 2.

2. Estruturação do escopo

Chega: o mesmo da etapa 1, mais a hierarquia espacial do IFC quando existir.

Lê ou converte: havendo IFC, a árvore IfcProject → IfcSite → IfcBuilding → IfcBuildingStorey → IfcSpace → IfcElement já dá um esqueleto de decomposição. Mas ela não bate 1:1 com a sua EAP: um pacote de trabalho seu pode agrupar vários tipos de elemento IFC, e vice-versa. Isso exige uma tabela de correspondência mantida à parte, com a IA sugerindo o de-para e um humano aprovando cada linha antes de ela virar padrão.

Cuidados: guarde a EAP como dado estruturado desde o início — JSON ou CSV com id, código, descrição, unidade, pacote_pai —, versionado em git, não como planilha solta. Esse arquivo é a chave que costura todas as etapas seguintes; nascendo inconsistente, o erro se propaga até a etapa 8.

Sai: EAP estruturada e o dicionário da EAP em texto, para leitura humana.

3. Planejamento e cronograma

Chega: MS Project (.mpp) ou Primavera P6 (.xer, .xml).

Lê ou converte: .mpp é binário proprietário, não se lê direto em Python — use mpxj para converter para Project XML antes de processar. .xer já é texto delimitado e tem parser Python dedicado, então é mais tranquilo. O caminho crítico é grafo determinístico: implemente com networkx ou algoritmo próprio, não peça para a IA estimar.

Cuidados: a versão do software de origem muda o formato interno do .mpp; campo customizado e calendário de recurso costumam se perder na conversão. Depois de converter, confira se a duração total bate com o original.

Sai: tabela de tarefas com id, duração, predecessoras e marcação de crítico. É essa duração que alimenta o custo indireto da etapa 6 — o elo que sustenta o resto.

4. Levantamento de quantitativos

A etapa onde o nível de maturidade do BIM recebido mais pesa.

Com IFC e quantidade preenchida: leia IfcQuantityArea e IfcQuantityVolume via ifcopenshell, vinculando pelo GlobalId do elemento à EAP pela tabela da etapa 2. Confira se a convenção é área líquida ou bruta — softwares de autoria divergem nisso, e a diferença muda o custo direto inteiro.

Com IFC sem quantidade, que é comum em modelo exportado sem Qto calculado: dá para calcular a geometria do mesh com ifcopenshell.geom mais trimesh ou numpy, mas como cálculo auxiliar a conferir contra o projeto, não como fonte única.

Só com DWG: o fallback da seção anterior — contagem por camada com ezdxf, que só funciona se a convenção for consistente, ou levantamento manual, com a IA organizando o resultado numa planilha e nunca medindo. Sendo o PDF a única fonte, um modelo de visão dá estimativa de sanidade, não medição.

Cuidados: confira unidade (m² contra m³), elemento duplicado entre pavimentos, e divergência entre arquitetônico e estrutural quando os modelos não são federados.

Sai: memória de cálculo e planilha de quantidades com os códigos da EAP.

5. Composição de custos diretos

Chega: base SINAPI ou TCPO em XLSX, publicação mensal; cotações em PDF, e-mail, às vezes foto de orçamento impresso.

Lê ou converte: o XLSX do SINAPI tem várias abas — por estado e por regime, desonerado ou não. Leia com openpyxl atento a qual aba e qual mês. Cotação em PDF ou imagem é texto não estruturado clássico: a IA extrai para um schema fixo (item, unidade, preço, validade), e cada extração se confere antes de virar CPU.

Cuidados: registre a data e a versão do SINAPI usada em cada CPU — é rastreabilidade que auditoria de obra pública cobra depois. O regime tributário muda o encargo social embutido, e misturar linhas dos dois regimes na mesma planilha passa despercebido.

Sai: CPUs, relatório de cotação e planilha de custos diretos.

6. Custos indiretos e acessórios

Chega: o cronograma da etapa 3, a planilha de custos diretos, a estrutura administrativa interna e as exigências contratuais do edital.

Lê ou converte: a etapa mais tranquila em formato — na prática é pandas lendo a duração do cronograma e multiplicando por custo mensal de canteiro e equipe. O ponto de atenção não é formato, é dependência: sem a etapa 3, ou com ela chutada, o cálculo inteiro vira estimativa sem base.

Cuidados: dado salarial e de estrutura interna é informação sensível. Não mande para API de IA pública sem checar a política de dados da empresa; sendo possível, mantenha esta etapa em processamento local.

Sai: planilha de custos indiretos e memória de cálculo do rateio.

7. BDI e impostos

Chega: os totais de custo direto e indireto, a legislação tributária vigente e a política interna de lucratividade.

Lê ou converte: a fórmula do BDI é padronizada, no modelo do Acórdão TCU 2622/2013 — implemente como função determinística, com as alíquotas como parâmetro. O texto de legislação pode ser lido por IA para localizar a alíquota vigente, mas o valor final se confirma na fonte oficial. Não deixe o modelo lembrar um percentual do treinamento: isso fica desatualizado sem aviso.

Cuidados: ISS varia por município, então não existe valor nacional padrão. Regime tributário — lucro real ou presumido — muda o tratamento de PIS e COFINS. Documente a base legal de cada alíquota.

Sai: demonstrativo de cálculo do BDI e quadro de encargos sociais.

8. Fechamento, análise e curva ABC

Chega: todas as saídas anteriores.

Lê ou converte: aqui aparece o ganho de ter mantido um id de EAP consistente desde a etapa 2 — a consolidação vira um merge de tabelas em pandas, ou uma base SQLite pequena se o projeto for grande. Curva ABC é ordenação e percentual acumulado; cronograma físico-financeiro é distribuir custo ao longo da linha do tempo. As duas são cálculo puro, sem IA no meio.

Cuidados: desbalanceamento de planilha é decisão de negócio com implicação contratual. Não é coisa para IA sugerir ou automatizar em silêncio — tem que ser decisão humana explícita e documentada.

Sai: orçamento final sintético e analítico, curva ABC e cronograma físico-financeiro.

Um modelo de dados canônico

O fio que amarra as oito etapas é uma chave comum — o id da EAP — atravessando todo arquivo intermediário, em vez de cada etapa guardar sua planilha isolada.

{
  "id": "01.02.03",
  "descricao": "Alvenaria de vedação — bloco cerâmico 14x19x29",
  "unidade": "m2",
  "pacote_pai": "01.02",
  "fonte_ifc_guid": ["3xR2k9...", "8pL0z1..."],
  "quantidade": 342.5,
  "quantidade_fonte": "ifc_qto",
  "cpu_codigo": "SINAPI-87879",
  "custo_unitario": 68.40,
  "tarefa_cronograma_id": "T-114"
}

quantidade_fonte vale o esforço de manter: registrar se o número veio de ifc_qto, de contagem por camada em DXF ou de levantamento manual muda o nível de confiança que se dá àquele número lá na frente.

A arquitetura do pipeline

        Arquivos brutos (DWG · IFC · PDF · XLSX)
                          │
              Camada de extração por formato
                          │
            Modelo canônico (EAP com id único)
                          │
            ┌─────────────┴─────────────┐
            │                           │
   Cálculo determinístico        IA assistiva
   (pandas, networkx)            (classificação, RAG,
   quantitativo, BDI,             rascunho de texto)
   curva ABC
            │                           │
            └─────────────┬─────────────┘
                          │
            Validação humana obrigatória
        (quantitativo, BDI, alíquota legal)
                          │
     Saída (orçamento, cronograma físico-financeiro)

Formatos, em resumo

Formato Etapa Lê direto? Conversão Risco principal
IFC 2, 4 Sim, ifcopenshell — Pset incompleto; área líquida ou bruta divergindo entre softwares
DWG 1, 4 Não DXF via ODA, depois ezdxf Sem dado semântico; convenção de camada não padronizada
PDF digital 1, 5 Sim, pdfplumber — Tabela quebra na extração
PDF escaneado 1 Não OCR Erro de leitura em número
DOCX 1, 2 Sim, python-docx — Formatação e comentários se perdem
XLSX SINAPI 5 Sim, openpyxl — Aba, mês ou regime errado
MPP 3 Não Project XML via mpxj Campo customizado se perde
XER 3 Sim, parser dedicado — Menos comum fora do Primavera
CSV todas Sim — Separador decimal e encoding

Cuidados transversais

  • Confidencialidade. Dado salarial, estrutura interna e cotação de fornecedor não deveriam ir para API pública de IA sem checar a política de dados da empresa.
  • Rastreabilidade. Todo número que depende de fonte externa — SINAPI, alíquota, cotação — guarda data e origem, não só o valor final.
  • Versão de schema. IFC2x3 e IFC4 diferem em propriedade; fixe a versão que o parser espera e valide antes de processar em lote.
  • Separador decimal. CSV brasileiro usa vírgula, muita biblioteca assume ponto. Isso quebra em silêncio: sem erro, só com número errado.
  • Nada de IA decidindo sozinha o de-para EAP↔SINAPI, EAP↔classe IFC ou alíquota tributária. Sugestão automática, aprovação humana, sempre.

Sobre este texto

Primeira versão, ponto de partida e não prática de mercado fechada. Onde a experiência mostrar que o fallback de DWG não basta, ou que a correspondência EAP↔IFC precisa de mais uma camada, vale voltar aqui e revisar.