язык интерфейса

Программирование для CATIA.

язык интерфейса

Сообщение illidge » 28 авг 2013 16:17

Добрый день!
Как можно узнать язык интерфейса(русский/английский) в котором работает CATIA? Какая-то функция, прием... Это необходимо при вызове команд Catia.StartCommand("..."), для того чтобы CATIA не ругалась, что не знает такой команды.
illidge
Новичок
Новичок
 
Сообщения: 11
Зарегистрирован: 10 июл 2013 14:01

Re: язык интерфейса

Сообщение illidge » 29 авг 2013 15:48

Проблема отчасти решилась. Косвенно язык можно узнать по наличию русских букв в списке параметров детали.
param_list.item(i).name Like "*[а-яА-Я]*"
illidge
Новичок
Новичок
 
Сообщения: 11
Зарегистрирован: 10 июл 2013 14:01

Re: язык интерфейса

Сообщение Artem » 29 авг 2013 17:17

animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Re: язык интерфейса

Сообщение VladimirK » 02 сен 2013 10:28

Здравствуйте!
Может быть кому-то пригодится ещё вариант определения языка.

Опытным путём определил, что код языка содержится в файле FrameGeneral.CATSettings в одном байте.
Это 31-й байт после строки "UserInterfaceLanguage".
Шестнадцатеричные значения байта для некоторых языков следующие:
русский - E5, английский - CA, немецкий - 5A, французский - 56, итальянский - C2.

Также недавно определял язык интерфейса путём считывания кода языка из файла FrameGeneral.xml, полученного программно утилитой CATBatGenXMLSet.exe.
Вот функция на VB6, возвращающая язык интерфейса в виде строки:
Код: Выделить всё
Public Function GetLanguage() As String
    Dim CatApp As INFITF.Application
    Dim GenString As String
    Dim XmlFile As Integer
    On Error Resume Next
    Set CatApp = GetObject(, "CATIA.Application")
    GenString = """" & CatApp.Path & "\CATBatGenXMLSet.exe""" & " """ & App.Path & """" & " FrameGeneral"
    CatApp.SystemService.ExecuteProcessus GenString
    On Error Resume Next
    Err.Clear
    XmlFile = FreeFile
    Open App.Path & "\FrameGeneral.xml" For Input As #XmlFile
    If (Err.Number <> 0) Then
        GetLanguage = "Error"
        GoTo EndOpen
    End If
    ' иначе - считывание языка из файла FrameGeneral.xml
    Dim XmlString As String
    Do While Not EOF(XmlFile)
        Line Input #XmlFile, XmlString
        If InStr(1, XmlString, "UserInterfaceLanguage", VbCompareMethod.vbTextCompare) > 0 Then
            Line Input #XmlFile, XmlString
            Exit Do
        End If
    Loop
    Dim s1 As Integer
    Dim s2 As Integer
    Dim codeStr As String
    s1 = InStr(1, XmlString, "<Value>", VbCompareMethod.vbTextCompare)
    If s1 > 0 Then
        s1 = s1 + Len("<Value>")
        s2 = InStr(s1, XmlString, "</Value>", VbCompareMethod.vbTextCompare)
        If s2 > 0 Then
            codeStr = Mid(XmlString, s1, s2 - s1)
            Select Case codeStr
                Case 0
                    GetLanguage = "EnvironmentLanguage"
                Case 714
                    GetLanguage = "English"
                Case 598
                    GetLanguage = "French"
                Case 602
                    GetLanguage = "German"
                Case 706
                    GetLanguage = "Italian"
                Case 807
                    GetLanguage = "Japanese"
                Case 608
                    GetLanguage = "Korean"
                Case 741
                    GetLanguage = "Russian"
                Case 1828
                    GetLanguage = "SimplifiedChinese"
                Case Else
                    GetLanguage = "UnknownLanguage"
            End Select
        End If
    End If
EndOpen:
    Close #XmlFile
    Err.Clear
    If CatApp.FileSystem.FileExists(App.Path & "\FrameGeneral.xml") Then CatApp.FileSystem.DeleteFile (App.Path & "\FrameGeneral.xml")
End Function
VladimirK
Новичок
Новичок
 
Сообщения: 63
Зарегистрирован: 15 ноя 2011 21:44


Вернуться в CAA-RADE

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3