Esempio: utilizzo degli schemi di numerazione nelle finestre di dialogo di Data Standard

Utilizzare gli schemi di numerazione di Vault per applicare nomi di file quando un utente crea un nuovo file di Data Standard.

Filtraggio degli schemi di numerazione

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
}
...

Personalizzazione del nome file

Data Standard per Vault

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:

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
}

Data Standard per CAD

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--####.ipt" dove N- viene sempre applicato, è la proprietà titolo immessa dall'utente, #### è un numero generato automaticamente e*.ipt* è l'estensione del file.

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.

Data Standard per Vault

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
}
...

Data Standard per CAD

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
    }
}
...