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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Адаптация мультитекста к масштабу

Адаптация мультитекста к масштабу

Ответ
Поиск в этой теме
Непрочитано 29.12.2007, 12:19 #1
Адаптация мультитекста к масштабу
Red Nova
 
ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Торонто
Регистрация: 23.10.2007
Сообщений: 1,990

В прошлом форуме я пытался найти лисп на создание разных команд для мультитекста с разными настройками, но ответа так и не нашел.
На этот раз попытаюсь найти решение проблемы мультитекстка с разными настройками другим путем (разумеется с вашей помощью).
Объясню проблему. Я работаю в модели, печатаю из листа. Следовательно для кождого масштаба размер надписей (я пользуюсь мультитекстом) разный, кроме того в том же масштабе для рядовых строк и для надписей размеры и настройки justification разные.
Приходится либо каждый раз заново настраивать мультитекст, либо иметь загатовки для разных случаев и копировать их.
Последний вариант хотелось бы автоматизировать, не бегать по модели ища нужную заготовку и копируя ее в нужное место, а имея для этого toolbar, с кнопками при нажатии на которые соответствующая заготовка вставляется в чертеж и редактируется.
Для надписей к примеру у меня есть такие заготовки. Выкладываю.
Можно ли загнать их вставку под команды?
Заранее благодарен за помощь.

Вложения
Тип файла: dwg
DWG 2004
Multitext styles.dwg (51.7 Кб, 959 просмотров)

Просмотров: 4624
 
Непрочитано 29.12.2007, 12:33
#2
Кулик Алексей aka kpblc
Moderator

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


