利用 Vault 編號規則,在使用者建立新的 Data Standard 檔案時強制檔案名稱。
在已安裝的範例中,「編號規則」組合方塊會展示所有已啟用的編號規則。在 XAML 檔案中,該組合方塊已連結至名為 GetNumSchms 的 PowerShell 函數。

GetNumSchms 函數可讓您輕鬆地控制應向使用者顯示哪些規則。
根據檔案類型在 Inventor 中篩選編號規則
如果沒有「Data Standard」,使用者永遠都可以在所有已啟用的 Vault 編號規則之間進行選取。使用以下 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)在「建立檔案」對話方塊 (「新標準檔案」) 中按一下「確定」時,會先呼叫 PowerShell 函數 GetNewFileName,然後再將檔案加入至 Vault。此時,您有機會修改檔名並包括其他性質中的資訊。
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 for Inventor 和 AutoCAD,您可以規劃性質值與所產生號碼的組合,以用於檔名。
例如,假設您要使用「N-<標題>-####.ipt」格式自動建立唯一檔名,其中 N- 永遠會套用、*<標題>* 是使用者輸入的「Title」性質、#### 是自動產生的號碼、*.ipt* 是副檔名。
修改 Inventor.cfg 或 AutoCAD.cfg 檔案中的 <<FileNameDefinition> 元素即可完成此作業。
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 包含產生的號碼,因為該性質是在 Inventor.xaml 檔案的 DSNumSchemeCtrl 控制中的屬性 GeneratedNumberProperty="DocNumber" 中定義的。
從預設 File.xaml 檔案中移除 DSNumSchemeCtrl 和 NumSchms 組合方塊後,使用者將無法再選取編號規則。
以下 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
}
}
...