Как в автокаде поменять кодировку текста
Вопрос в следующем: в автокаде есть строка DBText в кодировке CP1251 например "Рек"
Коды символов в кодировке CP1251 соответственно:
Р - 208
е - 229
к - 238
Считываю строку
.
Entity tempEntity = (Entity)MyTransaction.GetObject(id, OpenMode.ForWrite, false);
textentity = (DBText)tempEntity;
String s = textentity.TextString;
. и теперь при попытке получить код символа с (int)s[i] . получаю
Р - 1056
е - 1077
к - 1082
. т.е. он выдает уже коды в UTF, хотя я не делал преобразования.
. Подскажите кто сталкивался, на каком этапе идет преобразование CP1251->UTF и как получить коды символов родной кодировки строки (CP1251)
. Подскажите кто сталкивался, на каком этапе идет преобразование CP1251->UTF и как получить коды символов родной кодировки строки (CP1251)
Родная кодировка для AutoCAD - это как раз Unicode. Именно в Unicode AutoCAD хранит строки в dwg-файле. Только передавая их в lisp он производит перекодировку в последовательность байт в кодировке CP1251 (или в другую в зависимости от региональных установок Windows).
Родная кодировка для AutoCAD - это как раз Unicode. Именно в Unicode AutoCAD хранит строки в dwg-файле. Только передавая их в lisp он производит перекодировку в последовательность байт в кодировке CP1251 (или в другую в зависимости от региональных установок Windows).
Я понимаю что родная кодировка Unicode. По идее для автокада это означает лишь что на код символа выделено 2 байта но соответствие кодов символов таблице Unicode необязательно. Дальше должна идти строка
В CP1251: DO E5 EA
В Unicode должно храниться так: 00DO 00E5 00EA
дальше из файла шрифта shx(ESKDW.SHX), по данным кодам берутся изображения и вставляются в автокад:
*000D0,12,xd0
8,(0,18),070,03E,04C,03A,078,2,08E,080,0
*000E5,15,xe5
2,080,1,068,026,084,022,040,02E,04C,088,2,06E,080,0
*000EA,14,xea
0C4,2,08C,1,032,5,052,6,8,(5,-7),2,060,0
.
А то, что он выдал 0420 0435 043A говорит о переводе символов строки из одной кодировки в другую. Т.е. автокад, винда или шарп автоматом распознало кодировку символов и перевели их в уникод.
. если бы изначально строка хранилась как 0420 0435 043A . то как он брал бы символы из шрифта, если там коды заканчиваются 000FF
Добрый день. Проблема с мтекстом. На работе работал с файлом, добавил текстовое оформление. Работал в 2008 Ен. Открыл дома - на месте некоторых слов - кракозябры. Более того, встречается такая надпись " Ïëàí первого ýòàæà
ñ ñèñòåìîé отопления"
изменения character set эффекта не дала.
Поглядев на этот текст внимательнее заметил вот что
"Command: (entget(car(entsel)))
Select object: ((-1 . ) (0 . "MTEXT") (5 . "12B698")
(102 . "
) (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 .
"РАмка") (370 . 9) (100 . "AcDbMText") (10 404586.0 -64450.1 0.0) (40 . 400.0)
(41 . 5190.0) (46 . 0.0) (71 . 5) (72 . 5) (1 . "Èíä Roman|b0|i0|c204|p18;и>âèäóàëüíûé æèëîé äî\U+00EC") (7 . "ARCH") (210 0.0 0.0
1.0) (11 1.0 0.0 0.0) (42 . 5189.33) (43 . 1191.25) (50 . 0.0) (73 . 1) (44 .
1.0))
" НЕ понял откуда в обычном тексте ACAD_XDICTIONARY, и почему добавляются юникодовские знаки? И что сделать чтобы подобных проблем не возникало? Стиль текста был на основе нью романа.
--- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
Появилась та же проблема. Честно попробовал программу Ривилиса. То ли что не так сделал, то ли у меня другой случай. Надеюсь на помощь, сам уже ослаб разумом:
Огурец, в какой программе выполнен чертеж?
Non Autodesk DWG. This DWG file was saved by a software application that was not developed or licensed by Autodesk. Autodesk cannot guarantee the application compatibility or integrity of this file. |
Честное слово - не имею ни малейшего представления. В таком виде получил от заказчиков. Самое непонятное: один раз, неделю назад, он у меня (как утверждают коллеги, себе я уже не верю) открылся со всеми текстами.
__________________ --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
Отсутствует где? В папке C:WINDOWS/Fonts/ его действительно нет. А при редактировании мультитекстов - ЕСТЬ .
Приветствую.
Новоиспеченный AutoCad 2013 En наряду с новшествами преподнес неожиданную проблему, при использовании модулей которые исправно работали на 2009-10-11-12 происходит сбой с кодировкой.
Для примера приведена работа вот этого модуля.
Система Win 7 х64
Помогаю, кому делать нечего.
Балка на балку, кирпич на кирпич.
E-degtyarev,
Не помогло. Да и не похоже ,что в системе дело, со старыми то En версиями AutoCada работают исправно.
Проверено на двух разных машинах.
программист, рыцарь ObjectARX
Удар под дых лиспописателям. Для того, что бы использовать файлы dcl в AutoCAD 2013 приходится их сохранять в UTF-8. В предыдущих версиях AutoCAD этот формат не воспринимается.
Удар под дых лиспописателям. Для того, что бы использовать файлы dcl в AutoCAD 2013 приходится их сохранять в UTF-8. В предыдущих версиях AutoCAD этот формат не воспринимается.
Спасибо за информацию. Если у моих юзеров в будущем вылезет такая проблема с 2013-м - буду знать в чём дело.
Offtop: А сколько ударов ещё может предстоять в будущем (в виду перекроя ядра системы). Один Autodesk знает.
программист, рыцарь ObjectARX
Отправил этот баг в Autodesk. Посмотрим что они скажут.
P. S.: Кстати, тема создана явно не в том разделе. Не говоря о её своевременности, т.к. официального анонса AutoCAD 2013 еще не было, о чем Хмурый и намекнул.
20 марта получил от РПК приглашение на семинар: ". На семинаре будут представлены новые версии популярных продуктов для архитектурного проектирования и визуализации: AutoCAD Architecture 2013, Autodesk Revit Architecture 2013, 3ds Max Design 2013. Рассмотрены их основные возможности и новый функционал."
Не говоря о её своевременности, т.к. официального анонса AutoCAD 2013 еще не было, о чем Хмурый и намекнул.
Как раз таки своевременно, т.к. в этом случае существует некоторая надежда, что в release-версии проблема будет устранена. Если бы проблема была выявлена уже после официального выхода 2013-й, то скорее всего пришлось бы ждать выпуска SP. Предварительную версию для того и раздают, чтобы выявить баги. Хотя вопрос, конечно же, следовало задать в ADN, а уж никак не на двг.ру.
программист, рыцарь ObjectARX
ГеКИР, Это "анонс анонса". И РПК как всегда "впереди планеты всей". Но видимо одумались и этот анонс со своего сайта убрали.
Как раз таки своевременно, т.к. в этом случае существует некоторая надежда, что в release-версии проблема будет устранена. |
Шансов никаких. Release-версия (английская) уже готова. И проверял я именно с ней.
Автор:
Проблема
При открытии чертежа в AutoCAD текст выглядит некорректно. Текст может выглядеть по-другому, если один и тот же чертеж открыт в разных системах.
- Текст отображается другим шрифтом.
- Текст может казаться тусклым до увеличения масштаба.
- Текст не вписывается в пространство или рамку, в которые он был помещен.
- Если оставить пробел, то текст будет отображаться в том месте, где он должен быть.
- Текст может выглядеть как типовой шрифт или шрифт в стиле блока.
- Текст может перекрывать другой текст.
- Текст отображается с поврежденными буквами или символами.
- Текст может отображаться со смещением и/или в другом масштабе или с другим типом линий.
- Многострочный текст.
- Текст.
- Размеры.
- Атрибуты.
- Блоки атрибутов.
- Метки.
- Точки COGO.
Причины:
- AutoCAD заменяет шрифт, который не найден или не установлен в операционной системе или в папке шрифтов AutoCAD.
- Установленный в системе шрифт поврежден и не может быть правильно прочитан в AutoCAD.
- Этот шрифт устанавливается в системе и может использоваться другими программами, но является шрифтом OpenType с контурами Postscript.
- Для использования в AutoCAD шрифта, установленного в системе, необходимо использовать контуры TrueType. Проверьте свойства шрифта, чтобы определить, так ли это.
- Это может произойти независимо от того, найден исходный шрифт или нет. В некоторых случаях замена может не произойти, и текст не отображается.
Решение
Установка отсутствующих шрифтов
- В командной строке AutoCAD введите СТИЛЬ.
- Просмотрите текстовые стили, чтобы узнать, какие шрифты отсутствуют.
- Установите отсутствующие шрифты, скопированные с другого компьютера или повторно загруженные из исходного файла (см. раздел Установка шрифта для AutoCAD).
Примечание. Если шрифт не может быть получен, необходимо переопределить используемые стили текста другим шрифтом.
Переустановить поврежденные шрифты
- Убедитесь, что шрифт можно скопировать из работающей системы или загрузить повторно из исходного файла.
- Перейдите в папку шрифтов Windows, открыв "Панель управления" -> "Внешний вид и персонализация" -> "Шрифты", или перейдите в раздел "Параметры Windows 10" (см. примечание ниже).
- Выберите измененный шрифт и удалите его.
- Скопируйте шрифт с другой рабочей станции или скачайте его снова и установите на соответствующей системе.
- Если шрифт не может быть получен, необходимо переопределить используемые стили текста другим шрифтом.
- Чтобы удалить и установить шрифты в Windows 10, перейдите в раздел "Параметры" > "Персонализация" > "Шрифты"
Проверить подстановку шрифтов
Simplex.shx — это шрифт по умолчанию, который часто используется в AutoCAD, если не удается найти нужный шрифт. Чтобы проверить это, откройте чертеж, а затем нажмите клавишу F2, чтобы открыть текстовое окно. Здесь показана подстановка шрифтов.
Повреждение файла подстановочного шрифта
Если шрифт simplex.shx поврежден и отображается некорректно (независимо от того, является ли он нужным шрифтом или AutoCAD использовал его для замены другого), скопируйте файл simplex.shx из рабочей системы в следующие папки:
- C:\Autodesk\AutoCAD 20xx\Fonts
- C:\Users\ \AppData\Roaming\Autodesk\AutoCAD 20xx\ \enu\Support
Проверка параметров соответствия шрифтов
Проверьте файл соответствия шрифтов AutoCAD, чтобы убедиться, что в нем неправильно заменяются шрифты. Путь к файлу acad.fmp можно найти в разделе "Параметры" > "Файлы" > "Текстовый редактор", "Имена файлов словарей и шрифтов" > "Файл соответствия шрифтов".
- Следуя этому пути, перейдите к файлу acad.fmp в операционной системе и откройте его в текстовом редакторе, например в Блокноте.
- Сравните файл с файлом acad.fmp из рабочей системы.
- При необходимости измените шрифт вручную.
- Скопируйте и замените файл acad.fmp.
Примечание. Замена шрифтов, указанная в файле соответствия шрифтов, выполняется даже в том случае, если в системе найден шрифт, указанный в текстовом объекте. Это ожидаемое поведение.
Вставить в новый файл
- Создайте новый чертеж.
- Используйте команду ВСТАВИТЬ или КЛВСТАВИТЬ, чтобы вставить файл с неверным шрифтом.
- Сохраните новый файл и используйте его в дальнейшем.
Поврежденные объекты многострочного текста
- Выберите неисправный объект.
- Щелкните правой кнопкой мыши и выберите "Редактирование многострочного текста".
- Щелкните текст правой кнопкой мыши и выберите "Выбрать все".
- Щелкните правой кнопкой мыши текст и выберите "Удалить форматирование" > "Удалить форматирование".
- При необходимости примените форматирование повторно.
Объекты, созданные в Civil 3D
Объекты, созданные в Civil 3D, можно просматривать и выводить на печать только в других версиях AutoCAD. Изменение графических свойств текста в этих объектах может быть выполнено только в Civil 3D.
Здесь вы можете скачать документацию и программы для САПР AutoCAD, PCAD, 3DS, Inventor, Pro/E, Solidworks и других CAD CAM CAE EDA GIS
Советы по адаптации AutoCAD.
Поставляемые с AutoCAD R13 SHX шрифты содержат кириллицу (но не все). Определить SHX с кирилицей можно, если в диалоговом окне (команда DDSTYLE) нажать кнопку CharSet и далее четыре раза на Next. Если на этой (5-ой) странице вы увидите русские буквы, значит этот шрифт можно использовать под кодовой страницей ansi_1251.
Открываем файл acad.ini и в разделе [General] после строки PrototypeDwg=acad.dwg добавляем две новые строки:
CodePage=ansi_1251
Language=ru
Теперь заходим в ACAD и набираем в командной строке SYSCODEPAGE. Если все сделано правильно, значением переменной будет ansi_1251. Теперь можем писать шрифтом SHX (разумеется из этой версии) ПО РУССКИ.Источник - Jukov Vladimir (RU.ACAD)
Как конвертировать текст в чеpтежах из cp866 в cp1251 и обpатно?
Hасколко показал опыт, шрифты 12 и 13,14 ACADа отличяются кодовой страницей: в 12 ACADе dos866, а в 13 и 14 ANSI_1251, что прописывается DXF файле начиная с 12 версии.
14 ACAD проверяет при загрузке DXF файла какая там кодовая страница и сам автоматически переводит весь текст в файле в свою (обычно ANSI_1251, иногда ANSI_1252), так, что если в 14 ACADе такие же шрифты как и в 12, то все чертежи совершенно не изменяются. Для этой цели, к примеру, можно использовать следующие скрипты:
Если нету таких шрифтов то их можно переделать из имеющихся для 12. Для этого надо переделать *.SHX файлы в *.SHP программой типа SHX2SHP или подобного плана.А потом поменять в шрифте кодировку программой SHP или подобной. Что касается конвеpтации из R14 в R12 - попpобуте пpи записи чеpтежа пpолистать типы записываемых файлов. 12-й там есть.Второй способ (только для R13)
Открываем файл acad.ini и делаем то же, что в Действии 1, только вместо ansi_1251 ставим dos866:
CodePage=dos866
Language=ru
Далее заходим в ACAD, проверяем SYSCODEPAGE и если все нормально (показывает dos866) загружаем рисунок выполненый в DOS версии ACAD 12. Все читаемо, но не редактируемо, потому идем дальше. Сохраняем рисунок командой SAVE (For dummies only: помните, он сохраняется как DWG версии 13, кому нужно чтобы сохранился оригинал версии 12 используйте другое имя). Выходим из ACADа и в файле acad.ini опять ставим ansi_1251. Заходим в ACAD (кому не надоело) и через диалог DDSTYLE подставляем для каждого стиля текста шрифты с кириллицей из комплекта ACAD13 (одноименные должны сами подставиться). Теперь все читаемо и редактируемо. Если не нашлось одноименного шрифта в версии 13, то при замене другим возможно нарушение гармонии чертежа из-за различий пропорций и начертаний. Тут уж надо подбирать. Если же в ACAD 12 RUS вы пользовались родными шрифтами из списка:
COMPLEX.SHX
GOTHICE.SHX
GOTHICG.SHX
GOTHICI.SHX
ITALIC.SHX
ITALICC.SHX
ITALICT.SHX
MONOTXT.SHX
ROMANC.SHX
ROMAND.SHX
ROMANS.SHX
ROMANT.SHX
SCRIPTC.SHX
SCRIPTS.SHX
SIMPLEX.SHX
TXT.SHX
то замена произойдет автоматически и безболезненно, т.к. эти шрифты имеются в формате UNICODE ACAD13. Если вам не хочется постоянно редактировать acad.ini acad.ini в директории ACADа (обычно R13) создаем два каталога, например CP1251 и CP866. В каждый из этих каталогов копируем исходный файл acad.ini и acadnt.cfg. С файлом acad.ini в каталоге CP1251 выполняем Действие 1, а с одноименным файлом в каталоге CP866 Действие 2. В Win 95 создаем три ярлыка для файла acad.exe с именами, например ACAD13 CP1252, ACAD13 CP1251, ACAD13 CP866. В свойствах первого ярлыка в строке "Файл" ничего не меняем, там должна быть надпись типа C:\R13\WIN\acad.exe. Эта строка для второго ярлыка должна выглядеть так C:\R13\WIN\acad.exe /c C:\R13\CP1251. А для третьего как вы догадались: C:\R13\WIN\acad.exe /c C:\R13\CP866. Hе пропустите ключ /c. Теперь соответствующим ярлыком запускается ACAD с соответствующей кодовой таблицей.С помощью утилиты Dbtrans из bonus utilits AutoCAD R14. Утилита находится в каталоге \bonus\cadtools\ корневого каталога AutoCAD и содержит
dbtrans.arx
dbtrans.cpm
dbtrans.hlp
dbtrans.dclЗапускаем АКАД. Далее заходим в TOOLS / LOAD APPLICATION и подгружаем этот dbtrans. Загружаем чертеж созданный в 10-12 АКАДе
Даем в коммандной строке комманду : dbtrans и видим табличку разделенную на две половины. В левой панели выбираем исходную кодировку а в правой - результирующую.
Что ? а экране куча непонятных символов ? Это от того что АКАД не руссифицирован :) у так руссифицируйте его, заменив фонты 14 на фонты из 12 АКАДа (в этом случае правда мы не сможем ничего по русски написать в чертеже). Поэтому целесообразно произвести конвертацию шрифтов 12-го AutoCAD в 14-й то есть *.SHX файлов в *.SHP программой типа SHX2SHP или подобной, а затем с помощью программы SHP поменять кодировку.
Проблема с dbtrans поставляемой с английским AutoCAD 14 заключается в том, что там отсутствуют кодовые страницы DOS (866 Cyrillic) и ANSI 1251 (Microsoft Windows Rus). dbtrans.cpm содержащий эти кодовые страницы находится здесь. Начиная с версии 12 в чертеже может быть явно прописана кодовая таблица. Если вы загружаете чертеж с явно указанно переменной DWGCODEPAGE типа dos 866 или еще какие-нибудь то АКАД переведет в строки CIF/MIF что в последующем не поддается перекодировке, а если в переменной DWGCODEPAGE указанна неопределенная кодовая страница типа Undefenid или Dummy или ANSI 1251 то АКАД сделает из текста вопросики (АКАД открывая старый чертеж и видя там такую кодовую страницу пишет вместо нее ANSI 1251), после чего мы можем менять шрифты указанным выше способом. Для изменения кодовой страницы чертежа доступна программа AutoCAD Code Page Manipulation Utility.
Источник - Stas Palubinskas, Jukov Vladimir, Yaroslav Zhvakin, (RU.ACAD)
От Victor Sekachev: 10to14.zip
Файл alt_win содержит таблицу перекодировки, что позволяет делать любые перекодировки (866 в 1251,1251 в 866 и т.д.),достаточно только подменить сам файл нужным.
От Alexey Khrukin : coder.zip
- Текст
- Атрибуты (включая подсказки и имена)
- Определения атрибутов
- значения размеров
Можно также осущетвлять конвертацию текста в AutoCAD с помощью внешних (не входящих в AutoCAD) программ. Рассмотрим эту возможность на примере встроенного редактора известного менеджера файлов FAR.
- Загружаем старый чертеж в AutoCAD.
- Загружаем функцию Autolisp позволяющую импортировать текст в внешний файл
- Запускаем FAR и осущетвляем конвертацию текста в нем в требуемую кодировку
- Загружаем функцию Autolisp позволяющую экспортировать текст в из внешнего файла в чертеж
Пример функции, строки меню для нее и файла внешних команд AutoCAD находится здесь.
Для тестирования программного обеспечения от Autodesk был принят стандарт Британского института стандартов (BSI), основные принципы которого таковы:
- Никакое значение текущей даты не должно привести к прерыванию операции.
- Использующие системную дату функции должны вести себя корректно как до так в течении и после 2000 года.
- Во всех интерфейсах и хранилищах данных столетие любой даты должно быть определено или явно, или с использованием однозначного алгоритма, или правилом логического вывода.
- Год 2000 должен признаться как високосный год.
При этом использовалась методология, включающая архитектурный обзор, обзор кода и испытание сдвигом времени.
Архитектуный обзор заключается в обзоре как используется дата на уровне архитектуры программы. Специальное внимание уделяется тому, как дата представляется и управляется внутри программы, а также ее трансляция между внутренним представлением и внешним интерфейсом.
Обзор кода состоит в проверки логики представления даты внутри программы.
Испытание сдвигом времени заключается в установки системной даты на определенные значения в 2000 году. Затем дата устанавливается в 1999 год, что бы проверить стабильность ее предидущей работы.
Далее осущетвляется закрытие и рестарт системы, ее инсталяция и деинсталяция в 2000 году.
Преобразование, использование и печать даты в программных продуктах Autodesk зависит от представления даты в операционной системе, которую использует данная программа. Поэтому для информации о решении проблемы 2000 года в Microsoft Windows следует обращатся на сайт Microsoft, посвященный 2000 году. Если используется другая операционная система, следует обратиться к разработчику данной операционной системы.
Некоторые компьютеры имеют проблему, состоящую в сбросе системной даты к 1980 году, при наступлении 2000 года. Для решения этой проблемы необходимо обратиться к производителю данного компьютера.
Перечень программных продуктов Autodesk и резултатов их тестирования по проблеме 2000 года находится здесь. Каждый программный продукт может быть:
- Соответствовать стандарту BSI;
- Соответствовать стандарту BSI c незначительными проблемами (проблемы включаются в комментарий к оценке совместимости);
- Не соответствовать стандарту BSI;
- Будет проверен - испытание на соответствие стандарту BSI не закончены;
- Не будет проверен - программа не была проверенна и не будет проверенна на соответствие стандарту BSI.
Рекомендуется переодически посещать сайт Autodesk что бы иметь возможность получить исправления к программам по проблеме 2000 года после того, как они станут доступными.
Hадо просто расставить буквы русского алфавита по соответствующим местам в .ttf шрифте.
Принцип работы - когда ты пишешь шрифтом .shx , то в окне мультитекс- тового редактора отображается .ttf шрифт, поставленный в соответствие файлом mtextmap.ini. Если соответствие не задано прямо, используется прокси- подстановка, т.е. шрифт proxy наиболее подходящий по размеру символов (с точки зрения ACADa). Проблема в том, что кириллица в тех шрифтах, что идут в комплекте поставки есть, на стоит не там, где этого требует Юникод. Решение проблемы - в файле mtextmap.ini вместо последнего нуля (из четырех в равенстве) поставить 204, а в соответ- ствующих .ttf шрифтах - расставить символы кирилицы на предусмотренные Юникодом позиции. И еще желательно в Винде указать использование для этих шрифтов Кириллической страницы, поскольку Acad при установке указывает Западноевропейскую.
Microsoft сообщает, что ряд приложений, включая AutoCAD 2000/2002/2004, некорректно работает с Windows XP SP2. Среди других усовершенствований в области безопасности SP2 дает возможность использовать Windows Firewall, который блокирует нежелательные подключения к вашему компьютеру. Во многих случаях Firewall предупреждает, что заблокированная им программа пытается получить доступ к компьютеру, однако пользователь AutoCAD должен вручную открыть порт 21, предназначенный для обзора проектов с использованием FTP-вьюера (File Open Dialog box), когда удаленный FTP-сервер работает с включенным Firewall. Чтобы вручную разблокировать этот порт, необходимо сделать следующее:
Читайте также: