Plugin para Autodesk Navisworks 2026 focado em:
- leitura de propriedades do item selecionado
- gravação de atributos customizados
- seleção e gravação de nomes de
Sets - inspeção tabular da seleção
- colorização por modelo e por
Selection/Search Set - comparação entre revisões
NWDcom transferência de dados Autis
O projeto é escrito em C#, roda em .NET Framework 4.8 e usa:
Autodesk.Navisworks.ApiAutodesk.Navisworks.Interop.ComApiAutodesk.Navisworks.ComApiWindows Forms
Quando o Navisworks carrega o plugin, ele cria a aba AWP Autis na ribbon. A partir dela, o usuário acessa 5 fluxos principais:
Read PropertiesWrite PropertiesSelection InspectorColorizerMerge NWD
O coração do projeto é:
- UI em WinForms
- leitura de propriedades pela API gerenciada do Navisworks
- gravação de propriedades customizadas pela COM API
- empacotamento como
.bundleAutodesk
-
AutisAtributosPlugin.csPonto de entrada do plugin. Cria a ribbon, registra os botões e chama cada formulário. -
AtributoService.csServiço central de leitura, gravação e exclusão de atributos no Navisworks. -
AutisSchema.csDefine o schema atual de gravação:- categoria fixa:
Autis_Attributes - propriedade fixa dos sets:
Autis_AWP
- categoria fixa:
-
SelectionSetCache.csVarre a árvore deSelection SetseSearch Sets, expande os itens de cada set e entrega uma coleção em cache para uso na UI e na gravação. -
SetAssignment.csEstrutura simples usada para ligar um item do modelo ao nome de um set detectado.
-
GravarAtributosForm.csTela de gravação de atributos e seleção dos sets. -
LerAtributosForm.csTela para leitura/exportação das propriedades do item selecionado. -
SelectionInspectorForm.csTabela consolidada para comparar propriedades entre vários itens selecionados. -
ColorizerForm.csTela para colorir por modelos ou por sets. -
MergeForm.csTela de análise e execução do merge entre revisõesNWD. -
MergeService.csServiço de extração de fingerprint, comparação entre elementos e execução da transferência. -
MergeModels.csModelos de dados usados no relatório de merge. -
MERGE_SPEC.mdEspecificação funcional e técnica do fluxo deMerge NWD.
-
UITheme.csDesign system interno com cores, tipografia, espaçamento e helpers visuais. -
CustomComponents.csComponentes visuais reutilizáveis para as telas.
-
AutisAnalytics.NavisworksAtributos.csprojConfiguração de build, referências Autodesk e regras de saída. -
build_installer.batPipeline completo para gerar o instalador. -
installer/AutisAtributos.issScript do Inno Setup. -
installer/staging/PackageContents.xmlManifesto do bundle Autodesk usado no empacotamento. -
installer/README_INSTALADOR.txtGuia curto de build do instalador.
Fluxo:
- O Navisworks carrega
AutisAtributosPlugin. OnLoaded()inicia um timer.- Quando a ribbon do Navisworks fica disponível, o plugin cria a aba
AWP Autis. - Cada botão da ribbon é ligado ao
AutisCommandHandler.
Arquivo principal:
AutisAtributosPlugin.cs
Fluxo:
- O usuário seleciona um item.
- Clica em
Read Properties. - O plugin chama
AtributoService.LerPropriedades(...). - A tela
LerAtributosFormexibe as categorias e propriedades encontradas.
Detalhe técnico:
- essa leitura usa a API gerenciada do Navisworks
- não precisa de COM para ler
Fluxo completo:
- O usuário seleciona um ou mais itens.
- Clica em
Write Properties. - O plugin descobre todos os sets que contêm os itens selecionados.
- A tela
GravarAtributosFormmostra esses sets com checkbox. - O usuário escolhe quais sets quer incluir.
- O usuário pode adicionar atributos extras manualmente na grade.
- Ao salvar, o plugin grava:
- categoria fixa
Autis_Attributes - propriedade fixa
Autis_AWPcom os nomes dos sets selecionados - atributos extras digitados pelo usuário
- categoria fixa
Detalhes importantes:
- os sets não viram mais várias propriedades separadas
- os nomes dos sets selecionados são consolidados em um único campo
- ao reabrir a tela, o plugin tenta ler o conteúdo já salvo em
Autis_AWPpara remarcar os sets e permitir edição posterior - o código ainda lê formatos legados para manter compatibilidade com versões anteriores
Arquivos envolvidos:
AutisAtributosPlugin.csGravarAtributosForm.csSelectionSetCache.csSetAssignment.csAtributoService.csAutisSchema.cs
Fluxo:
- O usuário seleciona os itens.
- Abre
Write Properties. - Clica em
Delete Created. - O plugin remove a categoria criada pelo próprio plugin.
Hoje ele remove:
Autis_Attributes- categorias legadas compatíveis, quando existirem
Arquivo:
AtributoService.cs
Fluxo:
- O usuário seleciona vários itens.
- Clica em
Selection Inspector. - O plugin coleta as propriedades de todos os itens.
- A tela monta uma tabela comparativa.
Objetivo:
- enxergar rapidamente diferenças e similaridades entre itens selecionados
Arquivo:
SelectionInspectorForm.cs
Fluxo:
- O usuário abre
Colorizer. - O plugin carrega automaticamente sets e modelos.
- O usuário escolhe o modo de colorização.
- O plugin executa a alteração visual no documento.
Observação:
- esse fluxo reutiliza
SelectionSetCachepara evitar reexpandir sets toda hora
Arquivo:
ColorizerForm.cs
Fluxo:
- O usuário abre
Merge NWD. - Seleciona um novo arquivo
NWDrevisado. - O plugin extrai fingerprints do modelo atual e do revisado.
- O comparador executa três níveis principais:
Level 1: IDs únicosLevel 2: chave compostaLevel 3: score ponderado por nome, tipo/categoria, geometria e hierarquia
- A tela mostra:
- pareados
- novos
- removidos
- candidatos
- O usuário pode aceitar candidatos e executar a transferência de atributos/set.
Melhorias recentes no comparador:
Level 1eLevel 2agora só fazem auto-match quando a chave é única nos dois lados- candidatos não são mais classificados também como
New - o reset visual do merge limpa só as cores aplicadas pelo próprio merge
- fechar a tela sem executar o merge remove o modelo revisado anexado temporariamente
Arquivos:
MergeForm.csMergeService.csMergeModels.csMERGE_SPEC.md
O schema atual foi centralizado em AutisSchema.cs:
- categoria principal:
Autis_Attributes - propriedade fixa dos sets:
Autis_AWP
Exemplo lógico:
Categoria: Autis_Attributes
Propriedade: Autis_AWP
Valor: AIR COOLER - TRECHO A | CABLE RACK | CASA DOS COMPRESSORES
Se o usuário preencher atributos extras na grade, eles também entram na categoria Autis_Attributes.
O plugin ainda reconhece:
- categoria antiga
AWP_Autis - categoria antiga
Autis Analytics - propriedade legada
Sets - formato antigo onde cada set virava uma propriedade separada
Isso foi mantido para não perder usabilidade em modelos já processados.
- Windows
- Visual Studio 2022 ou
dotnetcom suporte a.NET Framework 4.8 - Autodesk Navisworks Manage 2026 ou ajuste da variável
NavisworksDir
Comando:
dotnet build AutisAnalytics.NavisworksAtributos.csproj -c Release -p:PlatformTarget=x64 --nologoComportamento do projeto:
-
DebugSai direto para o bundle local em%AppData%\Autodesk\ApplicationPlugins\AutisAtributos.bundle\Contents\v23\ -
ReleaseSai parainstaller/staging/Contents/v23/e depois tenta copiar para o bundle local
Observação importante:
- se o Navisworks estiver aberto, a DLL do bundle pode ficar bloqueada
- nesse caso o build compila, mas a cópia para o bundle pode falhar ou gerar aviso
- para testar a última versão no plugin carregado, feche o Navisworks antes do build
Passo a passo recomendado:
- Feche o Navisworks.
- Rode:
dotnet build AutisAnalytics.NavisworksAtributos.csproj -c Release -p:PlatformTarget=x64 --nologo- Confirme que a DLL foi atualizada em:
%AppData%\Autodesk\ApplicationPlugins\AutisAtributos.bundle\Contents\v23\
- Abra o Navisworks e teste a nova versão.
- Abra o Navisworks.
- Selecione um item.
- Clique em
Read Properties. - Verifique se as categorias e valores aparecem corretamente.
- Selecione um ou mais itens.
- Clique em
Write Properties. - Marque alguns sets.
- Adicione um atributo extra opcional.
- Clique em
Save. - Verifique se foi criada a categoria
Autis_Attributes. - Verifique se
Autis_AWPfoi preenchido com os sets escolhidos.
- Grave os sets.
- Feche a janela.
- Abra
Write Propertiesnovamente com o mesmo item selecionado. - Confirme se os sets já salvos voltam marcados.
- Altere a seleção e salve de novo.
- Selecione itens com atributos criados pelo plugin.
- Abra
Write Properties. - Clique em
Delete Created. - Confirme a exclusão.
- Verifique se a categoria foi removida.
- Abra o modelo base no Navisworks.
- Clique em
Merge NWD. - Escolha o arquivo
NWDrevisado. - Aguarde a análise.
- Revise os grupos
Matched,New,RemovedeCandidates. - Se necessário, aceite manualmente candidatos válidos.
- Clique em
Execute Merge. - Verifique no modelo revisado se os dados de
Autis_Attributesforam transferidos.
build_installer.batOu com versão:
build_installer.bat /versao:2.0.0- verifica se
dotnetexiste - compila em
Release x64 - limpa
installer/staging/Contents/v23 - atualiza a versão em
installer/staging/PackageContents.xml - chama o
ISCC.exe - gera o instalador em
installer/output
"C:\Program Files (x86)\Inno Setup 6\ISCC.exe" /DAppVersion=2.0.0 installer\AutisAtributos.issSaída esperada:
installer\output\AutisAtributos_v2.0.0_Setup.exe
Fluxo recomendado para fechar uma versão:
- Feche o Navisworks.
- Rode o build
Release. - Teste no Navisworks:
Read PropertiesWrite PropertiesSelection InspectorColorizerMerge NWD
- Gere o instalador:
build_installer.bat /versao:2.0.0- Confirme o
.exeeminstaller\output. - Atualize a documentação necessária.
- Publique no GitHub.
O repositório foi preparado para publicação pública com .gitignore para não subir:
.vsobjbin.claude.vscodeinstaller/outputinstaller/staging/Contents/v23installer/staging/ia_config.txt
Isso evita publicar:
- artefatos de build
- instaladores gerados
- configurações locais
- arquivos sensíveis
- Garanta que
README.md,installer/README_INSTALADOR.txte os arquivos do plugin estejam atualizados. - Gere e teste a versão localmente.
- Faça commit do código-fonte.
- Envie para o repositório público:
https://github.com/AutisAnalytics/PluginAtributosNaviswork
Observação:
- o instalador
.exeé mantido como artefato local e não sobe por padrão por causa do.gitignore
Arquivo:
AutisSchema.cs
Arquivo:
AtributoService.cs
Arquivo:
AutisAtributosPlugin.cs
Arquivo:
GravarAtributosForm.cs
Arquivo:
SelectionSetCache.cs
Arquivos:
UITheme.csCustomComponents.cs
Arquivos:
build_installer.batinstaller/AutisAtributos.issinstaller/staging/PackageContents.xml
Se você estiver entrando no projeto agora, a ordem ideal para entender o código é:
AutisSchema.csAutisAtributosPlugin.csAtributoService.csSelectionSetCache.csGravarAtributosForm.csLerAtributosForm.csSelectionInspectorForm.csColorizerForm.csAutisAnalytics.NavisworksAtributos.csprojbuild_installer.bat
Essa sequência já dá uma visão completa do funcionamento do plugin, do dado gravado e do processo de build/deploy.