A Vault kliens, az Inventor Vault bővítmény és az AutoCAD Vault bővítmény Adatszabvány párbeszédpanelében a DSNumSchemeCtrl nevű XAML-vezérlő támogatja a számozási sémákat.
Számozási séma felhasználói felület

A következő soroknak kell szerepelnie az XAML-fájlban, hogy az előző képen látható UI-vezérlők megjelenjenek.
...
<Label Content="{Binding UIString[LBL10]}" Grid.Column="0" Grid.Row="6" />
<ComboBox Grid.Column="1" Grid.Row="6" Name="NumSchms" SelectedIndex="0" Style="{StaticResource NumSchmStyle}"></ComboBox>
<Label Content="{Binding UIString[LBL31]}" Grid.Column="0" Grid.Row="8"></Label>
<WPF:DSNumSchemeCtrl Grid.Column="1" Grid.Row="8" Name="NUMSCHEME" IsEnabled="{Binding ElementName=NumSchms, Path=IsEnabled}" Scheme="{Binding ElementName=NumSchms, Path=SelectedItem}" GeneratedNumberProperty="_GeneratedNumber" />
...
Ez az attribútum határozza meg a számozási séma nevét, mely a vezérlőben is megjelenik. A mintában ez az érték a vezérlő feletti legördülő listában kiválasztott bejegyzéshez van kötve. Alapértelmezés szerint a legördülő lista tartalmazza az összes aktív fájlszámozási sémát. A számozási sémák szűrésének módját jelen témakör Számozási sémák szűrése szakaszában találja meg.
Ez az attribútum határozza meg, hogy mely tulajdonság tartalmazza a generált számot. Amikor az OK gombra kattint, minden egyes DSNumSchemeCtrl attribútumhoz létrejön a szám, melyet a rendszer a megadott tulajdonsághoz rendel.
Az alapértelmezett mintában a _GeneratedNumber tulajdonság értéke plusz a fájl kiterjesztése határozza meg az új fájl létrehozásához használt fájlnevet. A következő szakaszban olyan mintákat talál a Vault Explorer és CAD alkalmazásokhoz, melyekben a program a generált számot és egy másik tulajdonságértéket is felhasználta az új fájlok nevének létrehozásához („Fájlnév testreszabása”). Jelenleg párbeszédpanelenként egy DSNumSchemeCtrl attribútumot támogat a rendszer.
Az Inventor és AutoCAD alkalmazásokban a rendszer behív egy OnPostCloseDialog nevű PowerShell-függvényt, amikor Ön bezárja az Adatszabvány párbeszédpanelt.
A függvényt a program még a fájlnév meghatározása és az iProperty tulajdonságok frissítése előtt behívja. Ez az időzítés lehetővé teszi, hogy a kód még a fájl mentése előtt módosítsa a tulajdonságokat. Ez akkor lehet hasznos, amikor a felhasználóknak nem szükséges kiválasztani egy számozási sémát (lásd a „Vault számozás használata a Számozási séma vezérlőjének megjelenítése nélkül a párbeszédpanelen” mintát a CAD alkalmazásokhoz a következő szakaszban).
Alapértelmezés szerint a CAD Default.ps1-ben található OnPostCloseDialog függvény nem csinál semmit.
Paraméterek
Ha az OnPostCloseDialog függvényt behívják, a $DSParam PowerShell-változó értéke a következő lehetséges értékekre áll:
Vault Adatszabvány párbeszédpanel „CreateMode” módban egyetlen fájlhoz.
Vault Adatszabvány párbeszédpanel „EditMode” módban egyetlen fájlhoz.
Továbbá a $dsWindow.Name változó tartalmazza a párbeszédpanel nevét. Alapértelmezés szerint ez vagy InventorWindow, vagy AutoCADWindow.
Ezek a változók különböző esetekben használható különböző implementációk biztosítására szolgálnak.
A telepített mintában a Számozási séma legördülő lista jeleníti meg az összes aktivált számozási sémát. Az XAML-fájlban a legördülő lista egy GetNumSchms nevű PowerShell-függvényhez van kötve.

A GetNumSchms függvény segítségével egyszerűen szabályozhatja, hogy mely sémák jelenjenek meg a felhasználó számára.
Számozási sémák szűrése az Inventor alkalmazásban fájltípus alapján
Az Adatszabvány nélkül a felhasználó az összes aktivált Vault számozási séma közül válogathat. A GetNumSchms következő implementációja révén különböző sémák érhetők el részegységek (IPT, IAM) és rajzok (IDW, IPN és DWG) esetén. Ahhoz, hogy a minta működjön, a „COMP” vagy „DRAWING” szavakkal kezdődő számozási sémákat meg kell határozni a Vault alkalmazásban:
C:\ProgramData\Autodesk\Vault 2016\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
}
...
Tegyük fel, hogy rendelkezik egy számozási sémával, melynek neve TestScheme.

Szeretne egy rögzített szöveget helyezni a fájlnév elé a kiválasztott dokumentumtípus alapján:
Amikor az OK gombra kattint a CreateFileDialog-ban („Új szabványfájl”), a rendszer behívja a GetNewFileName PowerShell-függvényt, mielőtt hozzáadja a fájlt a Vault tárhoz. Itt lehetősége van módosítani a fájl nevét és bevonni más tulajdonságokból származó információkat.
C:\ProgramData\Autodesk\Vault 2016\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
}
Az Inventor és AutoCAD alkalmazásokhoz készült Adatszabvány funkció segítségével tulajdonságértékek kombinációját és egy generált számot állíthat be a fájlnevekhez.
Tegyük fel például, hogy szeretne automatikusan generált egyedi fájlneveket létrehozni a következő formátumban: „N-<Cím>-####.ipt”, ahol az N- mindig szerepel, a <Cím> értéke a felhasználó által bevitt Cím tulajdonság, a #### egy automatikusan generált szám, az .ipt pedig a kiterjesztés.
Ezt a <FileNameDefinition> elem módosításával teheti meg az Inventor.cfg vagy az AutoCAD.cfg fájlokban.
C:\ProgramData\Autodesk\Vault 2016\Extensions\DataStandard\CAD
<?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 DocNumber tulajdonság tartalmazza a generált számot, mert ezt határozza meg a GeneratedNumberProperty=„DocNumber” attribútum az Inventor.xaml fájl DSNumSchemeCtrl vezérlőjében.
Ha eltávolítja az alapértelmezett File.xaml fájlból a DSNumSchemeCtrl vezérlőt és a NumSchms legördülő listát, a felhasználó többé nem választhatja meg a számozási sémát.
Adatszabvány a Vault alkalmazásban
A GetNewFileName alábbi mintaimplementációja a fenti „TestScheme” számozási sémát és a „Cím” paraméternél megadott értéket használja a számozási sémához.
C:\ProgramData\Autodesk\Vault 2016\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
}
...
Adatszabvány CAD alkalmazásokhoz
Az Inventor és AutoCAD alkalmazásban a fentihez hasonló implementáció érvényes. De fájlnév visszaadása helyett a „DocNumber” tulajdonságot egy generált számmal kell kitölteni. Ezt követően ez a tulajdonság használatos az aktuális fájl nevének beállításához:
C:\ProgramData\Autodesk\Vault 2016\Extensions\DataStandard\CAD\addinVault\Default.ps1
...
function OnPostCloseDialog
{
if ($DSParam -eq "Create")
{
$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
}
}
...