Aproveite os esquemas de numeração do Vault para Forçar nomes de arquivo quando um usuário cria um novo arquivo do Data Standard.
Na amostra instalada, a caixa combo Esquema de números mostra todos os esquemas de numeração ativados. No arquivo XAML, a caixa combo é vinculada a uma função do PowerShell denominada GetNumSchms
.
A função GetNumSchms
facilita o controle de quais esquemas devem ser exibidos para o usuário.
Como filtrar os esquemas de numeração no Inventor com base no tipo de arquivo
Sem o Data Standard, o usuário pode sempre selecionar entre todos os esquemas de numeração ativados do Vault. Com a implementação a seguir de GetNumSchms
, diferentes esquemas estarão disponíveis para os componentes (IPT, IAM) e os desenhos (IDW, IPN e DWG). Para fazero trabalho de amostra, esquemas de numeração que começam com "COMP" ou "DRAWING" devem ser definidos no Vault:
C:\ProgramData\Autodesk\<versão do Vault>\Extensions\DataStandard\CAD\addinVault\Default.ps1
...
function GetNumSchms
{
try
{
$numSchems = $vault.DocumentService.GetNumberingSchemesByType('activated')
}
catch [System.Exception]
{
#[System.Windows.MessageBox]::Show($error)
}
$filename = $Prop["DocNumber"].Value
$fileExt = [System.IO.Path]::GetExtension($filename)
$ret = @()
foreach ($item-in-$numschems)
{
if (($fileExt -eq ".iam" -or $fileExt -eq ".ipt") -and $item.Name.StartsWith("COMP"))
{
$ret += $item.Name
}
elseif (($fileExt -eq ".idw" -or $fileExt -eq ".ipn" -or $fileExt -eq ".dwg") -and $item.Name.StartsWith("DRAWING"))
{
$ret += $item.Name
}
}
return $ret
}
...
Imagine que você tem o seguinte esquema de numeração, denominado TestScheme.
Agora, você deseja elaborar o nome do arquivo com um texto fixo de acordo com o tipo de documento selecionado:
ENG-
para montagens e peças do Inventor (por exemplo, ENG-A-00004.ipt)ENGDOC-
para desenhos do AutoCAD/Inventor e apresentações do Inventor (por exemplo, ENGDOC-B-00001.idw).OFF-
para todos os outros arquivos (por exemplo, OFF-C-00002.docx).Quando você clica em OK na caixa de diálogo Criar arquivo (Novo arquivo padrão), a função do PowerShell GetNewFileName
é chamada antes de adicionar o arquivo ao Vault. Aqui você tem a oportunidade para modificar o nome de arquivo e incluir informações de outras propriedades.
C:\ProgramData\Autodesk\<versão do Vault>\Extensions\DataStandard\Vault\addinVault\Default.ps1
...
function GetNewFileName
{
$prefix = ""
if($dswindow.findname("NUMSCHEME").IsEnabled -eq $false)
{
$filename = $dswindow.findname("filename").Text
}
else{
$filename = $Prop["_GeneratedNumber"].Value
if (($Prop["_FileExt"].Value -eq ".ipt") -or ($Prop["_FileExt"].Value -eq ".iam"))
{
$prefix = "ENG-"
}
elseif (($Prop["_FileExt"].Value -eq ".dwg") -or ($Prop["_FileExt"].Value -eq ".idw") -or ($Prop["_FileExt"].Value -eq ".ipn"))
{
$prefix = "ENGDOC-"
}
else
{
$prefix = "OFF-"
}
}
$newfileName = $prefix + $filename + $Prop["_FileExt"].Value
return $newfileName
}
Com o Data Standard para o Inventor e o AutoCAD, é possível configurar uma combinação de valores de propriedade e um número gerado para o nome do arquivo.
Por exemplo, imagine que você deseja criar automaticamente nomes de arquivo exclusivos no formato: N-<título>-####.ipt, em que N- sempre é aplicado, <título> é a propriedade de Título inserida pelo usuário, #### é um número gerado automaticamente e .ipt é a extensão do arquivo.
Isso pode ser feito ao modificar o elemento <FileNameDefinition>
nos arquivos Inventor.cfg ou AutoCAD.cfg.
C:\ProgramData\Autodesk\<versão do Vault>\Extensions\DataStandard\CAD\Inventor.cfg
<?xml version="1.0" encoding="utf-8"?>
<Configuration>
<PathDefinition>{Workspace}\{Prop[Folder].Value}</PathDefinition>
<FileNameDefinition>N-{Prop[Title].Value}-{Prop[DocNumber].Value}</FileNameDefinition>
<PropertyDefinitions>
<PropertyDefinition PropertyName="DocNumber" DataType="Text" InitialValue="{PathAndFileNameHandler.FileName}" />
...
A propriedade DocNumber
contém o número gerado, porque está definido no atributo GeneratedNumberProperty="DocNumber"
no controle DSNumSchemeCtrl
do arquivo Inventor.xaml.
Ao remover DSNumSchemeCtrl
e a caixa combo NumSchms
do arquivo File.xaml padrão, o usuário não pode mais selecionar um esquema de numeração.
A amostra de implementação a seguir do GetNewFileName
usa o esquema de numeração "TestScheme" acima e o valor inserido em "Title" como um parâmetro para o esquema de numeração.
C:\ProgramData\Autodesk\<versão do Vault>\Extensions\DataStandard\Vault\addinVault\Default.ps1
...
function GetNewFileName
{
$numSchemes = $vault.DocumentService.GetNumberingSchemesByType([Autodesk.Connectivity.WebServices.NumSchmType]::Activated)
$testNumScheme = $numSchemes | Where-Object { $_.Name.Equals("testscheme") }
$NumGenArgs = @()
$NumGenArgs += $Prop["Title"].Value
$genNum = $vault.DocumentService.GenerateFileNumber($testnumscheme.schmid,-$numgenargs)
return $genNum + $Prop["_FileExt"].Value
}
...
Para o Inventor e o AutoCAD, a implementação é similar ao exemplo cima. Contudo, em vez de retornar um nome de arquivo, a propriedade DocNumber
deve ser preenchida com um número gerado. Em seguida, essa propriedade é usada para definir o nome do arquivo atual:
C:\ProgramData\Autodesk\<versão do Vault>\Extensions\DataStandard\CAD\addinVault\Default.ps1
...
function OnPostCloseDialog
{
if ($Prop["_CreateMode"].Value)
{
$numSchemes = $vault.DocumentService.GetNumberingSchemesByType([Autodesk.Connectivity.WebServices.NumSchmType]::Activated)
$testNumScheme = $numSchemes | Where-Object { $_.Name.Equals("testscheme") }
$NumGenArgs = @()
$NumGenArgs += $Prop["Title"].Value
$genNum = $vault.DocumentService.GenerateFileNumber($testnumscheme.schmid,-$numgenargs)
$Prop["DocNumber"].Value = $genNum
}
}
...