• v1.3.0 c8c2b73eb1

    ruivenda released this 2026-07-02 20:08:04 +01:00 | 0 commits to main since this release

    O construtor de IDS deixou de ser só de escrita: passa a ler ficheiros .ids
    de terceiros (BIMcollab, Datacomp, usBIM, …) para dentro do editor, onde podem ser
    lidos, analisados e editados. Ao importar, o que estiver fora da norma buildingSMART
    IDS 1.0 é normalizado (e reportado em notas de conformidade); ao guardar, o
    construtor gera sempre um .ids canónico e válido — o mesmo caminho que corrige, por
    via do round-trip, ficheiros que outras ferramentas recusam importar. Sintoma que
    motivou a funcionalidade: ficheiros válidos contra o XSD mas rejeitados na importação
    por faltas semânticas (ver dados/IDS-Archicad/RELATORIO_Diagnostico_IDS_Archicad.md).

    Adicionado

    • Abrir .ids no construtor (idsEditor.openIdsIntoEditor): botão «Abrir .ids» na
      barra do construtor e no painel IDS (barra lateral). Não exige modelo aberto — permite
      estudar/analisar especificações de terceiros só para aprender a norma.
    • Importador .ids → construtor (app/src/lib/ids/importer.ts, parseIdsToEditor):
      lê especificações, aplicabilidade (entidade + PredefinedType + facetas extra),
      requisitos, restrições (xs:restriction: enumeração/padrão/intervalo) e <info>.
      Normaliza pelo caminho: dataType em falta inferido do esquema IFC4
      (inferDataType), cardinalidade da aplicabilidade não-normativa (ex.: minOccurs=0
      sem maxOccurs, estado 0..1) ajustada para uma das três combinações legais, e
      curingas estilo BIMcollab (?/*) convertidos em xs:pattern.
    • Notas de conformidade IDS no construtor: painel discreto que lista o que foi
      normalizado (verde), o que convém rever (âmbar — ex.: propriedade num Pset_ reservado
      que não consta do esquema, com sugestão de grafia via distância de Levenshtein) e
      informação (verificações de existência, versões IFC múltiplas, facetas não editáveis).
    • Verificação de existência tratada explicitamente. Uma especificação sem requisitos
      cujo critério vive na aplicabilidade (ex.: «tem de existir um IfcSpace com
      ObjectType=AREALOTE», do IDS municipal GAIURB) deixa de ser sinalizada como incompleta —
      é uma construção IDS válida. Na secção «Tem de cumprir» aparece um card com a
      obrigatoriedade editável (tem de existir / pode existir / não pode existir, ligada à
      cardinalidade da aplicabilidade); a frase em PT reflecte-a; a lista mostra «existência» em
      vez de «0»; e o lint deixou de bloquear a gravação/validação de specs sem requisitos.
    • Assistente ObjectType → classificação (para o ArchiCAD). Quando uma especificação
      filtra por ObjectType na aplicabilidade (ex.: IfcSpace USERDEFINED com ObjectType=AREALOTE,
      típico de IDS municipais), o construtor deteta-o e oferece «Classificações para o ArchiCAD»:
      defines o sistema (ex.: «GAIURB») e geras um .ids separado com as classificações
      equivalentes (system : ObjectType), que o ArchiCAD importa e cria — atribuis a classificação
      aos elementos e o Type Mapping do ArchiCAD escreve o ObjectType na exportação (mais
      intuitivo que preencher o ObjectType elemento a elemento). Não altera o IDS de validação.
      Módulo lib/ids/objectTypeClass.ts (detectObjectTypes/buildClassificationSpecs) +
      exportClassificationsIds; guia de Type Mapping embutido na UI.
    • Comando read_text_file (commands/session.rs, registado em lib.rs) + wrapper
      readTextFile (utils/tauri.ts), simétrico ao write_text_file.
    • Helpers de catálogo (data/idsCatalogue.ts): isCataloguePset, catalogueHasProp,
      catalogueSuggestProp (para as notas de conformidade).

    Alterado

    • Serialização separada do estado: buildIdsXml (e helpers) movida de
      stores/idsEditor.ts para o módulo puro app/src/lib/ids/serialize.ts (testável
      isoladamente; idsEditor.ts re-exporta buildIdsXml — sem quebrar consumidores).
    • Enquadramento por conformidade, não por ferramenta: a UI e as notas falam de
      conformidade com a norma buildingSMART IDS 1.0, não de «corrigir para o ArchiCAD»
      (removidas as menções a «regra do ArchiCAD» nos metadados do editor). Um IDS conforme
      a norma importa em qualquer ferramenta compatível.
    • Assistente de IA escondido fora de DEV (aiAllowed): a barra de IA do construtor
      passa a aparecer apenas em builds DEV (antes também em licença paga).
    • Dropdown de versão IFC compacto no cabeçalho da especificação (rótulo IFC4x3 para
      IFC4X3_ADD2), deixando mais espaço ao campo do nome.

    Testes

    • Motor validado contra os 3 ficheiros reais em dados/ (EN_Basic IDM Check,
      PT_Controle Basico do MEI, requisitosifcgaiurb): importação sem erros, dataType
      inferido em todas as propriedades, cardinalidades legais, curingas convertidos,
      round-trip limpo e idempotente, e deteção das 3 especificações sem requisitos do
      ficheiro GAIURB (com preservação das restrições de intervalo Eastings/Northings).
    Downloads