1. пользуйся etansmit. Лично у меня из всех запрошенных shx встречается только СПДС-овский.
2. Можешь попробовать нечто типа:
Код:
[Выделить все]
(defun mymtext (size just / adoc *error* _size pt1 pt2)
               ;|
	size	величина mtext'a. nil -> textsize * dimscale
	just	выравнивание. nil -> middlecenter
|;
  (defun *error* (msg)
    (if _size
      (setvar "textsize" _size)
      ) ;_ end of if
    (vla-endundomark adoc)
    (princ msg)
    (princ)
    ) ;_ end of defun

  (if (not size)
    (setq size (* (getvar "textsize") (getvar "dimscale")))
    ) ;_ end of if
  (setq just (cond (just (strcat (vl-string-left-trim "_" just)))
                   (t "_mc")
                   ) ;_ end of cond
        ) ;_ end of setq
  (vl-load-com)
  (vla-startundomark
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of vla-startundomark
  (if
    (and (= (type (setq pt1 (vl-catch-all-apply
                              '(lambda () (getpoint "\nНачальная точка <Отмена> : "))
                              ) ;_ end of vl-catch-all-apply
                        ) ;_ end of setq
                  ) ;_ end of type
            'list
            ) ;_ end of =
         (= (type (setq
                    pt2 (vl-catch-all-apply
                          '(lambda () (getcorner pt1 "\nКонечная точка <Отмена> : "))
                          ) ;_ end of vl-catch-all-apply
                    ) ;_ end of setq
                  ) ;_ end of type
            'list
            ) ;_ end of =
         (not (equal pt1 pt2 1e-3))
         ) ;_ end of and
     (progn
       (command "_.mtext" pt1 "_j" just pt2)
       (while (/= 1 (boole 1 (getvar "cmdactive")))
         (command pause)
         ) ;_ end of while
       ) ;_ end of progn
     ) ;_ end of if
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
Макросы для вызова уж сам.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.12.2007, 16:57
#3
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Цитата:
имея для этого toolbar, с кнопками при нажатии на которые соответствующая заготовка вставляется в чертеж и редактируется.
Сам-же и сформулировал идею, а значит, и напрограммировать ее сможешь. У меня подобное заложено в Tool palletes.
В том файле, где хранятся блоки для tool palettes, создаешь блоки шаблонов и закладываешь их в палитру. Кидаешь нужный блок в чертеж с разбивкой блока, и стандартной командой редактирования правишь. Это пока без программирования. Если хочешь за один прием, надо в ту-же палитру (а можно и на кнопку) поставить макрос: вставить блок-разбить его-отредактировать
Vova вне форума  
 
Автор темы   Непрочитано 29.12.2007, 18:38
#4
Red Nova

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


Спасибо за ответы

Кулик Алексей aka kpblc
1.А что такое etansmit, дал поиск, нечего толкового не нашел
2.Лисп загрузил, но не могу понять какой командой его вызвать. За одно интересно узнать как выясняют команду для вызова лиспа, если в его содержании отсутствует defun c:

Vova
Я, это, в программировании 0, , не знаю как макрос такой сделать. Прошу помочь. А блок вставлять, разбивать и редактировать долго.
Red Nova вне форума  
 
Непрочитано 29.12.2007, 19:22
#5
Кулик Алексей aka kpblc
Moderator

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


1. Штатная команда AutoCAD'a, в локализованных версиях - ФОРМКОМПЛЕКТ, кажется
2. dwg.ru/art/8 - ответ на вопрос "как запустить". Как пример:
(mymtext nil nil)
(mymtext 35 nil)
(mymtext 350 "tl")
3. Как сделать макрос: dwg.ru/art/2
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.12.2007, 19:33
#6
alex_AW

КЖ
 
Регистрация: 23.03.2005
С-Пб
Сообщений: 79


Если без программирования - то это можно реализовать с помощью двух вещей: палеты инструментов и системной переменной dimscale. Блок с текстом надо вставить в палету инструментов и назначить ему зависимость от dimscale для масштабирования при вставке. Перед вставкой блока изменить значение dimscale в соответствии с масштабом изображения.
PS. При этом надо учитывать, что Dimscale влияет на масштаб проставляемых размеров.
alex_AW вне форума  
 
Автор темы   Непрочитано 29.12.2007, 22:03
#7
Red Nova

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


Кулик Алексей aka kpblc
точно etansmit, не могу найти в хелпе, может etransmit?
лисп так пока и не запустил, буду читать ссылки. Пока не понял.

alex_AW
Цитата:
вставить в палету инструментов и назначить ему зависимость от dimscale для масштабирования при вставке
Это как, при вставке назначить зависимость от dimscale? Аннотативность что ли?

Забыл упомянуть, у меня AutoCAD2008 + СПДС
Red Nova вне форума  
 
Непрочитано 29.12.2007, 22:57
#8
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Red Nova> так у тебя 2008. Анатотивность это как раз такое свойство, которое позволяет масштабировать. Ты должен не спрашивать на форуме (у большинства еще нет 2008) а отвечать!
В палете зависимость от dimscale это не анатотивность, а возможность, появившаяся аж в 2005. Нажми правой кнопкой на любой блок из образцов и изучи Properties. Остальной ответ в №5. Ознакомился?
Vova вне форума  
 
Автор темы   Непрочитано 30.12.2007, 00:01
#9
Red Nova

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


Vova
Так я в Properties смотрю, и не могу понять в какой строке зависимость от dimscale
А аннатативность мне не нравится, черезчур мудрено, спдс удобнее но мультитекст к сожелению не поддерживает. (ИМХО)


Кулик Алексей aka kpblc
Как использовать лисп вроди как разобрался, теперь попробую для команды под кнопки загнать.
Red Nova вне форума  
 
Непрочитано 30.12.2007, 00:23
#10
Кулик Алексей aka kpblc
Moderator

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


Да, я опечатался. _.eTransmit, конечно. Извиняюсь.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 30.12.2007, 00:47
#11
Red Nova

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


Кулик Алексей aka kpblc
По поводу лиспа, вещь стоящая, сумел под кнопки загнать. Но есть вопросы. Поскольку текст приходится вводить из командной строки, возникают ограничения (невозможно его подчеркнуть т.п.). Можно ли сделать так чтоб после указания места расположения текста сразу открывался редактор. Так было бы удобнее. И можно ли задать middle justified текст одной центральной точкой (widh=0)?
По поводу eTransmit, пока не очень понял что эта команда делает, надо хелп полистать.
Red Nova вне форума  
 
Автор темы   Непрочитано 30.12.2007, 01:29
#12
Red Nova

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


Кулик Алексей aka kpblc

Почитал хелп, и до меня дошло что Etransmit ты имел ввиду для выкладывания файлов на форуме, я то с начало подумал это по поводу мультитекста.
А штука интересная, я правильно понял она все shx и другие периферийные файлы в месте с dwg файлом архивирует?
Red Nova вне форума  
 
Непрочитано 30.12.2007, 01:37
#13
Кулик Алексей aka kpblc
Moderator

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


Я не знаю, как заставить из-под лиспа работать с многострочником в режиме редактора
P.S. etransmit сформирует zip-архив, в который включит (в частности) все используемые фонты. Там с настройками поиграться - и все будет очевидно.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 30.12.2007, 10:03
#14
Red Nova

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


Жаль что с редактором текста не получается. Вопрос закрылся бы. Придется искать другие пути.

Как вы думаете, можно ли при помощи макроса задать мтексту justify? Тогда перед этой командой можно было бы в макрос записать изменение переменной textsize. И, вроде, был бы тоже вариант решения проблемы.

О варианте с tool palettes и dimscale. Этот вариант тоже очень интересен.
1. Я так и не понял где в properties у блока зависимость от dimscale.
2. tool palettes занимает много места на экране, можно ли загнать команду вставки блока из tool palettes (или из кого-нибудь файла) под обычную кнопку в toolbar. Какой тогда для нее должен быть макрос?
Red Nova вне форума  
 
Непрочитано 30.12.2007, 17:21
#15
alex_AW

КЖ
 
Регистрация: 23.03.2005
С-Пб
Сообщений: 79


Цитата:
Сообщение от Red Nova Посмотреть сообщение
...
Я так и не понял где в properties у блока зависимость от dimscale.
...
Эта штука задаётся в окне свойств инструмента (в частности - блока) на палете инструментов. Раздел Insert опция Auxiliary scale.

Я сам вставляю многострочный текст именно таким образом.
Миниатюры
Нажмите на изображение для увеличения
Название: as.jpg
Просмотров: 104
Размер:	50.9 Кб
ID:	1912  

Последний раз редактировалось alex_AW, 30.12.2007 в 17:28.
alex_AW вне форума  
 
Автор темы   Непрочитано 04.01.2008, 13:54
#16
Red Nova

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


alex_AW

Теперь понятно где в properties задать зависимость, задал. Но возникли сложности.
У тебя СПДС? Когда меняешь масштаб в СПДС, то вроди как dimscale меняется, и по логике меняя масштаб СПДС можно вставлять этот блок с разным размером. Но этого не происходит. Блок всегда одного размера.
Red Nova вне форума  
 
Непрочитано 07.01.2008, 20:27
#17
alex_AW

КЖ
 
Регистрация: 23.03.2005
С-Пб
Сообщений: 79


Уменя нет СПДС и о том как влияет изменение в нём масштаба на dimscale ничего сказать не могу . Попробуй поменять значение dimscale в командной строке и посмотри что получться.
alex_AW вне форума  
 
Автор темы   Непрочитано 08.01.2008, 10:37
#18
Red Nova

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


Дома попробую с коммандной строки, на работе почему то не грузится тул палета, а насчет СПДС, я все проверял, точно при изменении масштаба, dimscale меняется на соответственную цифру.
Red Nova вне форума  
 
Непрочитано 08.01.2008, 14:02
#19
Кулик Алексей aka kpblc
Moderator

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


Так это известно уже с версии 2.5.хх: масштаб СПДС затрагивает системные переменные dimscale, celtscale, hpscale, hpspace. Вроде больше ничего не было (инфа была на caduser.ru, сейчас фиг найдешь).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 10.01.2008, 00:12
#20
Red Nova

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


Наконец получилось, зависимость от dimscale заработала, масштабам СПДС блочик уже подчиняется, не понял правда почему раньше не работало, все вроде так же делал, может надо было Акад перезапустить, но это не важно. Но дальше что делать не знаю, есть у меня теперь в tool palettes блоки текста, а как их вставлять так чтоб блок сразу разбивался не пойму, и было бы удобнее если бы это все на одной кнопке было (чтоб каждый раз в tool palettes не лазить). То есть так, нажимаешь кнопку, вставляется соответственный блок, и тут же разбивается. Чувствую макросом можно что то такое сделать, но как не пойму, ссылку про макросы читал, на наверное медленно доходит.
Red Nova вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Адаптация мультитекста к масштабу



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подчиним мультитекст масштабу Red Nova AutoCAD 6 21.12.2007 23:40
Шрифты для мультитекста Огурец AutoCAD 6 18.06.2007 12:31
Адаптация раскрывающихся панелей инструментов Mate AutoCAD 4 27.01.2007 23:26
Востановление работы мультитекста в программе Автокад April AutoCAD 1 09.02.2006 01:57
Изменить цвет фона редактора мультитекста Torino AutoCAD 8 02.11.2004 18:45