Тема: Отображение шрифтов

На Webfile.ru разместил Table.dwg (размер 38 кбайт)
доступен по адресу: webfile.ru/430518 в течение 7 дней до 16:06 05.08.2005.
Один и тот же шрифт, печатается одинаково, но на экране плывет... вроде как болдом становится...Достал этот глюк мои глазоньки! Присоветуйте что-нибудь

Re: Отображение шрифтов

хмм дома погляжу :) ща немного занят..

Re: Отображение шрифтов

> ASHAS
У меня вроде все нормально.

Re: Отображение шрифтов

> Александр Ривилис
А если отодвинуть чертеж? У меня тоже визуально изменилась ширина текста. При этом если сделать новую таблицу (acad2005), то в ней все ок. На бОльшее меня не хватило - домой пора ;)

Re: Отображение шрифтов

Конечно, пятница...чего уж. Доживем до понедельника.

Re: Отображение шрифтов

Ну вот и пнд. Кто поможет? Я уже как-то совался с этим вопросом. Когда создаешь файл сам, все хорошо, а вот когда чужие приплывают - не всегда, и четкой закономерности не выявил. Но дело не в винде- у всех ХР стоит, да и акад одинаковый... И шрифты стандартные...

Re: Отображение шрифтов

Есть такая проблема, посмотрела твой Table..
При близком рассмотрении все tiff - шрифты жирные, а при удалении, часть из них худеет..
Причем никакой закономерности, худеют по очереди..
У меня такой глюк с шрифтами из старых и чужих файлов..

Re: Отображение шрифтов

Во-во, а что делать-то? Неэстетично как-то.

Re: Отображение шрифтов

Есть рецепт, только он не покатит имхо - использовать не ttf-фонты.
Что самое интересное, так это то, что по (entget(car(entsel))) все объекты одинаковы, кроме одного - Z-координата DXF-группы 10 (точка вставки) разная. А в Properties указывается 0...
Использовать flatten не рекомендуется - текст преобразовывается в примитивы када, что, я так понимаю, недопустимо.
Вопрос надо перенаправлять в ветку LISP - изменение Z-координаты точки вставки одно- и многострочных текстов. У меня мозгов не хватает на это дело...
---
ИМХО

Re: Отображение шрифтов

Вау! А я недоверчивый такой, флаттен попробовал! И прокатило! Вем спасибо! Вот что значит коллективный разум в зацепе со здоровым скептицизмом!

Re: Отображение шрифтов

> ASHAS
flatten нормально обработал TTF-фонты? Ни хрена себе вареники! У меня на 2005 и на 2006 получил массу отрезков и привет...

Re: Отображение шрифтов

В моем файле? Отработал его. Но только его, а в других местах- ариал цепляет, а таймс ему по-фигу. Вообще Таймс- самый ненавистный шрифт, и еще ескд и спдс всякие. А уж мосгеотрест учудил со шрифтами...

Re: Отображение шрифтов

И все же все не так просто. Тот файлик, что я выкладывал, действительно на флаттен отзывается. А вот другим - по-барабану. Кроме того, если во флаттене стоит йес на ремоут хидден лайнс- расчленяет текст на линии без вопросов и зазрения. если говорим ноу- флаттит, но не всегда обалдевание текста проходит. Если вставляю блоком обалденный текст через клипборд в пустой чертеж - акадисо, например - иногда вылечивается... KPBLC, а где в dxf координата?

Re: Отображение шрифтов

> ASHAS
Попробуй такую прожку. Она обнуляет для всех выбранных текстов значение Z.

