Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

26 Март 2017, 10:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1 2 »   Вниз
  Печать  
Автор Тема: Импорт AutoCAD DXF  (Прочитано 14486 раз)
0 Пользователей и 1 Гость смотрят эту тему.
p2p
Новичок
*
Offline Offline

Сообщений: 5


« Стартовое сообщение: 11 Октябрь 2011, 14:16 »

Подскажите,: каким образом наиболее корректно можно выполнить импорт из AutoCAD в Draw? DXF содержат параметр $DWGCODEPAGE ANSI_1251, но в Draw не отображается кириллица -  либо вообще пусто, либо "±εßδ■ΣσφΦΦ ∩≡σΣ≤±∞ε". Пробовал все версии сохранения AutoCAD, изменял кодовую страницу файлов.
Через SVG теряются слои и линии с толщиной, отличной от 0 преобразуются в площадные объекты. Пробовал копировать, вставить из AutoCAD в Draw, так же теряются русские буквы.
У кого получилось, приведите пожалуйста пример DXF файла с русским текстом.
Записан
p2p
Новичок
*
Offline Offline

Сообщений: 5


« Ответ #1: 19 Октябрь 2011, 09:04 »

путем манипуляций с кодом выяснил, что кириллица вставляется с перекодированием в греческий. Осталось решить как перекодировать в кириллицу и разобраться с процентом сжатия текста (сдвиг возникает).
Код:
Sub DrawGreek2Rus
  dim oObject
  dim sGText as string
  dim sRText as string
  dim sGSymbol as string
  dim sRSymbol as string
  dim aGreek() as integer
  dim aRus() as integer
  aGreek= Split("0, 9786, 9787, 9829, 9830, 9827, 9824, 8226, 9688, 9675, 9689, 9794, 9792, 9834, 9835, 9788, 9658, 9668, 8597, 8252, 182, 167, 9644, 8616, 8593, 8595, 8594, 8592, 8735, 8596, 9650, 9660,32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 8962, 199, 252, 233, 226, 228, 224, 229, 231, 234, 235, 232, 239, 238, 236, 196, 197, 201, 230, 198, 244, 246, 242, 251, 249, 255, 214, 220, 162, 163, 165, 8359, 402, 225, 237, 243, 250, 241, 209, 170, 186,  191, 8976, 172, 189, 188, 161, 171, 187,9617, 9618, 9619, 9474, 9508, 9569, 9570, 9558, 9557, 9571, 9553, 9559, 9565, 9564, 9563, 9488, 9492, 9524, 9516, 9500, 9472, 9532, 9566, 9567, 9562, 9556, 9577, 9574, 9568, 9552, 9580, 9575, 9576, 9572, 9573, 9561, 9560, 9554, 9555, 9579, 9578, 9496, 9484, 9608, 9604, 9612, 9616, 9600, 945,   223,  915,  960,  931,  963,  181,  964,  934,  920,  937,  948, 8734,  966,  949, 8745, 8801,  177, 8805, 8804, 8992, 8993,  247, 8776,  176, 8729,  183, 8730, 8319,  178, 9632, 160",",")
  aRus  = Split("0, 9786, 9787, 9829, 9830, 9827, 9824, 8226, 9688, 9675, 9689, 9794, 9792, 9834, 9835, 9788, 9658, 9668, 8597, 8252, 182, 167, 9644, 8616, 8593, 8595, 8594, 8592, 8735, 8596, 9650, 9660,32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 8962, 199, 252, 233, 226, 228, 224, 229, 231, 234, 235, 232, 239, 238, 236, 196, 197, 201, 230, 198, 244, 246, 242, 251, 249, 255, 214, 220, 162, 163, 165, 8359, 402, 225, 237, 243, 250, 241, 209, 170, 186, 1025, 8976, 172, 189, 188, 161, 171, 187,9617, 9618, 9619, 9474, 9508, 9569, 9570, 9558, 1105, 9571, 9553, 9559, 9565, 9564, 9563, 9488, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103",",")
  for i = lbound(aGreek) to ubound(aGreek)
    aGreek(i)=cint(aGreek(i))
  Next
  With thisComponent
    For i=0 to .DrawPages.Count-1
      For j=0 to .DrawPages(i).Count-1
        oObject=.DrawPages(i).getByIndex(j)
        sGText=oObject.String
        iText=len(sGText)
        sRText=""
        For k=1 to iText
          sGSymbol=Mid(sGText, k, 1)
          sRSymbol=""
          Code = Asc(sGSymbol)
          For l = lbound(aGreek) to ubound(aGreek)
        if Code=aGreek(l) then
          sRSymbol=chr(aRus(l))
          sRText=sRText & sRSymbol
          Exit For
        End if
          Next
          if sRSymbol="" then
            sRText=sRText & sGSymbol
          End if
        Next
        oObject.String=sRText
      Next
    Next
  End With
