Data Standard ダイアログで採番スキーマを使用してサンプル:

ユーザは、Data Standard の新しいファイルを作成するときのファイル名を強制する Vault の採番スキーマを活用します。

採番スキーマをフィルタリングする

インストールしたサンプルでは、アクティブになっているすべての採番スキーマが[採番スキーマ]コンボ ボックスに表示されます。XAML ファイルでは、このコンボ ボックスは PowerShell 関数 GetNumSchms にバインドされています。

GetNumSchms 関数を使用すると、ユーザに表示するスキーマを容易にコントロールすることができます。

ファイル タイプを基準に採番スキーマをフィルタリングする

Data Standard を使用しない場合、ユーザはアクティブになっているすべての Vault の採番スキーマを常に選択することができます。GetNumSchms の次の実装を使用すると、コンポーネント(IPT、IAM)および図面(IDW、IPN、DWG)について異なるスキーマを使用できるようになります。サンプルが機能するようにするには、「COMP」または「DRAWING」で始まる採番スキーマを Vault で定義する必要があります。

C:\ProgramData\Autodesk\\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 という次の採番スキーマがあると想定します。

また、選択したドキュメント タイプに基づいて、次の固定テキストをファイル名の前に付加するとします。

[ファイル作成]ダイアログ(新規標準ファイル)で[OK]をクリックすると、ファイルを Vault に追加する前に、PowerShell 関数 GetNewFileName が呼び出されます。この場合、ファイル名を変更したり、他のプロパティの情報を含めることができます。

C:\ProgramData\Autodesk\\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--####.ipt という形式で一意のファイル名を自動的に作成するとします。ここで、N- は常に適用される固定テキスト、*

* はユーザが入力した Title プロパティ、<em>####</em> は自動生成された番号、<em>.ipt</em> はファイル拡張子です。

この処理を実行するには、Inventor.cfg ファイル内または AutoCAD.cfg ファイル内の <FileNameDefinition> 要素を修正します。

C:\ProgramData\Autodesk\\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" で定義されているため、生成された番号が含まれます。

ダイアログに[採番スキーマ]コントロールを表示せずに Vault の採番を使用する

既定の File.xaml ファイルから DSNumSchemeCtrl および NumSchms コンボ ボックスを削除すると、ユーザは採番スキーマを選択できなくなります。

Vault の Data Standard

次の GetNewFileName のサンプル実装では、前述の採番スキーマ「TestScheme」が使用され、採番スキーマのパラメータとして「Title」の入力値が使用されています。

C:\ProgramData\Autodesk\\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\\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
    }
}
...