ユーザは、Data Standard の新しいファイルを作成するときのファイル名を強制する Vault の採番スキーマを活用します。
インストールしたサンプルでは、アクティブになっているすべての採番スキーマが[採番スキーマ]コンボ ボックスに表示されます。XAML ファイルでは、このコンボ ボックスは PowerShell 関数 GetNumSchms にバインドされています。
GetNumSchms 関数を使用すると、ユーザに表示するスキーマを容易にコントロールすることができます。
ファイル タイプを基準に採番スキーマをフィルタリングする
Data Standard を使用しない場合、ユーザはアクティブになっているすべての Vault の採番スキーマを常に選択することができます。GetNumSchms の次の実装を使用すると、コンポーネント(IPT、IAM)および図面(IDW、IPN、DWG)について、別々のスキーマを選択することができます。サンプルが機能するようにするには、「COMP」または「DRAWING」で始まる採番スキーマを Vault で定義する必要があります。
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 } ...
Vault の Data Standard
TestScheme という次の採番スキーマがあると想定します。
また、選択したドキュメント タイプに基づいて、次の固定テキストをファイル名の前に付加するとします。
CreateFileDialog ([新規標準ファイル])で[OK]をクリックすると、ファイルを Vault に追加する前に、PowerShell 関数 GetNewFileName が呼び出されます。この場合、ファイル名を変更したり、他のプロパティの情報を含めることができます。
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 }
CAD の Data Standard
Inventor および AutoCAD の Data Standard では、プロパティ値とファイル名に生成された番号の組み合わせを設定することができます。
たとえば、「N-<Title>-####.ipt」 の形式で一意のファイル名を自動的に作成するとします。ここで、N- は常に適用される固定テキスト、<Title> はユーザが入力した Title プロパティ、 #### は自動生成された番号、.ipt はファイル拡張子です。
この処理を実行するには、<Inventor.cfg ファイル内または AutoCAD.cfg ファイル内のFileNameDefinition> 要素を修正します。
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}" /> ...
Vault の Data Standard
次の GetNewFileName のサンプル実装では、前述の採番スキーマ「TestScheme」が使用され、採番スキーマのパラメータとして「Title」の入力値が使用されています。
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 } ...
CAD の Data Standard
Inventor および AutoCAD の場合、実装は前述のサンプルと基本的に同じです。ただし、ファイル名を返すのではなく、生成された番号を「DocNumber」プロパティに指定する必要があります。次に、このプロパティを使用して、現在のファイルの名前を設定します。
C:¥ProgramData¥Autodesk¥Vault 2016¥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 } } ...