End Sub
« Последнее редактирование: 19 Октябрь 2011, 13:17 от p2p » Записан
Yakov
Администратор
*
Offline Offline

Сообщений: 2 186


WWW
« Ответ #2: 19 Октябрь 2011, 12:09 »

Доработать Cyrrilic Tools (который работает только с writer и calc)
http://openoffice.vspu.ac.ru/doc/
Записан

p2p
Новичок
*
Offline Offline

Сообщений: 5


« Ответ #3: 19 Октябрь 2011, 13:16 »

Правлю прямо в первом коде. прогресс налицо. Потом оптимизирую.

Yakov, Cyrrilic Tools по ссылке я нашел только страницы описания, переходы. Или нет исходников или меня к ним не пускает.
« Последнее редактирование: 19 Октябрь 2011, 13:19 от p2p » Записан
Yakov
Администратор
*
Offline Offline

Сообщений: 2 186


WWW
« Ответ #4: 19 Октябрь 2011, 15:51 »

Yakov, Cyrrilic Tools по ссылке я нашел только страницы описания, переходы. Или нет исходников или меня к ним не пускает.
Да, там проблема в ссылке (почему - то сервер не работает)
Скачать можно здесь:
http://openoffice.vspu.ac.ru/cyrtools1.3.uno.zip

http://openoffice.vspu.ac.ru/  - главная страница проекта.
« Последнее редактирование: 19 Октябрь 2011, 17:15 от Yakov » Записан

p2p
Новичок
*
Offline Offline

Сообщений: 5


« Ответ #5: 20 Октябрь 2011, 14:31 »

Кодировку восстановил, остается вопрос позиции.
При разбиении вставленного в Draw файла DXF текст смещается вниз-вправо. Происходит это судя по всему из за создания вокруг текста какой то области - врезки. Щелчок на тексте - прямоугольник вокруг текста, щелчок на этом прямоугольнике - контур бОльшей площади. Она примерно в 3-4 раза больше исходного текста с верхним левым углом совпадающим с необходимой позицией текста. Сейчас ищу, что это за область. Вручную (мышкой) она никак не  меняется, то есть её нельзя сжать до размера текста. Если я руками вставляю текст в Draw, то визуально присутствует только один контур.

Поправка: по-эксперементировав, выяснил, что позиция меняется в зависимости от масштаба. Вижу весь лист - уходит вниз вправо, часть схемы - вверх. Причем рамки о которых писал выше могут вообще не совпасть по форме, пропорциям и быть разбросанными по странице. Похоже размер берется на стадии разбиения не из моего файла, а из параметров экрана.
« Последнее редактирование: 20 Октябрь 2011, 14:44 от p2p » Записан
Yakov
Администратор
*
Offline Offline

Сообщений: 2 186


WWW
« Ответ #6: 27 Январь 2012, 18:22 »

Доработанный вариант макроса.
Проверял на перекодировании документа Draw, полученного импортом из Visio (для LibreOffice).
Теперь русские буквы отображаются!!!
 Подмигивающий


Цитата:

