Minta – Számozási sémák használata az Adatszabvány párbeszédpanelek

Kihasználhatja a Vault számozási sémák alkalmazása, ha a felhasználó létrehoz egy új adatszabványfájl.

Számozási sémák szűrése

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-verzió>\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
}
...

A fájlnév testreszabása

Adatszabvány a Vault alkalmazásban

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 Fájl létrehozása párbeszédpanelen („Ú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-verzió>\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
}

Adatszabvány CAD alkalmazásokhoz

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

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.

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

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ó a továbbiakban nem választhat 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-verzió>\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 aDocNumber 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-verzió>\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
    }
}
...