Не присваивается стиль к тексту в правленных размерах
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Сообщество > Разное > Не присваивается стиль к тексту в правленных размерах

Не присваивается стиль к тексту в правленных размерах

Закрытая тема
Поиск в этой теме
 
Автор темы   Непрочитано 26.04.2007, 09:30 Не присваивается стиль к тексту в правленных размерах
#1
G.A.W.

работник по монтажу, то посижу, то полежу!!!
 
Регистрация: 24.01.2007
г.Владимир
Сообщений: 348
<phrase 1=


Собственно вопрос в названии темы, т.е. как сделать, чтобы поменять стиль текста в правленном размере, например "размерный стиль "Размер 1", с со шрифтом TXT" на "размерный стиль "Размер 2", со шрифтом Гост...." так, чтобы поменялся шрифт, ВОТ!
Наверно такое где нибудь тут валяется, но я не нашел. Есть чертеж, а там этих правленных размеров :shock: , и получается белеберда - те которые неправленные поменялись на Гост, а те которые..., Увы. Поэтому и возник вопрос.
Прошу помощи, заранее спасибо!
G.A.W. вне форума  
 
Непрочитано 26.04.2007, 09:33
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Приложи пациента. Сильно подозреваю, что там просто надо сносить форматирование многострочного текста для TextOverride размеров, но подозрения не есть уверенность.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 26.04.2007, 09:33
#3
Огурец

Profan
 
Регистрация: 27.04.2005
Москва
Сообщений: 6,761
Отправить сообщение для Огурец с помощью Skype™


Уважаемые коллеги!

Ужасно неудобно, но мне необходимо то же самое...
Огурец вне форума  
 
Непрочитано 26.04.2007, 09:35
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Хотя возможен более простой вариант:
- через быстрый выбор выбрать все размеры, какие только есть.
- через выпадающие списки установить текстовый и размерный стили для них.
---
Добавлено: но этот метод не без недостатков. (ИМХО, конечно)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.04.2007, 09:43
#5
G.A.W.

работник по монтажу, то посижу, то полежу!!!
 
Регистрация: 24.01.2007
г.Владимир
Сообщений: 348
<phrase 1=


Именно так я и хотел, но ничего хорошего
[ATTACH]1177566070.dwg[/ATTACH]
Вот файл, правленных размеров там мало (чтобы не заморачиватся), но они есть. Там же есть Мтекст, которому по какой то причине так же не присваивается стиль. Стиль отличный от стандарта не мой.
G.A.W. вне форума  
 