Sub DrawGreek2Rus
  dim oObject
  dim sGText as string
  dim sRText as string
  dim sGSymbol as string
  dim sRSymbol as string
  dim aGreek() as integer
  dim aRus() as integer
  aGreek=  Array ( _
         &h20AC, &h0081, &h201A, &h0192, &h201E, &h2026, &h2020, &h2021, _
         &h02C6, &h2030, &h0160, &h2039, &h0152, &h008D, &h017D, &h008F, _
         &h0090, &h2018, &h2019, &h201C, &h201D, &h2022, &h2013, &h2014, _
         &h02DC, &h2122, &h0161, &h203A, &h0153, &h009D, &h017E, &h0178, _
         &h00A0, &h00A1, &h00A2, &h00A3, &h00A4, &h00A5, &h00A6, &h00A7, _
         &h00A8, &h00A9, &h00AA, &h00AB, &h00AC, &h00AD, &h00AE, &h00AF, _
         &h00B0, &h00B1, &h00B2, &h00B3, &h00B4, &h00B5, &h00B6, &h00B7, _
         &h00B8, &h00B9, &h00BA, &h00BB, &h00BC, &h00BD, &h00BE, &h00BF, _
         &h00C0, &h00C1, &h00C2, &h00C3, &h00C4, &h00C5, &h00C6, &h00C7, _
         &h00C8, &h00C9, &h00CA, &h00CB, &h00CC, &h00CD, &h00CE, &h00CF, _
         &h00D0, &h00D1, &h00D2, &h00D3, &h00D4, &h00D5, &h00D6, &h00D7, _
         &h00D8, &h00D9, &h00DA, &h00DB, &h00DC, &h00DD, &h00DE, &h00DF, _
         &h00E0, &h00E1, &h00E2, &h00E3, &h00E4, &h00E5, &h00E6, &h00E7, _
         &h00E8, &h00E9, &h00EA, &h00EB, &h00EC, &h00ED, &h00EE, &h00EF, _
         &h00F0, &h00F1, &h00F2, &h00F3, &h00F4, &h00F5, &h00F6, &h00F7, _
         &h00F8, &h00F9, &h00FA, &h00FB, &h00FC, &h00FD, &h00FE, &h00FF  _
      )
  aRus  =Array ( _
         &h0402, &h0403, &h201A, &h0453, &h201E, &h2026, &h2020, &h2021, _
         &h20AC, &h2030, &h0409, &h2039, &h040A, &h040C, &h040B, &h040F, _
         &h0452, &h2018, &h2019, &h201C, &h201D, &h2022, &h2013, &h2014, _
         &h0098, &h2122, &h0459, &h203A, &h045A, &h045C, &h045B, &h045F, _
         &h00A0, &h040E, &h045E, &h0408, &h00A4, &h0490, &h00A6, &h00A7, _
         &h0401, &h00A9, &h0404, &h00AB, &h00AC, &h00AD, &h00AE, &h0407, _
         &h00B0, &h00B1, &h0406, &h0456, &h0491, &h00B5, &h00B6, &h00B7, _
         &h0451, &h2116, &h0454, &h00BB, &h0458, &h0405, &h0455, &h0457, _
         &h0410, &h0411, &h0412, &h0413, &h0414, &h0415, &h0416, &h0417, _
         &h0418, &h0419, &h041A, &h041B, &h041C, &h041D, &h041E, &h041F, _
         &h0420, &h0421, &h0422, &h0423, &h0424, &h0425, &h0426, &h0427, _
         &h0428, &h0429, &h042A, &h042B, &h042C, &h042D,   &h042E, &h042F, _
         &h0430, &h0431, &h0432, &h0433, &h0434, &h0435, &h0436, &h0437, _
         &h0438, &h0439, &h043A, &h043B, &h043C, &h043D, &h043E, &h043F, _
         &h0440, &h0441, &h0442, &h0443, &h0444, &h0445, &h0446, &h0447, _
         &h0448, &h0449, &h044A, &h044B, &h044C, &h044D, &h044E, &h044F  _
      )
  for i = lbound(aGreek) to ubound(aGreek)
    aGreek(i)=cint(aGreek(i))
  Next
  With thisComponent
    For i=0 to .DrawPages.Count-1
      For j=0 to .DrawPages(i).Count-1
        oObject=.DrawPages(i).getByIndex(j)
        sGText=oObject.String
        iText=len(sGText)
        sRText=""
        For k=1 to iText
          sGSymbol=Mid(sGText, k, 1)
          sRSymbol=""
          Code = Asc(sGSymbol)
          For l = lbound(aGreek) to ubound(aGreek)
           if Code=aGreek(l) then
             sRSymbol=chr(aRus(l))
             sRText=sRText & sRSymbol
             Exit For
           End if
          Next
          if sRSymbol="" then
            sRText=sRText & sGSymbol
          End if
        Next
        oObject.String=sRText
      Next
    Next
  End With
End Sub

Записан

Yakov
Администратор
*
Offline Offline

Сообщений: 2 186


WWW
« Ответ #7: 29 Январь 2012, 23:07 »

