Utilizzare gli schemi di numerazione di Vault per applicare nomi di file quando un utente crea un nuovo file di Data Standard.
Nell'esempio presente con l'installazione, nella casella combinata Schema di numerazione sono visualizzati tutti gli schemi di numerazione attivi. Nel file XAML, la casella combinata è collegata ad una funzione PowerShell denominata GetNumSchms
.
La funzione GetNumSchms
rende più semplice il controllo degli schemi da visualizzare all'utente.
Filtraggio degli schemi di numerazione in Inventor in base al tipo di file
Senza Data Standard, è sempre possibile effettuare una selezione tra tutti gli schemi di numerazione del Vault attivati. Con la seguente implementazione di GetNumSchms
, saranno disponibili diversi schemi per i componenti (IPT, IAM) e i disegni (IDW, IPN e DWG). Per eseguire il lavoro dell'esempio, gli schemi di numerazione che iniziano con "COMP" o "DRAWING" devono essere definiti nel Vault:
C:\ProgramData\Autodesk\<Vault version>\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
}
...
Si consideri il seguente schema di numerazione denominato TestScheme.
Si desidera ora anteporre un prefisso al nome file con un testo fisso in base al tipo di documento selezionato:
ENG-
per gli assiemi e le parti di Inventor (ad esempio, ENG-A-00004.ipt)ENGDOC-
per disegni di AutoCAD/Inventor e presentazioni di Inventor (ad esempio, ENGDOC-B-00001.idw).OFF-
per tutti gli altri file (ad esempio, OFF-C-00002.docx).Quando si fa clic su OK nella finestra di dialogo Crea file (Nuovo file di standard), la funzione PowerShell GetNewFileName
viene richiamata prima di aggiungere il file al Vault. Qui si ha la possibilità di modificare il nome file e includere informazioni da altre proprietà.
C:\ProgramData\Autodesk\<Vault version>\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
}
Con Data Standard per Inventor e AutoCAD, è possibile configurare una combinazione di valori di proprietà e un numero generato per il nome file.
Ad esempio, si supponga di voler creare automaticamente nomi di file univoci nel formato: NN-
Questa operazione può essere eseguita modificando l'elemento <FileNameDefinition>
in Inventor.cfg o nei file AutoCAD.cfg.
C:\ProgramData\Autodesk\<Vault version>\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}" />
...
La proprietà DocNumber
contiene il numero generato, poiché è definito nell'attributo GeneratedNumberProperty="DocNumber"
nel controllo DSNumSchemeCtrl
del file Inventor.xaml.
Se si rimuovono le caselle combinate DSNumSchemeCtrl
e NumSchms
dal file.xaml di default, non è più possibile selezionare uno schema di numerazione.
Il seguente esempio di implementazione di GetNewFileName
utilizza lo schema di numerazione "TestScheme" come in precedenza e il valore immesso in "Titolo" come un parametro per lo schema di numerazione.
C:\ProgramData\Autodesk\<Vault version>\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
}
...
Per Inventor e AutoCAD, l'implementazione è simile a quella per l'esempio sopra. Ma invece di restituire un nome file, la proprietà DocNumber
deve essere riempita con un numero generato. Questa proprietà viene quindi utilizzata per impostare il nome del file corrente:
C:\ProgramData\Autodesk\<Vault version>\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
}
}
...