Számozási rendszer használata az Adatszabvány párbeszédpanelen

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

Kötelező attribútumok

A DSNumSchemeCtrl felhasználói vezérlő két kötelező egyéni attribútummal rendelkezik:
  • Scheme

    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.

  • GeneratedNumberProperty

    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 OnPostCloseDialog PowerShell-függvény a CAD alkalmazásokban

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

Kódminták

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

A fájlnév testreszabása

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:

  • „ENG-” Inventor mintakeresztszelvények és alkatrészek esetén (pl. „ENG-A-00004.ipt”)
  • „ENGDOC-” AutoCAD/Inventor rajzok és Inventor bemutatók esetén (pl. „ENGDOC-B-00001.idw”)
  • „OFF-” minden egyéb fájl esetén (pl. „OFF-C-00002.docx”)

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
}

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

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