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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Мои макрокоманды

Мои макрокоманды

Ответ
Поиск в этой теме
Непрочитано 19.05.2008, 15:20 1 |
Мои макрокоманды
zenon
 
Остекляем!!! Алюминим!!!
 
Москва
Регистрация: 21.02.2005
Сообщений: 3,826

Предлагаю в данной теме выкладывать используемые макрокоманды.
Выкладывать прошу с описанием, что данная макрокоманда выполняет и как. Если можно, то и рисунки к кнопкам соотвественно.

Выкладываю 4 своих макрокоманды.

Улучшенная команда _Break, разрыв в одной точке с повтором по правой клавише мышки.
Цитата:
^C^C^P(defun c:break2 () (vl-cmdf "_break" pause "f" pause "@")(princ));break2;
ps. Макрокоманда не моя. Рисунок со старой кнопки.


Объект Xline строится горизонтально
Цитата:
^C^C_xline;_h;
Объект Xline строится вертикально
Цитата:
^C^C_xline;_v;

Объект Xline строится по объекту (не работает по примитивам блока и arx объектов сторонних навесок на автокад).
Цитата:
*^C^C_xline;_offset;_Through;_nea;\_none;@;;
Макрокоманда зациклена, выход по Esc.
ps. Макрокоманда не моя.


Объект Xline строится по объекту, с поворотом в указанной точке на 90 градусов (не работает по примитивам блока и arx объектов сторонних навесок на автокад)
Цитата:
^C^C_xline;_offset;_Through;_nea;\_none;@;^C^C_rotate;_last;;\90;
ps. Макрокоманда доработана из предыдущей.

Соотвественно и кнопочки
Button.rar

__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
Просмотров: 451575
 
Непрочитано 29.10.2013, 10:30
#601
off

геодезист
 
Регистрация: 11.11.2006
Ростов-на-Дону
Сообщений: 95
<phrase 1= Отправить сообщение для off с помощью Skype™


Может тебе проще их не отключать а тасовать на задний/передний план? Ну и сделать кнопку для переноса на скрытый слой.
off вне форума  
 
Непрочитано 29.10.2013, 11:02
#602
Агент СмиТ

Gti
 
Регистрация: 14.01.2010
МО Железнодорожный
Сообщений: 121


Цитата:
Сообщение от off Посмотреть сообщение
Может тебе проще их не отключать а тасовать на задний/передний план? Ну и сделать кнопку для переноса на скрытый слой.
Нет, это не выход, т.к. при одновременном показе всех растров перемещение на передний не избавялет от перегруженности чертежа информацией (при включенной прозрачности фона), ведь растры "временной положки" могут накладываться друг на друга. Если прозрачность фона отключена, возникнут неудобства с выбором растров, которые находятся внизу, не говоря уже о том, что "основная подложка" будет постоянно проваливаться под непрозрачный растр.
__________________
Каждая система стремится к равновесию.
Агент СмиТ вне форума  
 
Непрочитано 29.10.2013, 11:37
#603
off

геодезист
 
Регистрация: 11.11.2006
Ростов-на-Дону
Сообщений: 95
<phrase 1= Отправить сообщение для off с помощью Skype™


Для каждого растра свой слой, для каждого слоя свою кнопку, все кнопки на отдельную панель.
off вне форума  
 
Непрочитано 29.10.2013, 12:07
#604
Агент СмиТ

Gti
 
Регистрация: 14.01.2010
МО Железнодорожный
Сообщений: 121


Как вариант, да. Плюс ещё кнопку для включения всех растров скопом.
Но можно кликнуть ЛКМ в свойствах и колесом крутануть вверх или вниз
__________________
Каждая система стремится к равновесию.
Агент СмиТ вне форума  
 
Непрочитано 29.10.2013, 13:46
#605
off

геодезист
 
Регистрация: 11.11.2006
Ростов-на-Дону
Сообщений: 95
<phrase 1= Отправить сообщение для off с помощью Skype™


Имена слоев сделать с префиксом типа Растр_1, Растр_2, в Менеджере слоев добавить фильтр по имени Растр* и инвертировать его. Таким образом служебные растровые слои не будут путаться в выпадающем списке. На каждом растре пару-тройку номеров расположить чтобы всегда было понятно какую кнопку нажимать чтобы выключить слой (хотя тут можно и layoff использовать).

