Использование схемы нумерации 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
}
...
Предположим, что имеются следующие схемы нумерации с именем TestScheme.
Перед началом имени файла требуется добавить фиксированный текст в зависимости от типа документа:
ENG-
для сборок и деталей Inventor (например, ENG-A-00004.ipt).ENGDOC-
для чертежей AutoCAD/Inventor и презентаций Inventor (например, ENGDOC-B-00001.idw).OFF-
для других файлов (например, OFF-C-00002.docx).При нажатии кнопки «ОК» в диалоговом окне «Создание файла» (новый файл стандарта) перед добавлением файла в 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 для Inventor и AutoCAD можно настроить комбинацию значений свойств и созданный номер для имени файла.
Предположим, что требуется автоматически создавать уникальные имена файлов в формате N-
Это можно сделать, изменив элемент <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.
Удаление DSNumSchemeCtrl
и поля со списком NumSchms
из файла по умолчанию File.xaml исключает возможность выбора схем нумерации.
В следующем примере реализации функции 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
}
...
Реализация для 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
}
}
...