Архитектору и проектировщику|Тепло- и звукоизоляция URSA.RU
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Добавление символов в шрифт

Добавление символов в шрифт

Ответ
Поиск в этой теме
Непрочитано 19.01.2006, 13:18
Добавление символов в шрифт
Александер
 
Регистрация: 15.06.2005
Сообщений: 184

Думаю я не первый кто задумался об этом.
Проблема такая:
использую стандартный шрифт автокада ROMANS всем устраивает, вот только не хватает нескольких символов, № например и прочие, как их можно добавить в стандартный шрифт ROMANC.
Просмотров: 59282
 
Непрочитано 16.02.2006, 05:55
#41
Залётный


 
Регистрация: 15.04.2005
Сообщений: 245


Цитата:
Сообщение от ===AAA===
Чтобы облегчить жизнь тому, кто решит помочь, прикладываю файл.
Красным - как это должно выглядеть (текст разбит на линии, так
что видите именно то же самое, что и мы).

Черным - как оно выглядит (со знаками вопроса).

russ_old - старый фонт. С ним все классно. Знаков ? нет.
russ - новый фонт. С ним проблемы.

Открывать в АСАД-2004
[ATTACH]1139984899.zip[/ATTACH]
Я не вижу в чём проблема. Да, у тебя в файле вопросительные знаки но я не могу их воиспроизвести сам. Когда я ввожу текст в окне редактирования всё работает нормально:
%%178 степень 2
%%179 степень 3

%%189 степень 2 (как я понимаю, это для совместимости со старым шрифтом)
%%190 степень 3 (как я понимаю, это для совместимости со старым шрифтом)

\U+00B2 степень 2
\U+00B3 степень 3

и даже Alt+0178 (0179) (0189) (0190) у меня тоже нормально работают с твоим шрифтом несмотря, что Alt левый.

Мне кажется, что они изображаются немного высоковато и крупновато, но это чисто эстетическое и не влияет на правильность прочтения текста.

В чём проблема? Нормальный фонт.
Залётный вне форума  
 
Непрочитано 16.02.2006, 08:03
#42
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 202


Привет!

Ну, хоть скрины прикладывай. :-)

Последняя попытка.

0. Создаем отдельную папку и распаковываем в нее файлы
*.shx и 1.dwg (Надеюсь, собственных russ.shx на Вашем
ПК нет).
1. Прямо в "проводнике" щелкаем мышкой по 1.dwg. Файл
открылся. Надеюсь, что в АСАД-2004, но и в 2002 пойдет,
проверял.
2. В "рамочке" вопросы видны? У меня видны. Это плохо.
3. Закрываем АКАД.
4. Переименовываем russ_old.shx на russ.shx. (При этом
первоначальный russ.shx затирается, но не беда - он
есть в архиве).
5. Снова п. 1.
6. В "рамочке" вопросы видны? НЕТ! Там степени 2 и 3.
Это хорошо. Пусть высоковато и крупновато - так уж их
нарисовали.

Если у Вас в пункте 2 видны не вопросы, а "степени", то это
очень интересно. Значит, у нас в реестрах или еще где
прописаны какие-то разные кодовые страницы или что-то
в этом духе. Надо выяснить, что - и проблема закрыта.

Если все же в п. 2 видны вопросы, то смотрим заголовки
файлов *.shx.

russ_old.shx - старый, не юникодовский.
russ.shx - новый, юникодовский.

Надо сделать такой _юникодовский_ russ.shx (только в части
степени 2 и 3), чтобы выполнялся п. 6, т.е. чтобы вопросы не
отображались.

То VVA: за ЛИСПих спасибо, но пока еще не угасла
надежда со всеобщей помощью победить фонт. :-)
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 16.02.2006, 10:17
#43
Геннадий aka PG

Машиностроение, Проектирование
 
Регистрация: 15.09.2003
Москва
Сообщений: 1,109
<phrase 1=


После добавления чего в шрифт, считаю, будет некорректо сохранять его под тем же именем.
О шрифтах еще глянь тут
http://cadhlp.kulichki.com/pdshx.htm
__________________
С уважением,
Геннадий aka PG
Геннадий aka PG вне форума  
 