Включать все растры скопом можно через диспетчер состояния слоев. Сохранить включенное состояние всех нужных слоев и написать макрос который будет вызывать это состояние (покопаться в параметрах команды -layer).

Последний раз редактировалось off, 29.10.2013 в 14:02.
off вне форума  
 
Непрочитано 29.10.2013, 14:59
#606
Агент СмиТ

Gti
 
Регистрация: 14.01.2010
МО Железнодорожный
Сообщений: 121


off, вот вы вернулись к тому с чего начали, в немного видоизменённом варианте. Однако идея с включением/отключением слоёв мне не подходит, потому я и задал свой вопрос в теме по обсуждению макросов, но всё равно спасибо
__________________
Каждая система стремится к равновесию.
Агент СмиТ вне форума  
 
Непрочитано 29.10.2013, 15:20
#607
Vova

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


Неоднократно появляется на форуме боязнь расплодить слои. Несколько их десятков считается очень чем-то страшным. На самом деле никаких проблем нет. В наших чертежах встречается и тысяча слоев, если чертеж делается на чужой подоснове куда в свою очередь вставлена всякая всячина. Моих собственных слоев всегда больше сотни и это нормально. Главное правильно их обозвать для кучного группирования
Vova вне форума  
 
Непрочитано 29.10.2013, 15:30
#608
Агент СмиТ

Gti
 
Регистрация: 14.01.2010
МО Железнодорожный
Сообщений: 121


Согласен с вами, файл над которым сейчас работаю (попутно и возникла идея задать вопрос на форуме) в данный момент содержит 110 слоёв. Однако лучшие результаты работы достигаются там, где идёт выбор способа решения задачи, в каждом конкретном случае оптимальные решения могут отличаться.
__________________
Каждая система стремится к равновесию.
Агент СмиТ вне форума  
 
Непрочитано 29.10.2013, 18:44
#609
VVA

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


Цитата:
Сообщение от Агент СмиТ Посмотреть сообщение
Кто нибудь может подсказать макрос на кнопку отключения/включения "отображения изображения"?
Цитата:
Сообщение от Агент СмиТ Посмотреть сообщение
Дело здесь не в _imageframe, т.к. требуется скрыть не рамки растров, а их содержимое.
Могу предложить как вариант не включать/отключать, а выгружать/загружать.
Первый код был опубликован здесь LISP. Растры.Управление выгрузкой/загрузкой/удалением путем указания точки внутри контура
Я архив выкладывал на старом autolisp.ru. Порылся в своих заначках, выкладываю здесь
Вожможные макросы
Код:
[Выделить все]
^C^C^P(if (not DoImage)(load "Doimage"));ptImageUnload;
^C^C^P(if (not DoImage)(load "Doimage"));ptImageReload;
^C^C^P(if (not DoImage)(load "Doimage"));ptImageReloadUnload;
^C^C^P(if (not DoImage)(load "Doimage"));ptImageDetach;
Идея возникла по аналогии с Растер дизайном. Там можно нажав shift и ткнув внутрь растра выделить его. Здесь была сделана попытка управления растрами путем тыкания внутрь контура.
ptImageUnload - выгружает растры, внутрь которых тыкнули
ptImageReload - загружает растры, внутрь которых тыкнули
ptImageReloadUnload - выгружает загруженные и наоборот
ptImageReloadUnload - удаляет растр
Вложения
Тип файла: rar DoImage.rar (11.2 Кб, 100 просмотров)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 29.10.2013, 21:14
1 | #610
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Программа перенесена сюда

Последний раз редактировалось gomer, 02.11.2013 в 17:01.
gomer вне форума  
 
Непрочитано 29.10.2013, 22:53
#611
off

геодезист
 
Регистрация: 11.11.2006
Ростов-на-Дону
Сообщений: 95
<phrase 1= Отправить сообщение для off с помощью Skype™


gomer, попробовал код. Работает. Включает/выключает. А можно его как-то на одну кнопку повесить?
Тестировал в первом попавшемся файле и вдруг обнаружил что некоторые растры не выключаются - пригляделся поближе - они оказались в блоке.
off вне форума  
 
