Ejemplo: uso de los esquemas de numeración en cuadros de diálogo Estándar de datos

Aproveche los esquemas de numeración de Vault para forzar nombres de archivo cuando un usuario crea un nuevo archivo de Estándar de datos.

Filtrar esquemas de numeración

En el ejemplo instalado, el cuadro combinado Esquema de numeración muestra todos los esquemas de numeración activos. En el archivo XAML, el cuadro combinado está enlazado con una función PowerShell denominada GetNumSchms.

La función GetNumSchms facilita el control de los esquemas que se deben mostrar al usuario.

Filtrar esquemas de numeración en Inventor en función del tipo de archivo

Sin Data Standard, el usuario puede realizar siempre la selección entre todos los esquemas de numeración de Vault activos. Con la implementación siguiente de GetNumSchms, habrá diferentes esquemas disponibles para componentes (IPT, IAM) y dibujos (IDW, IPN y DWG). Para que el ejemplo funcione, los esquemas de numeración que comienzan con "COMP" o "DRAWING" deben estar definidos en 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
}
...

Personalizar el nombre de archivo

Estándar de datos para Vault

Supongamos que tiene el siguiente esquema de numeración denominado TestScheme.

Desea añadir al principio el nombre de archivo con un texto fijo basado en el tipo de documento seleccionado:

Al hacer clic en Aceptar en el cuadro de diálogo Crear archivo (Nuevo archivo estándar), se invoca la función GetNewFileName de PowerShell antes de añadir el archivo a Vault. Aquí tiene la oportunidad de modificar el nombre de archivo e incluir información de otras propiedades.

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
}

Data Standard para CAD

Con Data Standard para Inventor y AutoCAD, puede configurar una combinación de valores de propiedad y un número generado para el nombre de archivo.

Por ejemplo, supongamos que desea crear automáticamente nombres de archivo únicos con el formato: N-<título>-####.ipt donde N- se aplica siempre, <título> es la propiedad Título especificada por el usuario, #### es un número generado automáticamente e .ipt es la extensión de archivo.

Para ello, modifique el elemento <FileNameDefinition> en los archivos Inventor.cfg o AutoCAD.cfg.

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

La propiedad DocNumber contiene el número generado, ya que se define en el atributo GeneratedNumberProperty="DocNumber" en el control DSNumSchemeCtrl del archivo Inventor.xaml.

Al eliminar el cuadro combinado DSNumSchemeCtrl y NumSchms del archivo File.xaml por defecto, el usuario ya no puede seleccionar un esquema de numeración.

Data Standard para Vault

La implementación de ejemplo siguiente de GetNewFileName utiliza el esquema de numeración "TestScheme" anterior y el valor introducido en "Título" como un parámetro para el esquema de numeración.

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

Data Standard para CAD

Para Inventor y AutoCAD, la implementación es similar al ejemplo anterior. No obstante, en lugar de devolver un nombre de archivo, la propiedad DocNumber tiene que rellenarse con un número generado. A continuación, esta propiedad se utiliza para definir el nombre para el archivo actual:

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