|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Макрос и текст
Проектирование обустройства нефтяных месторождений
Самара
Регистрация: 28.08.2003
Сообщений: 352
|
||
Просмотров: 11497
|
|
||||
Проектирование обустройства нефтяных месторождений Регистрация: 28.08.2003
Самара
Сообщений: 352
|
нет, хочу именно марос, чтобы создать по аналогии кучу кнопоки в зависимости от ситуации использовать их. Лисп вешь хорошая, но для таких мелких вещей предпочитаю его не использовать.
Задача такая: есть текст с высотой 3.5, по ситуации надо задать ему высоту 5 или 4.5, тоже самое с шириной |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Программу можно написать на Лиспе, а высоту и ширину передавать из макроса в программу либо как параметр функции, либо как ответ на запрос функции (getreal). Таким образом, программа получается одна, а кнопки можно плодить... по желанию.
|
|||
![]() |
|
||||
Engineer Регистрация: 05.09.2003
New-York
Сообщений: 10,288
|
Вечного спора пока нет - почти нет специалистов по макросам. Да и вряд ли будет, потому что LISP сильнее. Но у макросов есть неоспоримое преимущество: он быстро становится понятным, а сделанная своими руками программа ближе к сердцу, чем чужая, даже наворочанная.
Давай, Plaz, на твоем вопросе сделаем ликбез для всех. Сначала надо найти идею. В данном случая проблему решит команда _Change. Проиграйте на клавиатуре действия по изменению высоты однострочного текста, сделав его 5 единиц, записывая каждый шаг на бумагу. Вместо Enter пишите точку с запятой <;>. Вместо клика мышкой ставьте обратную косую черту <\>. Затем создайте новую панель инструментов и в ней кнопку. Всю последовательность впечатайте в поле Macro associated with this button диалогового окна Customize, без пробелов. Начало будет таким: ^C^C_Change; (^C означает нажатие на Esc, то есть отчистка командной строки). Продолжите действия на клавиаруре, заодно исследуя команду Change. Добавляйте знаки в окно Customize. A результат выносите сюда. |
|||
![]() |
|
||||
AutoCAD/AutoLISP Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133
|
>>vova
Владимир! Комманда _CHANGE работает только с однострочным текстом как ты и отметил, причем ширину не изменить, а на MTEXT и вовсе "заикается", думаю что VK прав, это задачка для лиспа, как он тут присоветовал. И на любимые кнопочки привесить очень даже удобно, а еще лучше на PULDOWN MENU. |
|||
![]() |
|
||||
Проектирование обустройства нефтяных месторождений Регистрация: 28.08.2003
Самара
Сообщений: 352
|
2 Vova
Идею то я нашел, не знаю как ее реализовать, не хватает знаний команд Акада. Change действительно может поменять только высоту текста, и то при условии, что стиль данного текста не фиксирует высоту RuHelp:
Единственным , не лисповским, способом решения вижу создание дополнительных текстовых стилей и соответствующая их подмена |
|||
![]() |
|
||||
Проектирование обустройства нефтяных месторождений Регистрация: 28.08.2003
Самара
Сообщений: 352
|
Я не хочу создать кнопку на все случаи жизни, она мне понадобится макс. на месяц. В той работе которую я выполняю используется только один текстовый стиль. Я надеялся что можно с помощью командной строки (т.е. макрос) изменить некоторое парамтры окна Properties, и я уверен что можно только надо знать соотвествующие команды.
Будем искать ![]() |
|||
![]() |
|
||||
Engineer Регистрация: 05.09.2003
New-York
Сообщений: 10,288
|
1. Эта задача решается несложным макросом: любому однострочному тексту независимо от высоты, заданной в текстовом стиле и мтексту можно поменять высоту одним кликом мышки. Startrek и Plaz правы в том, что команда Change очень ограничена - ее можно использовать только для однострочного текста, причем если высота в его текстовом стиле равна 0. Но для упражнения с написанием первого учебного макроса годится. Жду макроса, потому что там можно использовать интересный прием, который впоследствии мы применим к универсальному макросу для любого текста. Попробуйте догадаться также, какую бы команду применить для этого будущего макроса.
2. По поводу Width я думаю, что Plaz переусердствовал. Нечастая операция не требует автоматизации. 3. Я уже провел одну тему - "Найти решение" в форме загадок и ответов, мне показалось так веселее,чем сразу выдать решение. Если такая форма не коробит, можно продолжить в таком стиле. Ваше мнение? |
|||
![]() |
|
||||
Проектирование обустройства нефтяных месторождений Регистрация: 28.08.2003
Самара
Сообщений: 352
|
Цитата:
Цитата:
[sm1205] По поводу макроса для замены высоты текста если пользоваться командой change и вашими рекомендациями: ^C^C-ch;;;;5;;; |
|||
![]() |
|
||||
Engineer Регистрация: 05.09.2003
New-York
Сообщений: 10,288
|
У меня это не работает. Потому что не заложено указание объекта деля изменения (\). Попробуй так
*^C^C_change;\;;;;5;;; А прием, про который я говорил, это звездочка в начале, позволяющая менять об-екты один за другим. Когда я начинал с макросами, тоже домой поздно приходил, да и сейчас надо разбираться, как бы ответить здесь получше. В частности, нашел команду для твоего случя в ...меню Express. Позвони жене, что сегодня в последний раз задержишься и построишь окончательный макрос сам. Параметр WITH это ширина текста при той-же высоте. Применяется, например, в заголовках, чтобы растянуть строку или в аналогичных случаях. Я ее растягивать не пробовал, поищи в Express подходящую команду, если позарез надо и Properties не спасают. А искать надо так: открой Help от Express и поищи на букву "Т" |
|||
![]() |
|
||||
Проектирование обустройства нефтяных месторождений Регистрация: 28.08.2003
Самара
Сообщений: 352
|
Цитата:
![]() ![]() Цитата:
Цитата:
Вот только понять не могу где здесь фишка? Где происходит подмена width? Код:
|
|||
![]() |
|
||||
Engineer Регистрация: 05.09.2003
New-York
Сообщений: 10,288
|
Plaz> Для изменения высоты текста я имел в виду другую команду: TSCALE. Сама, по названию (Scale это масштаб) просится в корзинку, а никто не догадался. Команда TEXTFIT используется только для изменения ширины-это твоя вторая хотелка.
*^C^C_select;single;\tscale;p;;e;h;5 Это для изменения высоты любого текста, включая атрибуты блока. Конечная высота 5 единиц (можно поменять) ВНИМАНИЕ!!! при прямом копировании отсюда в окно Customize могут возникнуть нежелательние значки вроде ^М. Сотрите, если будет так. ^C^C_select;single;\tscale;p;;e;h;5;copy;p;;@;@;e;p;;textfit;l;s Это комбинация для одновременного изменения высоты и ширины. Требует 3 клика: указать объект, начало и конец новой ширины. Ограничение-не меняет ширину Mtext. |
|||
![]() |
|
||||
Проектирование обустройства нефтяных месторождений Регистрация: 28.08.2003
Самара
Сообщений: 352
|
Цитата:
Цитата:
![]() В конечном итоге должен согласится с vk и Startrek, дело пахнет лиспом. Я предполагал, что возможно при помощи командной строки задавать строго определенное значение ширины текста, а не такое какое получится (Textfit). Не вышло ![]() |
|||
![]() |
|
||||
LISP-программист Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238
|
Цитата:
__________________
Там все есть для счастья - меня там только нет. Так это значит, что я там - буду! |
|||
![]() |
|
||||
Проектировщик свиноводство Регистрация: 21.08.2003
Сообщений: 2,291
|
Макросы - прекрасная и очень наглядная штука с нешуточными возможностями.
Но они обладают одним очень неприятным свойством, сводящим все их достоинства на нет: при повторе энтером повторяется не весь макрос, а только команда, на которой он построен. Из-за этого их (макросов) область применения ограничивается нечастыми действиями. Если же нужны постоянные повторы - без лиспа не обойтись. Или же нужно непрерывно гонять мышку к соответствующей кнопке на тулбаре. Второе органичение кроется даже не в макросах как таковых, а в структуре файла acad.pgp. Если бы алиасы там можно было прописывать в виде макросов, то цены бы не было и тем и другим. (Но все это уже для любителей работать с клавы). Резюмируя, можно утверждать, что для производительной работы нужно писать лиспы. Вдобавок, они еще и гибче. Все это имхо, ессно. |
|||
![]() |
|
||||
Архитектор Регистрация: 25.08.2003
Москва
Сообщений: 307
|
>Pilot
Есть способ обойти такое неудобство, как невозможность вызова макроса энтером. Ставим перед ним *, и он со всеми опциями повторяется в цикле, пока не нажмем Esc. Причем работает и для макросов, где задействована более чем одна команда. Давным-давно, в Акаде версии этак 10-й, в стандартном меню многие команды с опциями были так "зациклены". От этого постепенно отказались ради особенностей виндового интерфейса (во время действия команды недоступны раскрывающиеся списки, ну, вроде слоев или цветов). Но до сих пор все это работает. Я, например, этим вовсю пользуюсь. Пример: *^C^C_select _auto \_COPY _p;;0,0 0,0 _rotate _p;;^M; работает как Rotate+Copy. Много раз. ЗЫ. Если народ об этом забыл, может, напомнить в теме про тюнинг? ЗЗЫ. Интересно, Vova не забыл об этом в книжке написать? |
|||
![]() |
|
||||
Engineer Регистрация: 05.09.2003
New-York
Сообщений: 10,288
|
Plaz> трудную задачку ты задал для макроса, со многими ограничениями: в чертежах как будто специально подобран неправильный по ширине текстовой стиль, и почему-то фиксированная высота в стилях стоит, хотя нулевая удобней... и автокад старый, и пути трудные тебе милей. Наверное, специально, чтобы было что исправлять при ограниченных возможностях. Я сдаюсь.
Pilot> Уже в 2000 появилось контекстное меню на правой кнопке, первый пункт которого вызывает макрос любой длины. Это меню было одним из крупных новшеств 2000, ускоряющих работу независимо от наличия макросов. В 14-м для повтора надо было вторично нажать на кнопку, но даже так значительно ускоряется черчение. Я начинал в 97-LT. Помог бы ты мне своими лиспами? Про алиасы не понял, видимо, имеется в виду, что длинному макросу не присвоить сокращения, но его можно посадить на горячие клавиши. По ЛИСПам. Сколько ч-к из 100 пользователей могут похвастаться знанием лиспа? 1 или 2. Это трудный язык. Есть ли хорошие книги для самостоятельного изучения? Говорят, что нет. Только настырный человек может научиться сам. Так что макросы это неплохая замена, и через них можно двигаться дальше, к лиспу и др. Андрей С> Звездочка применяется, если подряд , без остановки, надо сделать повторяющиеся действия. Это не всегда возможно. Например, второй макрос в моем сообщении от 6 фев. Иногда от звездочки автокад зацикливается в кольцо, в книге дан пример. Твой макрос поворачивает объекты на том месте, где они находятся, оставляя копии. Часто ли это надо? Сделай из этого чтобы копия переносилась на новое место и уже там поворачивалась. Очень удобно в практике. И освоишь интересный прием, без которого не получится. В книжке, конечно, есть. A у тебя книжки почему-то нет, хотя макрос имеется |
|||
![]() |
|
||||
Проектировщик свиноводство Регистрация: 21.08.2003
Сообщений: 2,291
|
2 Vova
Повтор макроса из контекстного меню - я не знал об этом! Просто пользуюсь этим меню крайне редко. Но утверждаю: Быстрее и удобнее повторить макрос, ткнув в ту же кнопку, на которой он висит. Кому как, конечно. Насчет алиасов ты понял меня правильно - длинный (да и короткий) макрос не садится на клавиатурное сокращение. Да, это можно сделать по горячим клавишам. Но большинство горячих подразумевают использование двух клавиш одновременно (типа Ctrl+еще_что_нибудь). Требуется "растяжка" кисти руки. Дискомфорт. Поэтому я навесил что-либо только на функциональные клавиши. (Единственно, мне не удалось переопределить F1 - хэлп выскакивает с завидным упорством.) Также легко переопределяются цифровые клавиши на keypad - но это только для тех, кто не использует там цифровой ввод. |
|||
![]() |
|
||||
Архитектор Регистрация: 25.08.2003
Москва
Сообщений: 307
|
2 Vova
Мне именно такой макрос нужен и удобен, это не баг, а фича:-), я его (и другие для своих задач) пользовал задолго до книги. Просто большинство моих приблуд лучше функционируют в виде лиспов, хотя и макросами "не брезгую". А насчет того, что Лисп трудный язык и нет хороших книжек, ты, по-моему, погорячился. Легче многих других и книги есть. Его не обязательно осваивать сразу и в полном объеме. Начать можно с простейшего. Да, согласен, для LT это не проходит. Да, макросы писать проще. Так никто же и не говорит, что макросы-это плохо... Кому что... А книга просто еще не попадалась в продаже.... |
|||
![]() |