Nutzen Sie Autodesk Vault Nummernschemata zu erzwingen, wenn ein Benutzer erstellt eine neue Datei für Data Standard.
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
}
...
Beachten Sie das folgende Nummernschema TestScheme.
Sie möchten nun dem Dateinamen einen festen Text basierend auf den ausgewählten Dokumenttyp voranstellen:
ENG-
für Inventor-Baugruppen und -Bauteile (z. B. ENG-A-00004.ipt)ENGDOC-
für AutoCAD- bzw. Inventor-Zeichnungen und Inventor-Präsentationen (z. B. ENGDOC-B-00001.idw)OFF-
für alle anderen Dateien (z. B. OFF-C-00002.docx)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
}
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-
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.
Durch Entfernen der Kombinationsfelder DSNumSchemeCtrl
und NumSchms
aus der vorgegebenen Datei File.xaml kann der Benutzer kein Nummernschema mehr auswählen.
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
}
...
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
}
}
...