Beispiel: mithilfe von Nummernschemata in Data Standard-Dialogfelder

Nutzen Sie Autodesk Vault Nummernschemata zu erzwingen, wenn ein Benutzer erstellt eine neue Datei für Data Standard.

Filtern von Nummernschemata

In dem installierten Beispiel werden im Kombinationsfeld Nummernschema sämtliche aktivierten Nummernschemata angezeigt. In der XAML-Datei ist das Kombinationsfeld an die PowerShell-Funktion GetNumSchms gebunden.

Über die Funktion GetNumSchms können Sie einfach steuern, welche Schemata dem Benutzer angezeigt werden.

Filtern von Nummernschemata in Inventor basierend auf dem Dateityp

Ohne Data Standard kann der Benutzer immer zwischen allen aktivierten Vault-Nummernschemata wählen. Mit der folgenden Implementierung von GetNumSchms stehen verschiedene Schemata für Komponenten (IPT, IAM) und Zeichnungen (IDW, IPN und DWG) zur Verfügung. Damit das Beispiel funktioniert, müssen Nummernschemata, die mit COMP oder DRAWING beginnen, in Vault definiert werden:

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

Anpassen des Dateinamens

Data Standard für Vault

Beachten Sie das folgende Nummernschema TestScheme.

Sie möchten nun dem Dateinamen einen festen Text basierend auf den ausgewählten Dokumenttyp voranstellen:

Wenn Sie im Dialogfeld Datei erstellen auf OK klicken (Neue Standard-Datei), wird die PowerShell-Funktion GetNewFileName aufgerufen, bevor die Datei zu Vault hinzugefügt wird. Hier haben Sie die Möglichkeit, den Dateinamen zu ändern und Informationen aus anderen Eigenschaften einzuschließen.

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 für CAD

Mit Data Standard für Inventor und AutoCAD können Sie eine Kombination aus Eigenschaftswerten und einer generierten Nummer für den Dateinamen konfigurieren.

Beispiel: Sie möchten automatisch eindeutige Dateinamen im Format N--####.ipt erstellen, wobei N- immer angewendet wird, *

* die vom Benutzer eingegebene Eigenschaft Title ist, <em>####</em> eine automatisch generierte Nummer und <em>.ipt</em> die Dateierweiterung darstellt.

Dazu können Sie das Element <FileNameDefinition> in der Datei Inventor.cfg oder AutoCAD.cfg ändern.

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

Die Eigenschaft DocNumber enthält die generierte Zahl, da sie im Attribut GeneratedNumberProperty="DocNumber" im Steuerelement DSNumSchemeCtrl der Datei Inventor.xaml definiert ist.

Verwenden von Vault-Nummerierung ohne Anzeige des Steuerelements Nummernschema im Dialogfeld

Durch Entfernen der Kombinationsfelder DSNumSchemeCtrl und NumSchms aus der vorgegebenen Datei File.xaml kann der Benutzer kein Nummernschema mehr auswählen.

Data Standard für Vault

Im folgenden Implementierungsbeispiel von GetNewFileName wird das obige Nummernschema TestScheme verwendet, und der im Titel eingegebene Wert ist ein Parameter für das Nummernschema.

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 für CAD

Bei Inventor und AutoCAD ist die Implementierung ähnlich wie im Beispiel oben. Statt einen Dateinamen zurückzugeben, muss der Eigenschaft DocNumber eine generierte Nummer zugewiesen werden. Diese Eigenschaft wird verwendet, um den Namen für die aktuelle Datei festzulegen:

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