ユーザは、Data Standard の新しいファイルを作成するときのファイル名を強制する Vault の採番スキーマを活用します。
インストールしたサンプルでは、アクティブになっているすべての採番スキーマが[採番スキーマ]コンボ ボックスに表示されます。XAML ファイルでは、このコンボ ボックスは PowerShell 関数 GetNumSchms
にバインドされています。
GetNumSchms
関数を使用すると、ユーザに表示するスキーマを容易にコントロールすることができます。
ファイル タイプを基準に採番スキーマをフィルタリングする
Data Standard を使用しない場合、ユーザはアクティブになっているすべての Vault の採番スキーマを常に選択することができます。GetNumSchms
の次の実装を使用すると、コンポーネント(IPT、IAM)および図面(IDW、IPN、DWG)について異なるスキーマを使用できるようになります。サンプルが機能するようにするには、「COMP」または「DRAWING」で始まる採番スキーマを Vault で定義する必要があります。
C:\ProgramData\Autodesk\
...
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-
(例: ENG-A-00004.ipt)ENGDOC-
(例: ENGDOC-B-00001.idw)OFF-
(例: OFF-C-00002.docx)[ファイル作成]ダイアログ(新規標準ファイル)で[OK]をクリックすると、ファイルを Vault に追加する前に、PowerShell 関数 GetNewFileName
が呼び出されます。この場合、ファイル名を変更したり、他のプロパティの情報を含めることができます。
C:\ProgramData\Autodesk\
...
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-
この処理を実行するには、Inventor.cfg ファイル内または AutoCAD.cfg ファイル内の <FileNameDefinition>
要素を修正します。
C:\ProgramData\Autodesk\
<?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\
...
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\
...
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
}
}
...