API SmartCounter

Bonjour

Nous utilisons deux compteurs pour le nommage unique des fichier CAO que l'on sauvegarde dans le coffre ePDM (P-XXXXXX.sldprt et A-XXXXXX.sldasm). Nos fichiers CAO sont tous sans exceptions sauvegardés dans le coffre.

Je développe une application en interne qui va générer de nouveaux fichiers qu'il faudra enregistrer dans le coffre. Il me faut donc accéder aux compteurs.

Je souhaiterais le faire proprement, c'est à dire, ne surtout pas écrire directement dans les fichiers XML. Autrement je ne saurais m'avancer sur les accès concurrent de ces compteurs.

 

J'ai découvert la présence du fichier SmartCounter.dll. Quel nom intéressant n'est-ce pas ? Il y a t il une documentation associée ?

 

Cordialement,

Bonjour,

Si vous êtes en train de faire une application via l'API PDM, sauf erreur de ma part vous pouvez regarder dans l'aide du côté de GetSerialNumberNames ça permet d'accéder aux compteurs.

1 « J'aime »

Bonjour,

Pour prendre un numéro dans ePDM voir l'exemple : Creating Serial Numbers

et également l'exemple en bas de cette page: Value Property

Bonjour,

 

merci pour vos réponses et désolé pour mon manque de précision. Notre numéro de compteur est donné par le smartproperty et n'utilise pas les outils epdm comme les serial numbers. Les compteurs sont définis dans un fichier xml stocké lui à l'extérieur du coffre (sur un partage windows).

 

<Counters>
  <Counter name="NomFichierPrt" id="Incrementing0" Auto="0" AutoName="" type="1">
    <Value value="55413" StartValue="0" step="1" />
    <Custom value="" SeparatorList=";" LinkFileList="False" />
    <Format value="P-0000000#" />
  </Counter>
  <Counter name="Incrementing" id="Incrementing" Auto="0" AutoName="" type="1">
    <Value value="0" StartValue="0" step="0" />
    <Custom value="" SeparatorList=";" LinkFileList="False" />
    <Format value="0#" />
  </Counter>
  <Counter name="NomFichierAsm" id="Incrementing1" Auto="0" AutoName="" type="1">
    <Value value="86557" StartValue="0" step="1" />
    <Custom value="" SeparatorList=";" LinkFileList="False" />
    <Format value="A-0000000#" />
  </Counter>
</Counters>

 

Dans ce cas, le fichier xml est fait pour ca.

Il y a juste à incrémenter 'Value value="55413" ' dans le fichier

On écrit directement dans le fichier ? Y'a pas un risque avec les accès concurrents ? Faut-il créer un fichier de verrouillage type `.lock` ?

utilise FileShare.None:

bool success = false;
while (!success)
{
    try
    {
        using(Stream file = new FileStream(path, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
        {
            // Read current content from file.
            // Make changes
            // Save new content to file.
        }
        success = true;
    }
    catch(IOException e)
    {
        // Someone else was modifying the file or another IO exception.
    }
}

OK. Je pense que ça va le faire.

Je ferai un commentaire "retour d'expérience" quand j'aurai avancé mon dev.

Merci et bon week-end.