Пример: Использование схем нумерации в диалоговых окнах Data Standard

Использование схемы нумерации Vault, чтобы использовать имена файлов, когда пользователь создает нового файла Data Standard.

Фильтрация схем нумерации

В этом примере в поле со списком «Схемы нумерации» отображаются все активированные схемы нумерации. В файле XAML поле со списком привязано к функции PowerShell с именем GetNumSchms.

Функция GetNumSchms позволяет с легкостью управлять отображением схем для пользователей.

Фильтрация схем нумерации по типам файлов в Inventor

Пользователи всегда могут выбирать схемы из всех активированных схем нумерации без использования Data Standard. При следующей реализации GetNumSchms для компонентов (IPT, IAM) и чертежей (IDW, IPN и DWG) будут доступны различные схемы. Чтобы пример кода функционировал, необходимо задать в Vault схемы нумерации, которые начинаются с COMP или DRAWING.

C:\ProgramData\Autodesk\<версия Vault>\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
}
...

Настройка имени файла

Data Standard для Vault

Предположим, что имеются следующие схемы нумерации с именем TestScheme.

Перед началом имени файла требуется добавить фиксированный текст в зависимости от типа документа:

При нажатии кнопки «ОК» в диалоговом окне «Создание файла» (новый файл стандарта) перед добавлением файла в Vault вызывается функция PowerShell GetNewFileName. Таким образом можно изменить имя файла и включить информацию из других свойств.

C:\ProgramData\Autodesk\<версия Vault>\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
}

Data Standard для САПР

С помощью Data Standard для Inventor и AutoCAD можно настроить комбинацию значений свойств и созданный номер для имени файла.

Предположим, что требуется автоматически создавать уникальные имена файлов в формате N--####.ipt, где N применяется всегда, — введенное пользователем свойство Title, #### — автоматически созданный номер, а .ipt — расширение файла.

Это можно сделать, изменив элемент <FileNameDefinition> в файле Inventor.cfg или AutoCAD.cfg.

C:\ProgramData\Autodesk\<версия Vault>\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}" />
...

Свойство DocNumber содержит созданный номер, так как он определен в атрибуте GeneratedNumberProperty="DocNumber" в элементе управления DSNumSchemeCtrl файла Inventor.xaml.

Использование нумерации Vault без отображения элемента управления схем нумерации в диалоговом окне

Удаление DSNumSchemeCtrl и поля со списком NumSchms из файла по умолчанию File.xaml исключает возможность выбора схем нумерации.

Data Standard для Vault

В следующем примере реализации функции GetNewFileName используются схемы нумерации TestScheme (см. выше) и значение свойства Title, введенное в качестве параметра схемы нумерации.

C:\ProgramData\Autodesk\<версия Vault>\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
}
...

Data Standard для САПР

Реализация для Inventor и AutoCAD аналогична реализации в примере, приведенном выше. Однако вместо возврата имени файла происходит заполнение свойства DocNumber созданным номером. Это свойство используется для присвоения имени текущему файлу.

C:\ProgramData\Autodesk\<версия Vault>\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
    }
}
...