(defun C:TEXT_Z0 ( / ss en e p i n)
  (princ "\nВыберите тексты: ")
  (setq ss (ssget '((0 . "*TEXT"))))
  (if ss (progn
    (setq i 0 n (sslength ss))
    (while (< i n)
      (setq en (ssname ss i) e (entget en))
      (foreach pp '(10 11 12 13)
        (if (setq p (cdr (assoc pp e))) (progn
          (setq e (subst (cons pp (list (car p) (cadr p) 0.0)) (assoc pp e) e))
        ))
      ) ;; endof (foreach
      (entmod e) (entupd en)
      (setq i (1+ i))
    ) ;; endof (while
  )) ;; (if (progn
)

В тестовом чертеже помогло.

Re: Отображение шрифтов

Ривилису: в проге
error: bad argument type: numberp: nil
Холера.
Но тестовый, как выясняется, не показатель- надо будет другой подобрать.

Re: Отображение шрифтов

файл Table1.dwg (размер 59 кбайт)
доступен по адресу: webfile.ru/437348 в течение 7 дней до 20:19 09.08.2005.
Вот! Кто на новенького?! Здесь все болданутые!

Re: Отображение шрифтов

> ASHAS
У меня все работает и на этом чертеже. Правда с ним я ничего вообще не понял.
1) линии не горизонтальные (отличие в 11 знаке, но есть)
2) Тексты я так и не понял - толи все bold, толи все номальные...
3) Какие-то proxy-объекты...

Re: Отображение шрифтов

Тексты там у меня все болд. Прокси отношения не имеют, не стал выковырикать. Если перенести через клипборд на новый чертеж, все ок.даже без расчлененки.Но это не всегда...Я с этой фичей бьюсь давно, и на моей машине если с нормального файла стартую, такого никогда. Было у меня раньше подозрение, что 98 винда виновата, как в нее файлы попадали - все, приболдевают. Но сейчас-то... или когда-то кто-то... от смежников файлы получаем - чего в них нет, а уж фильтров слоев немеряно, со всей европы собирают1

Re: Отображение шрифтов

По поводу фильтров слоев:

;|=======================================================================================
* Очистка фильтров слоев
;; имена фильтров, которые требуется оставить передаются списком
;; Функция переписана с учетом особенностей версии 2005, где появился новый словарь
*    Работает только в полном варианте AutoCAD, попытки повесить это дело на LT обречены.
=======================================================================================|;
(defun _dsk-filters-delete (lstnames / vla:lrs vla:xdic vla:dic vla:xrec name DataType DataValue num)
  (vl-load-com)
  (setq vla:lrs (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))))
  (if (= (vla-get-hasextensiondictionary vla:lrs) :vlax-true)
    ;; при наличии словаря требуется детальная проверка
    (progn
      (setq lstnames (mapcar 'strcase lstnames))
      (setq vla:xdic (vla-getextensiondictionary vla:lrs))
      (setq num 0)
      ;; поиск и удаление фильтров версий пре-2005
      (if (progn (vlax-for item vla:xdic
                   (if (= (vla-get-name item) "ACAD_LAYERFILTERS")
                     (setq vla:dic item)
                   ) ;_  if
                 ) ;_  vlax-for
                 vla:dic
          ) ;_  progn
        (progn
          (vlax-for vla:xrec vla:dic
            (if (not (member (strcase (setq name (vla-get-name vla:xrec))) lstnames))
              (progn (vla-remove vla:dic name)
                     (vlax-release-object vla:xrec)
                     (setq num (1+ num))
              ) ;_  progn
            ) ;_  if
          ) ;_  vlax-for
          (vlax-release-object vla:dic)
          (if (zerop num)
            (princ "\nЛишних фильтров 2002 в рисунке не обнаружено.")
            (princ "\nЛишние фильтры 2002 из рисунка удалены.")
          ) ;_  if
        ) ;_ progn
      ) ;_ if
      (setq vla:dic nil)
      (setq num 0)
      ;; поиск и удаление фильтров версии 2005
      (if (progn (vlax-for item vla:xdic
                   (if (= (vla-get-name item) "ACLYDICTIONARY")
                     (setq vla:dic item)
                   ) ;_  if
                 ) ;_  vlax-for
                 vla:dic
          ) ;_  progn
        (progn
          (vlax-for vla:xrec vla:dic
            (if (progn
                  (setq name (vla-get-name vla:xrec))
                  (vla-getxrecorddata vla:xrec 'DataType 'DataValue)
                  (not (member (strcase (vlax-variant-value
                                          (vlax-safearray-get-element
                                            DataValue
                                            (vl-position 300 (vlax-safearray->list DataType))
                                          ) ;_  vlax-safearray-get-element
                                        ) ;_  vlax-variant-value
                               ) ;_  strcase
                               lstnames
                       ) ;_  member
                  ) ;_  not
                ) ;_  progn
              (progn
                (vla-remove vla:dic name)
                (vlax-release-object vla:xrec)
                (setq num (1+ num))
              ) ;_  progn
            ) ;_  if
          ) ;_  vlax-for
          (vlax-release-object vla:dic)
          (if (zerop num)
            (princ "\nЛишних фильтров 2005 в рисунке не обнаружено.")
            (princ "\nЛишние фильтры 2005 из рисунка удалены.")
          ) ;_  if
        ) ;_ progn
      ) ;_ if
      (vlax-release-object vla:xdic)
    ) ;_  progn
    (princ "\nФильтров в рисунке не обнаружено.")
  ) ;_  if
  (vlax-release-object vla:lrs)
  (princ)
) ;_ defun

Код не мой, автора, к сожалению, в свое время не записал, так что указать не могу (помню только, что было на dwg.ru).

> Александр Ривилис
А что за проверка по кодам 11, 12, 13? Ну 10-ка - понятно, точка вставки, а дальше?

> ASHAS
Я дал команду (entget(car(entsel))) и ткнул на первый попавшийся текст. Получил список (по F2 можно посмотреть), и в нем обнаружил, что "жирнеющие" объекты имеют элемент такого вида: (10 325.0653 297.0 -0.00326), а нормальные - (10 325.0653 297.0 0.0). Поскольку Полещук под рукой, смотрю, что это точечная пара с dxf-кодом 10 (точка вставки). Значит, надо менять. Идея проги, аналогичной > Александр Ривилис (2005-08-02 19:01:41), у меня была, да мозгов не хватило. И знаний.
P.S. Если мой ник прочесть по русски, получится "КРЫС" - типа крыса, только мужского рода :)

Re: Отображение шрифтов

> kpblc
точка вставки у "жирных" объектов -
(10 1669.39 2167.1 -2.33147e-016)
(10 1073.37 1927.83 -2.33147e-016)

Re: Отображение шрифтов

> Коваленко
Сергей
Вот-вот, я именно про это. Если сменить последнее значение на 0 (что и делает программа Александра Ривилиса), то изменение вида шрифта исчезнет.

Re: Отображение шрифтов

kpblc пишет:

А что за проверка по кодам 11, 12, 13? Ну 10-ка - понятно, точка вставки, а дальше?

11-точка выравнивания, а остальные "на всякий случай" - лень было смотреть правильные DXF-коды.

Re: Отображение шрифтов

Т.е. в проге надо сменить (foreach pp '(10 11 12 13) на (foreach pp '(10 11), так?
---
ИМХО

Re: Отображение шрифтов

> kpblc
Не "надо", а "можно" - от этого принципиально ничего не менятся... smile
А вот "*TEXT" заменить на "TEXT" стоит - с примитивами MTEXT я не проверял...

Re: Отображение шрифтов

Я, дико извиняюсь, но не мог ли кто-нибудь немного примитивнее объяснить, как сделать отображение шрифтов нормальным?
Код программы выше видел, но не очень понятно как и где его запустить...