Непрочитано 16.02.2006, 10:35
#44
KSI


 
Регистрация: 19.03.2004
Калининград
Сообщений: 1,842


Да, похоже в файлах, выполненна конвертация текста, и теперь единственный способ - программный поиск и замена символов со знаком вопроса на степени. Или определить код этого символа и его описать как спепень в файле шрифта. К сожалению, сейчас не смогу этим заняться.
KSI вне форума  
 
Непрочитано 16.02.2006, 11:13
#45
Chapay


 
Регистрация: 15.08.2005
Сообщений: 35
<phrase 1=


можно ли ввести такую вещь?
например пишу: %%с 12%%n-0.062
и он мне пишет @12 ?
-0.062
в шрифте?
Chapay вне форума  
 
Непрочитано 16.02.2006, 11:32
#46
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 202


Привет!

>Или определить код этого символа и его описать как спепень в файле шрифта.

ВО!!! Это-то я и хочу! :-)))
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 16.02.2006, 11:55
#47
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 202


Привет!

>После добавления чего в шрифт, считаю, будет некорректо
>сохранять его под тем же именем.

Отчасти - да, а отчасти - нет. Мое мнение - если в шрифт только
добавляется что-то, то почему бы и нет. Иначе - имен не напасешься. :-)

>О шрифтах еще глянь тут
>http://cadhlp.kulichki.com/pdshx.htm

Глянул. Там все о тех шрифтах, которые в моих постах фигурируют,
как "старые". С ними-то проблем нет. Проблема с новым, юникодовским,
да и то только с двумя символами. Или я не туда гляжу?
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 16.02.2006, 13:33
#48
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,801
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Раз переходите на новый шрифт, может проще обработать все файлы и забыть о проблеме, тем более похоже, что она не решается правкой shp.