Доработанный вариант макроса.
Проверял на перекодировании документа Draw, полученного импортом из Visio (для LibreOffice).
Упаковал в расширение этот вариант.  Подмигивающий
Меню "Перекодировка" отображается только в Draw.
После установки расширения требуется закрыть все приложения  LibreOffice.

[вложение удалено Администратором]
« Последнее редактирование: 30 Январь 2012, 06:49 от Yakov » Записан

p2p
Новичок
*
Offline Offline

Сообщений: 5


« Ответ #8: 30 Январь 2012, 05:56 »

Осталась проблема смещения, и кодировки текст с разделителями для перекодировки UTF-8 в UTF-16. Его можно вычислить и перекодировать:

Код:
Function UTF8_Decode(ByVal sStr As String)
Dim l As Long, sUTF8 As String, iChar As Integer, iChar2 As Integer
For l = 1 To Len(sStr) Step 2
iChar = Asc(Mid(sStr, l + 1, 1))
iChar2 = Asc(Mid(sStr, l, 1))
if not iChar2 and 9576 then
          sUTF8 = sUTF8 & Chr$(((31 And iChar2) * 64 + (63 And iChar)))
  iTest = asc(Chr$(((31 And iChar2) * 64 + (63 And iChar))))
else
          sUTF8 = sUTF8 & Chr$(iChar)
        end if
Next l
UTF8_Decode = sUTF8
End Function
горбатенько и не красиво, латание дыр.
« Последнее редактирование: 30 Январь 2012, 05:58 от p2p » Записан
ape
Ветеран
*****
Offline Offline

Сообщений: 2 402


« Ответ #9: 22 Февраль 2012, 06:46 »

Упаковал в расширение этот вариант. Меню "Перекодировка" отображается только в Draw.
Yakov, осталась 1 проблема: пункт "Перекодировка" в строке меню не переключает своё название на "Recoding" при смене языка Офиса на английский. Думаю, что языковую проблему (для всех доступных языков) можно решить так: "опустить" слово "Перекодировка" значком в стандартную (только для Draw) панель управления.
---------------
Если есть проблемы с пиктограммой, могу помочь в решении этой задачи.
Записан
ape
Ветеран
*****
Offline Offline

Сообщений: 2 402


« Ответ #10: 22 Февраль 2012, 07:38 »

Значок примерно такой. Если есть принципиальное "да", можно доработать и добавить 16х16.

[вложение удалено Администратором]
Записан
Yakov
Администратор
*
Offline Offline

Сообщений: 2 186


WWW
« Ответ #11: 22 Февраль 2012, 14:28 »

Попробую разобраться с меню, тем более что подменю переключает язык при смене языка.
А значок интересный.
Записан

Yakov
Администратор
*
Offline Offline

Сообщений: 2 186


WWW
« Ответ #12: 22 Февраль 2012, 17:29 »

Версия с исправленной локализацией

[вложение удалено Администратором]
« Последнее редактирование: 22 Февраль 2012, 17:54 от Yakov » Записан

ape
Ветеран
*****
Offline Offline

Сообщений: 2 402


« Ответ #13: 23 Февраль 2012, 07:22 »

Yakov, я не спец в СтарБ эйсике, но решение по переносу меню и значкам есть в спец.расширениях Инфра-ресурс - "Вставка из Веб", "Удаление личных данных" и "Мини-калькулятор". Личное мнение - расширение Н.Гарбуза "Мини-калькулятор" подходит не только по лицензии, но, главное, в качестве образца по использованию IMAGE-ресурсов - он хорошо продумал этот вопрос. Обратите внимание на иконку "22х22". Она, скорее всего, потребуют прозрачной окантовки до размера 26х26 или 24х24. Это надо смотреть по "Танго". Маленький значок (16х16) также вырезается с окантовкой, он отцентрован.

[вложение удалено Администратором]
« Последнее редактирование: 23 Февраль 2012, 07:44 от ape » Записан
Yakov
Администратор
*
Offline Offline

Сообщений: 2 186


WWW
« Ответ #14: 23 Февраль 2012, 08:30 »

Лучше всего ориентироваться на расширения, которые можно сделать с помощью
BasicAddonBuilder.
http://myooo.ru/content/view/137/32/
Но он не всегда правильно видит требуемый макрос, который нужно экспортировать.
Зато можно попробовать со стандартными и посмотреть результат.
Записан

Страниц: 1 2 »   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!