Exemplos de mapeamento de dados
Valores obrigatórios e padrão
Os cenários de troca de arquivos frequentemente incluem requisitos e políticas que especificam que determinados campos de dados não devem estar vazios ou que cada campo de dados precisa ter um valor padrão. Para ter certeza de que um campo de dados obrigatório sempre contém um valor, basta incluir uma constante no final da fórmula de mapeamento de dados.
Formulas:
=FIRSTNONEMPTY(Style.'Function', 'NOTDEFINED')
=FIRSTNONEMPTY(OBJECTDATA('General Name'), Style.'Name', 'Roof')
Se os valores padrão forem necessários para todos os campos de dados, mas você precisar de valores específicos para alguns objetos, crie um formato de registro e defina um valor padrão para o campo que será a fonte de dados. Em seguida, anexe esse registro apenas aos objetos que terão valores específicos, para que você possa alterar o valor padrão no registro anexado conforme necessário. Os objetos que não tiverem o registro anexado receberão o valor padrão.
Fórmula:
=FIRSTNONEMPTY('Pricing Details'.'Discount', FORMATFIELD('Pricing Details','Discount'))
Exemplos combinando campos e constantes
Você pode usar fórmulas de mapeamento de dados para melhorar a legibilidade, adicionar prefixos ou sufixos necessários ou combinar ou calcular dados de várias fontes.
Neste exemplo, precisamos de uma descrição melhor de uma escada rolante, incluindo informações importantes sobre o fabricante e a largura do degrau. Também queremos adicionar algumas palavras para aumentar a legibilidade.
Fórmula:
=CONCAT('Escalator: ', 'Escalator'.'Type', ' Width: ', 'Escalator'.'Step width')
Resultado:
Escada Rolante: Largura Otis 510 M: 1000 (3' 3")
Em outro exemplo, precisamos configurar o nome do objeto janela para vir do nome Vectorworks. Se não houver um nome no Vectorworks, queremos combinar os campos Prefixo de ID, Rótulo de ID e Sufixo de ID. Se todos esses parâmetros estiverem vazios, queremos usar a palavra "Janela" para identificar a janela.
Fórmula:
=FIRSTNONEMPTY(OBJECTDATA('General Name'), CONCAT('Window'.'IDPrefix', 'Window'.'IDLabel', 'Window'.'IDSuffix'), 'Window')
Resultado sem nome Vectorworks:
W-01A1
Mapeamento de formato de registro
Para anexar automaticamente registros e dados personalizados aos objetos de plug-in do Vectorworks à medida que são adicionados a um desenho, crie um formato de registro com os campos de dados que você deseja e, em seguida, mapeie os campos para um valor constante apropriado, parâmetro ou estilo para aquele objeto. Isso torna mais fácil usar os vários recursos do Vectorworks que relatam dados de objetos, como planilhas, tags de dados e visualizações de dados.
Neste exemplo, o formato de registro “Cálculos do Gabinete” foi criado e adicionado como um conjunto de dados para o objeto de plug-in Gabinete .
Comprimento da bancada: Mapeado para o parâmetro Comprimento do armário (a medida linear da bancada).
Área da bancada: Adicionamos uma saliência de 50 milímetros à bancada e calculamos a área, depois dividimos por 1000 * 1000 para converter o resultado de milímetros quadrados em metros quadrados (unidades de comprimento / profundidade são milímetros)
Fórmula: =('Cabinets'.'Length' * ('Cabinets'.'Depth' + 50)) / 1000000
Adjacente à parede: Não mapeado; na guia Dados da paleta Info de Objeto, o usuário define se o gabinete é adjacente a uma parede e, portanto, requer um backsplash
Área Backsplash: Se um backsplash for necessário, a área é de 0,6 metros (a largura do painel do backsplash) * comprimento da bancada / 1000 (para converter de metros para milímetros). Observe que essa fórmula se refere a dois outros campos no mesmo registro.
Fórmula: =IF(FIRSTNONEMPTY('Cabinet Calculations'.'Adjacent to Wall', FORMATFIELD('Cabinet Calculations', 'Adjacent to Wall')), (0.6*FIRSTNONEMPTY('Cabinet Calculations'.'Countertop Length', FORMATFIELD('Cabinet Calculations', 'Countertop Length'))/1000), 0)
Se você excluir o formato de registro do mapeamento, o registro será desanexado de todas as instâncias de gabinete no desenho.
Quando um gabinete é colocado no desenho, a guia Dados da paleta Informações do objeto mostra que os dados do registro foram anexados automaticamente. Para cada campo mapeado, a configuração na coluna Editando (
) do Gerenciador de dados controla como o campo pode ser editado.
Funções
Neste exemplo, queremos calcular a fcWindow.OverallHeight (Altura total da janela IFC) com base nas configurações do nosso objeto de janela.
O parâmetro Altura conterá o valor correto, desde que a janela não tenha soleira ou, se tiver, seja do tipo Soleira de tijolo. Em qualquer outra situação, o valor da Altura da Soleira precisa ser adicionado à Altura da janela.
Fórmula:
='Window'.'OverallHeight' + IF('Window'.'IncludeSill' & ('Window'.'SillStyle' <> 'Brick'), 'Window'.'SillHeight', 0)
Resultado, quando não há peitoril ou se o tipo de peitoril for Brick (adicionando 0 ao valor da Altura):
2000,0
Resultado, quando há um peitoril e não é Brick (adicionando 150,0 ao valor Height):
2150,0
Mapeando fontes de dados usando uma função seletora
Os dados IFC requerem muitos tipos de campos de dados de "enumeração", como PredefinedType, OperationType, ShapeType e assim por diante. Às vezes, não há correspondência um-para-um - as configurações atuais diferem do IFC, nenhuma fonte de dados válida pode ser mapeada diretamente ou os valores são escritos em outro idioma.
Neste exemplo, mapeamos a lista Configuração da janela para o Tipo de operação necessário do conjunto de dados IFC Window Panel, usando uma das funções do seletor.
Fórmula:
=FIRSTNONEMPTY(IFS('Window'.'Configuration' = 'Opening', 'FIXEDCASEMENT',
'Window'.'Configuration' = 'Cased Opening', 'FIXEDCASEMENT',
'Window'.'Configuration' = 'Awning', 'TOPHUNG',
'Window'.'Configuration' = 'Casement', 'SIDEHUNGLEFTHAND',
'Window'.'Configuration' = 'Bi-parting Casement', 'SIDEHUNGLEFTHAND',
'Window'.'Configuration' = 'Fixed Glass', 'FIXEDCASEMENT',
'Window'.'Configuration' = 'Fixed Glass - No Sash', 'FIXEDCASEMENT',
'Window'.'Configuration' = 'Folding', 'NOTDEFINED',
'Window'.'Configuration' = 'Hopper', 'BOTTOMHUNG',
'Window'.'Configuration' = 'Single Hung', 'SLIDINGVERTICAL',
'Window'.'Configuration' = 'Double Hung', 'SLIDINGVERTICAL',
'Window'.'Configuration' = 'Horizontal Slider', 'SLIDINGHORIZONTAL',
'Window'.'Configuration' = 'Tilt/Turn', 'TILTANDTURNLEFTHAND',
'Window'.'Configuration' = 'Vertical Pivot', 'PIVOTVERTICAL'
Condições
As condições permitem lidar com casos mais complicados e controlar o layout de dados IFC com mais precisão.
Condição para mapear estilos de parede para diferentes entidades
Por exemplo, você pode ter um arquivo com quatro estilos de parede: ExternWall, InteriorWall, Footing, and VirtualWall. No mapeamento de dados para o objeto de plug-in de parede, adicionamos duas novas entidades primárias: IfcCovering and IfcFooting. Usando o campo Condição, definimos uma regra para mapear a entidade IFC apropriada por estilo de parede.

Fórmula:
=IF(Style.'Name'='ExternWall', 'IfcWallStandardCase', IF(Style.'Name'='InteriorWall', 'IfcCovering', IF(Style.'Name'='Footing', 'IfcFooting', 'No-Export')))
Resultado:
O arquivo exportado conterá paredes com uma das três entidades IFC, dependendo do estilo da parede. As paredes com o estilo de parede VirtualWall não são mapeadas para nada e não serão exportadas.

Condição de Pset para um objeto de laje
Fórmula:
=(FIND ('Estrutural', [Estilo.Nome]) = 0)
Resultado:
Se o nome do Estilo do objeto laje começar com "Estrutural", o Conjunto de Propriedades de Classificação será anexado à laje.

Condição para exportar um objeto como várias entidades
As condições podem ser usadas ao exportar um único objeto como entidades separadas. Aqui temos uma parede com vários componentes. Usando o campo Função do estilo de parede, uma entidade IFC diferente pode ser mapeada para cada componente durante a exportação.


Fórmula:
=IF(OBJECTDATA('Component', 'Function', T=INDEX)='Load-Bearing', 'IfcWallStandardCase', IF(OBJECTDATA('Component', 'Function', T=INDEX)='Inner Finish', 'IfcCovering', IF(OBJECTDATA('Component', 'Function', T=INDEX)='Outer Finish', 'IfcCovering', IF(OBJECTDATA('Component', 'Function', T=INDEX)='OTHER', 'IfcBuildingElementProxy', 'NoExport'))))
Resultado:
No arquivo IFC a parede é representada com três entidades diferentes: two IfcCoverings, IfcWallStandardCase, and IfcBuildingElementProxy. O componente marcado com "Air Gap" como função não é exportado.
Como é possível ter paredes sem nenhum componente principal e o painel de dados na paleta Informações do objeto permite apenas a visualização de uma entidade, a entidade visualizada é sempre aquela mapeada para o primeiro componente. Isso não afeta a exportação neste caso.
Símbolos e geometria personalizada
Os símbolos e a geometria personalizada devem ter dados IFC anexados para serem exportados. Seu mapeamento de dados IFC é baseado nas configurações de seu tipo de entidade IFC designado.
Na janela de diálogo "Gerenciador de Dados", adicionamos o Pset_ColumnCommon e mapeamos o campo "Referência" ao nome da classe do objeto. Também podemos adicionar valores fixos (TRUE) para IsExternal e LoadBearing.
Podemos ver o mapeamento padrão na guia Data da paleta Info de Objeto.
Para símbolos, você pode criar mapeamentos com base na designação IFC do símbolo ou no nome da definição do símbolo. No Gerenciador de Dados, selecionamos a definição de símbolo e, em seguida, clicamos em Adicionar Conjunto de Dados para definir os conjuntos de dados IFC necessários que desejamos exportar. Por exemplo, adicionamos Pset_ManufacturerTypeInformation e, em seguida, mapeamos todos os campos para valores fixos, uma vez que são iguais para todas as instâncias deste símbolo.
Agora, sem mesmo anexar dados IFC à definição do símbolo ou a qualquer instância do símbolo, o símbolo é exportado como um IfcFurnishingElement com Pset_ManufacturerTypeInformation. Podemos ver o mapeamento padrão na guia Data da paleta Info de Objeto.
Entidades primárias e secundárias
Para objetos agregados, entidades primárias e secundárias fornecem mais precisão com o layout de dados IFC.Neste exemplo, a parede cortina tem IfcCurtainWall como um conjunto de entidades principal. As entidades secundárias são IfcMember (quadros) e IfcPlate (painéis). Ao desativar, substituir ou excluir completamente uma entidade secundária, você pode controlar a exportação dos quadros e painéis.

