Korzystanie ze schematów numerowania w oknie dialogowym rozwiązania Data Standard (tylko dodatek Data Standard dla programu Vault 2015 R2)

Uwaga: Obsługa schematów numerowania w oknie dialogowym rozwiązania Data Standard jest dostępna tylko w przypadku wersji dodatku Data Standard dla programu Vault 2015 R2.

Element sterujący języka XAML o nazwie DSNumSchemeCtrl służy do obsługi schematów numerowania w oknach dialogowych rozwiązania Data Standard w przypadku programu Vault Client oraz dodatków Vault dla programów Inventor i AutoCAD.

Schemat numerowania — interfejs użytkownika

Następujące linie są wymagane w pliku XAML w celu wyświetlenia elementów sterujących interfejsu użytkownika widocznych na powyższej ilustracji.

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

Atrybuty obowiązkowe

Element sterujący użytkownika DSNumSchemeCtrl ma dwa atrybuty niestandardowe, które są obowiązkowe:
  • Scheme

    Ten atrybut służy do określania nazwy schematu numerowania, która ma być wyświetlana w elemencie sterującym. W niniejszym przykładzie ta wartość jest powiązana z elementem wybranym w polu kombi powyżej elementu sterującego. Domyślnie pole kombi zawiera wszystkie aktywne schematy numerowania plików. W sekcji Filtrowanie schematów numerowania w tym temacie opisano, w jaki sposób można filtrować schematy numerowania.

  • GeneratedNumberProperty

    Ten atrybut służy do określania, która właściwość zawiera generowaną liczbę. Po kliknięciu przycisku OK numer każdego elementu sterującego DSNumSchemeCtrl zostanie utworzony i przypisany do określonej właściwości.

    W domyślnym przykładzie wartość właściwości _GeneratedNumber oraz rozszerzenie pliku określają nazwę pliku, która zostanie zastosowana w przypadku nowego pliku. W następnej sekcji podano przykłady dotyczące programów Vault Explorer i CAD, w których użyto wygenerowanej liczby, jak również innych wartości właściwości, do utworzenia nazwy nowego pliku („Dostosowywanie nazwy pliku”). Obecnie obsługiwany jest jeden element sterujący DSNumSchemeCtrl na każde okno dialogowe.

Funkcja programu PowerShell OnPostCloseDialog w programach CAD

W programach Inventor i AutoCAD funkcja programu PowerShell o nazwie OnPostCloseDialog jest wywoływana podczas zamykania okna dialogowego rozwiązania Data Standard.

Funkcja jest wywoływana przed ustawieniem nazwy pliku i przed zaktualizowaniem właściwości iProperties. Umożliwia to dalsze modyfikowanie właściwości przy użyciu kodu, zanim plik zostanie zapisany. Może to być przydatne, gdy użytkownicy nie muszą wybierać schematów numerowania (zobacz przykład w sekcji „Używanie numerowania programu Vault bez wyświetlania elementu sterującego schematu numerowania w oknie dialogowym” dotyczącej programu CAD).

Domyślnie funkcja OnPostCloseDialog w pliku Default.ps1 dla programu CAD nie wykonuje żadnych operacji.

Parametry

Przykłady kodu

Filtrowanie schematów numerowania

W zainstalowanym przykładzie w polu kombi Schemat numerowania są wyświetlane wszystkie aktywne schematy numerowania. W pliku XAML pole kombi jest powiązane z funkcją programu PowerShell o nazwie GetNumSchms.

Funkcja GetNumSchms ułatwia określenie, które schematy powinny być widoczne dla użytkownika.

Filtrowanie schematów numerowania w programie Inventor w oparciu o typ pliku

    Bez rozwiązania Data Standard użytkownik może zawsze wybierać spośród wszystkich aktywnych schematów numerowania programu Vault. W następującej implementacji funkcji GetNumSchms w przypadku komponentów (IPT, IAM) i rysunków (IDW, IPN i DWG) będą dostępne różne schematy. Aby przykładowy kod zadziałał schematy numerowania rozpoczynające się od „COMP” lub „DRAWING” powinny być zdefiniowane w programie Vault:

    C:\ProgramData\Autodesk\Vault 2015 R2\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
    }
    ...

Dostosowywanie nazwy pliku

Załóżmy, że jest dostępny następujący schemat numerowania o nazwie TestScheme.

Chcemy poprzedzić nazwę pliku tekstem ustalanym na podstawie wybranego typu dokumentu:

  • „ENG-” w przypadku zespołów i części programu Inventor (np. „ENG-A-00004.ipt”)
  • „ENGDOC-” w przypadku rysunków programów AutoCAD/Inventor i prezentacji programu Inventor (np. „ENGDOC-B-00001.idw”)
  • „OFF-” w przypadku wszystkich innych plików (np. „OFF-C-00002.docx”)

Po kliknięciu przycisku OK w oknie CreateFileDialog („Nowy plik standardowy...”) funkcja GetNewFileName programu PowerShell jest wywoływana przed dodaniem pliku do programu Vault. W tym miejscu można również zmodyfikować nazwę pliku i dołączyć informacje z innych właściwości.

C:\ProgramData\Autodesk\Vault 2015 R2\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
}

Rozwiązanie Data Standard dla programów CAD

Za pomocą rozwiązania Data Standard dla programów Inventor i AutoCAD można skonfigurować kombinację wartości właściwości i wygenerowanej liczby używaną w nazwie pliku.

Załóżmy na przykład, że chcemy automatycznie tworzyć unikatowe nazwy plików w formacie: „N-<Tytuł>-####.ipt”, gdzie N- jest zawsze dodawane, <Tytuł> to właściwość Tytuł wprowadzona przez użytkownika, #### jest wygenerowaną automatycznie liczbą, a .ipt to rozszerzenie pliku.

Można to zrobić przez zmodyfikowanie elementu <FileNameDefinition> w plikach Inventor.cfg lub AutoCAD.cfg.

C:\ProgramData\Autodesk\Vault 2015 R2\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}" />
...

Właściwość DocNumber zawiera wygenerowaną liczbę, ponieważ jest ona zdefiniowany w atrybucie GeneratedNumberProperty="DocNumber" w elemencie sterującym DSNumSchemeCtrl pliku Inventor.xaml.

Używanie numerowania programu Vault bez wyświetlania elementu sterującego schematu numerowania w oknie dialogowym

Po usunięciu elementu sterującego DSNumSchemeCtrl i pola kombi NumSchms z domyślnego pliku File.xaml użytkownik nie może wybierać schematu numerowania.

Rozwiązanie Data Standard dla programu Vault

    W następującym przykładzie implementacji funkcji GetNewFileName użyto powyższego schematu numerowania „TestScheme” i wartości wprowadzonej w polu „Tytuł” jako parametru schematu numerowania.

    C:\ProgramData\Autodesk\Vault 2015 R2\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
    }
    ...

Rozwiązanie Data Standard dla programów CAD

    W przypadku programów Inventor i AutoCAD implementacja jest podobna do powyższego przykładu. Jednak zamiast zwracania nazwy pliku właściwość „DocNumber” musi zostać wypełniona wygenerowaną liczbą. Ta właściwość jest następnie używana do ustawienia nazwy bieżącego pliku:

    C:\ProgramData\Autodesk\Vault 2015 R2\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
        }
    }
    ...