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

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

Повтор макроса определенное количество раз

Ответ
Поиск в этой теме
Непрочитано 10.03.2006, 06:25 #1
Повтор макроса определенное количество раз
Bredx
 
Проектирование систем безопасности
 
Кемерово
Регистрация: 09.02.2006
Сообщений: 34

Создал кнопки для вставки в определенные координаты определенных блоков, для вставки первого блока одна кнопка
Код:
[Выделить все]
^C^C_-Layer;_New;Дым;_Set;
Дым;;_-Osnap;_End;_Cal;P1=End;\;P2=End;\;
P3=End;\;P4=End;\;P5=(P1+P2)/2;;P6=(P3+P4)/2;_-Osnap;_Off;
_cal;P8=Pld(P6,P5,3.5);_-Insert;Dip1;'_Cal;P7=Pld(P5,P6,3.5);;;;\\
_-Osnap;End,Mid,Cen,Int,App,Ext;_Cal;L1=Dist(P7,P8);;L2=(L1/8);;
L3=Vec1(P7,P8);;L4=L1/(ROUND(L2+0.5));
и для остальных,
Код:
[Выделить все]
^C^C(Setq os (Getvar "osmode"));(Setvar "osmode" 22567);_-Insert;Dip1;'_Cal;@+L4*L3;;;;\\(Setvar "osmode" os)
Так вот, вторую кнопку нужно нажимать несколько раз, чтобы вставить определенное количество блоков.
Я знаю Что * в начале зацикливает макрос, но как сделать цикл из всего нескольких раз???
__________________
_КУПУТ_ :)
Просмотров: 8889
 
Непрочитано 10.03.2006, 08:51
#2
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Так, небольшие замечания.
Может, в первом макросе заменить
Код:
[Выделить все]
_-Layer;_New;Дым;_Set;Дым;
на
Код:
[Выделить все]
_-Layer;_M;Дым;;
и добавить подчерки к привязкам END, MID и т.д.

Если второй макрос записать на AutoLisp'е, то можно воспользоваться функцией
Код:
[Выделить все]
(repeat n
..............
)
Проверить не удалось, так как есть неопределенные данные из первого макроса (блок и объекты, к которым надо привязаться)
Profan вне форума  
 
Автор темы   Непрочитано 10.03.2006, 11:06
#3
Bredx

Проектирование систем безопасности
 
Регистрация: 09.02.2006
Кемерово
Сообщений: 34


Это конечно хорошо, вот только я в лиспе не силен, не знаю как этот макрос будет выглядеть в лиспе ведь нельзя же вместо троеточий просто подсунуть макрос
__________________
_КУПУТ_ :)
Bredx вне форума  
 
Непрочитано 11.03.2006, 15:51 Re: Повтор макроса определенное количество раз
#4
Vova

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


Цитата:
Сообщение от Bredx
^C^C(Setq os (Getvar "osmode"));(Setvar "osmode" 22567);_-Insert;Dip1;'_Cal;@+L4*L3;;;;\\(Setvar "osmode" os) [/code]
Так вот, вторую кнопку нужно нажимать несколько раз, чтобы вставить определенное количество блоков.
Я знаю Что * в начале зацикливает макрос, но как сделать цикл из всего нескольких раз???
Макрос, особенно первый, очень сложный, в нем присутствуют вычисления. Видимо, сделан для неких специальных действий. Воспроизвести его для проверки без знания этих действий невозможно. Отсюда и непонятки со вторым, который является следствием первого. Поэтому и ответы неопределенные. Что значит выражение _Cal;@+L4*L3 ? Оно не работает. Далее, команда -Insert подразумевает указание точки вставки. Здесь -же знак \ следует после 4-х Enter (;;;; ) что непонятно.
Знак (*) дает бесконечный повтор, прерывающийся Esc. Заложить определенное количество повторов можно влом-скопировать макрос несколько раз подряд. Если автокад 2005, то посади макрос в Tool Palette и тогда его можно повторять нажатием правой кнопки. Если АС старше, то повтор макроса идет через контекстное меню правой кнопки. Для тех, кто использует макросы, установка этого меню обязательна. Еще можно попробовать продолжить вставку блока командой Copyш вроде этого: -Insert;dip1;\;;;copy;L;;M;@; (здесь буква М потому что 2002)
На базе чего ты создал этот макрос? Откуда выражение (Setq os (Getvar "osmode"))? Меня интересует источник.
Vova вне форума  
 
Автор темы   Непрочитано 13.03.2006, 06:27
#5
Bredx

Проектирование систем безопасности
 
Регистрация: 09.02.2006
Кемерово
Сообщений: 34


to Vova
Команда в стадии разработки, по ходу обучения вставке HOMERUNa :wink: но, книжку ...язык макрокоманд... я еще не дочитал, поэтому... пробелы.
(надеюсь источник ясен)

Макрос предназначен для вставки двух дымовых датчиков dip1 (горизонтально или вертикально) в помещение:
Код:
[Выделить все]
^C^C(Setq os (Getvar "osmode") cl (getvar "clayer"));_-Layer;_Make;Дымовые_датчики;;_-Osnap;_End;(setq p1 (getpoint "Введи угол комнаты:"));\(terpri)(setq p3 (getpoint "Введи противоположный угол комнаты:"));\(if (< (car p1) (car p3)) ((setq p2 (List (car p1)(cadr p3)))(setq p4 (List(car p3)(cadr p1)))) ((setq p2 (List (car p3)(cadr p1)))(setq p4 (List(car p1)(cadr p3)))));_Cal;P5=(P1+P2)/2;;P6=(P3+P4)/2;_-Osnap;_Off;_-Insert;Dip1;'_cal;plt(p5,p6,0.3);;;;\\_-Insert;Dip1;'_cal;plt(p5,p6,0.7);;;;\\(Setvar "osmode" os)(Setvar "clayer" cl);
Макрос предназначен для вставки первого датчика в длинный коридор:
Код:
[Выделить все]
^C^C(Setq os (Getvar "osmode") cl (getvar "clayer"));_-Layer;_Make;Дымовые_датчики;;_-Osnap;_End;(setq p1 (getpoint "Введи угол комнаты:"));\(terpri)(setq p3 (getpoint "Введи противоположный угол комнаты:"));\(if (< (car p1) (car p3)) ((setq p2 (List (car p1)(cadr p3)))(setq p4 (List(car p3)(cadr p1)))) ((setq p2 (List (car p3)(cadr p1)))(setq p4 (List(car p1)(cadr p3)))));_Cal;P5=(P1+P2)/2;;P6=(P3+P4)/2;_-Osnap;_Off;_cal;P8=Pld(P6,P5,3.5);_-Insert;Dip1;'_Cal;P7=Pld(P5,P6,3.5);;;;\\_Cal;L1=Dist(P7,P8);;L2=(L1/8);;L3=Vec1(P7,P8);;L4=L1/(ROUND(L2+0.5));(Setvar "osmode" os)(Setvar "clayer" cl);
Макрос предназначен для вставки остальных датчиков в коридор и является продолжением предыдущего:
Код:
[Выделить все]
^C^C(Setq os (Getvar "osmode") cl (getvar "clayer"));(Setvar "osmode" 22567);_-Insert;Dip1;'_Cal;@+L4*L3;;;;\\(Setvar "osmode" os)(Setvar "clayer" cl);
Примечание:
датчики в коридоре должны располагаться на расстоянии не более 3.5 ед(метров) от стены и расстояние между ними не должно
превышать 8ми ед (метров)
__________________
_КУПУТ_ :)
Bredx вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Повтор макроса определенное количество раз

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск