CATIA V5 | 3DEXPERIENCE
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le deal à ne pas rater :
Code promo Nike : -25% dès 50€ d’achats sur tout le site Nike
Voir le deal

Détection de la lanque dans une Macro VBA

3 participants

Aller en bas

R?solu Détection de la lanque dans une Macro VBA

Message par Docserta Mar 4 Fév 2014 - 9:08

Bonjour,

Je souhaite détecter la langue dans les paramètre utilisateurs.
En effet les calques portent des nom différents sur un drawing crée dans un catia réglé en français (MesCalques.Item("Calque.2 (Détail))
et sur un autre réglé en Anglais (MesCalques.Item("Sheet.2 (Detail).

Une idée ?
Docserta
Docserta
actif
actif

Messages : 47
Date d'inscription : 09/11/2011
Localisation : Rennes

Revenir en haut Aller en bas

R?solu Re: Détection de la lanque dans une Macro VBA

Message par Docserta Mer 12 Fév 2014 - 16:26

Bon ben voila la réponse de DS  Crying or Very sad 
Bonjour,
Il est malheureusement impossible d'accéder aux paramètres de langue en VBScript ou en VBA.
Les paramètres disponibles sont décrits dans les articles "Automation Infrastructure - Setting Controller Reference" et "Automation Infrastructure - Setting Repository Reference".
Veuillez s'il vous plaît vous référer à l'article "Automation Infrastructure - Administrating Settings with Automation" pour obtenir des explications techniques concernant l'administration des paramètres en Automation.
Je vous remercie pour votre compréhension et votre considération.
Cordialement,
Docserta
Docserta
actif
actif

Messages : 47
Date d'inscription : 09/11/2011
Localisation : Rennes

Revenir en haut Aller en bas

R?solu Détection de la langue utilisateur

Message par lumpazepfel Mar 10 Nov 2015 - 11:49

Bonjour,
Le sujet date un peu, mais j'ai longtemps galéré sur le sujet et j’ai fini par trouvé sur des forums allemands une bidouille pour récupérer la langue de l’interface utilisateur. L’info se trouve dans le fichier FrameGeneral.Catsetting qu’il d’abord convertir en xml pour pouvoir lire la valeur de la variable UserInterfaceLanguage.
Code:
Sub CATMain()
'*********************************************************************************************************
'Language CATvba
'Cette macro convertit le fichier FrameGeneral.catsetting en .xml et en extrait la valeur de la langue de l'interface utilisateur
'Source : http://catia2.cad.de/index.php/de/catia-faq/programmierung/319-catia-umgebungssprache-bestimmen
'Source : http://ww3.cad.de/foren/ubb/Forum137/HTML/000742.shtml#000011
'*********************************************************************************************************
    shelltext = Chr(34) & CATIA.SystemService.Environ("CATDLLPATH") & _
      "\CATBatGenXMLSet.exe" & Chr(34) & " " & Chr(34) & _
      CATIA.SystemService.Environ("CATTEMP") & Chr(34) & " FrameGeneral"
    Start = Shell(shelltext, vbHide)
    FileTxt = txt_ReadAll(CATIA.SystemService.Environ("CATTEMP") & _
              "\FrameGeneral.xml")
    
    txt = LTrim2(FileTxt, InStr(FileTxt, "UserInterfaceLanguage"))
    txt = Left(txt, InStr(txt, "</Attribute>") - 1)
    If InStr(txt, "<Value>") = 0 Then
        'ici code si pas de valeur trouvée
        Exit Sub
    End If
        
  txt = LTrim2(txt, InStr(txt, "<Value>") + 6)
  iLangCode = RTrim2(txt, Len(txt) - InStr(txt, "</Value>") + 1)
  
    Select Case iLangCode
    Case 0
    sLanguage = "System Default"
    Case 714
    sLanguage = "English"
    Case 598
    sLanguage = "French"
    Case 602
    sLanguage = "German"
    Case 706
    sLanguage = "Italian"
    Case 807
    sLanguage = "Japanese"
    Case 608
    sLanguage = "Korean"
    Case 1828
    sLanguage = "Simplified Chinese"
    End Select
    
    MsgBox sLanguage
End Sub
Private Function txt_ReadAll(ByVal sFilename As String) As String

  Dim F As Integer
  Dim sInhalt As String

  ' Si le fichier existe
  If Dir$(sFilename, vbNormal) <> "" Then
    F = FreeFile
    Open sFilename For Binary As #F
    sInhalt = Space$(LOF(F))
    Get #F, , sInhalt
    Close #F
  End If

  txt_ReadAll = sInhalt
End Function
Private Function LTrim2(ByVal str As String, ByVal dig As Integer)
    LTrim2 = Right(str, Len(str) - dig)
End Function
Private Function RTrim2(ByVal str As String, ByVal dig As Integer)
    RTrim2 = Left(str, Len(str) - dig)
End Function

A+ Smile
lumpazepfel
lumpazepfel
Fédérateur
Fédérateur

Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim

Revenir en haut Aller en bas

R?solu Re: Détection de la lanque dans une Macro VBA

Message par Guss_ Mar 17 Nov 2015 - 13:33

Oh, mais c'est très intéressant ce script
surtout le CATBatGenXMLSet.exe qui est utilisé

d'après ce que je vois ici http://catiadoc.free.fr/online/basil_C2/basilXMLSettings.htm
il existe CATBatImpXMLSet.exe qui effectue l’opération inverse, cela pourrait ouvrir quelques possibilités de personnalisations qui étaient impossibles via les objets à disposition concernant les paramètres.

Guss_
Admin
Admin

Messages : 530
Date d'inscription : 08/01/2010

Revenir en haut Aller en bas

R?solu Re: Détection de la lanque dans une Macro VBA

Message par Guss_ Mar 17 Nov 2015 - 15:11

du coup dans l'élant ça pourra en aider certain surement, j'ai créé un petit script Batch (.bat) qui génère les XML des fichier catsettings

Code:
dir /b %APPDATA%\DassaultSystemes\CATSettings\*.catsettings > %TMP%\liste.lst
mkdir convertion
for /f "delims=." %%I in (%TMP%\liste.lst) do "[b]C:\Dassault Systemes\B23\win_b64\code\bin[/b]\CATBatGenXMLSet.exe" .\convertion %%I
del %TMP%\liste.lst

il vous faudra juste modifier le chemin d'installation de de catia
pour moi, c'est C:\Dassault Systemes\B23\win_b64\code\bin
(si quelqu'un connait une variable système qui puisse fournir automatiquement ce chemin, ça pourrait être intéressant )

Le principe du script :
ça liste tout les noms des fichiers cattesttings à convertir dans un fichier liste.lst créé dans le repertoire temporaire utilisateur
ça converti chaque fichier en XML dans un répertoire .\convertion se trouvant là où est le fichier batch (.bat)

Guss_
Admin
Admin

Messages : 530
Date d'inscription : 08/01/2010

Revenir en haut Aller en bas

R?solu Re: Détection de la lanque dans une Macro VBA

Message par lumpazepfel Mar 17 Nov 2015 - 15:19

Bonjour Guss,

Si besoins ci dessous un petit batch qui converti l'ensemble des CATsettings en XML
Il faut adapter les différents chemins à ton installation:
Code:
@echo off
rem ==== Chemin de l'instal. CATIA:
set CATIA=C:\Program Files\Dassault Systemes\B22\win_b64
rem ==== Chemin du fichier d'environnement sans l'extension .txt (!)
set ENVIRONMENT=\\eh.emea.tkse.group\dfs_l\catia_env\Catenv_R15-6_R2012\Cat_Env\CATIA.V5-6_R2012_X64_SMT_TKSE
rem ==== Chemin des CATSettings à exporter:
set SETTINGNAMES=G:\CATSettings_SMT_R22_X64
rem ==== Définition du mode: set M=-admin / set M=-user  (Default)
rem set M=-user
 
echo.
echo Création des fichiers XML à partir %M% Settings
echo définis par l'environement:
if "%M%"=="-admin" ( find /i "CATReferenceSettingPath" "%ENVIRONMENT%.txt"
            ) else ( find /i "SettingPath" "%ENVIRONMENT%.txt" )
echo.
echo Tous les fichiers avec extension *.CATSettings
echo du répertoire : %SETTINGNAMES%
echo sont convertis XML sous %SETTINGNAMES%\xml
echo.
pause

set PATH=%CATIA%\code\bin;%PATH%
cd /d "%SETTINGNAMES%"
mkdir .\xml
for %%I in (*.CATSettings) do CATSTART -env "%ENVIRONMENT%" -run "CATBatGenXMLSet .\xml %%~nI %M%"
pause

La fonction inverse (import) est également possible voir lien:
http://catia-wiki.de/index.php?title=CATBatImpXMLSet
lumpazepfel
lumpazepfel
Fédérateur
Fédérateur

Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim

Revenir en haut Aller en bas

R?solu Re: Détection de la lanque dans une Macro VBA

Message par Guss_ Mar 17 Nov 2015 - 15:50

C'est à peut de choses près la même chose que mon script, à la différence que dans le mien je suppose que les catsettings sont dans le répertoire par défaut soit dans le répertoire utilisateur "\AppData\Roaming\DassaultSystemes\CATSettings"

Le tien permet de contrôler plus de paramètres
Wink

Guss_
Admin
Admin

Messages : 530
Date d'inscription : 08/01/2010

Revenir en haut Aller en bas

R?solu Re: Détection de la lanque dans une Macro VBA

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum