Vault Client、Inventor Vault Add-in、および AutoCAD Vault Add-in の Data Standard ダイアログで採番スキーマをサポートするには、DSNumSchemeCtrl という XAML コントロールを使用します。
採番スキーマの UI
上の図に示した UI コントロールを表示するには、XAML ファイルに次の行を記述する必要があります。
... <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" /> ...
この属性は、コントロールに表示する採番スキーマの名前を指定する目的で使用します。サンプルでは、この値はコントロールのコンボ ボックスで選択した項目にバインドされています。コンボ ボックスには、アクティブになっているすべての採番スキーマが既定で格納されています。採番スキーマのフィルタリング方法については、このトピックの「採番スキーマをフィルタリングする」のセクションを参照してください。
この属性は、生成された番号を保持するプロパティを定義する目的で使用します。[OK]ボタンをクリックすると、各 DSNumSchemeCtrl の番号が生成され、指定したプロパティに割り当てられます。
既定のサンプルでは、_GeneratedNumber プロパティの値とファイル拡張子に基づいて、新規ファイルに使用されるファイル名が決定します。次のセクションでは、生成された番号に加え、新規ファイルのファイル名を作成するその他のプロパティを使用した Vault Explorer および CAD のサンプルを示します(「ファイル名をカスタマイズする」を参照してください)。現在、ダイアログごとに 1 つの DSNumSchemeCtrl がサポートされています。
Inventor および AutoCAD の場合、Data Standard ダイアログを閉じるときに、PowerShell 関数 OnPostCloseDialog が呼び出されます。
この関数は、ファイル名を設定する前、および iProperty を更新する前に呼び出されます。このタイミングにより、コードではファイルの保存前でもプロパティを変更することができます。これは、ユーザが採番スキーマを選択する必要がない場合に役立ちます(CAD の場合、次のセクションの「ダイアログに[採番スキーマ]コントロールを表示せずに Vault の採番を使用する」を参照してください)。
既定では、CAD の Default.ps1 の OnPostCloseDialog 関数は何の処理も行いません。
パラメータ
OnPostCloseDialog 関数が呼び出されると、PowerShell 変数 $DSParam が次のいずれかの値に設定されます。
単一ファイルの「CreateMode」での Vault Data Standard ダイアログです。
単一ファイルの「EditMode」での Vault Data Standard ダイアログです。
また、変数 $dsWindow.Name にはダイアログ名が格納されます。既定では、InventorWindow または AutoCADWindow のいずれかの値になります。
これらの変数を使用することで、シナリオごとに別々の実装が可能になります。
インストールしたサンプルでは、アクティブになっているすべての採番スキーマが[採番スキーマ]コンボ ボックスに表示されます。XAML ファイルでは、このコンボ ボックスは PowerShell 関数 GetNumSchms にバインドされています。
GetNumSchms 関数を使用すると、ユーザに表示するスキーマを容易にコントロールすることができます。
ファイル タイプを基準に採番スキーマをフィルタリングする
Data Standard を使用しない場合、ユーザはアクティブになっているすべての Vault の採番スキーマを常に選択することができます。GetNumSchms の次の実装を使用すると、コンポーネント(IPT、IAM)および図面(IDW、IPN、DWG)について、別々のスキーマを選択することができます。サンプルが機能するようにするには、「COMP」または「DRAWING」で始まる採番スキーマを 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 } ...
TestScheme という次の採番スキーマがあると想定します。
また、選択したドキュメント タイプに基づいて、次の固定テキストをファイル名の前に付加するとします。
CreateFileDialog ([新規標準ファイル])で[OK]をクリックすると、ファイルを Vault に追加する前に、PowerShell 関数 GetNewFileName が呼び出されます。この場合、ファイル名を変更したり、他のプロパティの情報を含めることができます。
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 }
Inventor および AutoCAD の Data Standard では、プロパティ値とファイル名に生成された番号の組み合わせを設定することができます。
たとえば、「N-<Title>-####.ipt」の形式で一意のファイル名を自動的に作成するとします。ここで、N- は常に適用される固定テキスト、<Title> はユーザが入力した Title プロパティ、#### は自動生成された番号、.ipt はファイル拡張子です。
この処理を実行するには、Inventor.cfg ファイル内または AutoCAD.cfg ファイル内の <FileNameDefinition> 要素を修正します。
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}" /> ...
DocNumber プロパティには、生成された番号が格納されます。これは、Inventor.xaml ファイルの DSNumSchemeCtrl コントロールの GeneratedNumberProperty="DocNumber" 属性で定義されているためです。
既定の File.xaml ファイルから DSNumSchemeCtrl および NumSchms コンボ ボックスを削除すると、ユーザは採番スキーマを選択できなくなります。
Vault の Data Standard
次の GetNewFileName のサンプル実装では、前述の採番スキーマ「TestScheme」が使用され、採番スキーマのパラメータとして「Title」の入力値が使用されています。
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 } ...
CAD の Data Standard
Inventor および AutoCAD の場合、実装は前述のサンプルと基本的に同じです。ただし、ファイル名を返すのではなく、生成された番号を「DocNumber」プロパティに指定する必要があります。次に、このプロパティを使用して、現在のファイルの名前を設定します。
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 } } ...