Код:
[Выделить все]
;;;CADALYST 03/05 Tip2023: PurgeFiles.lsp
;;; [c]2004 Andrzej Gumula, Katowice, Poland
;;; e-mail: a.gumula@wp.pl
;;; This routine purge dwg files from selected folder
(vl-load-com)
(defun layren (/ vla txt sstext lays lay lock axss)
  (setq lays (vla-get-layers File))
  (setq axss (vla-get-activeselectionset File))
  (vla-clear axss)
  (vla-select   axss  acselectionsetall   nil   nil
    (vlax-safearray-fill (vlax-make-safearray vlax-vbinteger '(0 . 0)) '(0))
    (vlax-safearray-fill 
        (vlax-make-safearray vlax-vbvariant '(0 . 0)) '("TEXT")))
  (vlax-for vla axss
    (setq lay (vla-item lays (vla-get-layer vla)))
    (if	(= (vla-get-lock lay) :vlax-true)
      (progn (vla-put-lock lay :vlax-false)(setq lock (cons lay lock))))
    (setq txt (vla-get-textstring vla))
    (mapcar
      (function (lambda	(kod)
       (while (VL-STRING-POSITION kod txt)
          (setq txt (VL-STRING-SUBST
             (strcat "%%" (itoa kod)) (chr kod) txt )))))
      (list 189 190))
    (if	(and (vlax-read-enabled-p vla)
	     (vlax-write-enabled-p vla)
	)
      (vla-put-TextString vla txt)))
  (if lock (foreach x lock (vla-put-lock x :vlax-true))))

(defun c:CH23 (/ FilesList SubDir Files)
  (defun GetFolder (/ Dir Item Path)
    (cond
      ((setq Dir (vlax-invoke
		   (vlax-get-or-create-object "Shell.Application")
		   'browseforfolder
		   0
		   "Выберите папку с DWG файлами:"
		   1
		   ""
		 ))
       (cond
	 ((not
	    (vl-catch-all-error-p
	      (vl-catch-all-apply 'vlax-invoke-method (list Dir 'Items))
	    ))
	  (setq	Item (vlax-invoke-method
		       (vlax-invoke-method Dir 'Items)
		       'Item
		     ))
	  (setq Path (vla-get-path Item))
	  (if
	    (not (member (substr Path (strlen Path) 1) (list "/" "\\")))
	     (setq Path (strcat Path "\\"))
	  )))))
    Path
  );_end GetFolder
  (defun vl-findfile (Location / DirList Path AllPath)
    (MakeDirList Location)
    (setq DirList (cons Location DirList))
    (foreach Elem DirList
      (if (setq Path (vl-directory-files Elem "*.dwg"))
	(foreach Item Path
	  (setq AllPath (cons (strcat Elem "/" Item) AllPath))
	)))
    (reverse AllPath)
  )
  (defun MakeDirList (Arg / TmpList)
    (setq TmpList (cddr (vl-directory-files Arg nil -1)))
    (cond
      (TmpList
       (setq
	 DirList (append
		   DirList
		   (mapcar '(lambda (z) (strcat Arg "/" z)) TmpList)))
       (foreach Item TmpList (MakeDirList (strcat Arg "/" Item))))))
  (if (not FileSystemObject)
    (setq FileSystemObject
	   (vla-getInterfaceObject
	     (vlax-get-acad-object)
	     "Scripting.FileSystemObject" )))
  (cond
    ((= (getvar "SDI") 0)
     (cond
       ((setq DwgPath (GetFolder))
	(initget 1 "Yes No")
	(setq
	  Subdir
	   (cond
	     ((getkword	"\nОбрабатывать поддиректории? [Yes/No]: "
	      ))
	     (T "Yes")))
	(if (equal SubDir "Yes")
	  (setq	Files
		 (vl-findfile (substr DwgPath 1 (1- (strlen DwgPath)))))
	  (setq	Files (mapcar '(lambda (x) (strcat dwgpath x))
			      (vl-directory-files DwgPath "*.dwg" 1))))
	(setq Files (mapcar 'strcase Files))
	(cond
	  (Files
	   (vlax-for & (vla-get-documents (vlax-get-acad-object))
	     (setq FilesList
		    (cons (strcase (vla-get-fullname &)) FilesList)))
	   (foreach & Files
	     (cond
	       ((not (member & FilesList))
		(cond
		  ((/= (logand (vlax-get-property
				 (vlax-invoke-method
				   FileSystemObject
				   'getfile
				   &
				 )
				 'Attributes )
			       1)
		       1)
		   (cond
		     ((setq File (vla-open (vla-get-documents
					     (vlax-get-acad-object))
					   &))
		      (prompt
			(strcat "\nЗамена текста " & ". Подождите..."))
;;;             (vla-purgeall File)
		      (layren)
		      (prompt (strcat "  Save and close " &))
		      (vla-save File)
		      (vla-close File)
		      (vlax-release-object File))
		     (T
		      (prompt
			(strcat  "\nНевозможно открыть "  &
			  "\nDrawing file was created by an incompatible version. "
			)))))
		  (T
		   (prompt (strcat & " is read-only. Замена отменена. ")))))
	       (T (prompt (strcat & " is open now. Замена отменена. "))))))
	  (T (prompt "\nNothing files found to purge. "))))
       (T (prompt "\nNothing selected. "))))
    (T (prompt "\nThe routine is not available in SDI mode. ")))
  (princ))
(prompt "\n===   Команда загружена. Наберите CH23  ===")
(princ)
VVA вне форума  
 
Непрочитано 16.02.2006, 14:34
#49
Геннадий aka PG

Машиностроение, Проектирование
 
Регистрация: 15.09.2003
Москва
Сообщений: 1,109
<phrase 1=


Цитата:
Сообщение от ===AAA===
>После добавления чего в шрифт, считаю, будет некорректо
>сохранять его под тем же именем.

Отчасти - да, а отчасти - нет. Мое мнение - если в шрифт только
добавляется что-то, то почему бы и нет. Иначе - имен не напасешься. :-)?
Иначе может путаница быть серьезная, сам понимаешь.
Цитата:
Сообщение от ===AAA===
>О шрифтах еще глянь тут
>http://cadhlp.kulichki.com/pdshx.htm
Глянул. Там все о тех шрифтах, которые в моих постах фигурируют,
как "старые". С ними-то проблем нет. Проблема с новым, юникодовским,
да и то только с двумя символами. Или я не туда гляжу?
Туда все правильно с новыми сложнее и вводить надо как "/U+...." Да и сами символы распределены по непонятной системе, я так и не въехал, на это влияет еще и кодовая страница компа
Коды символов можно еще посмотреть через таблицу символов виндов.
__________________
С уважением,
Геннадий aka PG
Геннадий aka PG вне форума  
 
Непрочитано 16.02.2006, 14:47
#50
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 202


Всем привет!

Большое спасибо народу за отзывчивость, но проблема
все-таки имеет решение. Вот оно:

*00405,20, степень 2

*00455,26, степень 3

Всем творческих успехов!
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 09.07.2008, 09:20 Добавление символа в шрифт .shx
#51
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Пытаюсь добавить достаточно много символов в шрифт romans.shx но почему-то не хочет добавлять...
Сама форма символа сделана правильно. Создавал отдельный шейп с номером 1 - компилируется. Пытаюсь тоже самое создать с номером 412 (10dec) - 019C (16hex) - не хочет создавать - пишет что "Длина описания больше указанной в заголовке"
В чем проблема?
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 09.07.2008, 09:29
#52
Солидворкер
Moderator

Конструктор (машиностроение)
 
Регистрация: 23.10.2006
Россия
Сообщений: 20,911
<phrase 1=


#51 перенес из другой темы
Солидворкер вне форума  
 
Непрочитано 09.07.2008, 09:51
#53
KSI


 
Регистрация: 19.03.2004
Калининград
Сообщений: 1,842


>Shoorup,
Приведи описание символа.
KSI вне форума  
 
Непрочитано 09.07.2008, 09:56
#54
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


В добавок к проблемме не отображается субформа.
Задача такая:Нужно описать все римские цифры в шрифт romans.shx на определенные места+вместе с римской должна идти арабская маленькая "субциферка" но она у меня тоже не отображается
*019C,23
0E0,2,0F4,064,1,0E8,2,070,1,8,(0,-21),2,8,(9,0),3,2,7,032,4,2,0
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 09.07.2008, 11:26
#55
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Пробовал ставить этоже описание в другие места - тотже эффект
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 09.07.2008, 12:25
#56
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,974
Отправить сообщение для Red Nova с помощью Skype™


Не совсем уверен, что то, но есть мнение что дело вот в чем.
В shp файле, в начале задаются параметры габарита символов.
Вот отсюда http://cadhlp.kulichki.com/pdshx.htm
Цитата:
В шрифт необходимо включить форму номер 0, которая имеет значение внутреннего размера шрифта. Она выглядит так:

*0,4,<имя шрифта>
H, U, Признак, 0
Тут H - высота надстрочной части букв, U - высота подстрочной части букв.

Возможно у тебя буквы сделаны в другом масштабе, и не помещаются в установленные габариты.

А если не то, то выложи shp файл, и нарисованную букву которую надо туда вклинить (dwg, желательно сделанную в соответствии с габаритами шрифта)
__________________
Блог
Red Nova вне форума  
 
Непрочитано 09.07.2008, 12:43
#57
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Да, дело в заголовке.
*UNIFONT,6,ROMANS Copyright © 1997-2004 by Autodesk, Inc.
21,7,2,0,0,0

*019C,13,I2
0E0,2,0F4,064,1,0E8,2,070,1,8,(0,-21),0

Сам символ 1 римской получился. Нужно дорисовать например двойку в конце в 2 раза меньше.
Делал так:
2,8,(9,0),3,2,7,032,4,2 - повидиму это и дает ошибку
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 09.07.2008, 14:17
#58
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Не могу сообразить как вывести суб форму... почему
7,032,0 - не работает даже если просто ввести
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 09.07.2008, 14:34
#59
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,974
Отправить сообщение для Red Nova с помощью Skype™


По #57
Пока файлы не выложишь не пойму конкретно где прокол.

По #58
Что такое суб форма? Сообщение не понял вообще.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 09.07.2008, 15:11
#60
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Red Nova, Зачем выкладывать если все есть в поставке акада?
Шрифт romans.shx - декомпилируешь в romans.shp
Вот то что пытаюсь добавить:
*019C,17,I2
0E0,2,0F4,064,1,0E8,2,070,1,8,(0,-21),2,090,7,032,0
но не хочет принимать подчеркнутое.
Вопрос: как правильно выводить суб форму?

Цитата:
Код 7 производит построение субформы, номер которой определяется следующим байтом.
Что я делаю не так?
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Добавление символов в шрифт

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск