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

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

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

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

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

Выкладываю 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:
Просмотров: 481624
 
Непрочитано 13.04.2024, 18:03
#1001
Ingpro


 
Регистрация: 11.07.2022
Сообщений: 756


Я пытаюсь выполнить выравнивание вверх влево для выбранных Мтекстов, но AutoCAD всё-равно просит:
"Задайте параметр выравнивания".
Почему-то не выполняется _TL или ВЛ...
Код:
[Выделить все]
 ^C^C ВЫРТЕКСТ ВЛ;
Код:
[Выделить все]
 ^C^C_justifytext;_TL;
Как это можно исправить?
Ingpro вне форума  
 
Непрочитано 13.04.2024, 21:34
#1002
Кулик Алексей aka kpblc
Moderator

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


Может, выбор не надо сбрасывать? Ну или восстанавливать
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 14.04.2024, 16:51
#1003
Ingpro


 
Регистрация: 11.07.2022
Сообщений: 756


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Может, выбор не надо сбрасывать? Ну или восстанавливать
_TL никак не воспринимает или пишет неизвестная команда...
В этих макросах выполняется выравнивание:
Текст в мтекст, выравнивание по центру _MC
Код:
[Выделить все]
 ^C^C_Select;_Single;\_Txt2mtxt;_Previous;;_justifytext;_Last;;_MC
Текст в мтекст, вырвнивание верх лево _TL
Код:
[Выделить все]
 ^C^C_Select;_Single;\_Txt2mtxt;_Previous;;_justifytext;_Last;;_TL
Почему не получается просто назначить выравнивание для МТекста?
Ingpro вне форума  
 
Непрочитано 14.04.2024, 17:12
#1004
Кулик Алексей aka kpblc
Moderator

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


Все ж почитай, что означает ^C в макросах. И заодно посмотри на варианты, которые предлагает команда _.select
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 14.04.2024, 19:59
#1005
engngr

сети
 
Регистрация: 03.11.2008
Московия*
Сообщений: 5,914


Ingpro, на одних макросах далеко не уедешь.
engngr вне форума  
 
Непрочитано 15.04.2024, 09:27
#1006
Ingpro


 
Регистрация: 11.07.2022
Сообщений: 756