Непрочитано 30.10.2013, 00:47
1 | #612
art_rrc


 
Регистрация: 28.01.2013
Минск
Сообщений: 379


Цитата:
Сообщение от Vova Посмотреть сообщение
Кто-нибудь понял вопрос? (кроме art_rrc)
А так-же ответ на него?
Прилагаю фото-инструкцию..
Вложения
Тип файла: pdf 1.pdf (429.7 Кб, 150 просмотров)
art_rrc вне форума  
 
Непрочитано 30.10.2013, 01:34
#613
Vova

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


Вообще-то Slot это как-бы щель, узкий проем (в полу) и подобное. Автокадовская HELP показывает: slots
The spaces to install circuit breakers in an electrical panel (Это потому что мой автокад MEP, поэтому в нем как раз про электричество). Ну или, по-русски, место в эл. щитке для установки автомата. Гнездо подругому. То есть данный термин мало подходит к кнопке на панели инструментов. Думаю, приложенная тобой инструкция является самоделкой и автор сам придумал термин Слот, чего многие форумчане могут и не знать
Vova вне форума  
 
Непрочитано 30.10.2013, 02:32
#614
art_rrc


 
Регистрация: 28.01.2013
Минск
Сообщений: 379


Цитата:
Сообщение от Vova Посмотреть сообщение
Вообще-то Slot это как-бы щель, узкий проем (в полу) и подобное. Автокадовская HELP показывает: slots
The spaces to install circuit breakers in an electrical panel (Это потому что мой автокад MEP, поэтому в нем как раз про электричество). Ну или, по-русски, место в эл. щитке для установки автомата. Гнездо подругому. То есть данный термин мало подходит к кнопке на панели инструментов. Думаю, приложенная тобой инструкция является самоделкой и автор сам придумал термин Слот, чего многие форумчане могут и не знать
Да я эту "инструкцию" за 2 минуты в paint сделал, чтоб пояснить, что имелось ввиду. Для меня слот, это место(ячейка) для расположения чего-либо.
Спасибо. Запомнил. Впредь буду более внимателен к терминам.

И чтоб сообщение не было офтопом, задам давно интересующий меня вопрос:
"Можно ли написать макрос, которых активирует операцию "Отразить" в динамическом блоке". Пример: Выделяешь выноску, жмешь кнопку, она зеркалится. Чтоб не надо было курсор наводить.
Миниатюры
Нажмите на изображение для увеличения
Название: 2.png
Просмотров: 95
Размер:	7.8 Кб
ID:	115315  
art_rrc вне форума  
 
Непрочитано 30.10.2013, 03:06
#615
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


off , обновил #610
gomer вне форума  
 