Непрочитано 26.04.2007, 09:57
#6
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Так, у многострочников точно надо сносить форматирование (варианты лиспов лежат на http://www.autocad.ru/cgi-bin/f1/board.cgi?t=20905TQ ; http://dwg.ru/dwl/index.php?id=670
А вот вычислить размеры "не те" мне не удалось. Может, выделишь их, к примеру, цветом, да по новой выложишь?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.04.2007, 10:02
#7
G.A.W.

работник по монтажу, то посижу, то полежу!!!
 
Регистрация: 24.01.2007
г.Владимир
Сообщений: 348
<phrase 1=


Красным!!!
[ATTACH]1177567364.dwg[/ATTACH]
G.A.W. вне форума  
 
Непрочитано 26.04.2007, 10:09
#8
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Точно. И на них тоже форматирование надо удалять. Смотри свойства TextOverride. По-моему, те решения, про которые я говорил немного выше, и это форматирование сносят. Если нет - доработаем
[ATTACH]1177567778.jpg[/ATTACH]
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.04.2007, 10:33
#9
G.A.W.

работник по монтажу, то посижу, то полежу!!!
 
Регистрация: 24.01.2007
г.Владимир
Сообщений: 348
<phrase 1=


По первой ссылке там так много чего то понаписано, понаправлено - так какой там вариант то выбирать: любой или последний, или какой подойдет
G.A.W. вне форума  
 
Непрочитано 26.04.2007, 10:38
#10
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Можешь последний взять - вроде как работающий был.
К моему великому сожалению, сию минуту писать код не могу - работы многовато. Если что - стучись в почту, ок?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.04.2007, 12:13
#11
G.A.W.

работник по монтажу, то посижу, то полежу!!!
 
Регистрация: 24.01.2007
г.Владимир
Сообщений: 348
<phrase 1=


Вообщем по первой ссылке все работает, но над Мтекстом. С размерами, как ты и сомневался, туго, т.е. совсем никак - он их просто не выделяет или не видит.
G.A.W. вне форума  
 
Непрочитано 26.04.2007, 12:14
#12
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Ладушки, попробую сегодня сделать
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 26.04.2007, 13:00
#13
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Спробуй:
Код:
[Выделить все]
(defun c:unformat (/                          _kpblc-error-catch
                   _kpblc-clear-mtext         _kpblc-layer-status-restore
                   _kpblc-layer-status-save   *kpblc-activedoc*
                   answer
                   )

  (defun _kpblc-error-catch (protected-function
                             on-error-function
                             /
                             catch_error_result
                             )
                            ;|
*** Функция взята из книжной версии ruCAD'a без каких бы то ни было переделок,
*** кроме переименования.
*    Оболочка отлова ошибок.
*    Параметры вызова:
*	protected-function	- "защищаемая" функция
*	on-error-function	- функция, выполняемая в случае ошибки
|;
    (setq catch_error_result (vl-catch-all-apply protected-function))
    (if (and (vl-catch-all-error-p catch_error_result)
             on-error-function
             ) ;_ end of and
      (apply on-error-function
             (list (vl-catch-all-error-message catch_error_result))
             ) ;_ end of apply
      catch_error_result
      ) ;_ end of if
    ) ;_ end of defun

  (defun _kpblc-clear-mtext (string-to-normalize
                             /                 sub_string
                             sub_pos           left_string
                             right_string
                             )
                            ;|
*    Функция сносит форматирование многострочного текста. Удаляются символы "{"
* и "}", поскольку именно символ "}" является окончанием применения определенного
* фонта. Удаляются наборы типа {fTimes New Roman|b0|i0|c204|p18; и т.п.
*    Параметры вызова:
*  string-to-normalize  — строка, которую надо нормализовать
*    Примеры вызова:
(_kpblc-clear-mtext (cdr (assoc 1 (entget(car(entsel))))))
  ; для выбранного многострочного текста очищает форматирование.
|;
    (if (or
          (setq sub_pos (vl-string-search "{f" string-to-normalize))
          (setq sub_pos (vl-string-search "{\\" string-to-normalize))
          (setq sub_pos (vl-string-search "\\f" string-to-normalize))
          (setq sub_pos (vl-string-search "{\\f" string-to-normalize))
          ) ;_ end of or
      (progn
        (setq left_string ;все, что до "{"
               (vl-string-trim
                 "{"
                 (substr
                   string-to-normalize
                   1
                   (vl-string-position
                     (ascii "\\")
                     string-to-normalize
                     sub_pos
                     ) ;_ end of vl-string-position
                   ) ;_ end of substr
                 ) ;_ end of vl-string-trim
              ) ;_ end of setq

        (if (vl-string-position
              (ascii ";")
              string-to-normalize
              sub_pos
              ) ;_ end of vl-string-position
          (setq right_string ;все, что между {f и ;
                 (substr
                   string-to-normalize
                   (+ (vl-string-position
                        (ascii ";")
                        string-to-normalize
                        sub_pos
                        ) ;_ end of vl-string-position
                      2
                      ) ;_ end of +
                   ) ;_ end of substr
                ) ;_ end of setq
          (setq right_string "")
          ) ;_ end of if
        (_kpblc-clear-mtext (strcat left_string right_string))
        ) ;_ end of progn
      (vl-list->string
        (vl-remove
          (ascii "}")
          (vl-string->list string-to-normalize)
          ) ;_ end of vl-remove
        ) ;_ end of vl-list->string
      ) ;_ end of if
    ) ;_ end of defun

  (defun _kpblc-layer-status-restore (/ item)
                                     ;|
*    Восстановление состояния слоев из глобального списка
* *kpblc-list-layer-status*
*    Параметры вызова:
*	нет
*    Примеры вызова:
(_kpblc-layer-status-restore)
|;
    (if *kpblc-list-layer-status*
      (progn
        (foreach item *kpblc-list-layer-status*
          (_kpblc-error-catch
            '(lambda ()
               (vla-put-freeze (car item) (cdr (assoc "freeze" (cdr item))))
               ) ;_ end of lambda
            nil
            ) ;_ end of _kpblc-error-catch
          (_kpblc-error-catch
            '(lambda ()
               (vla-put-lock (car item) (cdr (assoc "lock" (cdr item))))
               ) ;_ end of lambda
            nil
            ) ;_ end of _kpblc-error-catch
          ) ;_ end of foreach
        ) ;_ end of progn
      ) ;_ end of if
    (setq *kpblc-list-layer-status* nil)
    ) ;_ end of defun

  (defun _kpblc-layer-status-save (layers-on / item)
                                  ;|
*    Разблокировка и разморозка всех слоев активного документа. Состояние
* сохраняется в глобальном списке *kpblc-list-layer-status* вида
* '(vla-указатель ("freeze" . :vlax-true) ("lock" . :vlax-false))
*    Параметры вызова:
*	layers-on	включать слои (t) или нет (nil)
*    Примеры вызова:
(_kpblc-layer-status-save t)
|;
    (vlax-for item (vla-get-layers *kpblc-activedoc*)
      (setq *kpblc-list-layer-status*
             (append *kpblc-list-layer-status*
                     (list
                       (list item
                             (cons "freeze" (vla-get-freeze item))
                             (cons "lock" (vla-get-lock item))
                             ) ;_ end of list
                       ) ;_ end of list
                     ) ;_ end of append
            ) ;_ end of setq
      (if layers-on
        (progn
          (_kpblc-error-catch
            '(lambda ()
               (vla-put-freeze item :vlax-false)
               ) ;_ end of lambda
            nil
            ) ;_ end of _kpblc-error-catch
          (vla-put-lock item :vlax-false)
          ) ;_ end of progn
        ) ;_ end of if
      ) ;_ end of vlax-for
    ) ;_ end of defun

  (vl-load-com)
  (vla-startundomark
    (setq *kpblc-activedoc* (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of vla-startundomark
  (_kpblc-error-catch
    (function
      (lambda ()
        (_kpblc-layer-status-save nil)
        (setq
          selset (if (not (vl-catch-all-error-p
                            (vl-catch-all-apply
                              '(lambda ()
                                 (initget "ВЕсь Выбор Full Select _ F S F S")
                                 (setq answer
                                        (getkword
                                          "Обрабатывать объем [ВЕсь файл/Выбор] ? <Весь файл> : "
                                          ) ;_ end of getkword
                                       ) ;_ end of setq
                                 ) ;_ end of lambda
                              ) ;_ end of vl-catch-all-apply
                            ) ;_ end of vl-catch-all-error-p
                          ) ;_ end of not
                   (cond
                     ((= answer "S")
                      (ssget '((0 . "MTEXT,DIM*")))
                      )
                     (t (ssget "_X" '((0 . "MTEXT,DIM*"))))
                     ) ;_ end of cond
                   ) ;_ end of if
          ) ;_ end of setq
        (foreach ent
                 (mapcar 'vlax-ename->vla-object
                         (vl-remove-if 'listp (mapcar 'cadr (ssnamex selset)))
                         ) ;_ end of mapcar
          (cond
            ((= (strcase (vla-get-objectname ent) t) "acdbmtext")
             (vla-put-textstring
               ent
               (_kpblc-clear-mtext (vla-get-textstring ent))
               ) ;_ end of vla-put-TextString
             )
            ((and (wcmatch (strcase (vla-get-objectname ent) t) "*dimen*")
                  (not (member (vla-get-textoverride ent) '("" "<>")))
                  ) ;_ end of and
             (vla-put-textoverride
               ent
               (_kpblc-clear-mtext (vla-get-textoverride ent))
               ) ;_ end of vla-put-TextOverride
             )
            ) ;_ end of cond
          ) ;_ end of foreach
        ) ;_ end of lambda
      ) ;_ end of function
    '(lambda (x)
       (princ (strcat "\n Ошибка выполнения # " (itoa (getvar "errno")) " : " x)
              ) ;_ end of princ
       ) ;_ end of lambda
    ) ;_ end of _kpblc-error-catch
  (vla-endundomark *kpblc-activedoc*)
  (princ)
  ) ;_ end of defun
Вызов:
Код:
[Выделить все]
Command : unformat
---
Добавлено: отпишись о результатах, может, на autocad и в готовые можно будет сунуть...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.04.2007, 13:54
#14
G.A.W.

работник по монтажу, то посижу, то полежу!!!
 
Регистрация: 24.01.2007
г.Владимир
Сообщений: 348
<phrase 1=


Я не знаю как у кого будет работать, но у меня сработало все на ура!!!
Все отлично!!!!
Кстати, огромное спасибо за столь быстрое реагирование!
Я сколько раз хотел научится лиспу, но все никак времени не хватает, а чем дальше, тем больше понимаю, что без лиспа с голым Акадом - никуда.
Еще раз огромное спасибо [sm204]
G.A.W. вне форума  
 
Непрочитано 26.04.2007, 14:29
#15
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Прогони на паре-тройке чертежей. Я-то проверял на тех, которые здесь были...
Микроописалово (забыл напрочь): на состояние слоев проге плевать; не обрабатывает внутренности блоков; не обрабатывает внешние ссылки; при указании "весь файл" проходит по пространствам модели и всех листов, поэтому может работать достаточно долго.
На насыщенных чертежах не советую выполнять именно в режиме "весь файл" - поскольку прогресс-бара никакого не предусмотрено, может возникнуть ощущение зависания када. Если же все равно надо проходить по всему файлу, можно сделать так: отзуммировать изображение, чтобы на нем не было ни многострочника, ни размера. Файл сохранить, закрыть и снова открыть. Не меняя zoom, запустить на выполнение. В таком случае зачастую кад просто не отрисовывает изменяемые примитивы и не тратит на это дело ресурсы. Особенно ярко такое проявляется на машинах со слабыми или встроенными видяхами.
Это я вычислил опытным путем - примерно в 2/3 случаев помогает
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 26.04.2007, 14:50
#16
G.A.W.

работник по монтажу, то посижу, то полежу!!!
 
Регистрация: 24.01.2007
г.Владимир
Сообщений: 348
<phrase 1=


ОК'! Учту советы и наставления и потестирую прогу!
G.A.W. вне форума  
 
Автор темы   Непрочитано 26.04.2007, 16:34
#17
G.A.W.

работник по монтажу, то посижу, то полежу!!!
 
Регистрация: 24.01.2007
г.Владимир
Сообщений: 348
<phrase 1=


Кстати, заметил вот такую вот штуку:
Если Мтекст написан двумя разными шрифтами (т.е. внутри него), то стиль присваивается только части текста, причом вроде первой части.
G.A.W. вне форума  
 
Непрочитано 26.04.2007, 16:36
#18
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


И то не всегда . Учтем-с Сегодня-то уж точно ничего не сделаю, только завтра
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Закрытая тема
Вернуться   Форум DWG.RU > Сообщество > Разное > Не присваивается стиль к тексту в правленных размерах