Exemple : Utilisation des schémas de numérotation dans les boîtes de dialogue Data Standard

Tirez parti des schémas de numérotation Vault pour exiger des noms de fichiers lorsqu'un utilisateur crée un nouveau fichier Data Standard.

Filtrage des schémas de numérotation

Dans l’exemple indiqué, la zone déroulante Schéma de numéro affiche tous les schémas de numérotation activés. Dans le fichier XAML, la zone déroulante est liée à une fonction PowerShell nommée GetNumSchms.

La fonction GetNumSchms permet de contrôler facilement quels schémas sont visibles pour l’utilisateur.

Filtrage des schémas de numérotation dans Inventor en fonction du type de fichier

Sans Data Standard, l’utilisateur a toujours la possibilité de choisir parmi l’ensemble des schémas de numérotation Vault activés. Si la fonction GetNumSchms est mise en œuvre selon le scénario ci-après, différents schémas seront disponibles pour les composants (IPT, IAM) et les dessins (IDW, IPN et DWG). Pour que cet exemple fonctionne, les schémas de numérotation commençant par "COMP" ou "DRAWING" doivent être définis dans 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
}
...

Personnalisation du nom de fichier

Data Standard for Vault

Supposons que vous possédiez le schéma de numérotation suivant, nommé TestScheme.

Vous souhaitez maintenant ajouter au nom du fichier, en tant que préfixe, un texte fixe en fonction du type de document sélectionné :

Lorsque vous cliquez sur OK dans la boîte de dialogue de création de fichier (Nouveau fichier de normes), la fonction PowerShell GetNewFileName est appelée avant l’ajout du fichier à Vault. Vous avez alors la possibilité de modifier le nom du fichier et d’inclure des informations provenant d’autres propriétés.

C:\ProgramData\Autodesk\<version de 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 pour les applications de CAO

Avec Data Standard pour Inventor et AutoCAD, vous pouvez configurer une combinaison de valeurs de propriétés et un numéro généré pour le nom de fichier.

Par exemple, supposons que vous souhaitiez automatiquement créer des noms de fichiers uniques au format N--####.iptN- est toujours appliqué, correspond à la propriété Titre, #### désigne un numéro généré automatiquement et .ipt constitue l’extension de fichier.

Cette opération peut être effectuée en modifiant l’élément <FileNameDefinition> dans le fichier Inventor.cfg ou AutoCAD.cfg.

C:\ProgramData\Autodesk\<version de 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}" />
...

La propriété DocNumber inclut le numéro généré, car il est défini dans l’attribut GeneratedNumberProperty="DocNumber" dans le contrôle DSNumSchemeCtrl du fichier Inventor.xaml.

Utilisation de la numérotation Vault sans afficher la commande Schéma de numéro dans la boîte de dialogue

Lorsque le contrôle DSNumSchemeCtrl et la zone déroulante NumSchms sont supprimés du fichier File.xaml par défaut, l’utilisateur ne peut plus sélectionner de schéma de numérotation.

Data Standard for Vault

Dans l’exemple de mise en œuvre de la fonction GetNewFileName ci-après, le schéma de numérotation TestScheme indiqué ci-dessus est utilisé, et la valeur indiquée dans la propriété Title est définie en tant que paramètre pour le schéma de numérotation.

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

Data Standard pour les applications de CAO

Pour Inventor et AutoCAD, la mise en oeuvre s’apparente à celle présentée dans l’exemple ci-dessus. En revanche, au lieu de renvoyer un nom de fichier, un numéro généré doit être indiqué dans la propriété DocNumber. Cette propriété est alors utilisée pour définir le nom du fichier courant :

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
    }
}
...