Непрочитано 30.10.2013, 09:06
#616
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от VVA Посмотреть сообщение
Я архив выкладывал на старом autolisp.ru
Эт где было? И примерно когда?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.10.2013, 13:24
#617
VVA

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Эт где было? И примерно когда?
Это было в его первой инкарнации, когда его только создал admin. Ссылка вниpзу на caduser'е. датирована 26.09.2006
PS >gomer,
Цикл
Код:
[Выделить все]
(vlax-for layout (vla-get-layouts acDoc) ...
Лишний. Каждый лэйаут есть в коллекции блоков и ты по нему пройдешься (vlax-for blk (vla-get-Blocks acDoc)
Код:
[Выделить все]
(vlax-for blk (vla-get-Blocks (vla-get-activedocument (vlax-get-acad-object)))
  (terpri)(princ (vla-get-Name blk))
  )
Цитата:
_$

*Model_Space
*Paper_Space
*Paper_Space0
_$
Цитата:
Сообщение от off Посмотреть сообщение
А можно его как-то на одну кнопку повесить?
Одна кнопка
Код:
[Выделить все]
(defun ReverseAllImages ()
;;; Функция поиска изображений, в том числе в блоках
  ( (lambda (acDoc)
      (vlax-for blk (vla-get-Blocks acDoc)
        (vlax-for obj blk
          (if (and (eq "AcDbRasterImage" (vla-get-ObjectName obj))
                   (vlax-write-enabled-p obj)
                   )
            (vla-put-ImageVisibility obj (if (eq (vla-get-ImageVisibility obj) :vlax-true) :vlax-false :vlax-true))
          )
        )
      )
      (vla-Regen acDoc acAllViewports)
    )
    (vla-get-activedocument (vlax-get-acad-object))
  )
  (princ)
)

(defun C:REVIMAGES ()
;;; Функция реверса (скрытия/показа) содержимого изображений
  (ReverseAllImages)
)
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 30.10.2013 в 14:15.
VVA вне форума  
 
Непрочитано 30.10.2013, 15:42
#618
Агент СмиТ

Gti
 
Регистрация: 14.01.2010
МО Железнодорожный
Сообщений: 121


VVA, спасибо большое, подгрузил менюшку из поста 609 - выгрузка/загрузка растров работает, но только при:
  • разблокировании ВСЕХ слоёв, содержащих растры (что не очень удобно);
  • в случае указания точки где растры накладываются, происходит выбор и отключение всех растров в этой точке (решается, если заранее выбрать секущей рамкой отдельный растр, то выгружается только этот растр);
Экспорт/импорт описаний возможно очень пригодился бы но, когда я экспортировал файл (*.ims), подгрузить растры в новый файл, а также разместить уже подгруженные не удалось:
Цитата:
Команда:

Файл .\пл\Щелковский\1855.tif не найденВыполняется регенерация модели.
Скажите пожалуйста, лисп из поста 619 отключает все растры на всех разблокированных слоях, а можно ли сделать отключение растров по выбору?

art_rrc, воспользовался вашим советом, получилось просто отлично! Спасибо вам!
Если бы только эту кнопку на обычную панель перетащить, было бы вообще здорово.
Миниатюры
Нажмите на изображение для увеличения
Название: Кнопка QA.gif
Просмотров: 82
Размер:	8.2 Кб
ID:	115352  
__________________
Каждая система стремится к равновесию.

Последний раз редактировалось Агент СмиТ, 30.10.2013 в 15:56.
Агент СмиТ вне форума  
 
Непрочитано 30.10.2013, 19:03
1 | #619
VVA

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


Цитата:
Сообщение от Агент СмиТ Посмотреть сообщение
разблокировании ВСЕХ слоёв, содержащих растры (что не очень удобно);
давно писал. Пока ничего не могу сказать нужно смотреть

Цитата:
Сообщение от Агент СмиТ Посмотреть сообщение
в случае указания точки где растры накладываются, происходит выбор и отключение всех растров в этой точке
так и планировалось. В принципе можно было бы показать диалог с именами растров для выбора. но опять таки см. ответ выше

Цитата:
Сообщение от Агент СмиТ Посмотреть сообщение
а можно ли сделать отключение растров по выбору?
Можно
Код:
[Выделить все]
 
(defun C:REVIMG (/ ss item)
;;; Команда для реверса (скрытия/показа) содержимого выбранных изображений
  (vl-load-com)
  (defun ReverseImage (obj)
    (if (and (eq "AcDbRasterImage" (vla-get-objectname obj))
             (vlax-write-enabled-p obj)
        ) ;_ end of and
      (vla-put-imagevisibility obj
        (if (eq (vla-get-imagevisibility obj) :vlax-true)
          :vlax-false
          :vlax-true
        ) ;_ end of if
      ) ;_ end of vla-put-ImageVisibility
    ) ;_ end of if
  ) ;_ end of defun
  (if (setq ss (ssget "_:L" '((0 . "IMAGE"))))
    (repeat (setq item (sslength ss)) ;_ end setq
      (ReverseImage
        (vlax-ename->vla-object (ssname ss (setq item (1- item))))
      ) ;_ end of ReverseImage
    ) ;_ end repeat
  ) ;_ end of if
) ;_ end of defun
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 30.10.2013, 19:47
#620
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Слушайте, а как выбрать только изображения, которые не отображаются?
gomer вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Мои макрокоманды

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мои динамические блоки Shoorup Динамические блоки 2713 21.04.2011 23:34
Повторение выполнения макрокоманды по циклу. КАК? Kostinok AutoCAD 12 05.12.2007 15:40
Мои проекты Vova Разное 10 08.10.2007 23:18
Мои палитры инструментов на соседний компьютер Pave1 AutoCAD 4 27.06.2006 09:45