Цитата:
Сообщение от engngr Посмотреть сообщение
Ingpro, на одних макросах далеко не уедешь.
Можно и лисп-команду повесить на палитру:
Код:
[Выделить все]
 (defun c:Just_TL (/ ss)
 (if
   (setq ss (ssget ":L" '((0 . "*TEXT,ATTDEF"))))
    (vl-cmdf "_justifytext" ss "" "_tl")
     ) ;_ if
 (princ)
) ;_ defun
Но интересно, как можно это записать макросом...
Ingpro вне форума  
 
Непрочитано 15.04.2024, 10:23
1 | #1007
name02


 
Регистрация: 10.01.2020
Сообщений: 415


Простой лисп-код можно записать в макрос кнопки:
Нажмите на изображение для увеличения
Название: Макрос в кнопку.png
Просмотров: 78
Размер:	80.6 Кб
ID:	262657
name02 вне форума  
 
Непрочитано 15.04.2024, 11:40
#1008
Ingpro


 
Регистрация: 11.07.2022
Сообщений: 756


Цитата:
Сообщение от name02 Посмотреть сообщение
Простой лисп-код можно записать в макрос кнопки:
Спасибо. Это работает:
Код:
[Выделить все]
 ^C^C(if (setq ss (ssget ":L" '((0 . "*TEXT,ATTDEF")))) (vl-cmdf "_justifytext" ss "" "_tl"));_ if (princ)

Последний раз редактировалось Ingpro, 15.04.2024 в 12:40.
Ingpro вне форума  
 
Непрочитано 15.04.2024, 11:42
#1009
Кулик Алексей aka kpblc
Moderator

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


Ingpro, потрать пару дней на "Язык макрокоманд", честное слово - намного проще будет. Заодно узнаешь, что макросы надо записывать в одну строку и что там каждый символ важен.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.04.2024, 13:59
#1010
Ingpro


 
Регистрация: 11.07.2022
Сообщений: 756


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
каждый символ важен
А вот так получилось простым макросом выровнять МТЕКСТЫ вверх влево!
Код:
[Выделить все]
 *^C^C_justifytext;\;_TL;
выход Esc,
или убрать *, и выбирать только один Мтекст

Можно исправить для своих предпочтений, заменив _TL (Top Left) на:

_MC Middle Center середина по центру
_ML Middle Left середина влево
_TC Top Center вверх по центру
_BL Bottom Left вниз влево
Ingpro вне форума  
 
Непрочитано 06.06.2024, 12:24
#1011
Ingpro


 
Регистрация: 11.07.2022
Сообщений: 756


Я хочу перенести все размеры без выбора на задний план
Код:
[Выделить все]
 ^C^C^P(defun c:atback () (ai_draworder "_back") (ssget "_X" '((0 . "DIMENSION"))) "")) (princ));atback;
переносит размеры на задний план, но просит сделать выбор, хотя не должен вроде ssget "_X"?
Как-нибудь это можно исправить?
А вот два макроса
Код:
[Выделить все]
 ^C^C-tcase;\;Upper;;
- текст, мтекст - в ВЕРХНИЙ регистр
Код:
[Выделить все]
 ^C^C-tcase;\;Lower;;
- текст, мтекст - в нижний регистр
если выбрать один объект, изм. регистра происходит сразу,
если рамкой - несколько текстов, то в ком. строке предлагается выбор:
Select case [Sentence/Lower/Upper/Title/toGgle] <Lower>:
интересно, это можно исправить, т.к. UPPER (или Lower) заявлен в команде?

Последний раз редактировалось Ingpro, 07.06.2024 в 11:39.
Ingpro вне форума  
 
Непрочитано 06.06.2024, 12:34
#1012
Кулик Алексей aka kpblc
Moderator

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


В первом - после ssget добавь еще пустую строку. По остальным - я не помню такой команды в каде. Может быть, будет иметь смысл убирать ^C^C впереди и снимать выбор. Ессно, pickfirst должен быть 1.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.06.2024, 12:43
#1013
Ingpro


 
Регистрация: 11.07.2022
Сообщений: 756


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
В первом - после ssget добавь еще пустую строку.
А как добавить?

pickfirst у меня 1

Последний раз редактировалось Ingpro, 07.06.2024 в 11:38.
Ingpro вне форума  
 
Непрочитано 06.06.2024, 14:50
#1014
Кулик Алексей aka kpblc
Moderator

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


А, сорян, ступил: с макросами уже сто лет не работал.
Вообще говоря, я б под эту задачу вообще некомандными методами работал бы - удобнее и предсказуемее.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.06.2024, 15:28
#1015
Ingpro


 
Регистрация: 11.07.2022
Сообщений: 756


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
я б под эту задачу вообще некомандными методами работал бы
А как? AutoCAD никак не узнаёт atback (_atback, _.atback)?

Последний раз редактировалось Ingpro, 06.06.2024 в 15:33.
Ingpro вне форума  
 
Непрочитано 06.06.2024, 16:20
#1016
Кулик Алексей aka kpblc
Moderator

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


Навскидку : https://autolisp.ru/2011/12/16/draworder/
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 07.06.2024, 00:11
#1017
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Цитата:
Сообщение от Ingpro Посмотреть сообщение
Я хочу перенести все размеры без выбора на задний план
По идее, вот так должно сработать, но Автокада под рукой нет, к сожалению, проверить не могу:
Код:
[Выделить все]
 ^C^C^P(defun c:atback () (ai_draworder "_back") (sssetfirst nil (ssget "_X" '((0 . "DIMENSION")))) "")) (princ));atback;
skkkk вне форума  
 
Непрочитано 07.06.2024, 09:22
#1018
Ingpro


 
Регистрация: 11.07.2022
Сообщений: 756


Цитата:
Сообщение от skkkk Посмотреть сообщение
1
^C^C^P(defun c:atback () (ai_draworder "_back") (sssetfirst nil (ssget "_X" '((0 . "DIMENSION")))) "")) (princ));atback;
skkkk, спасибо. Но работает немного странно.
Выбрать объекты-выбираю один размер-ПКМ-выделяются все размеры-enter-esc-размеры ушли на задний план...
Хотелось бы не выбирать размеры... и enter-esc не нажимать...

Последний раз редактировалось Ingpro, 07.06.2024 в 09:39.
Ingpro вне форума  
 
Непрочитано 07.06.2024, 15:35
#1019
Ingpro


 
Регистрация: 11.07.2022
Сообщений: 756


Цитата:
Сообщение от skkkk Посмотреть сообщение
По идее, вот так должно сработать
убираю две скобки и добавляю ;; в конце
Код:
[Выделить все]
 ^C^C^P(defun c:atback () (ai_draworder "_back") (sssetfirst nil (ssget "_X" '((0 . "DIMENSION")))) "") (princ);atback;;;
сразу выделяются все размеры, но всё-равно только после -esc- размеры ушли на задний план...
ещё немного бы допилить...

Последний раз редактировалось Ingpro, 07.06.2024 в 16:24.
Ingpro вне форума  
 
Непрочитано 10.06.2024, 13:12
#1020
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Ingpro, а если сначала выбрать, а потом кидать на задний план?
Код:
[Выделить все]
 (defun c:atback () (sssetfirst nil (ssget "_X" '((0 . "DIMENSION"))))(ai_draworder "_back") (princ))
Не пользуюсь кнопками, лень проверять что там в конце и надо ли точку с запятой ставить или пробела хватит. И вот буква P в выражении (^C^C^P) - не помню, что делает)

Ну и для порядку желательно проверить, вдруг функция загружена, чтоб повторно не грузить:
Код:
[Выделить все]
 ^C^C^P(if (null C:atback) (defun c:atback () (sssetfirst nil (ssget "_X" '((0 . "DIMENSION"))))(ai_draworder "_back"));atback;
skkkk вне форума  
Ответ
Вернуться   Форум 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