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

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

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

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

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

Выкладываю 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:
Просмотров: 448527
 
Непрочитано 19.05.2008, 16:17
#2
Log_in

Инженер-электрик
 
Регистрация: 16.01.2007
Москва
Сообщений: 19


Вот буквально неделю назад (к своему стыду) начал читать книжку В. Свет "Язык макрокоманд..." и хочу выразить автору огромную благодарность (думаю выражение благодарности не будет оффтопом).

Применительно к себе пока сделал одну кнопку, но зато пользуюсь ей по 100 раз на дню: проверка ошибок, очистка чертежа только от неиспользуемых блоков с последующим сохранением.

^C^C_audit;_y;_-purge;_blocks;;_n;_qsave;
Log_in вне форума  
 
Непрочитано 19.05.2008, 22:34
#3
Кулик Алексей aka kpblc
Moderator

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


Я бы дополнил так:
Код:
[Выделить все]
^C^C_.audit;_y;_.-purge;_a;;_n;_.-purge;_r;;_n;_qsave
Работать будет в AutoCAD от 2005 и выше.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.05.2008, 00:12
#4
Vova

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


^P^C^C(startapp "explorer.exe" (strcat "/n,/e," (getvar "dwgprefix")))(princ)
Вызывает Проводник, открытый на текущей директории (макрос не мой)
Vova вне форума  
 
Непрочитано 20.05.2008, 08:33
1 | #5
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Вот макросы, которыми я очень часто пользуюсь:

Блокировать ВЭ
Цитата:
^C^C_.-vports;_lock;_on;
Разблокировать ВЭ
Цитата:
^C^C_.-vports;_lock;_off;
Площадь объекта
Цитата:
^C^C_.area;_Object
Обновить атрибуты с запросом указания блока.
Цитата:
^C^C(defun C:M-Command () (vl-cmdf "_.ATTSYNC" "_S" Pause "_Y"));M-Command;
Включить все слои
Цитата:
^C^C_.-layer;_on;*;;
Ручки внутри блоков вкл/выкл
Цитата:
^C^C'GRIPBLOCK;$M=$(xor,$(getvar,GRIPBLOCK),1);
Вместо текста рамка вкл/выкл
Цитата:
^C^C'QTEXTMODE;$M=$(xor,$(getvar,QTEXTMODE),1);_.regen;
Вообще-то раньше у меня было очень много макросов и даже очень навороченых, но со временем они все меняются на лисп. Лиспом всё-таки удобней.
Makswell вне форума  
 
Автор темы   Непрочитано 20.05.2008, 08:58
#6
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,824
<phrase 1=


Makswell, а можно дополнить макрос
Площадь объекта
Цитата:
^C^C_.area;_Object
чтоб еще и значение текстом вставлял???
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 20.05.2008, 09:05
#7
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


zenon, макросом ИМХО не сделать. Можно лиспом.
Makswell вне форума  
 
Непрочитано 20.05.2008, 09:11
#8
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Ещё макрос (для программистов). Тоже частенько пользуюсь.

Посмотреть DXF-свойства примитива
Цитата:
^C^C(defun C:M-Command () (princ (entget (car (entsel)))) (textscr) (princ));M-Command;
Makswell вне форума  
 
Непрочитано 20.05.2008, 09:25
#9
Profan


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


Вот такой аляповатый макрос:
Код:
[Выделить все]
 
^C^C^P_.area;_Object;\^C(setq txt (getvar "AREA"))(princ "Укажите точку")(command "_text" pause "" "" txt)(princ)
Или здесь посмотреть:
http://www.caduser.ru/cgi-bin/f1/board.cgi?t=19561RU
Profan вне форума  
 
Автор темы   Непрочитано 20.05.2008, 09:42
#10
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,824
<phrase 1=


Profan,
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 20.05.2008, 13:21
1 | #11
Log_in

Инженер-электрик
 
Регистрация: 16.01.2007
Москва
Сообщений: 19


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Я бы дополнил так:
Код:
[Выделить все]
^C^C_.audit;_y;_.-purge;_a;;_n;_.-purge;_r;;_n;_qsave
Работать будет в AutoCAD от 2005 и выше.
Я специально чищу только блоки
Код:
, потому что в ходе проектирования их скапливается до немеряно, а например размерные стили еще не использовались, но будут нужны.) Ну а когда чертеж готов - тотальная зачистка
Log_in вне форума  
 
Непрочитано 21.05.2008, 05:52
#12
Залётный


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


Цитата:
Сообщение от Makswell Посмотреть сообщение
Вот макросы, которыми я очень часто пользуюсь:

Блокировать ВЭ
Цитата:
^C^C_.-vports;_lock;_on;
Разблокировать ВЭ
Цитата:
^C^C_.-vports;_lock;_off;
Вообще-то раньше у меня было очень много макросов и даже очень навороченых, но со временем они все меняются на лисп. Лиспом всё-таки удобней.
Мне кажется удобнее, когда меняется состояние вьюпорта в зависимости от предыдущего. Много лет пользуюсь этим от Jones, Steve:
VPtoggle
Залётный вне форума  
 
Непрочитано 21.05.2008, 10:53
#13
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Ну вот, я же писал:
Цитата:
Вообще-то раньше у меня было очень много макросов и даже очень навороченых, но со временем они все меняются на лисп. Лиспом всё-таки удобней.
Залётный, ты также меня повторил:
Цитата:
Мне кажется удобнее, когда меняется состояние вьюпорта в зависимости от предыдущего...
Но тема то про макросы...
Makswell вне форума  
 
Автор темы   Непрочитано 21.05.2008, 10:57
#14
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,824
<phrase 1=


Цитата:
Сообщение от Makswell Посмотреть сообщение
Но тема то про макросы...
Точно!!!
Посему давайте не уходить от темы, а выкладывать макросы
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 23.05.2008, 02:07
#15
Димас

джедай
 
Регистрация: 31.01.2005
Магадан
Сообщений: 460
<phrase 1=


вот парочка моих
может кто оптимизирует?)
заливка контура сразу двумя штриховками (масштаб, название предустановлены, чтоб работало - менять на свои)
Код:
[Выделить все]
^C^C_select;\-bhatch;p;"Rhyolit";0.5;0;s;p;;;-bhatch;p;"Solid";1;0;s;p;;;
восстановление контура штриховки
Код:
[Выделить все]
^C^C-hatchedit;\b;p;y;
рисуем контур штриховки, после он сам заливается, контур может иметь "внутренние" контуры - поэтому ентер жать несколько раз)
Код:
[Выделить все]
^C^C-HATCH;p;SOLID;W;Y;
Димас вне форума  
 
Автор темы   Непрочитано 10.06.2008, 10:25
#16
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,824
<phrase 1=


А что, больше никто не использует макросы в работе?
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 10.06.2008, 10:36
#17
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


ИМХО сейчас макросов меньше, потому что сейчас до них дольше добраться в CUI. Раньше нажал ПКМ на кнопке, и сразу можно править макрос. Проще было экспериментировать. Поменял что-то - посмотрел результат, опять поменял что-то и т.д...
А сейчас... Проще набрать _VLIDE и начать программировать на лиспе, а на кнопку посадить уже сделанную тобой готовую прогу.
Makswell вне форума  
 
Непрочитано 10.06.2008, 11:27
#18
VVA

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


Чато приходят чужие чертежи с кучей прокси объектов. Благодаря Александру Ривилису с этой бедой можно бороться.
Макрос расчленяет, удаляет прокси объекты, делает аудит рисунка и восстанавливает предыдущее состояние слоев.
Код:
[Выделить все]
^C^CEXPLODEALLPROXY;REMOVEALLPROXY;_AUDIT;_Y;_LAYERP;_LAYERP;
Подразумевается, что нужный explodeproxy.arx загружен.
Сам arx и подробное описание здесь:
ObjectARX. Расчленение и удаление proxy-объектов
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 10.06.2008, 12:02
#19
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,824
<phrase 1=


VVA,
А если прописать сюда и загрузку explodeproxy.arx???
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 10.06.2008, 13:04
#20
Кулик Алексей aka kpblc
Moderator

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


zenon, это проще всего делать лиспом.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 10.06.2008, 13:13
#21
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,824
<phrase 1=


Кулик Алексей aka kpblc, я в курсе, просто хочу создать свою панель менюшек, один раз загрузил и все.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 10.06.2008, 13:24
1 | #22
VVA

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


zenon,
У меня грузится лиспом с проверкой версии Автокада.
Но можно так
Код:
[Выделить все]
^C^C(if(not(member "explodeproxy200X.arx" (arx)))(arxload "explodeproxy200X.arx"));EXPLODEALLPROXY;REMOVEALLPROXY;_AUDIT;_Y;_LAYERP;_LAYERP;
Вместо X вписать
0 - 2002 Автокад
6 - 2004,2005,2006 Автокад
7 - 2007, 2008, 2009 Автокад
Вариант для 2004,2005 и 2006 Автокада
Код:
[Выделить все]
^C^C(if(not(member "explodeproxy2006.arx" (arx)))(arxload "explodeproxy2006.arx"));EXPLODEALLPROXY;REMOVEALLPROXY;_AUDIT;_Y;_LAYERP;_LAYERP;
Сами arx'и по ссылке в посте #18
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 10.06.2008, 13:37
#23
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,824
<phrase 1=


VVA,
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 10.06.2008, 16:51
#24
Vova

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


Цитата:
Сообщение от Makswell Посмотреть сообщение
ИМХО сейчас макросов меньше, потому что сейчас до них дольше добраться в CUI. Раньше нажал ПКМ на кнопке, и сразу можно править макрос. Проще было экспериментировать. Поменял что-то - посмотрел результат, опять поменял что-то и т.д...
.
Когда я впервые пощупал 2006. то сказал об этом-же на форуме почти такими-же словами. Но потом пощупал Tool Palettes и понял, что здесь доступ к редактированию макроса даже проще, чем в старом Customize. Жаль только, что длинные макросы здесь не вмещаются
Vova вне форума  
 
Непрочитано 11.06.2008, 01:51
#25
Димас

джедай
 
Регистрация: 31.01.2005
Магадан
Сообщений: 460
<phrase 1=


небольшой офтоп
Цитата:
Сообщение от VVA Посмотреть сообщение
Чато приходят чужие чертежи с кучей прокси объектов. Благодаря Александру Ривилису с этой бедой можно бороться.
Макрос расчленяет, удаляет прокси объекты, делает аудит рисунка и восстанавливает предыдущее состояние слоев.
а разве не тоже самое делает команда aectoacad
или она только в 2009 появилась?
Димас вне форума  
 
Непрочитано 11.06.2008, 08:16
#26
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Цитата:
Сообщение от Димас Посмотреть сообщение
а разве не тоже самое делает команда aectoacad
или она только в 2009 появилась?
в 2008-м её точно нет
Makswell вне форума  
 
Непрочитано 11.06.2008, 10:16
#27
Кулик Алексей aka kpblc
Moderator

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


Димас, команда AecToACAD существует только в ADT. В чистом AutoCAD ее нет.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.06.2008, 12:16
#28
stas_org


 
Регистрация: 05.04.2007
Самара
Сообщений: 1,199


Строит qleader по трем параметрам, предварительно отключая ОРТО, а затем его включает. Простая и распространенная выноска для строительных чертежей

для русского акада
^C^Cорто откл _qleader \\\;;орто вкл
для не русского акада
^C^Cortho off qleader \\\;;ortho on

Назвал Супер выноска
stas_org вне форума  
 
Непрочитано 11.06.2008, 12:53
#29
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Добавлю stas_org.
для любого акада:
Код:
[Выделить все]
^C^C_.ORTHO;_Off;_.QLEADER;\\\;;_.ORTHO;_On
Makswell вне форума  
 
Непрочитано 11.06.2008, 16:49
#30
Vova

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


stas_org>
А если ORTHO до применения команды было отклучено?
Vova вне форума  
 
Непрочитано 14.06.2008, 16:36
#31
Vova

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


Кто рисует по растру знает, что периодически растр накрывает собой нарисованное и надо делать Draworder, что достает.
(чтобы перейти к теме о макросах придется вытерпеть небольшое вступление)
Несколько лет назад здесь обсуждалась моя тема о наложении в-портов для создание невсплывающей заливки.. Эту идею (по подсказке, кажется, VK) я применил и к растру.
Итак, в модели имеется растр. В листе он выведен во Vport. В листе-же на него наложен другой V-port с некоторым смещением одной или двух сторон, чтобы можно было открыть любой без Ctrl+R. В этот Vport выводится участок пространства модели, отстоящий от растра на круглое расстояние, пусть вправо на 1000 единиц. Рисовать надо в модели через дырку во втором V-porte. (Да-да, через дырку, но цель оправдывает средства!) прямо по растру. На самом деле в модели рисунок оказывается на расстоянии в 1000 правей растра. Оба впорта должны быть заблокированы и их слой тоже. И тем не менее нет-нет, а автокад поднимает наверх впорт с растром и он топит все; что нарисовано во 2-м в-порте. И Draworder здесь НЕ РАБОТАЕТ!.
Вот макрос. мгновенно исправляющий положение
^c^c -_La;_U;ИмяслояВЭ;;_Cp;\0,0;10,0;_E;_P;;_M;L;;0,0;-10,0;_-La;_Lo;ИмяслояВЭ;;
Кто заинтересуется; расскажу подложенную под макрос идею, она довольно интересная и понять ее навскидку вряд-ли возможно
Vova вне форума  
 
Непрочитано 15.06.2008, 00:37
#32
Кулик Алексей aka kpblc
Moderator

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


Может, подложить свинью и расшифровать все что делает этот макрос?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.06.2008, 04:53
#33
Vova

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


Валяй. В смысле озвучь идею, так как зная ее, макрос становится несложным
Vova вне форума  
 
Непрочитано 15.06.2008, 05:18
#34
Profan


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


Обидно, конечно, но этот макрос не работает. Это и есть свинья?
Profan вне форума  
 
Непрочитано 15.06.2008, 11:36
#35
VVA

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


Profan, Почти. Здесь используются сокращенные названия команд для Английского Автокада
_-LA - _-LAYER
_CP - _COPY
_M - _MOVE
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 15.06.2008, 21:31
#36
Vova

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


Profan> чтобы макрос заработал, надо иметь два ВЭ один над другим. Кроме того, я списал макрос на бумажку и запустил на форум уже дома. Вполне мог и ошибиться. Проверю завтра на работе, скопировав его с форума. Как ты понимаешь, я бы не запустил макрос в тему не убедившись, что он работатет. Потому что хвастался перед всеми на работе и показывал как ловко он поднимает содержимое одного ВЭ над другим. Все-же главное в моем сообщении это как можно работать по растру. (раньше мне не приходилось рисовать по растру).
Vova вне форума  
 
Непрочитано 15.06.2008, 22:33
#37
Кулик Алексей aka kpblc
Moderator

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


Vova, VVA указал на причину "неработы" макроса не в английских версиях. Должно быть нечто типа:
Код:
[Выделить все]
^C^C-._Layer;_Unlock;ИмяслояВЭ;;_Copy;\0,0;10,0;_Erase;_P;;_Move;_L;;0,0;-10,0;_.-Layer;_Lock;ИмяслояВЭ;;
P.S. Код не проверял.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 16.06.2008, 02:09
#38
Димас

джедай
 
Регистрация: 31.01.2005
Магадан
Сообщений: 460
<phrase 1=


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Димас, команда AecToACAD существует только в ADT. В чистом AutoCAD ее нет.
только что проверял - автокад 2009 ENG
команду понимает, в хелпе правда ее нет
Димас вне форума  
 
Непрочитано 16.06.2008, 02:53
#39
Vova

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Vova, VVA указал на причину "неработы" макроса не в английских версиях. Должно быть нечто типа:
Код:
[Выделить все]
^C^C-._Layer;_Unlock;ИмяслояВЭ;;_Copy;\0,0;10,0;_Erase;_P;;_Move;_L;;0,0;-10,0;_.-Layer;_Lock;ИмяслояВЭ;;
А разве обязательно для русского автокада называть англ. команду полностью? У меня было "_M" у тебя _Move и т. д. В одном только месте я забыл подчеркивание при "L" но не думаю, что Profan не подправил. Завтра проверю, нет-ли ошибки путем прямого копирования
Vova вне форума  
 
Непрочитано 16.06.2008, 05:34
#40
Profan


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


Алексей, Vova! Что же вы, блин. Не будет работать этот макрос в таком виде, как вы его написали:
^C^C-._Layer...
Profan вне форума  
 
Непрочитано 16.06.2008, 09:21
#41
Кулик Алексей aka kpblc
Moderator

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


Profan, признаю - был неправ.
Vova, это обязательно - иначе команда не распознается.
Димас, у меня только ADT установлены, поэтому ничего сказать не могу - возможно, начиная с какой-то версии эта команда встраивается.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 16.06.2008, 17:05
#42
Vova

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


Ага, значит списывая с бумажки сделал ошибку. Вот это в англ работает, здесь прямая копия ^C^C-LA;U;Z-VPORT;;_CP;\;0,0;1,0;E;P;;M;L;;0,0;-1,0;-LA;LO;Z-VPORT;;
Для русского надо черточки подставить и, получается, вместо сокращенных команд надо дать их полностью. Для команды -LA надо _-LA. Насчет точки (. _-LA). У вас что, часто команdы переопределяются? Тогда почему при других командах точки нет?
Интересно, что спор вокруг макроса (что прямо по теме) а о работе по растру вопросов нет. Разве никто с ними не работает?
Vova вне форума  
 
Непрочитано 16.06.2008, 17:12
#43
VVA

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


Vova, В русском Автокаде локализуется и acad.pgp
Короткое имя команды ПЕРЕНЕСИ (_MOVE;M) - П; -СЛОЙ (_-LAYER; -LA) - -СЛ
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 25.06.2008, 13:32
#44
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,824
<phrase 1=


Макрос на объединение в полилинию.
1 вариант
(с) VVA
Код:
[Выделить все]
^C^C(defun C:JPL ( / ope ssnab )(setq ope (getvar "PEDITACCEPT"))(setvar "PEDITACCEPT" 1)(setq ssnab (ssget "_I"))(while (not ssnab)(setq ssnab (ssget)))(command "_pedit" "_Multiple" ssnab "" "_Join" 0 "")(setvar "PEDITACCEPT" ope)(setq ssnab nil)(princ));JPL;
2 вариант
(с) Кочетков Андрей
Код:
[Выделить все]
^C^C^P(defun c:polyjoin () (ssget)(vl-cmdf "_pedit" "_m" "_p" "" "_y" "_j" "" "")(princ));polyjoin;
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 25.06.2008, 13:52
#45
Profan


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


zenon, макрос Кочеткова Андрея не будет работать, если все объекты, которые надо объединить - полилинии.
А чем тебе не понравился мой последний макрос отсюда:
http://dwg.ru/f/showthread.php?t=22024
Profan вне форума  
 
Непрочитано 25.06.2008, 14:04
#46
VVA

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


Так макрос Андрея будет работать и с полилиниями
Код:
[Выделить все]
^C^C(defun c:polyjoin ()(ssget)(command "peditaccept" 1 "_pedit" "_m" "_p" "" "_j" "" "")(princ));polyjoin;
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 26.06.2008, 09:24
#47
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,260


Добавлю и свой макрос объединения в полилинию.
Ограничение - первой нужно указывать не полилинию.

Код:
[Выделить все]
*^C^C_pedit;\_y;_j;_box;\\;;
Pilot вне форума  
 
Непрочитано 29.06.2008, 13:12
#48
skkkk


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


Подскажите пожалуйста, можно ли сделать макрос на кнопку для закрытия Чертежа без сохранения (без вывода диалога Сохранить изменения)?
skkkk вне форума  
 
Непрочитано 29.06.2008, 22:55
#49
Кулик Алексей aka kpblc
Moderator

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


Теоретически последовательность вида
Код:
[Выделить все]
^C^C(vl-load-com)(vla-close (vla-get-activedocument (vlax-get-acad-object)) :vlax-false)
работать должна. Но лично у меня не сработала.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.06.2008, 23:15
#50
skkkk


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


У меня тоже Комстрока гласит:
Цитата:
Команда: (vl-load-com)(vla-close (vla-get-activedocument
(vlax-get-acad-object)) :vlax-false) ; ошибка: Ошибка Automation. Чертеж занят.
skkkk вне форума  
 
Непрочитано 29.06.2008, 23:26
#51
Кулик Алексей aka kpblc
Moderator

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


Оно и было. Честно говоря, не очень понимаю - а нажать Tab и пробел (или Enter) - неужели сильно сложно?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.06.2008, 23:33
#52
skkkk


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


Действительно, что я, пальцы переломал что ли?...
Просто захотел сделать в правом верхнем углу под кнопкой Закрыть минипанель из двух кнопок с крестиками: зеленая - сохранить и закрыть (макрос, понятное дело, ^C^C_qsave;_close), и красная - закрыть без сохранения....Мне показалось, так удобней будет
skkkk вне форума  
 
Непрочитано 30.06.2008, 09:19
#53
Aндрeй


 
Регистрация: 23.08.2007
Москва
Сообщений: 529


Цитата:
Сообщение от skkkk Посмотреть сообщение
Действительно, что я, пальцы переломал что ли?...
Просто захотел сделать в правом верхнем углу под кнопкой Закрыть минипанель из двух кнопок с крестиками: зеленая - сохранить и закрыть (макрос, понятное дело, ^C^C_qsave;_close), и красная - закрыть без сохранения....Мне показалось, так удобней будет
Есть брутфорсный метод закрытия без сохранения - сохранить под другим временным именем и закрыть. Кстати можно реализовать на макро используя filedia 0 и saveas
Aндрeй вне форума  
 
Непрочитано 07.07.2008, 15:03
#54
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


как через командную строку нажать: CTRL+TAB ?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 17.08.2008, 03:34
#55
skkkk


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


Андрей, хотел попробовать "брутфорсный метод", не работает что-то у меня _saveas при filedia=0 - виснет КАД. Я нашел, другой, тоже брутфорсоватый, работает. Не макро, но тем не менее....http://dwg.ru/f/showthread.php?t=949...8%F6%2A&page=2
skkkk вне форума  
 
Непрочитано 09.09.2008, 14:40
#56
stas_org


 
Регистрация: 05.04.2007
Самара
Сообщений: 1,199


Цитата:
Сообщение от Makswell Посмотреть сообщение
zenon, макросом ИМХО не сделать. Можно лиспом.
пост№7

^C^C_area о \_text \;;%%u$M=$(*,$(fix,$(*,$(getvar,area),0.0001)),0.01)м%%178;
stas_org вне форума  
 
Непрочитано 09.09.2008, 15:00
#57
skkkk


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


Во вставляемом тексте при измерении замкнутой фигуры (пробовал на прямоугольнике и круге) появляется значение ноль метров квадратных. Почему?
skkkk вне форума  
 
Непрочитано 09.09.2008, 15:10
#58
stas_org


 
Регистрация: 05.04.2007
Самара
Сообщений: 1,199


регион попробуй
stas_org вне форума  
 
Непрочитано 09.09.2008, 15:12
#59
skkkk


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


То же самое.
skkkk вне форума  
 
Непрочитано 09.09.2008, 15:13
#60
stas_org


 
Регистрация: 05.04.2007
Самара
Сообщений: 1,199


и полилиния замкнутая тоже работает
stas_org вне форума  
 
Непрочитано 09.09.2008, 15:17
#61
stas_org


 
Регистрация: 05.04.2007
Самара
Сообщений: 1,199


последняя измеренная площадь сохраняется в переменной area, видимо у тебя не сохраняется, видимо по причине того, что кака-нибудь другая переменная это запрещает.
stas_org вне форума  
 
Непрочитано 11.09.2008, 16:22
#62
Diman111

промышл проектант
 
Регистрация: 26.05.2005
Изовсехщелей
Сообщений: 323


Вопрос - есть некий макрос печати в файл
ну например вида

Код:
[Выделить все]
^C^C-plot;y;;DesignJet;User A1;m;l;n;e;f;c;y;A1_mono;y;w;y;~;y;y;
и есть некий макрос печати в файл
вида

Код:
[Выделить все]
^C^C-plot;y;;DesignJet;User A1;m;l;n;e;f;c;y;A1_mono;y;n;n;n;y;~;y;y;
первый выводит на печать в пространстве модели - второй в пространстве бумаги.
Есть переменная tilemode по состоянию которой можно узнать о пространстве.
НО - вот как сделать ветвление при использовании макросов?
HELP....
Diman111 вне форума  
 
Непрочитано 11.09.2008, 17:00
#63
VVA

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


Diman111, Можно DIESEL'ом
Вариант меню
Код:
[Выделить все]
$M=$(if,$(eq,$(getvar,tilemode),1),^C^C_-plot;y;;DesignJet;User A1;m;l;n;e;f;c;y;A1_mono;y;w;y;~;y;y;,^C^C-plot;y;;DesignJet;User A1;m;l;n;e;f;c;y;A1_mono;y;n;n;n;y;~;y;y;)
Проверить правильность работы дизеля можно в MODEMACRO (см. строку режимов) так
Код:
[Выделить все]
(setvar "MODEMACRO" "$M=$(if,$(eq,$(getvar,tilemode),1),^C^C_-plot;y;;DesignJet;User A1;m;l;n;e;f;c;y;A1_mono;y;w;y;~;y;y;,^C^C-plot;y;;DesignJet;User A1;m;l;n;e;f;c;y;A1_mono;y;n;n;n;y;~;y;y;)")
Посмотри, нужный ли макрос остается в строке режимов
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 12.09.2008 в 11:16.
VVA вне форума  
 
Непрочитано 12.09.2008, 09:18
#64
Diman111

промышл проектант
 
Регистрация: 26.05.2005
Изовсехщелей
Сообщений: 323


Спасибо - печатает верно

а вот вариант с записью в трей не сработал

Код:
[Выделить все]
Command: (setvar "MODEMACRO" "$M=755CM_A1
("_> User A1
("_> m
("_> l
("_> n
("_> e
("_> f
("_> c
("_> y
("_> A1_mono
("_> y
("_> w
("_> y
("_> ~
("_> y
("_> y
("_> ,*Cancel*
; error: Function cancelled
Diman111 вне форума  
 
Непрочитано 12.09.2008, 11:11
#65
VVA

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


Это у тебя криво скопировалось в командную строку.
Попробуй так
Код:
[Выделить все]
(defun C:TEST ()
(setvar
  "MODEMACRO"
  (strcat
    "$M=$(if,$(eq,$(getvar,tilemode),1),"
    "^C^C_-plot;y;;DesignJet;User A1;m;l;n;e;f;c;y;A1_mono;y;w;y;~;y;y;"
    ","
    "^C^C-plot;y;;DesignJet;User A1;m;l;n;e;f;c;y;A1_mono;y;n;n;n;y;~;y;y;"
    ")")
  )
  (princ)
  )
Команда TEST. Смотреть в район отображения координат курсора. Чтобы понятно было синим выделили элементы DIESEL. Черные соответственно твои макросы
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 12.09.2008, 13:08
#66
Diman111

промышл проектант
 
Регистрация: 26.05.2005
Изовсехщелей
Сообщений: 323


Спасибо.
По дизелю не подскажите ссылочки на родном языке форума? с пояснением синтаксиса и операторов и примерами .
Пожалуйста
Diman111 вне форума  
 
Непрочитано 12.09.2008, 13:37
#67
VVA

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


Книги Н.Полещука + берешь acad.mns от 2004 и в блокноте смотришь.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 27.10.2008, 17:17
#68
Hans667

сети
 
Регистрация: 12.04.2007
SPb
Сообщений: 536
Отправить сообщение для Hans667 с помощью AIM Отправить сообщение для Hans667 с помощью Skype™


помогите с командой,не догоняю что не так-^C^C-overkill;_all;;;_audit;_y;_purge;
после overkill застревает- в ком строке следущее-Command: -overkill
Select objects: _all
1136 found
Select objects:
2 objects were not in the current space.
IGNORE=none
Fuzz=0.000001, Optimize PLINES=Y, combine PARTIAL overlap=Y, combine ENDTOEND=Y
Enter an option to change [Ignore/Fuzz/Plines/parTial/Endtoend] <done>:
0 object(s) deleted.
__________________
Errare humanum est, insipientis perseverare
Hans667 вне форума  
 
Непрочитано 27.10.2008, 17:34
#69
Hans667

сети
 
Регистрация: 12.04.2007
SPb
Сообщений: 536
Отправить сообщение для Hans667 с помощью AIM Отправить сообщение для Hans667 с помощью Skype™


В общем до Аудита не доходит,а если один ентер убрать то выползает окно диалоговое,где надо ентер жать
__________________
Errare humanum est, insipientis perseverare
Hans667 вне форума  
 
Непрочитано 27.10.2008, 18:16
#70
VVA

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


Оказался востребованным вариант для Автокада 2008 и выше, сбрасывающий ScaleLIST (см Зараза в 2008) вычищающий список масштабов от дюймов (можно перенастроить на метрические единицы)
Код:
[Выделить все]
(vl-load-com)
(command "_-scalelistedit" "_r" "_y" "_exit")
(foreach sc (dictsearch (namedobjdict) "acad_scalelist")
  (if (and (= (car sc) 350)
           (vl-string-search "\"" (cdr(assoc 300 (entget (cdr sc)))))
           )
    (vl-catch-all-apply 'vla-delete (list (vlax-ename->vla-object (cdr sc))))
    )
  )
Можно поместить в автозагрузку (mnl файл) либо сделать команду и повесить на кнопку
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 27.10.2008, 18:47
#71
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


VVA, а мой чем плох?


Код:
[Выделить все]
(defun restore-scale-list ()
  (command "_.-scalelistedit" "_r" "_y" "_e")
  ) ;_ end of defun

(restore-scale-list)
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 27.10.2008, 22:08
#72
VVA

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


dextron3, Твой не уберает дюймы в перечне масштабов
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 28.10.2008, 05:07
#73
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


VVA, а как там могут дюймы появиться если я исключительно в мм черчу, или это для наших западных коллег?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 28.10.2008, 08:18
#74
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


VVA, mnl-файл ИМХО загружается 1 раз при загрузке CUI. При открытии, например, 2-го файла косяк с масштабами не решится. Так что я думаю лучше запихать это в acaddoc.lsp.

Добавлено:
А вот бы ещё это же, да без командных методов - вообще было бы замечательно...
Makswell вне форума  
 
Непрочитано 28.10.2008, 09:57
#75
VVA

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


Цитата:
Сообщение от Makswell Посмотреть сообщение
VVA, mnl-файл ИМХО загружается 1 раз при загрузке CUI...
А cui грузится в каждый чертеж. У меня этот код как раз и находится в моем mnl файле
Цитата:
Добавлено:
А вот бы ещё это же, да без командных методов - вообще было бы замечательно...
ТОгда можно пойти от противного. Перечислить желаемые масштабы, а остальные на месте без суда и следствия.
Оформил ввиде функции, хотя в загружаемом файле можно оставить только цикл foreach
Код:
[Выделить все]
;;;Удаляем  все масштабы (scalelist) не перечисленные в списке-шаблоне
(defun restore-scale-list ()
  (vl-load-com)
  (foreach sc (dictsearch (namedobjdict) "acad_scalelist")
    (if (and (= (car sc) 350)
             (not (member (cdr (assoc 300 (entget (cdr sc))))
                          '("1:1" "1:2" "1:10" "1:50" "1:100" "2:1") ;_Здесь перечисляем нужные масштабы
                  ) ;_ end of member
             ) ;_ end of not
        ) ;_ end of and
      (vl-catch-all-apply
        'vla-delete
        (list (vlax-ename->vla-object (cdr sc)))
      ) ;_ end of vl-catch-all-apply
    ) ;_ end of if
  ) ;_ end of foreach
) ;_ end of defun
(restore-scale-list)


Фукнция и команда
Код:
[Выделить все]
(defun SetScale( / lst pat tmp)
;;; pat - шаблон маштабов состоит из списков вида
;;;  (("имя в списке масштабов1" Масштаб_единицы_листа1 Масштаб_единицы_чертежа1)
;;;   ("имя в списке масштабов2"  Масштаб_единицы_листа2 Масштаб_единицы_чертежа2)
;;;   ...
;;;   )
  (setq pat '(("1:1" 1 1)("1:2" 1 2)("1:10" 1 10)
	      ("1:50" 1 50)("1:100" 1 100)("2:1" 2 1)
	      ("1:11" 1 11)("Мой" 21.5 8.133)))
  ;;;Удаляем не входящие в шаблон масштаб
  (setq tmp (mapcar 'car pat))
(if (GETCNAME "_SCALELISTEDIT")
  (progn
    (COMMAND "_-SCALELISTEDIT" "_R" "_Y" "_E")
    (setq lst nil)
    (foreach item (dictsearch (namedobjdict) "ACAD_SCALELIST")
      (if (= 350 (car item))
     (setq lst (cons (cdr(assoc 300 (entget(cdr item)))) lst))
    ) ;_ end of if
  )
  (while (> (getvar "CMDACTIVE") 0) (command))
    (command "_.-SCALELISTEDIT")
  (foreach item lst
    (command "_D" item)
    )
    (command "_E")
   (setq lst nil) 
  ;;;Список оставшихся масштабов
   (foreach item (dictsearch (namedobjdict) "ACAD_SCALELIST")
    (if	(= 350 (car item))
      (setq lst (cons (cdr(assoc 300 (entget (cdr item)))) lst))
    ) ;_ end of if
  ) ;_ end of foreach
)
  )
    
  ;;;Список не созданных масштабов из шаблона pat
   (if (and lst (setq pat (vl-remove-if '(lambda(x)(member (car x) lst)) pat)))
     (progn
       (while (> (getvar "CMDACTIVE") 0)(command))
       (command "_.-scalelistedit")
       (foreach item pat
	 (command "_Add" (car item) (strcat (rtos (cadr item)) ":" (rtos (caddr item))))
	 ) ;_ end of foreach
       (command "_Exit")
       (while (> (getvar "CMDACTIVE") 0)(command))
       )
     )
  (princ)
   )
(defun C:SetScale ()(SetScale))

Код:
[Выделить все]
;;;======================================================
;;; СПИСОК МАСШТАБОВ SCALELIST SCALE
;;;======================================================

(vl-catch-all-apply
  '(lambda ()
     ((lambda (lst / dict dn)
;;; Purge excess scales
;;; gile
;;; http://www.theswamp.org/index.php?topic=29663.0 
;;;lst - шаблон маштабов состоит из списков вида
;;;  (("имя в списке масштабов1" "Масштаб единицы листа1" "Масштаб единицы чертежа1")
;;;   ("имя в списке масштабов2" "Масштаб единицы листа2" "Масштаб единицы чертежа2")
;;;   ...
;;;   )
;;; lst - the pattern scale is made up of lists of species 
;;; (("Name of the Scale 1" Scale_paper_unit_1 Scale_drawing_unit_1) 
;;; ("Name of the Scale 2"  Scale_paper_unit_2 Scale_drawing_unit_2) 
;;; ... 
;;;)
;;; Usage (SetScale)
;;;  (setq pat '(("1:1" 1 1)("1:2" 1 2)("1:10" 1 10) ;_Correct scale here
;;;	      ("1:50" 1 50)("1:100" 1 100)("2:1" 2 1)
;;;	      ))
	(setq dn "A")
        (if (setq dict (dictsearch (namedobjdict) "ACAD_SCALELIST"))
          (progn
            (entmod (vl-remove-if
                      '(lambda (x) (or (= (car x) 3) (= (car x) 350)))
                      dict
                    ) ;_ end of vl-remove-if
            ) ;_ end of entmod
            (setq dict (cdr (assoc -1 dict))
                  n    -1
            ) ;_ end of setq
            (foreach s lst
              (dictadd dict
		       (progn
			 (if (= n 9)
			 (setq dn (chr(1+ (ascii dn)))
			       n -1
			       )
			 )
			 (terpri)
			 (princ
			   (strcat dn (itoa (setq n (1+ n))))
			   )
			 )
                       (entmakex
                         (list
                           '(0 . "SCALE")
                           '(100 . "AcDbScale")
                           (cons 300 (car s))
                           (cons 140 (cadr s))
                           (cons 141 (caddr s))
               		  '(70 . 0) ;_ kpblc http://forum.dwg.ru/showthread.php?t=73416
	                  '(290 . 1);_ kpblc http://forum.dwg.ru/showthread.php?t=73416
                         ) ;_ end of list
                       ) ;_ end of entmakex
              ) ;_ end of dictadd
            ) ;_ end of foreach
          ) ;_ end of progn
        ) ;_ end of if
      )
       '(("1:1" 1 1)
	 ("1:2" 1 2)
	 ("1:10" 1 10)
	 ("1:50" 1 50)
	 ("1:100" 1 100)
	 ("2:1" 2 1)
	)
     )
   )
)

PS Это все справедливо для Автокада с версии 2008 и выше
PPS Еще тема про масштабы LISP. Как программно создавать масштабы аннотаций
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 04.10.2011 в 09:41. Причина: Новый вариант
VVA вне форума  
 
Непрочитано 28.10.2008, 10:14
#76
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Цитата:
Сообщение от VVA Посмотреть сообщение
А cui грузится в каждый чертеж. У меня этот код как раз и находится в моем mnl файле
Пардон, был неправ

Добавлено:
За код - спасибо!
Makswell вне форума  
 
Непрочитано 28.10.2008, 11:06
#77
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


VVA, А у меня бывало такое что масштаб 1:100, ставлю он совсем не тот выдает, другой совсем непонятный масштаб, а когда 1:101 ставлю то вроде как 1:100 но естественно не точный, как это вылечить?

Буду благодарен!
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 28.10.2008, 12:40
#78
VVA

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


dextron3, Лечи так: Меню Формат/Список масштабов/Изменить
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 28.10.2008, 15:27
#79
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


VVA, нет это уже сложно мне бы народное лекарство, ваш лисп может мне помочь?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 28.10.2008, 16:28
#80
VVA

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


Лисп масштабы не правит, только удаляет или оставляет в живых
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 28.10.2008, 16:34
#81
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


VVA, пост #75, а если я в список внесу масштаб не существующий в автокаде к примеру 1:13 то что будет?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 28.10.2008, 17:29
#82
VVA

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


Ничего не будет
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 28.10.2008, 23:24
#83
Кулик Алексей aka kpblc
Moderator

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


Еще один вариант, в продолжение #75. По идее должно работать и в предыдущих версиях, тупо очищая словарь. Скорость не замерял. В 2008 вроде работает корректно:
Код:
[Выделить все]
(defun _dwgru-scale-list-clear-and-restore-by-doc (doc lst / dict)
                                                  ;|
*    Очистка неиспользуемых списков масштабов документа
*    Параметры вызова:
	doc	указатель на обрабатываемый документ. nil -> текущий
	lst	список строковых представлений масштабов, которые надо
		"ставить в живых"
*    Примеры вызова:
(_dwgru-scale-list-clear-and-restore-by-doc nil '("1:100" "1:10"))
|;
  (vl-load-com)
  (if (not doc)
    (setq doc (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of if
  (if (= (type
           (setq
             dict (vl-catch-all-apply
                    (function
                      (lambda ()
                        (vla-item (vla-get-dictionaries doc) "acad_scalelist")
                        ) ;_ end of lambda
                      ) ;_ end of function
                    ) ;_ end of vl-catch-all-apply
             ) ;_ end of setq
           ) ;_ end of type
         'vla-object
         ) ;_ end of =
    (vlax-for item dict
      (if (not
            (member (cdr (assoc 300 (entget (vlax-vla-object->ename item))))
                    lst
                    ) ;_ end of member
            ) ;_ end of not
        (vl-catch-all-apply
          (function
            (lambda ()
              (vla-delete item)
              ) ;_ end of lambda
            ) ;_ end of function
          ) ;_ end of vl-catch-all-apply
        ) ;_ end of if
      ) ;_ end of vlax-for
    ) ;_ end of if
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.10.2008, 05:26
#84
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Подскажите, как в 1 макросе правильно прописать выполнение 2 и более лиспов. Или выпонение комманды автокад после выполнения лиспа. Лисп подгружен, лежит в путях доступа.
Тупо
Код:
[Выделить все]
^C^C_layiso;\\;лисп\;_Layuniso
не хочет работать. После выполнения лиспа макрос прекрашает работать
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 29.10.2008, 08:24
#85
Кулик Алексей aka kpblc
Moderator

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


Возможно, проблема в самом лиспе. И, кстати, кто мешает полностью прописать все команды внутри лиспа?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.10.2008, 02:11
#86
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Цитата:
Возможно, проблема в самом лиспе.
сомневаюсь. Это твой bbl2
Цитата:
И, кстати, кто мешает полностью прописать все команды внутри лиспа?
Через command?
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 30.10.2008, 03:03
#87
Кулик Алексей aka kpblc
Moderator

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


wetr, а что это за bbl2? Чего оно делает (если б я помнил все что написал...) - напомни.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.10.2008, 04:46
#88
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


http://forum.dwg.ru/showthread.php?t=20808
Расставляет блоки на пересечении линий.
Но в лисп я вносить изменения не очень хочу - испорчу только.
А в принципе должен работать макрос, например
Цитата:
^C^Cbbl2;_line
???
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 30.10.2008, 09:52
#89
VVA

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


wetr, Если лиспы подгружены, то можно так
Код:
[Выделить все]
^C^C(Defun C:RUN()(C:LAYISO)(while (> (getvar "CMDACTIVE") 0)(command pause))(C:BBL2)(C:LAYUNISO));RUN
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 30.10.2008, 10:18
#90
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


VVA, попытаюсь разобраться.
Цитата:
(Defun C:RUN()
(C:LAYISO)
(while (> (getvar "CMDACTIVE") 0)(command pause))
(C:BBL2)
(C:LAYUNISO)
)
программа запускает LAYISO, до тех пор пока команда активна она зациклена (выполняется).
Потом выполнить лисп BBL2
Потом выполнить LAYUNISO.

Меня смущает вот это
Цитата:
(C:LAYISO
Это сокращение для command используемое для макросов?
(Я не могу предположить, что ты принял команду LAYISO за лисп)

В общем не работает у меня.
Цитата:
Command: (Defun C:RUN()(C:LAYISO)(while (> (getvar "CMDACTIVE") 0)(command
pause))(C:BBL2)(C:LAYUNISO))
C:RUN

Command: RUN ; error: no function definition: C:LAYISO
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 30.10.2008, 13:10
#91
VVA

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


Цитата:
Сообщение от wetr Посмотреть сообщение
(Я не могу предположить, что ты принял команду LAYISO за лисп)
В общем так оно раньше (до 2008) и было
Кусочек файла acetlayr.lsp
Код:
[Выделить все]
; -------------------- ISOLATE LAYER FUNCTION --------------------
; Isolates selected object's layer by turning all other layers off
; ----------------------------------------------------------------
 
(Defun C:LAYISO (/ SS CNT LAY LAYLST VAL VPMODE)
  ;;;local function to find an unused layer state name for saving
....
У тебя 2008 и старше (команды работы со слоями перекочевали из express в Автокад)
Для 2008, 2009
Код:
[Выделить все]
^C^C(Defun C:RUN()(Command "LAYISO")(while (> (getvar "CMDACTIVE") 0)(command pause))(C:BBL2)(Command "LAYUNISO"));RUN
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 30.10.2008, 15:25
#92
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


VVA, спасибо! Действительно все так и есть.
Я так полагаю вариант из №89 подойдет для запуска двух лиспов.
Offtop: Я уже нарисовал колонну по твоему заданию для чайников, изучающих лисп. Сейчас изучаю функции AutoLISP
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 01.11.2008, 06:25
#93
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Очень простой макрос, но мне очень помогает.
Для тех кто часто использует wipeout
Отключить границы wipeout
Код:
[Выделить все]
^C^C_wipeout;f;off;
Включить границы wipeout
Код:
[Выделить все]
^C^C_wipeout;f;on;
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 01.11.2008, 13:39
#94
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


wetr, а для чего отключать границы, ведь можно в невидиомо слое делать?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 01.11.2008, 13:42
#95
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Цитата:
Сообщение от dextron3 Посмотреть сообщение
wetr, а для чего отключать границы, ведь можно в невидиомо слое делать?
В непечатаемом?
Тогда при печати ничего не замаскируется.
Makswell вне форума  
 
Непрочитано 01.11.2008, 14:19
#96
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


Makswell, я не понял термин замаскируется, что под этим словом поразумевается в Автокаде?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 01.11.2008, 14:31
#97
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Команда _.WIPEOUT в русском Автокаде переведена как МАСКИРОВКА...
Makswell вне форума  
 
Непрочитано 05.11.2008, 12:16 масштаб линий
#98
Jonas

конструктор машиностроитель
 
Регистрация: 14.05.2007
Новосибирск
Сообщений: 893


Часто встречаются вопросы о том что не видна прерывистая (или иная не сплошная) линия. И чще всего проблемма в масштабе линии. Чтобы долго не выяснять сделал макрос.

^C^Cсвойства;\;Лмасштаб;2.5;;;\;Лмасштаб;5;;;\;Лмасштаб;10;;;\;Лмасштаб;15;;;\;Лмасштаб;20;;;\;Лмасштаб;30;;;\;Лмасштаб;40;;;\;Лмасштаб;50;;;\;Лмасштаб;75;;;\;Лмасштаб;100;;;\;Лмасштаб;150;;;\;Лмасштаб;200;;;\;Лмасштаб;500;;

теперь просто щелкаю по лиии пока не получу желаемый результат.
Jonas вне форума  
 
Непрочитано 05.11.2008, 20:08
#99
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


Jonas, а можно для английского автокада, данный макрос?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 06.11.2008, 01:00
#100
Кулик Алексей aka kpblc
Moderator

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


Я бы искал / писал лисп... А так...
Код:
[Выделить все]
^C^C_properties;\;;_lw;2.5;;;
Ну и тому подобное...
Вроде так.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.11.2008, 05:45
#101
Jonas

конструктор машиностроитель
 
Регистрация: 14.05.2007
Новосибирск
Сообщений: 893


[quote=Кулик Алексей aka kpblc;306797]Я бы искал / писал лисп... А так...
QUOTE]

Не уютно лиспу в моей старой башке, к сожжалению.
А вообще было бы интересно получить инструмент динамического масштабирования линии.
Jonas вне форума  
 
Непрочитано 06.11.2008, 06:38
#102
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


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

Код:
[Выделить все]
^C^C_properties;\;;_lw;2.5;;;
не работает что то...
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 06.11.2008, 08:15
#103
Кулик Алексей aka kpblc
Moderator

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


Jonas, как пример: http://forum.dwg.ru/showpost.php?p=298124&postcount=47
dextron3, я код писал сильно выпимши (у жены денб рождения был) и "насухую". Сейчас попробую подправить...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.11.2008, 08:52
#104
Кулик Алексей aka kpblc
Moderator

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


Во, вроде так получится:
Код:
[Выделить все]
^C^C_change;\;_p;_s;2.5;;;\;_p;_s;5;;;\;_p;_s;10;;
Хотя черт его знает, я DIESEL'ем давно не игрался
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 07.11.2008, 16:43
#105
Composter

Отопление и вентиляция
 
Регистрация: 31.10.2008
Москва
Сообщений: 445


мож кто подскажет скрипт ,что бы при щелкании на текст он в конце текста вставлял вторую строку, уменьшенной высоты и смещенную вверх(либо какие нить другие символы). еще если можно что бы в этом скрипте можно было бы задавать высоту шрифта второй строки.и если можно, то что бы можно было выделить несколько объектов.
Composter вне форума  
 
Непрочитано 07.11.2008, 16:54
#106
Кулик Алексей aka kpblc
Moderator

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


Ни себе хрена... Оформляй полное ТЗ и новый топик в разделе "Программирование". Не забудь тлько показать, что сам делал.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 07.11.2008, 17:12
#107
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Во, вроде так получится:
Код:
[Выделить все]
^C^C_change;\;_p;_s;2.5;;;\;_p;_s;5;;;\;_p;_s;10;;
Хотя черт его знает, я DIESEL'ем давно не игрался
Это разве дизель?
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 08.11.2008, 21:22
#108
Кулик Алексей aka kpblc
Moderator

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


Krieger, а что же? Ну не лисп, это точно
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.11.2008, 10:40
#109
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Я думал дизель, это когда скобочки с баксами и запятыми, типа:
Код:
[Выделить все]
$M=$(if,$(getvar,dimscale),$(*,$(getvar,dimscale),2),2)
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 09.11.2008, 11:23
#110
Кулик Алексей aka kpblc
Moderator

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


Может быть, спорить не стану
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.11.2008, 17:37
#111
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


Кулик Алексей aka kpblc,
код
Код:
[Выделить все]
^C^C_change;\;_p;_s;2.5;;;\;_p;_s;5;;;\;_p;_s;10;;
не работает почемуто, что я делаю неправильно...
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 16.12.2008, 10:16
#112
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Очень часто для пометки того что уже проверил приходится менять цвет примитива.
Сделал кнопку для замены цвета на синий:
Код:
[Выделить все]
^C^C_change;\;_p;_c;5;;
можно добавить повторение
ну и цвет думаю тоже поменять не сложно
Код:
[Выделить все]
*^C^C_change;\;_p;_c;5;;
От меня попросили например создать кнопку замены цвета для уже выбранных объектов. На вопрос: "А чем тебе просто цвет выбрать не нравится?" - ответили что бывает выберешь кучу чего а цвет наскоряк выберешь не тот и по инерции эскейп. Приходится все заново выбирать.
Сделал ему так:
Код:
[Выделить все]
^C^C_change;_p;_c;5;;
Доработали ещё тут
__________________
Поезд который устал от ржавого здравомыслия рельсов...

Последний раз редактировалось Shoorup, 27.04.2012 в 14:15.
Shoorup вне форума  
 
Непрочитано 16.12.2008, 11:30
#113
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Розыск макроса!

"Рисование отрезка, подобного выбранному (слой, цвет, стиль линии, толщина)"

Благодарность гарантируется.
Baldares вне форума  
 
Непрочитано 16.12.2008, 15:42
#114
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Код:
Пробуй!
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Автор темы   Непрочитано 16.12.2008, 15:58
#115
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,824
<phrase 1=


_offset
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 16.12.2008, 16:44
#116
andrew_ro

Светопрозрачные конструкции, проектирование
 
Регистрация: 29.07.2008
Сообщений: 47


Всем привет.
Может кто знает как создать такой макрос:
имеем несколько вхождений динамического блока в виде прямоугольника с одной операцией - полярное растяжение (стойки и ригели каркаса). Нужно выделить несколько вхождений блока и из ком. строки задать новое значение distance. Блоки должны растягиваться ортогонально (естественно только в одном направлении).
Или подскажите как добраться из командной строки до свойства distance (доступно в палитре свойств).
_-ch;_p; - не отображает это свойство. У меня локализованный AutoCAD 2006.
andrew_ro вне форума  
 
Непрочитано 16.12.2008, 16:57
#117
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Цитата:
Сообщение от Shoorup Посмотреть сообщение
Код:
Пробуй!
Цитата:
Сообщение от zenon Посмотреть сообщение
_offset
Шустрики
Это все лишние телодвижения.
Вот нашел, в ruCADe есть такая команда, рисования "такого же" объекта. Причем она шурует все примитивы, в том числе блоки, тексты и т.д.
Где бы лиспик на нее найти...
Макросиком тут похоже не обойтись.
Baldares вне форума  
 
Непрочитано 16.12.2008, 17:05
#118
ытя


 
Регистрация: 23.09.2005
СПб
Сообщений: 424


2Baldares
http://dwg.ru/dnl/4357
ытя вне форума  
 
Непрочитано 16.12.2008, 17:28
#119
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


ытя, ф точку!
Еще бы исходничек глянуть.
Спасибо. Раньше что-то недоглядел в данлоаде.

Offtop: У меня такое чувство, что это чей-то второй ник. Как может быть с 2005 года 115 сообщений. Удивительно. ытя, Вы меня извините, просто ИМНО
Baldares вне форума  
 
Непрочитано 17.12.2008, 11:57
#120
ытя


 
Регистрация: 23.09.2005
СПб
Сообщений: 424


Offtop: ник (мой) единственный
ытя вне форума  
 
Непрочитано 19.12.2008, 11:10
#121
Hans667

сети
 
Регистрация: 12.04.2007
SPb
Сообщений: 536
Отправить сообщение для Hans667 с помощью AIM Отправить сообщение для Hans667 с помощью Skype™


Доброго времени суток всем форумчанам.Помогите написать макрокоманду для следущих действий: хочу создать кнопку чтобы вылезала страница в интернете. получиолось только ^C^C_start;firefox;...../т.е. дальше появляется окно браузера и в автокаде команды не действуют.Подскажите как быть?
__________________
Errare humanum est, insipientis perseverare
Hans667 вне форума  
 
Непрочитано 19.12.2008, 15:13
#122
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Цитата:
Сообщение от andrew_ro Посмотреть сообщение
Всем привет.
Может кто знает как создать такой макрос:
имеем несколько вхождений динамического блока в виде прямоугольника с одной операцией - полярное растяжение (стойки и ригели каркаса). Нужно выделить несколько вхождений блока и из ком. строки задать новое значение distance. Блоки должны растягиваться ортогонально (естественно только в одном направлении).
Или подскажите как добраться из командной строки до свойства distance (доступно в палитре свойств).
_-ch;_p; - не отображает это свойство. У меня локализованный AutoCAD 2006.
В свойствах поменяй и все.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 19.12.2008, 15:23
#123
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Вроде еще не было тут такого...
Установка угла атрибута в блоках в нуль, обрывать через esc:
Код:
[Выделить все]
*^C^C_-Attedit;;;;;\;_Angle;0;;
Смыкание линий:
Код:
[Выделить все]
^C^C_fillet;_R;0.0;
Поворот с опорным углом:
Код:
[Выделить все]
(defun c:kr () (setq ss (ssget)) (command "_rotate" ss "" pause "_r" (getvar "lastpoint") pause));kr
Выноска с мультитектом:
Код:
[Выделить все]
^C^C_Leader;\\;;;
Разрыв линии по двум точкам и отрисовка по ним отрезка
Код:
[Выделить все]
^C^C(setq A (ssget));_single;\(setq pt1 (getpoint));\(setq pt2 (getpoint pt1));\_break;!A;!pt1;!pt2;_line;!pt1;!pt2;;
Включение и выключение полноэкранного режима с включением необдимых для работы палитр (добавить - убрать по вкусу)
Код:
[Выделить все]
(if (= (getvar "CLEANSCREENSTATE") 0) (vl-cmdf "_CleanScreenON" "_dashboard" "_SheetSet" "_externalreferences" "_adcenter" "_ToolPalettes" "_properties") (vl-cmdf "_CleanScreenOFF"))
Хотя макросы сейчас использую в основном чтобы запускать лиспы...
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 19.12.2008, 17:54
#124
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


Krieger, а как можно масштаб в СПДС с помощью макроса менять? (мне никто так и не ответил...()
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 19.12.2008, 18:37
#125
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Был бы у меня СПДС, может и посмотрел бы. А так лучше выкинь его.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 16.01.2009, 17:03
#126
acyxou


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


Мужэки, а как вам такой макрос?
Код:
[Выделить все]
^C^C_TILEMODE;1;z;o;l;;
Короче, используя этот макрос вы мигом перепрыгиваете в пространство модели к последнему созданному там элементу. Иногда бывает удобно при работе в модели листа через вьюпорт. Попробуйте
acyxou вне форума  
 
Непрочитано 16.01.2009, 17:53
#127
acyxou


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


Цитата:
Установка угла атрибута в блоках в нуль, обрывать через esc:
Код:
[Выделить все]
*^C^C_-Attedit;;;;;\;_Angle;0;;
У меня не работает почему то. вот че говорит:
[FONT="Courier New"]Command: _-Attedit
Edit attributes one at a time? [Yes/No] <Y>:
Enter block name specification <*>:
Enter attribute tag specification <*>:
Enter attribute value specification <*>:
Select Attributes:
0 attributes selected.*Invalid*[/FONT]
acyxou вне форума  
 
Непрочитано 16.01.2009, 18:15
#128
kha

BIM, С#, AutoCAD, LISP
 
Регистрация: 15.03.2006
Дуброво
Сообщений: 657


Назначил наиболее часто используемые команды на кнопки мышки. Если чего не хватает - пользуюсь панелями инструментов. Казалось бы, можно спокойно с кружкой чая в левой руке.
Ан нет! На escape периодически приходится жать, для чего требуется:
1. оторвать руку от ручки кружки
2. поднять
3. переместить её, чтобы указательный палец был над кнопкой Esc
4. нажать на кнопку
5. выполнить действия 1 - 3 в обратном порядке.

Мне это жутко надоело, в результате сделал кнопку Esc на панели инструментов со следующим макросом:

Код:
kha вне форума  
 
Непрочитано 16.01.2009, 18:21
#129
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Цитата:
Сообщение от acyxou Посмотреть сообщение
У меня не работает почему то. вот че говорит:
[FONT="Courier New"]Command: _-Attedit
Edit attributes one at a time? [Yes/No] <Y>:
Enter block name specification <*>:
Enter attribute tag specification <*>:
Enter attribute value specification <*>:
Select Attributes:
0 attributes selected.*Invalid*[/FONT]
Так атрибуты-то выбери.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 16.01.2009, 18:59
#130
acyxou


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


Krieger ну я не совсем деблоид и понимаю что автокаду надо мышкой показывать какие объекты я хочу изменить Сам дорубился что выбирать надо секущей рамкой, тогда атрибуты выбираются.... И вообще слишком много кликов приходится делать для достижения желаемого, по моему лучше использовать лисп.
acyxou вне форума  
 
Непрочитано 16.01.2009, 19:58
#131
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Какой нафиг рамкой, надо персонально каждый атрибут (не блок) ткнуть.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 16.01.2009, 22:00
#132
acyxou


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


Ну так я персонально каждый атрибут рамкой и выбирал.... По другому у меня никак не выбирается.... Вобщем с этой задачей на ура справился лисп под названием Attrot
acyxou вне форума  
 
Непрочитано 17.01.2009, 07:40
#133
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Да грюж не рамкой, блин. Один раз ткнуть по атрибуту квадратиком выделения.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 20.01.2009, 15:25
#134
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Нужен макрос на снятие ассоциативности со всех штриховок чертежа.

Или как с ней бороться. У нее ведь непредсказуемое поведение.
Baldares вне форума  
 
Непрочитано 20.01.2009, 15:55
#135
Cosinus

Белая и черная магия в строительстве
 
Регистрация: 02.02.2007
Воронеж
Сообщений: 168
Отправить сообщение для Cosinus с помощью Skype™


Так как макросы должны облегчать жизнь проектировщика, написал вот такой
^c^c_goto;_beer\\;
Но че-то он не работает. Пишет
"money nil" или "larek not found"
Мож че поправить?
Cosinus вне форума  
 
Непрочитано 20.01.2009, 17:13
#136
acyxou


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


Цитата:
Сообщение от Cosinus Посмотреть сообщение
Так как макросы должны облегчать жизнь проектировщика, написал вот такой
^c^c_goto;_beer\\;
Но че-то он не работает. Пишет
"money nil" или "larek not found"
Мож че поправить?
Странно, у меня все работает...... акад 2009
acyxou вне форума  
 
Непрочитано 21.01.2009, 13:56
#137
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Цитата:
Сообщение от Cosinus Посмотреть сообщение
Так как макросы должны облегчать жизнь проектировщика, написал вот такой
^c^c_goto;_beer\\;
Но че-то он не работает. Пишет
"money nil" или "larek not found"
Мож че поправить?
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 23.01.2009, 12:46
#138
Sazanoff_e

А я тут это...погулять вышел...
 
Регистрация: 28.03.2007
Москва - от слова Моск?
Сообщений: 227
<phrase 1=


)) смени команду на "_vodka" и допиши "_halyava!"
__________________
Рожденный проектировать ГОСТов не читает. (с)Туманов А.А.
Sazanoff_e вне форума  
 
Непрочитано 27.01.2009, 09:23
#139
AlphaGeo


 
Сообщений: n/a


Имеется макрос, преобразующие с помощью Express Текст в Мтекст и выставляющий выравнивание текста "Середина оп центру":
Код:
[Выделить все]
^C^C_Select;_Single;\_Txt2mtxt;_Previous;;_justifytext;_Last;;_MC
Но хотелось бы, чтобы у этого макроса было продолжение, а именно: ширина (в AutoCAD 2008 Рус - "пользовательская ширина", в AutoCAD 2007 Eng - "Width") текста должна выставляться равной 10 мм. Никак не могу найти команду, с помощью которой это можно сделать. Господа форумчане, подскажите, чем тут следует воспользоваться?
 
 
Непрочитано 27.01.2009, 10:01
#140
VVA

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


AlphaGeo, Ширина - это 41 поле mtexta. Без проверок

Код:
[Выделить все]
^C^C_Select;_S;\_Txt2mtxt;_P;;_justifytext;_L;;_MC;(entmod(subst(cons 41 10)(assoc 41 (entget(entlast)))(entget(entlast))))
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 27.01.2009 в 10:30.
VVA вне форума  
 
Непрочитано 27.01.2009, 10:18
#141
AlphaGeo


 
Сообщений: n/a


VVA, спасибо Определенно могу сказать, что работает. Но только после выполнения макроса в Мтексте полностью исчезает содержимое...
Может, проблема в том, что у меня простой AutoCAD 2008 Кus без SP и всяких навесок?
 
 
Непрочитано 27.01.2009, 10:31
#142
VVA

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


AlphaGeo, Там в макросе очепятка. Исправил #140
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 27.01.2009, 10:41
#143
AlphaGeo


 
Сообщений: n/a


Все отлично, VVA! Спасибо огромное!
 
 
Непрочитано 27.01.2009, 18:10
#144
Cosinus

Белая и черная магия в строительстве
 
Регистрация: 02.02.2007
Воронеж
Сообщений: 168
Отправить сообщение для Cosinus с помощью Skype™


Строит вертикальную или горизонтальную xline на расстоянии от указываемой точки. Расстояние ввожу с клавиатуры, предварительно указав мышкой направление. Можно нарисовать несколько линий, каждый раз вводя расстояние от предыдущей.

^C^C_Xline;_h;_move;_last;@;\;

^C^C_Xline;_v;_move;_last;@;\;
Cosinus вне форума  
 
Непрочитано 02.02.2009, 11:43
#145
acyxou


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


подскажите как после выполнения данного макроса очистить командную строку? Я имею в виду куда вставить слово princ так чтоб выполненная команда не отображалась в командной строке. Все испробовал, ниче не получается....
Код:
[Выделить все]
^C^C(progn(if(= c:PP_P nil)(load "PrintersPathsSwapping.lsp"))(c:PP_P))
acyxou вне форума  
 
Непрочитано 02.02.2009, 11:59
#146
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Цитата:
Сообщение от acyxou Посмотреть сообщение
подскажите как после выполнения данного макроса очистить командную строку? Я имею в виду куда вставить слово princ так чтоб выполненная команда не отображалась в командной строке. Все испробовал, ниче не получается....
Код:
[Выделить все]
^C^C(progn(if(= c:PP_P nil)(load "PrintersPathsSwapping.lsp"))(c:PP_P))
Может так?
Код:
[Выделить все]
^C^C(progn (setq Old_CMDECHO (getvar "CMDECHO")) (setvar "CMDECHO" 0) (if (= c:PP_P nil) (load "PrintersPathsSwapping.lsp")) (c:PP_P) (setvar "CMDECHO" Old_CMDECHO) (setq Old_CMDECHO nil) (princ))
Makswell вне форума  
 
Непрочитано 02.02.2009, 12:10
#147
VVA

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


acyxou, Посмотри переменную MENUECHO (в меню переключатель ^P)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 02.02.2009, 12:33
#148
acyxou


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


Ребят, спасибо! Оба варианта работают!
acyxou вне форума  
 
Непрочитано 02.02.2009, 21:31
#149
ie.spb

Инженер
 
Регистрация: 21.08.2007
Сообщений: 596
<phrase 1=


Подскажите. Не могу понять почему включается дин ввод. Написал простой макрос для вставки блока C^C^_-insert;1122;\;;; и назначил горячую клавишу. Так вот при первом нажатии дин ввод включается при повторном нажатии выключается. Что надо сделать чтобы он не включался. Замучился уже.
__________________
Склероз нельзя вылечить, но о нем можно забыть.
(Ф. Раневская)
ie.spb вне форума  
 
Непрочитано 02.02.2009, 22:55
#150
Кулик Алексей aka kpblc
Moderator

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


Может, макрос переписать на более верный вариант?
Код:
[Выделить все]
^C^C_.-insert;1122;\;;;
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 02.02.2009, 22:56
#151
Donhuan

Проектировщик СС
 
Регистрация: 24.06.2008
Минск
Сообщений: 134
<phrase 1=


Код:
[Выделить все]
^C^C._-insert 1122 \;;;
Сорри, повтор Прошу удалить.
Donhuan вне форума  
 
Непрочитано 03.02.2009, 06:38
#152
ie.spb

Инженер
 
Регистрация: 21.08.2007
Сообщений: 596
<phrase 1=


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Может, макрос переписать на более верный вариант?
Код:
[Выделить все]
^C^C_.-insert;1122;\;;;
Спасибо все работает!!! Неужели проблема в точке?
__________________
Склероз нельзя вылечить, но о нем можно забыть.
(Ф. Раневская)
ie.spb вне форума  
 
Непрочитано 03.02.2009, 06:53
#153
ie.spb

Инженер
 
Регистрация: 21.08.2007
Сообщений: 596
<phrase 1=


Еще вопрос: можно сделать чтобы этот макрос повторялся при нажатии пробела. А то выполняется последняя команда insert
__________________
Склероз нельзя вылечить, но о нем можно забыть.
(Ф. Раневская)
ie.spb вне форума  
 
Непрочитано 03.02.2009, 08:21
#154
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от Djonikbishkek Посмотреть сообщение
Еще вопрос: можно сделать чтобы этот макрос повторялся при нажатии пробела. А то выполняется последняя команда insert
Можно зациклить макрос, поставив * (звездочку) в начале. Выход по Esc или запуску другой команды.
Код:
[Выделить все]
*^C^C_.-insert;1122;\;;;
 
 
Непрочитано 03.02.2009, 08:22
#155
Кулик Алексей aka kpblc
Moderator

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


Djonikbishkek, проблема была не в точке. Обрати внимание на символы "^".
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 03.02.2009, 08:41
#156
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Цитата:
Сообщение от Djonikbishkek Посмотреть сообщение
Еще вопрос: можно сделать чтобы этот макрос повторялся при нажатии пробела. А то выполняется последняя команда insert
Цитата:
Сообщение от AlphaGeo Посмотреть сообщение
Можно зациклить макрос, поставив * (звездочку) в начале. Выход по Esc или запуску другой команды.
Код:
[Выделить все]
*^C^C_.-insert;1122;\;;;
Или так.
Код:
[Выделить все]
^C^C(defun C:M-COMMAND () (command "_.-INSERT" "1122" pause "" "" ""));M-COMMAND
Makswell вне форума  
 
Непрочитано 03.02.2009, 10:39
#157
AlphaGeo


 
Сообщений: n/a


Makswell, что-то у меня не получается.
Код:
[Выделить все]
^C^C(defun C:DISTSECTION-COMMAND () (command "Рзмпарал" pause pause  "@0,-5" ""));DISTSECTION-COMMAND
Попробовал по аналогии, но не работает
 
 
Непрочитано 03.02.2009, 10:51
#158
Кулик Алексей aka kpblc
Moderator

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


А osmode не может вмешаться?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 03.02.2009, 11:02
#159
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А osmode не может вмешаться?
Это мне?
Если бы я еще знал, что такое osmode... По форуму пробежал пoиском - это переменная, управляющая привязкой?
 
 
Непрочитано 03.02.2009, 11:03
#160
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


AlphaGeo, что пишет в ком. строке?
Makswell вне форума  
 
Непрочитано 03.02.2009, 11:05
#161
ie.spb

Инженер
 
Регистрация: 21.08.2007
Сообщений: 596
<phrase 1=


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Djonikbishkek, проблема была не в точке. Обрати внимание на символы "^".
Вот блин. Точно. Куда только глаза смотрят. спасибо!!!
__________________
Склероз нельзя вылечить, но о нем можно забыть.
(Ф. Раневская)
ie.spb вне форума  
 
Непрочитано 03.02.2009, 11:07
#162
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от Makswell Посмотреть сообщение
AlphaGeo, что пишет в ком. строке?
Привет от ком.строки:
Код:
[Выделить все]
Команда:
Команда:
Команда: (defun C:DISTSECTION-COMMAND () (command "Рзмпарал" pause pause  
"@0,-5" ""))
C:DISTSECTION-COMMAND

Команда: DISTSECTION-COMMAND Рзмпарал
Начало первой выносной линии или <выбрать объект>:
Начало второй выносной линии:
Положение размерной линии или
[Мтекст/Текст/Угол]: @0,-5
Размерный текст = 3.4
Команда: DISTSECTION-COMMAND Неизвестная команда "DISTSECTION-COMMAND".  Для 
вызова справки нажмите F1.

Команда: nil

Последний раз редактировалось AlphaGeo, 03.02.2009 в 11:15.
 
 
Непрочитано 03.02.2009, 11:08
#163
ie.spb

Инженер
 
Регистрация: 21.08.2007
Сообщений: 596
<phrase 1=


Цитата:
Сообщение от Makswell Посмотреть сообщение
Или так.
Код:
[Выделить все]
^C^C(defun C:M-COMMAND () (command "_.-INSERT" "1122" pause "" "" ""));M-COMMAND
Вот спасибо, все работает отлично!!!
__________________
Склероз нельзя вылечить, но о нем можно забыть.
(Ф. Раневская)
ie.spb вне форума  
 
Непрочитано 03.02.2009, 11:28
#164
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


AlphaGeo, у тебя было лишнее "", надо так.
Код:
[Выделить все]
^C^C(defun C:DISTSECTION-COMMAND () (command "Рзмпарал" pause pause  "@0,-5" ));DISTSECTION-COMMAND;
А чтобы в конце в ком. строку не возвращалось лишнее nil, то надо ещё добавить (princ). Да и команду лучше записывать универсально для английского и локализованного Автокадов.
Код:
[Выделить все]
^C^C(defun C:DISTSECTION-COMMAND () (command "_.DIMALIGNED" pause pause  "@0,-5" ) (princ));DISTSECTION-COMMAND;

Последний раз редактировалось Makswell, 03.02.2009 в 11:34.
Makswell вне форума  
 
Непрочитано 03.02.2009, 11:36
#165
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от Makswell Посмотреть сообщение
AlphaGeo, у тебя было лишнее ""
Спасибо большое! Как всегда на такой мелочи попадаюсь...
Цитата:
Сообщение от Makswell
Да и команду лучше записывать универсально.
Это в смысле по-англицки и с "извлечением из ядра AutoCAD"? Да я всегда стараюсь так делать, но у меня установлен локализованный ACAD и не всегда нахожу переводы для команд.
 
 
Непрочитано 03.02.2009, 11:49
#166
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Добавлю ещё.
Анализ макросов с использованием defun я рекомендую делать так.
Скопировать макрос в блокнот.
В блокноте преобразовать макрос ^C^C(defun C:Имя_Псевдокоманды () <код_лиспа>);Имя_Псевдокоманды в строку (progn <код_лиспа>) и запустить это выражение в ком. строке Автокада.
Для твоего случая:
Цитата:
Команда: (progn (command "Рзмпарал" pause pause "@0,-5" ""))
Рзмпарал
Начало первой выносной линии или <выбрать объект>:
Начало второй выносной линии:
Положение размерной линии или
[Мтекст/Текст/Угол]: @0,-5
Размерный текст = 33271
Команда: ОТРЕЗОК Первая точка: nil
Первая точка: *Прервано*
Видно, что команда "Рзмпарал" успешно завершилась и пошёл вызов последней выполненной команды. В моём случае это команда "ОТРЕЗОК". Следовательно одно "" здесь лишнее. Также выскакивает лишнее nil. Делаем так:
Цитата:
Команда: (progn (command "Рзмпарал" pause pause "@0,-5") (princ))
Рзмпарал
Начало первой выносной линии или <выбрать объект>:
Начало второй выносной линии:
Положение размерной линии или
[Мтекст/Текст/Угол]: @0,-5
Размерный текст = 21788
Команда:
Сейчас всё нормально. Можно сделать в блокноте обратное преобразование (progn <код_лиспа>) в выражение ^C^C(defun C:Имя_Псевдокоманды () <код_лиспа>);Имя_Псевдокоманды и повесить макрос на кнопку.

Добавлено:
Цитата:
Сообщение от AlphaGeo Посмотреть сообщение
Это в смысле по-англицки и с "извлечением из ядра AutoCAD"? Да я всегда стараюсь так делать, но у меня установлен локализованный ACAD и не всегда нахожу переводы для команд.
Иногда аутентичное имя команды можно узнать с помощью функции getcname
Цитата:
Команда: (getcname "Рзмпарал")
"_DIMALIGNED"
Makswell вне форума  
 
Непрочитано 03.02.2009, 11:51
#167
AlphaGeo


 
Сообщений: n/a


ОК, Makswell. Возьму этот метод на заметку.
 
 
Непрочитано 18.03.2009, 09:56
#168
Jonas

конструктор машиностроитель
 
Регистрация: 14.05.2007
Новосибирск
Сообщений: 893


Не получается!
Хочу написать макрос для динамического ввода проката используя программу В. Кондрата "Прокат".

С ком-строки работает -
_prokat;_explode;?;последний;;выдавить;?;последний;

Начинаю прописывать и пробовать и на этапе -
^C^C^_prokat;\\_explode;?;Последний; - глохнет.

пишет:
Команда: prokat

Точка вставки :
Угол поворота :

Команда: _explode

Выберите объект: ?


*Неверный выбор*
Требуется точка или Последний/Все/Группа

Подскажите пожалуйста!
Jonas вне форума  
 
Непрочитано 18.03.2009, 10:08
#169
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Может так?
Код:
[Выделить все]
^C^C^_prokat;\\_explode;_last;
Makswell вне форума  
 
Непрочитано 18.03.2009, 10:45
#170
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


А последняя птичка (^) после "C" зачем?
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 18.03.2009, 11:07
#171
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Да, она лишняя.
Makswell вне форума  
 
Непрочитано 18.03.2009, 11:07
#172
Jonas

конструктор машиностроитель
 
Регистрация: 14.05.2007
Новосибирск
Сообщений: 893


Цитата:
Сообщение от Krieger Посмотреть сообщение
А последняя птичка (^) после "C" зачем?
Незачем.
Работает ^C^C_prokat;\\_explode;_last;_extrude;_last;;

Большое спасибо.
Jonas вне форума  
 
Непрочитано 05.04.2009, 21:08
#173
victor.m4


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


Вопрос по AutoCAD 2006 офиц. русская версия: хотел сделать отдельную кнопку "Перспективная прекция", но что-то не получается написать макрос. Подскажите плиз...
victor.m4 вне форума  
 
Непрочитано 05.04.2009, 21:24
#174
AlphaGeo


 
Сообщений: n/a


victor.m4, Вам нужно готовое решение или помощь в поиске ошибки?
 
 
Непрочитано 05.04.2009, 23:06
#175
faeto1982


 
Регистрация: 30.03.2009
Сообщений: 53
Отправить сообщение для faeto1982 с помощью Skype™


господа подскажите пожалуйста макрокоманду вставки блока
и чтобы блок вставлялся через середину между точками в натуральном масштабе и без поворота.
faeto1982 вне форума  
 
Непрочитано 06.04.2009, 06:44
#176
Vova

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


Такие вещи надо делать самому. Как? Начни с http://dwg.ru/art/2 , есть книжка на эту тему в DL
Вставка блока обсуждалась в 150-х постах. И где-то здесь был хороший совет: вот ежели не получается, тогда сюда с вопросами
Vova вне форума  
 
Непрочитано 06.04.2009, 08:42
#177
LSN


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


Господа проектировщики подскажите пожалуйста в чем может быть дело.
Макрос для поворота атрибута в блоке не работает (прерывается автовыполнение после выбора атрибута и дальше уже необходимо забивать руками) на 2009 Acad'e хотя на 2006-2008 все работало.
Вот сам макрос: -Attedit;;;;;\_a;0;_n;
LSN вне форума  
 
Непрочитано 06.04.2009, 13:15
#178
AlphaGeo


 
Сообщений: n/a


LSN, проверил, у меня на ACAD 2008 все работает. Может так попробовать?
Код:
[Выделить все]
^C^C_-attedit;;;;;\_a;0;;

Последний раз редактировалось AlphaGeo, 06.04.2009 в 13:23.
 
 
Непрочитано 06.04.2009, 13:31
#179
LSN


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


Та же ерунда.
Вот что пишет в командной строке при выполнении.
Код:
[Выделить все]
Command: _-attedit

Edit attributes one at a time? [Yes/No] <Y>:

Enter block name specification <*>:

Enter attribute tag specification <*>:

Enter attribute value specification <*>:
Select Attributes:
1 found
//Вот здесь кажется что то не так пошло, а как исправить не понимаю пока
Select Attributes: _a  
Select Attributes: 0


*Invalid selection*
Expects a point or 
Window/Last/Crossing/BOX/Fence/WPolygon/CPolygon/Previous/AUto/Previous/AUto
Select Attributes:

1 attributes selected.
На 2008 у меня тоже работает.
LSN вне форума  
 
Непрочитано 06.04.2009, 13:38
#180
AlphaGeo


 
Сообщений: n/a


LSN, глупый вопрос, но очень хочется его задать, а ввод после выбора атрибутов (перед выбором опции Угол ) нажимаешь?
 
 
Непрочитано 06.04.2009, 13:53
#181
LSN


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


Цитата:
Сообщение от AlphaGeo Посмотреть сообщение
LSN, глупый вопрос, но очень хочется его задать, а ввод после выбора атрибутов (перед выбором опции Угол ) нажимаешь?
В макрокоманде
Код:
[Выделить все]
-Attedit;;;;;\_a;0;_n;
символ ; после и означает ввод. Но в 2009 Acad'e почему то не срабатывает.
LSN вне форума  
 
Непрочитано 06.04.2009, 14:02
#182
AlphaGeo


 
Сообщений: n/a


Не-не... LSN, Посмотри,
Код:
[Выделить все]
...
Select Attributes: _a  
...
Получается, что попытка активировать опцию Угол приходится еще на незаверщенную операцию выбора...
 
 
Непрочитано 06.04.2009, 14:34
#183
LSN


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


AlphaGeo, а почему тогда в 2008 работает? Я думаю это проблема 2009 када.
LSN вне форума  
 
Непрочитано 06.04.2009, 14:39
#184
AlphaGeo


 
Сообщений: n/a


LSN, а как ты завершаешь выбор объектов? Нажимаешь правую клавишу мыши? А может, она (ПКМ) настроена не так, как на 2008?

Добавлено:
В любом случае, мне кажется, проблема именно в процессе выбора объектов, а не в команде ATTEDIT или ее опциях. Вот только как решить эту проблему?
 
 
Непрочитано 06.04.2009, 14:59
#185
LSN


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


В общем случае завершаю ПКМ. Сейчас попробывал с помощью Enter - то же самое получается.
LSN вне форума  
 
Непрочитано 06.04.2009, 15:07
#186
AlphaGeo


 
Сообщений: n/a


Тогда я пас... Нужен кто-нибудь с ACAD 2009...
 
 
Непрочитано 06.04.2009, 16:10
#187
Vova

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


Макросы с редатированием атрибута не будут работать в 2009 поку не установлен SP-2
Vova вне форума  
 
Непрочитано 06.04.2009, 18:25
#188
victor.m4


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


Цитата:
Сообщение от AlphaGeo Посмотреть сообщение
victor.m4, Вам нужно готовое решение или помощь в поиске ошибки?
Я только начинаю подбираться к макросам. Посмотрел книгу "...Язык макрокоманд и создание кнопок...", но там не нашёл то, что мне нужно. Там, как я понял только для команд, которые "на поверхности", а как быть с теми что "по-глубже" в AutoCADе. Например, Перспектива : сначала
нужно вызвать "3М орбита", затем клик правой кнопкой, затем выбрать "Проекция" и потом уже по стрелке на "Перспективная". Если не затруднит выложите, пожалуйста, уже готовый вариант макроса для отдельной кнопки "Перспективная проекция" .
Мои варианты не работают:
^C^C_perspective;
'_3dorbit =*_perspective;
'_3dorbit _perspective;
victor.m4 вне форума  
 
Непрочитано 06.04.2009, 20:04
#189
AlphaGeo


 
Сообщений: n/a


victor.m4, может вот это подойдет
Код:
[Выделить все]
^C^C_Dview;\_camera;
Хотя, если честно, я нифига не понимаю в 3D...
 
 
Непрочитано 06.04.2009, 20:23
#190
Vova

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


Что ты называешь На поверхности? Там есть коды объемом до 8 строк. Кроме того в Заключение написано следующее:
Автор не ставил своей задачей предложить все команды, представленные в книге, каждому читателю..... Главной задачей является научить пользователя... самостоятельно строить команды "под себя"
Вот и пробуй строить.
Vova вне форума  
 
Непрочитано 06.04.2009, 22:56
#191
faeto1982


 
Регистрация: 30.03.2009
Сообщений: 53
Отправить сообщение для faeto1982 с помощью Skype™


пытался своими силами создать макрокоманду
вставка блока через середину между точками
но никак не могу избавится от запроса ввести масштаб и угол поворота
маштаб 1, угол 0
и как прописать если я захочу поменять мастаб или угол
*^C^C_insert;1122;_m2p;;;
faeto1982 вне форума  
 
Непрочитано 06.04.2009, 23:12
#192
AlphaGeo


 
Сообщений: n/a


To faeto1982
Значения масштаба и угла поворота по умолчанию:
Код:
[Выделить все]
*^C^C_-Insert;1122;_m2p;\\;;;
Задаваемые значения масштаба (один масштаб по обеим осям) и угла поворота:
Код:
[Выделить все]
*^C^C_-Insert;1122;_m2p;\\\;;\;
Задаваемые значения масштаба (разный масштаб по осям) и угла поворота:
Код:
[Выделить все]
*^C^C_-Insert;1122;_m2p;\\\;\;\;
 
 
Непрочитано 06.04.2009, 23:29
#193
faeto1982


 
Регистрация: 30.03.2009
Сообщений: 53
Отправить сообщение для faeto1982 с помощью Skype™


To AlphaGeo
Значения масштаба и угла поворота по умолчанию:

*^C^C_-Insert;1122;_m2p;\\;;;

огрмное спасибо в конце вроде лишняя точка с запятой стоит
faeto1982 вне форума  
 
Непрочитано 06.04.2009, 23:53
#194
victor.m4


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


Цитата:
Сообщение от Vova Посмотреть сообщение
..... Главной задачей является научить пользователя... самостоятельно строить команды "под себя"
Вот и пробуй строить.
Спасибо, помогли так помогли, научили так научили...
Это всё равно, что проходя мимо утопающего, сказать:
а тонешь - ну-ну, давай уж сам, тони самостоятельно!..

...Смысл изучать книгу, когда в ней нет того, чтобы научиться создавать именно те команды, которые нужны мне.

...Vova, проще было бы ответить: я не знаю, как создать такую кнопку...честнее...
victor.m4 вне форума  
 
Непрочитано 07.04.2009, 00:01
#195
Ser-grey


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


На счет кнопки перспектива, не знаю какая у вас версия, и правильно ли я вас понял, но иногда помогает такой подход: откройте все команды в разделе Customize User Interfase и внимательно просмотрите пиктограммы, там вы найдете очень много интересного, например кнопку перспектива с очень большим макросом:
$M=$(if,$(or,$(and,$(eq,$(getvar,"tilemode"),0),$(eq,$(getvar,"cvport"),1)),$(eq,$(getvar,"blockeditor"),1)),^C^C_perspective,$(if,$(eq,$(getvar,perspective),0),^C^C_perspective 1,^P(princ)^P)) версия 2009 английская.
Ser-grey вне форума  
 
Непрочитано 07.04.2009, 00:48
#196
Vova

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


Цитата:
Сообщение от victor.m4 Посмотреть сообщение
...
...Смысл изучать книгу, когда в ней нет того, чтобы научиться создавать именно те команды, которые нужны мне.
.
Но ты ведь только

Цитата:
Посмотрел книгу "...Язык макрокоманд и создание кнопок...",
И не нашел конкретной нужной тебе команды, и поспешил сообщить, что книга непригодна. Книга писалась на базе тех команд, которые применял автор, он не мог знать хотелки будущих читателей, ибо их (хотелок) миллион. Поэтому там дана методика построения макросов. В этой теме многое произросло из той книги, хотя ни одного, наверное, конкретного макроса в книге нет. То есть, либо забудь про книгу и долбай маросы сам, либо доверься автору и изучай ее.
Vova вне форума  
 
Непрочитано 07.04.2009, 06:39
#197
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Цитата:
...Vova, проще было бы ответить: я не знаю, как создать такую кнопку...честнее...
victor.m4, Vova - автор этой самой книги, и уж он точно знает как...
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 07.04.2009, 08:42
#198
AlphaGeo


 
Сообщений: n/a


victor.m4, ну а где же критика в мой адрес?
 
 
Непрочитано 07.04.2009, 10:22
#199
Hans667

сети
 
Регистрация: 12.04.2007
SPb
Сообщений: 536
Отправить сообщение для Hans667 с помощью AIM Отправить сообщение для Hans667 с помощью Skype™


Подскажите как сделать кнопку чтобы загружалась из автокада интернет страница http://forum.dwg.ru/.Браузер FireFOX. Заранее благодарен.
__________________
Errare humanum est, insipientis perseverare
Hans667 вне форума  
 
Непрочитано 07.04.2009, 11:07
#200
Profan


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


Если Firefox является браузером по умолчанию, то можно для кнопки записать такой макрос:
Код:
[Выделить все]
 
^C^C_browser;forum.dwg.ru
В принципе запустится любой браузер, который считается в системе "По умолчанию".
Profan вне форума  
 
Непрочитано 07.04.2009, 14:18
#201
Hans667

сети
 
Регистрация: 12.04.2007
SPb
Сообщений: 536
Отправить сообщение для Hans667 с помощью AIM Отправить сообщение для Hans667 с помощью Skype™


т.е. вместо browser можно записать firefox?
__________________
Errare humanum est, insipientis perseverare
Hans667 вне форума  
 
Непрочитано 07.04.2009, 14:21
#202
VVA

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


Hans667, Установить firefox браузером по умолчанию и оставить browser
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 07.04.2009, 14:23
#203
Profan


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


Нет, нельзя. "_browser" - это команда AutoCAD'а. Она определяет, какой браузер является текущим и запускает его. Значит, предварительно надо в Windows назначить Firefox браузером по умолчанию.
Profan вне форума  
 
Непрочитано 07.04.2009, 14:32
#204
Hans667

сети
 
Регистрация: 12.04.2007
SPb
Сообщений: 536
Отправить сообщение для Hans667 с помощью AIM Отправить сообщение для Hans667 с помощью Skype™


Почему то подгрузил сейчас свой CUI файл (удаляю его ибо не разрешается), чтобы кнопку написать,а он мне пишет что тот -райт протекшн. И рид онли еще..чего такое произошло то?Все работает,а изменить нельзя
__________________
Errare humanum est, insipientis perseverare
Hans667 вне форума  
 
Непрочитано 07.04.2009, 14:41
#205
Profan


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


А что, Firefox по другому (стандартно) нельзя что ли запустить?
Profan вне форума  
 
Непрочитано 07.04.2009, 14:44
#206
Hans667

сети
 
Регистрация: 12.04.2007
SPb
Сообщений: 536
Отправить сообщение для Hans667 с помощью AIM Отправить сообщение для Hans667 с помощью Skype™


да это я на самом деле чтобы сразить наповал начальницу- мне не двг нужен был а русско-финский словарь.Я просто до этого спрашивал как сделать,все молчали,а как до двг дело дошло,так все сразу знают
З.Ы. А почему CUI то не редактируемым стал?
__________________
Errare humanum est, insipientis perseverare

Последний раз редактировалось Hans667, 07.04.2009 в 14:56.
Hans667 вне форума  
 
Автор темы   Непрочитано 07.04.2009, 15:39
#207
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,824
<phrase 1=


Макрос
Цитата:
^C^C-scalelistedit;_R;_Y;_E;
Чистит список масштабов.
спасибо Александру Ривилису
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 07.04.2009, 15:46
#208
VVA

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


zenon, Почитай еще здесь же, начиная с поста #70
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 07.04.2009, 15:53
#209
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,824
<phrase 1=


VVA, у меня просто 1 макросом, без лиспа
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 07.04.2009, 19:03
#210
victor.m4


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


Дело в том, что прежде чем задавать вопросы на уважаемом форуме, я поискал во встроенном Руководстве пользователя к AutoCADу 2006
(офиц. русская версия - справка на русском), по методике построения макросов там страниц 20-30. Но то, что мне нужно не нашёл. Затем
воспользовался поиском по форуму и нашёл много ссылок на упомянутую книгу. Скачал её. Но в ней обнаружил лишь то, что есть в Руководстве,
только размазано на 300 страниц. А того, что мне нужно в ней тоже нет...(Меня интересовало: как сделать отдельную кнопку "перспектива", как
изменить по умолчанию путём непосредственного ввода значение системной переменной LENSLENGTH, как в команды "быстрый выбор" и
"фильтр" добавить критерий "по материалу" и д.р.)...

AlphaGeo и Ser-grey, спасибо за участие, но к сожалению эти макросы не сработали в AutoCAD 2006 офиц. русская версия...
victor.m4 вне форума  
 
Непрочитано 07.04.2009, 19:50
#211
Profan


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


victor.m4, а ты AutoCAD-то знаешь? Для создания собственных макросов необходимо знать команды AutoCAD'а и их опции. Надо уметь создавать сами кнопки. И надо иметь терпение при проверке работы макроса.
Знаешь ли ты, как включить перспективу без употребления команды "_3dorbit" ("3-Орбита")?
Знаешь ли ты, что "материал" не является в AutoCAD 2006 свойством объекта?
Знаешь ли ты, что для того, чтобы изменить значение системной переменной, надо сначала набрать на клавиатуре ее название и нажать Enter?

Вот пример одной из моих программ для включения перспективы:
Код:
[Выделить все]
 
;************** PERROST.LSP *********************************************
;               Перспектива с высоты роста 
;               Громов В.В. Апрель 1999.
;
(defun C:PERROST ( / echo tsel hsel tkam hkam thc thk rast)
   (setq echo (getvar "CMDECHO"))
   (setvar "CMDECHO" 0)
   (princ "\n ПЕРСПЕКТИВА.")
   (princ "\n Параметр-РАССТОЯНИЕ от камеры до цели.")
   (setq tcel (getpoint "\n Укажите в плане точку ЦЕЛИ: "))
   (setq hcel 1000)
   (setq tkam (getpoint tcel "\n Укажите в плане точку КАМЕРЫ: "))
   (setq hkam 1800)
   (setq thc (list (nth 0 tcel) (nth 1 tcel) hcel))
   (setq thk (list (nth 0 tkam) (nth 1 tkam) hkam))
   (setq rast (distance thk thc))
   (command "_DVIEW" "_C" (list (- (car tcel) 24000) (- (cadr tcel) 24000))
                          (list (+ (car tcel) 24000) (+ (cadr tcel) 24000)) ""
                          "_PO" thc thk "_D" (* 2 rast) "_h" "_X")
   (setvar "CMDECHO" echo)
   (princ)
)
Если код будет сохранен в файле perrost.lsp, то макрос для кнопки может иметь вид:
Код:
[Выделить все]
 
^C^C(if (not C:PERROST) (load "perrost")) PERROST

Последний раз редактировалось Profan, 07.04.2009 в 20:04.
Profan вне форума  
 
Непрочитано 07.04.2009, 20:45
#212
Vova

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


Цитата:
Сообщение от victor.m4 Посмотреть сообщение
я поискал во встроенном Руководстве пользователя к AutoCADу 2006
(офиц. русская версия - справка на русском), по методике построения макросов там страниц 20-30. Но то, что мне нужно не нашёл. Затем
воспользовался поиском по форуму и нашёл много ссылок на упомянутую книгу. Скачал её. Но в ней обнаружил лишь то, что есть в Руководстве,
только размазано на 300 страниц.
victor.m4, Ты мне льстишь! Когда писалась книга, был только автокад 2002, и в том руководстве я нашел всего несколько страниц про menu macro. Все остальное я выстрадал сам, имея под руками немного Омуры (несколько страничек) и Maximizing Autocad release 12, 1992, из которой почти ничего не взял. Таким образом, по твоим сведениям, автодеск взял мою книгу и сжал мои 300 стр до своих 20 для справки. Даже не знаю, гордиться-ли эти или подать на них в суд и стребовать денег. (если получится-поделюсь с тобой)
Для сведения: чтобы создать команду Copy-rotate я потратил 2 месяца, тупо разглядывая в метро листок с вариантами макроса, который не хотел работать, пока не понял, что надо сделать копию саму на себя. После этого принял решение написать брошюру. И она вылилась в книгу. Еще для сведения. На форуме, который тогда реставрировался, я предложил создать раздел Макросы, полагая, что их все знают и применяют, кроме меня. Раздел вскоре закрыли, так как не было ни сообщений, ни ответов на мои вопросы.

Последний раз редактировалось Vova, 07.04.2009 в 20:56.
Vova вне форума  
 
Непрочитано 08.04.2009, 16:56
#213
victor.m4


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


Profan
...Вообще, я работаю в 3D-Constructore 3.5. Это AutoCAD 2006 плюс параметрическое ядро от "Элекран-софт". Приложение, которое позволяет более быстро, чем в чистом ACADе проектировать мебель, создавать чертежи и спецификацию более автоматизированно и интеллектуально. Параметрика позволяет задавать условия изменения размеров как отдельных деталей, так и условия взаимодействия деталей в сборках. Достигается это путём ввода среды переменных в проектирование, а также путём использования математических и тригонометрических функций и многих других фич...Классная вещь, обожаю его...3D-Constructor существует как отдельный профиль в AutoCADе, называемый КМ. Путём экспорта из файла acad.cui в KM.cui я добавил в него многие ACADовские кнопки и панели... Но версия 3D-Constructor 3.5 работает только максимум с AutoCAD 2006... А в нём, вы конечно же знаете, рендеринг слабоват - невозможно добиться мягких теней... А хотелось бы получить более качественную визуализацию в 3DS MAX... Для последующего импорта dwg файла в 3DS MAX необходимо предварительно присвоить в 3D-Constructor-е трёхмерным объектам с различными материалами различный цвет-номер. Но в 3D-Constructor-е практически все основные трёхмерные объекты лежат в одном слое (слой KM_WORK и изменить это умолчание программы нельзя!). Вот для быстрого автоматизированного присвоения цвета и нужен был ФИЛЬТР по Материалу (которого нет в AutoCAD 2006), а вручную присваивать цвет трёхмерным объектам (которых в проекте более 200) это гемор...Так же для визуализации нужна отдельная кнопка "Перспектива" и возможность непосредственным вводом задавать фокусное расстояние. Просто когда уже имеешь качественную конструкторскую документацию хочется ещё больше -- качественную трёхмерную визуализацию... Человеку всегда хочется больше, чем есть... Про системные переменные вы верно сказали, но они ещё бывают с признаком "Только чтение", т.е. непосредственным вводом значения в командной строке изменить её нельзя. Так вот LENSLENGTH именно из таких...Просто почитав о макросах и решил, что можно немного модернизировать AutoCAD 2006. Но видимо здесь нужны более глубокие знания программирования...А лекций мне читать не надо, я просил ответа на свой вопрос, а не про изобретение "велосипеда" ...

P.S. Видимо придётся снять свои вопросы, ответа на них я так понял нет... Сейчас поставил AutoCAD 2009 офиц. русская версия. Да-а-а... Оказывается Autodesk уже давно сделал то, что мне надо... И отдельная кнопка "Перспектива", и задание фокусного расстояния, и ФИЛЬТР по Материалу и рендер с глобальным освещением уже приближается к 3DS MAX... Фантастика... Видимо кто-то уже попросил производителя о моих "глупостях" и он внедрил это стандартно... Спасибо Autodesk-у... Что ж теперь буду не в 3DS MAXе импортировать, а просто открывать файл dwg 2006 в AutoCAD 2009, гораздо проще...

для Vova
Тогда вообще не вижу смысла давать ссылки на эту книгу - на дворе уже 2009 год...
Миниатюры
Нажмите на изображение для увеличения
Название: image1.jpg
Просмотров: 287
Размер:	129.5 Кб
ID:	18528  
victor.m4 вне форума  
 
Автор темы   Непрочитано 08.04.2009, 17:17
#214
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,824
<phrase 1=


victor.m4, поставь еще 2010, еще больше удивишься
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 08.04.2009, 22:37
#215
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от victor.m4 Посмотреть сообщение
<...>Тогда вообще не вижу смысла давать ссылки на эту книгу - на дворе уже 2009 год...
А то, что она еще актуальна, уже не важно?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.04.2009, 01:00
#216
Vova

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


Цитата:
Сообщение от victor.m4 Посмотреть сообщение
А лекций мне читать не надо, .... для Vova
Тогда вообще не вижу смысла давать ссылки на эту книгу - на дворе уже 2009 год...
Не надо прежде всего походя охаивать чужую работу, не разобравшись в ней. Ты признался, что нашел много ссылок на книгу. Будь так любезен, посчитай сколько раз ссылка шла от имени Vova.
Насчет того, насколько быстро устаревает автокадовская литература. Здесь есть специальная тема про книгу (если интересуешься, найду), там показано, сколько глав устарело. Всего одна, там не показана новая CUI. Зато этот пробел восполнен статьей на главной стр. нашего форума. Вот и прикинь, надо-ли давать на книгу ссылку
Vova вне форума  
 
Непрочитано 12.04.2009, 17:47
#217
Gecuba


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


Здравствуйте!
Цитата:
Сообщение от zenon Посмотреть сообщение
Улучшенная команда _Break, разрыв в одной точке с повтором по правой клавише мышки.
Прошу не пинать, если вопрос совсем дилетантский (потому как дилетантка я в программировании ;-).
Улучшенный макрос для команды "break" отлично работает в 2010 (конечно англ.) - т.е. не вырывает кусочки при повторе команды с помощью правой кнопки мышки. А вот в 2009 русс. - вырывает при первом же обращении к команде.
В чем может быть проблема? (Догадка - Может макрос написан для англ.версии када?)
Уточнение - 2009 и 2010 стоят на разных машинках.
Спасибо!

Последний раз редактировалось Gecuba, 12.04.2009 в 17:54.
Gecuba вне форума  
 
Непрочитано 12.04.2009, 18:31
#218
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от Gecuba Посмотреть сообщение
Догадка - Может макрос написан для англ.версии када?
По-моему, догадка правильная!
У меня на ACAD 2006 Рус команда работает в таком виде:
Код:
[Выделить все]
^C^C^P(defun c:break2 () (vl-cmdf "_break" pause "_f" pause "@")(princ));break2;
 
 
Непрочитано 12.04.2009, 18:42
#219
Gecuba


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


AlphaGeo, спасибо большое за помощь! Теперь работает!
Да, трудно неучем быть...

ПС А зацикливал кто-нибудь эту команду?..
Вставка "*" перед макросом не помогла.

Последний раз редактировалось Gecuba, 12.04.2009 в 19:16. Причина: Пришла в голову еще одна дилетантская идея...
Gecuba вне форума  
 
Непрочитано 12.04.2009, 21:03
#220
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от Gecuba Посмотреть сообщение
А зацикливал кто-нибудь эту команду?..
Вставка "*" перед макросом не помогла.
Это не простой макрос, без использования DIESEL (как я понимаю), а макрос-команда со своим именем. Его звездочкой не зациклишь, но зато можно вызвать повторно, как любую другую команду, нажав пробел или Enter (или правую клавишу мыши, если она настроена соотвествующим образом).
Чтобы использовать зацикленный макрос, его следует записывать в следующем виде:
Код:
[Выделить все]
*^C^C_break;\_f;\@;
 
 
Непрочитано 12.04.2009, 21:26
#221
Gecuba


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


AlphaGeo, Спасибо еще раз!
Вроде работает - очень удобно когда надо сразу в нескольких местах разорвать.

Последний раз редактировалось Gecuba, 12.04.2009 в 21:34.
Gecuba вне форума  
 
Непрочитано 18.05.2009, 09:53
#222
Juss_00

Инженер
 
Регистрация: 11.12.2007
Москва
Сообщений: 295


День добрый, вопрос глупый и простой, но что то не нашёл а надо срочно.

Сделал команду ^C^Cреген;реген (для своего дин блока, так как его надо дважды регенить что бы получить расчёт)

Но на большом чертеже понятно что регенить надо только один объект, либо выбрав, либо последний.

В автокаде команды Реген и Всереген (2010 русский)
Не могу найти команду коотрая бы регенерировал только один объект.

Подскажите научить помогите ) (возможное подчеркнуть)
__________________
Live as though tomorrow you will die,
Study as though you will live eternally.
Juss_00 вне форума  
 
Непрочитано 18.05.2009, 10:36
#223
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Имелось ввиду обновление текстовых полей в блоке? Тогда тебе помодет команда _updatefield.
Makswell вне форума  
 
Непрочитано 18.05.2009, 11:33
#224
Juss_00

Инженер
 
Регистрация: 11.12.2007
Москва
Сообщений: 295


Спасибо! Эту команду я справшивл в "динамических блоках".
Терь напишу нормально этот макрос. )

Цитата:
^C^Cобнполе;последний;обнполе;последний;
Не получается что бы второй раз то же выделялся автоматически команндой "последний"
Посветуете?
__________________
Live as though tomorrow you will die,
Study as though you will live eternally.

Последний раз редактировалось Juss_00, 18.05.2009 в 11:44. Причина: Вопрос
Juss_00 вне форума  
 
Непрочитано 18.05.2009, 12:07
#225
Павлов Андрей

Инженер-строитель
 
Регистрация: 27.05.2004
Республика Беларусь
Сообщений: 67


Здравствуйте . А можно ли создать макрос , удлиняющий отрезок на указанную величину сразу в обе стороны , т.е. как по команде _lengthen DElta , указываешь отрезок , но в обе стороны ?
__________________
Andrey
Павлов Андрей вне форума  
 
Непрочитано 18.05.2009, 13:13
#226
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от Juss_00 Посмотреть сообщение
Спасибо! Эту команду я справшивл в "динамических блоках".
Терь напишу нормально этот макрос. )

Цитата:
^C^Cобнполе;последний;обнполе;последний;
Не получается что бы второй раз то же выделялся автоматически команндой "последний"
Посветуете?
Juss_00, может стоит делать это вот так:
Код:
[Выделить все]
^C^Cобнполе;последний;;обнполе;последний;;
?
 
 
Непрочитано 18.05.2009, 13:28
#227
Profan


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


Цитата:
Сообщение от Павлов Андрей Посмотреть сообщение
Здравствуйте . А можно ли создать макрос , удлиняющий отрезок на указанную величину сразу в обе стороны , т.е. как по команде _lengthen DElta , указываешь отрезок , но в обе стороны ?
Код:
[Выделить все]
;***********l_l.lsp - Удлинение отрезка в обе стороны
;                     на заданную величину.
;   Freeware. Автор Владимир Громов. Август 2005 г.
;
;   Если величину удлинения задать со знаком минус (-), то
;   вместо удлинения получим укорочение.
(defun C:L_L ( / tn tk delta flag ob line)
    (setvar "CMDECHO" 0)
    (setq delta (getreal "\n Величина удлинения линии (ENTER-отказ): "))
    (if delta
        (progn
        (setq flag T)
        (while flag
        (setq ob (entsel "\n Выберите отрезок (ENTER-завершить): "))
        (if ob
            (progn
            (setq line (entget (car ob)))
                  (if (= (cdr (assoc 0 line)) "LINE")
                  (progn
                  (setq tn (cdr (assoc 10 line)))
                  (setq tk (cdr (assoc 11 line)))
                  (command "_LENGTHEN" "_delta" delta tn tk "")
                  ); progn
                  ); if
             ); progn
                  (setq flag nil)
          ); if
        ); while
        ); progn
        (princ "\n Отказ.")
    ); if
(princ)
)
Если код сохранить в файле l_l.lsp, то макрос для кнопки может иметь вид
Код:
[Выделить все]
 
^C^C(if (not C:L_L) (load "l_l")) L_L
Profan вне форума  
 
Непрочитано 18.05.2009, 14:50
#228
Juss_00

Инженер
 
Регистрация: 11.12.2007
Москва
Сообщений: 295


AlphaGeo, нет. Прежде чем выложить пробывал такой вариант. Второй раз все равно просит указать объект.
__________________
Live as though tomorrow you will die,
Study as though you will live eternally.
Juss_00 вне форума  
 
Непрочитано 18.05.2009, 14:54
#229
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от Juss_00 Посмотреть сообщение
AlphaGeo, нет. Прежде чем выложить пробывал такой вариант. Второй раз все равно просит указать объект.
Что в командной строке пишет?

Добавлено:
Сейчас еще раз проверил, у меня работает... Никаких запросов нет.

Последний раз редактировалось AlphaGeo, 18.05.2009 в 15:01.
 
 
Непрочитано 18.05.2009, 15:26
#230
Павлов Андрей

Инженер-строитель
 
Регистрация: 27.05.2004
Республика Беларусь
Сообщений: 67


Profan , спасибо . Владимиру Громову - спасибо за лисп .
__________________
Andrey
Павлов Андрей вне форума  
 
Непрочитано 18.05.2009, 16:20
#231
VVA

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


Павлов Андрей, Вообще-то ты сказал спасибо одному и тому же человеку . Но лучше дважды сказать, чем дважды промолчать.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 18.05.2009, 16:37
#232
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,824
<phrase 1=


Может лучше так
Цитата:
^C^C_Updatefield;_Last;;_Updatefield;_Last;;
не у всех стоит русский кад
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 18.05.2009, 16:50
#233
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от zenon Посмотреть сообщение
Может лучше так
Код:
[Выделить все]
^C^C_Updatefield;_Last;;_Updatefield;_Last;;
не у всех стоит русский кад
zenon, какая разница? Juss_00 жалуется, что сам макрос не работает, а записан он также, хоть и на русском.
 
 
Непрочитано 18.05.2009, 18:19
#234
Juss_00

Инженер
 
Регистрация: 11.12.2007
Москва
Сообщений: 295


zenon, то же самое. (
В общем придумал как решить это. КОгда те блоки начинал делать только взялся за дин. блоки, теперь избалю от ссылки на "поля" и сделаю на "натуральные" объекты должно будет помочь.

AlphaGeo, не тот что вставил сюда, из полу рабочей кнопки взял первый раз обновлял, второй раз просил выделить объект.

У меня не получилось дважды регенить, обновлять последний объект, может только если применить фиктивное копирование получится. Дома попробую. =)
__________________
Live as though tomorrow you will die,
Study as though you will live eternally.
Juss_00 вне форума  
 
Непрочитано 18.05.2009, 18:23
#235
AlphaGeo


 
Сообщений: n/a


Juss_00, может тогда дело в твоем блоке? Выложил бы сюда. Да и что в командной строке выводится в процессе выполнения этого макроса?
 
 
Автор темы   Непрочитано 19.05.2009, 12:41
#236
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,824
<phrase 1=


Juss_00,
у меня все обновляет
попробуй может так пройдет
Цитата:
^C^C_Updatefield;_Previous;;_Updatefield;_Previous;;
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 19.05.2009, 12:58
#237
Profan


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


Этот макрос не должен работать, если перед его запуском не выбирались никакие объекты (поля), т.е. нет предыдущего набора.
Profan вне форума  
 
Непрочитано 19.05.2009, 17:37
#238
Juss_00

Инженер
 
Регистрация: 11.12.2007
Москва
Сообщений: 295


Само собой, но тестирвоал специально выбирая, разные объекты и перемещая несколько раз и его и другие объекты и с другими командами. Команды типо Копировать, переместить и прочее раотают нормально. А команды реген и обновитьполе нет, после первого выбора второй раз не находят последний объект.
__________________
Live as though tomorrow you will die,
Study as though you will live eternally.
Juss_00 вне форума  
 
Непрочитано 19.05.2009, 18:34
#239
Profan


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


А зачем в последнем макросе присутствует пробел в конце перед ;;? Это ведь соответствует ;;;.
Profan вне форума  
 
Непрочитано 16.06.2009, 07:19
#240
Jonas

конструктор машиностроитель
 
Регистрация: 14.05.2007
Новосибирск
Сообщений: 893


Для расчетов на прочность в среде Автокада не заменима команда _massprop но значение получаются в миллиметрах (поскольку модель в мм.)
а для дальнейших расчетов в основном удобней в сантиметрах (например в программе Александра Анисина "KarkasA"
http://www.karkasa.narod.ru/).
Приходиться делать следующее:
- выполнить сечение 3Д тела,
- выдавить на 10,
- масштабировать на 0,1,
- установить ПСК в ентр тяжести,
- и затем применять _massprop,
- после всего удалить не нужное.

Чтобы облегчить жизнь выстрадал макрос -

Код:
[Выделить все]
^C^C_section;\;xy;\'cal;p=@;_copybase;@;_last;;_extrude;@;;10;_scale;_last;;@;0.1;
_multicentroid2;_last;;;пск;начало;@;_erase;_last;;масс-хар;_last;;;_erase;_last;;
Выбираешь тело, указываешь точку сечения и получаешь текстовое окно с результатом.
После завершения команду в буфере обмена находиться сечение которое можно использовать для протокола, памятки и пр.

Для работы макроса нужно:
- чтобы расчетное сечение было в плоскости XY,
- если сечение составное - все объединить,
- должна стоять Лис-программа по отрисовке шара в цнтре тяжести. К сожжалению не помню автора и где брал, поэтому выкладываю здесь.


Код:
[Выделить все]
(defun c:multicentroid2 (/ centroid delta ents firstpoint firstpointmass length1 length12 mass secondpoint secondpointmass
       osmode aa1)
(vl-load-com)
  (defun centroid (entity /)
    (vlax-safearray->list (vlax-variant-value (vla-get-centroid (vlax-ename->vla-object entity))))
    ) ;_ end of defun
  (defun mass (entity /)
    (vla-get-volume (vlax-ename->vla-object entity))
    ) ;_ end of defun
  (if (setq ents (ssget '((0 . "3DSOLID"))))
    (progn
      (setq ents (vl-remove-if-not 'atom (mapcar 'cadr (ssnamex ents))))
      (setq firstpoint (centroid (car ents)))
      (setq firstpointmass (mass (car ents)))
      (if (setq ents (cdr ents))
  (progn
    (foreach n ents
      (setq secondpoint (centroid n))
      (setq secondpointmass (mass n))
      (setq length12 (sqrt (apply '+ (mapcar '(lambda (x) (* x x)) (mapcar '- firstpoint secondpoint)))))
      (setq length1 (/ (* secondpointmass length12) (+ firstpointmass secondpointmass)))

(if (and (= length1 length12)(= length1 0))(setq length12 1))

      (setq delta (mapcar '(lambda (x) (/ (* length1 x) length12)) (mapcar '- firstpoint secondpoint)))
      (setq firstpoint (mapcar '- firstpoint delta))
      (setq firstpointmass (+ firstpointmass secondpointmass))
      ) ;_ end of foreach
    ) ;_ end of progn
  ) ;_ end of if

(setq osmode (getvar "osmode")
      firstpoint (trans firstpoint 0 1))

(vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
(setvar "cmdecho" 0)
(setvar "osmode" 0)

(command "_.circle" firstpoint 20 ;Радиус сферы по умолчанию
   "_.erase" (entlast) "")
(vl-cmdf "_.circle" firstpoint)

(setvar "osmode" osmode)
(princ "\nРадиус сферы в центре масс <20>: ")
(if (vl-cmdf pause)(progn

(setq aa1 (cdr (assoc 40 (entget (entlast)))))
(setvar "osmode" 0)
(command "_.erase" (entlast) ""
   "_.sphere" firstpoint aa1
    ;Цвет сферы (или удалить строку)
   )
(setvar "osmode" osmode)
))

(setvar "cmdecho" 1)
(vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
      (princ)
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of defun

Все работает но если в сотавном сечении тела не касаются (хотя и объединяются), то считается только одно тело.
Причина в том что после выдавливания сечения (хотя оно и едино) получаем отдельные тела.

Будьте добры профи, может можно это решить?
И еще вопрос, можно ли как то извлекать данные из текстового окна програмно?

Последний раз редактировалось Кулик Алексей aka kpblc, 16.06.2009 в 14:47.
Jonas вне форума  
 
Непрочитано 26.06.2009, 13:45
#241
Juss_00

Инженер
 
Регистрация: 11.12.2007
Москва
Сообщений: 295


Подскажите как запустить окно свойств объекта в ком. строке?
Или каким образом менять свойства выброных элементов?
__________________
Live as though tomorrow you will die,
Study as though you will live eternally.
Juss_00 вне форума  
 
Непрочитано 26.06.2009, 16:44
#242
VVA

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


Juss_00,
1. _change (ИЗМЕНИТЬ)
2. _chprop (СВОЙСТВА)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 26.06.2009, 18:15
#243
Juss_00

Инженер
 
Регистрация: 11.12.2007
Москва
Сообщений: 295


Подскажите зачем в некоторых макросах пишут
Цитата:
_.-purge
с точкой перед минусом?

А также в
Цитата:
Regapps
в команде purge вычищает "нулевые объекты?
__________________
Live as though tomorrow you will die,
Study as though you will live eternally.
Juss_00 вне форума  
 
Непрочитано 26.06.2009, 19:35
#244
VVA

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


Juss_00, http://dwg.ru/art/11 первый абзац.
По поводу точки.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 29.06.2009, 09:54
#245
Juss_00

Инженер
 
Регистрация: 11.12.2007
Москва
Сообщений: 295


За
Цитата:
По поводу точки.
спасибо! )
А из первого абзаца я вроде ничего и не спрашивал. )

Кстати, такой вопрос а можно ли выполнив копирование многих объектов потом все их выбрать автоматически? Тип Last но на несколько объектов. (вставлялись вместе)
__________________
Live as though tomorrow you will die,
Study as though you will live eternally.

Последний раз редактировалось Juss_00, 29.06.2009 в 16:22. Причина: Появился вопрос
Juss_00 вне форума  
 
Непрочитано 30.06.2009, 16:02
#246
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Juss_00, что-то такое?
Код:
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 30.06.2009, 17:44
#247
kserg


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


Относительно _.PSELECT;_p

http://forum.dwg.ru/showthread.php?t=1311&pp=10000
kserg вне форума  
 
Непрочитано 30.06.2009, 18:15
#248
Juss_00

Инженер
 
Регистрация: 11.12.2007
Москва
Сообщений: 295


=) Спасиб всё то. )
__________________
Live as though tomorrow you will die,
Study as though you will live eternally.
Juss_00 вне форума  
 
Непрочитано 08.07.2009, 17:22
#249
VVA

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


Обновил пост #75 Добавил вариант с добавлением с списку масштабов свои значений
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 27.09.2009, 11:42
#250
faeto1982


 
Регистрация: 30.03.2009
Сообщений: 53
Отправить сообщение для faeto1982 с помощью Skype™


Прошу помочь написать макрокоманду, чтобы:
[FONT=&quot]_wipeout[/FONT] включал или отключал контуры в зависимости от предудущего состояния.

p.s. прошу не ругатся, сам долго пытался понять как сделать, но увы не понимаю как прописать условие.
faeto1982 вне форума  
 
Непрочитано 27.09.2009, 12:37
#251
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Цитата:
Сообщение от faeto1982 Посмотреть сообщение
Прошу помочь написать макрокоманду, чтобы:
[FONT=&quot]_wipeout[/FONT] включал или отключал контуры в зависимости от предудущего состояния.

p.s. прошу не ругатся, сам долго пытался понять как сделать, но увы не понимаю как прописать условие.
http://forum.dwg.ru/showpost.php?p=200705&postcount=13
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 27.09.2009, 12:44
#252
faeto1982


 
Регистрация: 30.03.2009
Сообщений: 53
Отправить сообщение для faeto1982 с помощью Skype™


Krieger огромное спасибо. пойду разбираться как пользоваться лиспом
faeto1982 вне форума  
 
Непрочитано 27.09.2009, 16:32
#253
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Цитата:
Сообщение от faeto1982 Посмотреть сообщение
Krieger огромное спасибо. пойду разбираться как пользоваться лиспом
http://dwg.ru/art/8
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 30.09.2009, 17:50
#254
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


А почему масштабы не попорядку как в лспе выставляются???
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 30.09.2009, 18:56
#255
VVA

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


dextron3, Обновил вариант 3
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 30.09.2009, 20:57
#256
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


VVA, и самый последний вопрос как можно макросом менять масштаб, вот в этой панели,

посомтрел в описании лиспа, там английском сайте парень создал свою панель типа этой с кнопками:



я уже 3й год мечтаю о том чтобы масштабами можно было с помощью лиспа управлять....
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 08.10.2009, 19:41
#257
Малёха

Инженер-геодезист
 
Регистрация: 16.09.2009
Архангельск
Сообщений: 49


Здравствуйте! А есть у кого-нибудь макрос, чтобы отключить все слои?
Малёха вне форума  
 
Непрочитано 08.10.2009, 19:48
#258
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Цитата:
Сообщение от Малёха Посмотреть сообщение
Здравствуйте! А есть у кого-нибудь макрос, чтобы отключить все слои?
Нафига? Тогда уж кад просто закрой.
Цитата:
Сообщение от dextron3
как можно макросом менять масштаб, вот в этой панели
Элементарно, только определись что именно менять собрался.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 08.10.2009, 20:09
#259
Profan


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


Цитата:
Сообщение от Малёха Посмотреть сообщение
Здравствуйте! А есть у кого-нибудь макрос, чтобы отключить все слои?
Торопиться в этом деле, вроде бы, ни к чему. Открыть Диспетчер слоев, нажать правую кнопку мыши, выбрать все слои и выключить любую лампочку...
Profan вне форума  
 
Непрочитано 09.10.2009, 10:12
#260
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,260


Цитата:
Сообщение от Малёха Посмотреть сообщение
Здравствуйте! А есть у кого-нибудь макрос, чтобы отключить все слои?
^C^C(command "_layer" "_off" "*" "")
но он все равно ругнется на отключение текущего слоя, ибо это бессмысленно
Pilot вне форума  
 
Непрочитано 09.10.2009, 11:37
#261
VVA

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


Toggle all layers off except current layer
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 09.10.2009, 19:57
#262
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


VVA, а мне дайте совет по масштабам и макросам
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 09.10.2009, 21:35
#263
Малёха

Инженер-геодезист
 
Регистрация: 16.09.2009
Архангельск
Сообщений: 49


Pilot, спасибо большое!!!
Малёха вне форума  
 
Непрочитано 16.10.2009, 11:21
#264
РВН


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


Цитата:
Сообщение от Log_in Посмотреть сообщение
Вот буквально неделю назад (к своему стыду) начал читать книжку В. Свет "Язык макрокоманд..." и хочу выразить автору огромную благодарность (думаю выражение благодарности не будет оффтопом).

Применительно к себе пока сделал одну кнопку, но зато пользуюсь ей по 100 раз на дню: проверка ошибок, очистка чертежа только от неиспользуемых блоков с последующим сохранением.

^C^C_audit;_y;_-purge;_blocks;;_n;_qsave;
Хочу тоже научиться программировать в КАДе, не подскажите где взять литературу типа В. Свет "Язык макрокоманд..."
РВН вне форума  
 
Непрочитано 16.10.2009, 12:54
#265
Кулик Алексей aka kpblc
Moderator

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


Именно эта литература есть в Download
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.10.2009, 13:21
#266
Jonas

конструктор машиностроитель
 
Регистрация: 14.05.2007
Новосибирск
Сообщений: 893


Все же получилось как желалось.

Код:
[Выделить все]
^C^C_rectang;\'_cal;p1=@;\_cal;p2=@;_erase;_last;;_section;'_cal;p1;'_cal;p2;\\\yz;\_extrude;'_cal;p2;'_cal;p1;\\;0.0001;_union;'_cal;p2;'_cal;p1;\\;_ucs;_y;;_copybase;@;_last;;_ucs;_p;_multicentroid2;_last;;;_ucs;_o;@;_erase;_last;;_massprop;_last;;^C^C_undo;;^C^C_undo;;^C^C_undo;;^C^C_undo;;


-выбираем участок балки любой кофигурации в то числе составной ,
- указываем (курсором) точку расчетного сечения (длжна лежать в пределах прямоуголника выбора),
- получаем массовоинерционные характеристики,
- жмем Enter,
- из буфера можем вставить сечение.

Для работы макроса должен быть Лисп multicentroid2/

Код:
Код:
[Выделить все]
(defun c:multicentroid2 (/ centroid delta ents firstpoint firstpointmass length1 length12 mass secondpoint secondpointmass
       osmode aa1)
(vl-load-com)
  (defun centroid (entity /)
    (vlax-safearray->list (vlax-variant-value (vla-get-centroid (vlax-ename->vla-object entity))))
    ) ;_ end of defun
  (defun mass (entity /)
    (vla-get-volume (vlax-ename->vla-object entity))
    ) ;_ end of defun
  (if (setq ents (ssget '((0 . "3DSOLID"))))
    (progn
      (setq ents (vl-remove-if-not 'atom (mapcar 'cadr (ssnamex ents))))
      (setq firstpoint (centroid (car ents)))
      (setq firstpointmass (mass (car ents)))
      (if (setq ents (cdr ents))
  (progn
    (foreach n ents
      (setq secondpoint (centroid n))
      (setq secondpointmass (mass n))
      (setq length12 (sqrt (apply '+ (mapcar '(lambda (x) (* x x)) (mapcar '- firstpoint secondpoint)))))
      (setq length1 (/ (* secondpointmass length12) (+ firstpointmass secondpointmass)))

(if (and (= length1 length12)(= length1 0))(setq length12 1))

      (setq delta (mapcar '(lambda (x) (/ (* length1 x) length12)) (mapcar '- firstpoint secondpoint)))
      (setq firstpoint (mapcar '- firstpoint delta))
      (setq firstpointmass (+ firstpointmass secondpointmass))
      ) ;_ end of foreach
    ) ;_ end of progn
  ) ;_ end of if

(setq osmode (getvar "osmode")
      firstpoint (trans firstpoint 0 1))

(vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
(setvar "cmdecho" 0)
(setvar "osmode" 0)

(command "_.circle" firstpoint 20 ;Радиус сферы по умолчанию
   "_.erase" (entlast) "")
(vl-cmdf "_.circle" firstpoint)

(setvar "osmode" osmode)
(princ "\nРадиус сферы в центре масс <20>: ")
(if (vl-cmdf pause)(progn

(setq aa1 (cdr (assoc 40 (entget (entlast)))))
(setvar "osmode" 0)
(command "_.erase" (entlast) ""
   "_.sphere" firstpoint aa1
    ;Цвет сферы (или удалить строку)
   )
(setvar "osmode" osmode)
))

(setvar "cmdecho" 1)
(vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
      (princ)
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of defun[/quote]
Jonas вне форума  
 
Непрочитано 02.11.2009, 18:49
#267
proekt_mep

(ГС, ТМ, ОВ)
 
Регистрация: 14.03.2008
Харьков
Сообщений: 101


Уважаемые гуру!
У меня есть акадовский файл (библиотека арматуры) с элементами схем (арматура и пр.). Хочу сделать так, чтобы работая в одном файле можно было нажав "волшебную кнопочку" открыть ту самую библиотеку арматуры. Пытаюсь сделать это след образом: в CUI создаю новую кнопку и пишу для нее макрос -
^C^Cfiledia;0;_open;L:/архив/Шаблон.dwg;

Ничего не получается: в командной строке отображается -

Команда: filedia
Новое значение FILEDIA <0>: 0
Команда: _open
Команда: L:/архив/Шаблон.dwg
Неизвестная команда "L:/АРХИВ/ШАБЛОН.DWG". Для вызова справки
нажмите F1.

Мож кто-нибудь сталкивался с подобной задачкой и нашел ее решени?
proekt_mep вне форума  
 
Непрочитано 02.11.2009, 19:27
#268
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


proekt_mep, пробуй на кнопке сделать это только свой путь укажи....
Код:
[Выделить все]
(vl-load-com) (vla-open (vla-get-documents  (vlax-get-acad-object))(findfile "C:/Program Files/OD/Dinbloki.dwg"))
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 03.11.2009, 13:19
#269
proekt_mep

(ГС, ТМ, ОВ)
 
Регистрация: 14.03.2008
Харьков
Сообщений: 101


dextron3, спасибо! Получилось!
если не сложно расшифруй что там написано и на каком языке. Еще раз спасибо.
proekt_mep вне форума  
 
Непрочитано 17.11.2009, 11:44
#270
Aazizv

конструктор
 
Регистрация: 13.03.2009
Беларусь
Сообщений: 15


Уважаемые знатоки Автокада,подскажите пожалуйста, можно ли в автокаде построить дугу по хорде и длине дуги? Спасибо всем ответившим.

Последний раз редактировалось Aazizv, 17.11.2009 в 13:50.
Aazizv вне форума  
 
Непрочитано 17.11.2009, 14:13
#271
Кулик Алексей aka kpblc
Moderator

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


Aazizv, а ты это смотрел?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.11.2009, 15:37
#272
Aazizv

конструктор
 
Регистрация: 13.03.2009
Беларусь
Сообщений: 15


"Или в автокаде:
Рисуй дугу по трём точкам и подгоняй её потихоньку к нужной длине, смотря в окно свойств, как только подгонишь - смотри радиус"
Этот способ и использовался.
Хотелось бы узнать более красивый способ-если конечно он есть.
Aazizv вне форума  
 
Непрочитано 25.11.2009, 18:46
#273
gomer

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


>> Aazizv : внимательно читай опции в к.с. - там все есть
>> proekt_mep : А, на фига тогда палитры инструментов нужны...
gomer вне форума  
 
Непрочитано 12.01.2010, 15:59
#274
Sanya1310

Проектировщик
 
Регистрация: 03.04.2008
Питер
Сообщений: 48
<phrase 1=


Помогите пожалуйста разобраться с простым макросом:
(переносит выбранные объекты на заданный слой lt001)
^C^C_-layer;_set;lt001;;_laycur;
С линиями работает нормально, вот только почему-то при такой операции с размерами они не меняют цвет по слою.
версия ACAD 2008.
__________________
Sanya
Sanya1310 вне форума  
 
Непрочитано 12.01.2010, 16:03
#275
Profan


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


А если настроить элементы размерного стиля "ПоСлою", а не "ПоБлоку"?
Profan вне форума  
 
Непрочитано 12.01.2010, 16:12
#276
Sanya1310

Проектировщик
 
Регистрация: 03.04.2008
Питер
Сообщений: 48
<phrase 1=


так и настроено. и в свойствах так отображается. вот только не меняется отображаемый цвет размера.

да, притом если "потаскать" размер за ручки, цвет становится как надо.
regen и redrawall испробованы, не помогают.
__________________
Sanya

Последний раз редактировалось Sanya1310, 12.01.2010 в 16:18.
Sanya1310 вне форума  
 
Непрочитано 12.01.2010, 16:12
#277
Буджум

мелкий местный хищник
 
Регистрация: 20.10.2009
замкадье
Сообщений: 72


С "поблоком" тоже должно работать. Скорее всего в текущем разм. стиле конкретный цвет задан. Вот он и не меняется
Апаздал, однако
Глупость спрошу. А почему у тебя в панели свойств слой wc004, а не lt001?

Последний раз редактировалось Буджум, 12.01.2010 в 16:18.
Буджум вне форума  
 
Непрочитано 12.01.2010, 16:20
#278
Sanya1310

Проектировщик
 
Регистрация: 03.04.2008
Питер
Сообщений: 48
<phrase 1=


название слоя в макросе - для примера.
на самом деле wc004
__________________
Sanya
Sanya1310 вне форума  
 
Непрочитано 12.01.2010, 16:25
#279
Буджум

мелкий местный хищник
 
Регистрация: 20.10.2009
замкадье
Сообщений: 72


Тады ой. Твой макрос с моим поблоком замечательно подружился. Только-что проверил
Буджум вне форума  
 
Непрочитано 17.01.2010, 18:33
#280
faeto1982


 
Регистрация: 30.03.2009
Сообщений: 53
Отправить сообщение для faeto1982 с помощью Skype™


нужен лисп, который запускал бы именованный фильтр.
(имя фильтра прописывается в теле лиспа.)
но при этом чтобы не появлялась форма "фильтры выбора объектов"
p.s. в лиспе полный ноль.
faeto1982 вне форума  
 
Непрочитано 17.01.2010, 22:00
#281
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
^C^C^P(defun selectobjects( / ss )(setq ss "_A" (ssget '((0 . "LINE")))) (sssetfirst ss ss));selectobjects
А DXF-коды и их смысл смотри в справке
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 27.03.2010, 01:15
#282
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,270
Отправить сообщение для doctorraz с помощью Skype™


подскажите уважаемые:
1.сделал команду ^C^C_маскировка;к;в
2.повесил ее на кнопку
собственно вопрос, как сделать, что бы ее можно было вызывать клавиатурным сокрацением (не ctrl+, а типа мскв???
пока вышел из положения в AUTOCAD 2010 через рекордер операций, но думаю это не есть красиво
doctorraz вне форума  
 
Непрочитано 27.03.2010, 09:27
#283
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от doctorraz Посмотреть сообщение
подскажите уважаемые:
1.сделал команду ^C^C_маскировка;к;в
2.повесил ее на кнопку
собственно вопрос, как сделать, что бы ее можно было вызывать клавиатурным сокрацением (не ctrl+, а типа мскв???
пока вышел из положения в AUTOCAD 2010 через рекордер операций, но думаю это не есть красиво
А может попробовать создать такой макрос?
Код:
[Выделить все]
^C^C(defun C:МСКВ () (command "МАСКИРОВКА" "к" "в" ) (princ));МСКВ;
 
 
Непрочитано 27.03.2010, 12:36
#284
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,270
Отправить сообщение для doctorraz с помощью Skype™


AlphaGeo, спасибо работает, только надо по кнопкам команды разок мышкой нажать, потом работает с клавиатуры.
не знаю правильно или нет сделал так:
Код:
[Выделить все]
(defun C:1 () (command "МАСКИРОВКА" "к" "в" ) (princ));1;
(defun C:2 () (command "МАСКИРОВКА" "к" "о" ) (princ));2;
файл обозвал *.lsp и добавил в автозагрузку.
doctorraz вне форума  
 
Непрочитано 27.03.2010, 15:22
#285
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от doctorraz Посмотреть сообщение
не знаю правильно или нет сделал так:
Код:
[Выделить все]
(defun C:1 () (command "МАСКИРОВКА" "к" "в" ) (princ));1;
(defun C:2 () (command "МАСКИРОВКА" "к" "о" ) (princ));2;
файл обозвал *.lsp и добавил в автозагрузку.
Конечно, правильно!
Я просто не подумал, что "именованные" макросы AutoCAD "помнит" только после одного запуска самого макроса и до завершения работы в текущем сеансе программы. А чтобы команды загружались сразу - это только через создание файла *.lsp и добавление его в автозагрузку.
 
 
Непрочитано 28.03.2010, 01:01
#286
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,270
Отправить сообщение для doctorraz с помощью Skype™


подскажите пожалуйста уважаемые:
есть макрос который поворачивает атрибут в ноль
Код:
[Выделить все]
*^C^C_-Attedit;;;;;\;_Angle;0;;
пытаюсь то же сделать на лиспе...
Код:
[Выделить все]
(defun C:АТО ()
  (command "-АТРЕД" "д" "*" "*" "*" pause "у" "0")
  (princ)
);крутим атрибут в 0
то что красным бред, а как правильно?
doctorraz вне форума  
 
Непрочитано 28.03.2010, 03:17
#287
gomer

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


Ну можно вот так:
Код:
[Выделить все]
(defun C:AT0 ( / *error* ocmde )
  (defun *error* (msg) (setvar 'cmdecho ocmde) (princ))
  (setq ocmde (getvar 'cmdecho))
  (setvar 'cmdecho 0)
  (prompt "\nТкни атрибут: ")
  (command "_.-attedit" "_y" "*" "*" "*" pause "" "_a" "0" "")
  (C:AT0)
);крутим атрибут в 0 - Выход по [Esc]

Последний раз редактировалось gomer, 28.03.2010 в 14:39.
gomer вне форума  
 
Непрочитано 28.03.2010, 11:26
#288
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,270
Отправить сообщение для doctorraz с помощью Skype™


gomer, Спасибо!
Offtop:
то что надо работает.
особенно
Код:
я все думал, как зациклить

только вот поправил :
Код:
[Выделить все]
 (command "_-attedit" "_y" "*" "*" "*" pause "" "_a" "0" "")
_____________________________
Обновление атрибутов, работает криво:
Код:
[Выделить все]
(defun C:ОА ()
  (vl-cmdf "_.ATTSYNC" "_S" Pause "_Y")
  (C:ОА)
);Обновить атрибуты с запросом указания блока.;
невозможно отменить команду никак!!
AUTOCAD 2010

Последний раз редактировалось doctorraz, 28.03.2010 в 12:10.
doctorraz вне форума  
 
Непрочитано 06.04.2010, 14:27
#289
victor.m4


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


А ответа на вопрос faeto1982 про именованный фильтр нет? (пост 280)

Тоже интересует, чтобы не появлялось диалоговое окно "фильтры выбора объектов", а сразу нужная опция из этого окна автоматически подставлялась в макросе. Как это делается?
victor.m4 вне форума  
 
Непрочитано 06.04.2010, 16:05
#290
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Пост #281 дает загадочный (для неподготовленного) и вполне исчерпывающий (для людей опытных) ответ
Вообще, как мне кажется, активировать именованный фильтр без запуска диалогового окна невозможно. А в посте #281 дается альтернативный вариант - все необходимые параметры (по которым фильтруем) указываются при помощи DXF-кодов.
Do$ вне форума  
 
Непрочитано 06.04.2010, 16:39
#291
acyxou


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


Цитата:
Сообщение от doctorraz Посмотреть сообщение
подскажите уважаемые:
<...>пока вышел из положения в AUTOCAD 2010 через рекордер операций, но думаю это не есть красиво
Это есть красиво! Записанные макросы (файлы *.actm) складывайте в папку с лиспами и добавьте ее в пути поиска Автокада (OPTIONS -> Files -> Action Recorder Settings -> Additional Actions Reading File Locations). От туда макросы будут работать во всех файлах
__________________
Users are not stupid, they are busy.
acyxou вне форума  
 
Непрочитано 06.04.2010, 17:51
#292
victor.m4


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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Пост #281 дает загадочный (для неподготовленного) и вполне исчерпывающий (для людей опытных) ответ
Вообще, как мне кажется, активировать именованный фильтр без запуска диалогового окна невозможно. А в посте #281 дается альтернативный вариант - все необходимые параметры (по которым фильтруем) указываются при помощи DXF-кодов.
Я и есть тот самый неподготовленный. Если не трудно объясните подробнее чайнику.
Создав свою кнопку и в свойствах вставив макрос:
^C^C^P(defun selectobjects( / ss )(setq ss "_A" (ssget '((0 . "LINE")))) (sssetfirst ss ss));selectobjects
-AutoCAD 2006 выдаёт ошибку.

О DXF-кодах в справке к Автокаду ничего нет. Где смотреть то?



Чтобы не гадать, вот что мне нужно:
К примеру, в командной строке ввожу 'фильтр. Выскакивает окно "Фильтры выбора объектов". Выбираю фильтр "Размер", добавляю его в список. Нажимаю кнопку "Применить". Окно закрывается и рамкой выбираю объекты. В результате выбираются только размеры, нажимаю enter. Так вот как написать макрос к отдельной кнопке, чтобы не выскакивало окно "Фильтры выбора объектов" (и не нужно было выбирать конкретный фильтр), а сразу пользователь перемещался к шагу выбора объектов рамкой? Т.е. критерий ("Размер") сразу прописать в макросе. Как это сделать, подскажите, пожалуйса?

Последний раз редактировалось victor.m4, 06.04.2010 в 18:49.
victor.m4 вне форума  
 
Непрочитано 06.04.2010, 21:35
#293
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от victor.m4 Посмотреть сообщение
рамкой выбираю объекты. В результате выбираются только размеры, нажимаю enter. Так вот как написать макрос к отдельной кнопке
Попробуйте:
^C^C(sssetfirst nil (ssget '((0 . "DIMENSION"))));
Do$ вне форума  
 
Непрочитано 07.04.2010, 00:12
#294
victor.m4


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


Do$, спасибо большое. Ваш вариант работает, но только как отдельная команда. А мне нужен аналог именно ком. для прозрачного вызова, т.е. 'фильтр "размер" должен выполняться во время выполнения основной команды.

Объясню полнее. У меня была своя кнопка с макросом:

^C^C(km_dimsreda) km_dimord_base X;\'фильтр;

- это в программе 3D-Constructor 3.5 (мебельное приложение к Автокаду)..Вот вместо прозрачной 'фильтр и нужно подставить ещё макрос выбора размеров (без диалогового окна "Фильтры выбора объектов").
Если подставляю ваш макрос, то основная команда прерывается. А этого быть не должно. Т.е. фильтр по размеру является дополнением основной команды. Как это реализовать?
victor.m4 вне форума  
 
Непрочитано 07.04.2010, 00:27
#295
Кулик Алексей aka kpblc
Moderator

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


1. Прочитать книгу В.Света "AutoCAD : Язык макрокоманд и создание кнопок" (по-моему, даже в Download была).
2. Попытаться снять ^C^C перед началом макроса.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 07.04.2010, 10:26
#296
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от victor.m4 Посмотреть сообщение
^C^C(km_dimsreda) km_dimord_base X;\'фильтр;
Здесь, похоже, недоработка разработчиков приложения. Если программа предназначена для обработки размеров (судя по названию), то кроме размеров ничего не должно выбираться.
"Фильтр без диалога" при помощи autolisp-функции ssget можно применять для стандартных команд autocad, например, для удаления только размеров:
Код:
[Выделить все]
 
^C^C(vl-cmdf "_.erase" (ssget (quote ((0 . "DIMENSION")))) "");
Причем команды и опции задавать через vl-cmdf, а не на языке макрокоманд.
Для приложений от сторонних разработчиков такие конструкции нужно пробовать медотом "тыка" и не факт, что удастся заставить работать.
Пробуйте. Если не получится - попытайтесь достучаться до разработчиков приложения, чтобы они добавили фильтр в тело программы. Или не задумывайтесь и работайте как раньше
Do$ вне форума  
 
Непрочитано 07.04.2010, 23:00
#297
victor.m4


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


Do$, спасибо за участие. Но увы, пока мне не удаётся реализовать команду.
Попробую поискать литературу по LISP'у, может что вычитаю.

P.S. У разработчиков 3D-Constructor в команде всё правильно. Просто в ней есть ещё разные опции (но вот для "подопции" опции выделения сразу всех размеров нет). Это я сделал отдельные кнопки под конкретные опции, в которых требуется выделение размеров. Но пока кликов мыши многовато. Хотелось бы сократить.


P.P.S. По-моему дописывать в мою исходную команду:
^C^C(km_dimsreda) km_dimord_base X;\'фильтр;

вместо "'фильтр" ещё какой-нибудь именно LISP - это вообще нельзя!... Обратил внимание в командной строке выскакивает: "Повторный вход в LISP невозможен ". Может как раз наоборот можно только на языке макрокоманд... Засада... Надо бы почитать правила.

Последний раз редактировалось victor.m4, 08.04.2010 в 00:53.
victor.m4 вне форума  
 
Непрочитано 08.04.2010, 11:17
#298
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от victor.m4 Посмотреть сообщение
"Повторный вход в LISP невозможен ".
Так правильно же! Выполняется пользовательская LISP-функция km_dimsreda. В этом случае можно запускать только функции, работающие в "прозрачном" режиме.
Попробуйте загрузить файлик с таким кодом:
Код:
[Выделить все]
(vl-load-com)
(vlax-add-cmd
  "Dimfl"
  (defun dim_filter ()
    (sssetfirst nil (ssget (quote ((0 . "DIMENSION")))))
  ) ;_ end of defun
  "Dimfl"
  1
) ;_ end of vlax-add-cmd
И в макросе вместо 'фильтр подставьте 'dimfl.
Вложения
Тип файла: lsp dimfl.lsp (188 байт, 115 просмотров)
Do$ вне форума  
 
Непрочитано 09.04.2010, 11:46
#299
victor.m4


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


Do$, сохранил ваш лисп, прописал к нему путь, загрузил в программу.
Затем подставил вместо 'фильтр 'dimfl.
Нет, что-то не то. Не воспринимает исходная программа 'dimfl также как 'фильтр. Если
^C^C(km_dimsreda) km_dimord_base X;\'dimfl;
то размеры выделяются, но снова следует запрос "выберите объекты", как будто и не было выделения.
Если
^C^C(km_dimsreda) km_dimord_base X;\'dimfl;;
то этап выбора "только размеров" вообще пропускается.
Если
^C^C(km_dimsreda) km_dimord_base X;\'dimfl;Последний;
^C^C(km_dimsreda) km_dimord_base X;\'dimfl;Предыдущий;
то результат как в первом случае.
victor.m4 вне форума  
 
Непрочитано 09.04.2010, 13:29
#300
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Да, действительно... Не пойму почему, но выбор сбрасывается . У меня пока нет мыслей, как это исправить
Do$ вне форума  
 
Непрочитано 09.04.2010, 22:00
#301
Кулик Алексей aka kpblc
Moderator

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


Без глубинного разбора, поэтому на гарантированную работу не претендую. Может, попробовать так?
Код:
[Выделить все]
(vl-load-com)
(vlax-add-cmd
  "Dimfl"
  (defun dim_filter ( / ss)
    (setq ss (ssget '((0 . "DIMENSION"))))
    (sssetfirst ss ss)
    ss
  ) ;_ end of defun
  "Dimfl"
  1
)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.04.2010, 10:59
#302
victor.m4


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


Спасибо, но опять нет. Во всех случаях результат аналогичный первому варианту из поста 299.

Ладно, Бог с ним. Буду как и работал: через 'фильтр.
victor.m4 вне форума  
 
Непрочитано 10.04.2010, 11:35
#303
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Печально, но дело обстоит так - "обернутая" во vlax-add-cmd функция перестает возвращать результат, "подсвеченный" выбор объектов сбрасывается после завершения работы "прозрачной" команды (правда, он сохраняется в качестве последнего сформированного набора - но толку от этого немного).
Какой смысл тогда в созданных таким образом "прозрачных" командах
Do$ вне форума  
 
Непрочитано 19.04.2010, 16:39
#304
acyxou


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


Приветствую всех! Помогите кто может, пожалуйста...
Сделал макросы на создание аннотативных размеров такого вида:
Код:
[Выделить все]
^C^C_dimlinear^C^C_-dimstyle;_an;_y;AMC;_y;^C^C_dimlinear
Все работает отлично с DIMLINEAR и DIMALIGNED.
Хотел по образцу проделать то же самое и с DIMANGULAR, DIMRADIUS и DIMDIAMETER:
Код:
[Выделить все]
^C^C_dimlinear^C^C_-dimstyle;_an;_y;AMC$2;_y;^C^C_dimlinear
но не тут-то было! Имеющийся символ $ воспринимается как diesel выражение и как результат макрос идет не по запланированному сценарию... Пробовал и таким образом:
Код:
[Выделить все]
^C^C_dimangular^C^C(command "-dimstyle" "_AN" "" "AMC$2" "_Y")^C^C_dimangular
тоже результат не тот...
Есть ли какой способ решить эту проблему? Тут главное чтобы стиль создавался в файле в котором этого стиля еще нет....
acyxou вне форума  
 
Непрочитано 19.04.2010, 18:23
#305
VVA

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


acyxou,
попробуй в макросе заменить
"AMC$2" на (strcat "AMC" (chr 36) "2")
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 19.04.2010, 19:27
#306
acyxou


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


VVA, спасибо! Ваш вариант работает...
Но результат все равно не получен. Ну не хочет акад создавать точно такой же размерный стиль какой был загнан в Tool Palettes. Придется отказаться от этого варианта...
acyxou вне форума  
 
Непрочитано 10.08.2010, 14:24
#307
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Подскажите, как написать макрос для открытия проводника с заданной открытой папкой?

Думаю, должно быть примерно так:
Код:
[Выделить все]
^P^C^C(startapp "Explorer /e, C:\Games")(princ)
/e - Данная команда позволяет запустить проводник с использованием вида по умолчанию.

Проблема в обратной косой черте '\' в строке пути. Ее лисп воспринимает как управляющую команду.

Пробовал \\, /, //.

Добавлено: в чате Makswell и Meknotek подсказали:
получилось так:
Код:
[Выделить все]
^P^C^C(startapp (strcat "Explorer /e, C:" (chr 92) "Games"))(princ)

Последний раз редактировалось Vildar, 10.08.2010 в 15:16. Причина: исправил код
Vildar вне форума  
 
Непрочитано 10.08.2010, 15:45
#308
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Или так:
Код:
[Выделить все]
^P^C^C(startapp "Explorer /e, C:\\Games")(princ)
Пардон, в макросе действительно такая конструкция не работает, а из командной строки - работает.

Последний раз редактировалось Do$, 10.08.2010 в 15:51.
Do$ вне форума  
 
Непрочитано 10.08.2010, 15:55
#309
Кулик Алексей aka kpblc
Moderator

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


А если так:
Код:
[Выделить все]
(command "_shell" "explorer /e, \"c:\\program files\"")
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.08.2010, 16:15
#310
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А если так:
Код:
[Выделить все]
(command "_shell" "explorer /e, \"c:\\program files\"")
Это вопрос? Нет, так не получается.
Vildar вне форума  
 
Непрочитано 10.08.2010, 16:23
#311
Кулик Алексей aka kpblc
Moderator

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


Нда... Привычка к лиспу делает свое черное дело
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.08.2010, 17:24
#312
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Нда... Привычка к лиспу делает свое черное дело
Так, как правильно-то?
Vildar вне форума  
 
Непрочитано 10.08.2010, 18:51
#313
Кулик Алексей aka kpblc
Moderator

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


Я бы вообще сделал отдельный лисп типа:
Код:
[Выделить все]
(defun explorer(path)
  (if (vl-filename-directory-p path)
    (command "_shell" (strcat "explorer /e, \"" (vl-string-trim "\"" path) "\""))
	(alert "Path not found")
    )
  )
А в макросе писал:
Код:
[Выделить все]
^C^C(explorer "c:\\games")
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.08.2010, 20:37
#314
Vova

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


^P^C^C(startapp "explorer.exe" (strcat "/n,/e," (getvar "dwgprefix")))(princ)
Vova вне форума  
 
Непрочитано 11.08.2010, 01:20
#315
gomer

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


А как с помощю getenv найти папку мои документы? И другие системные папки?
gomer вне форума  
 
Непрочитано 11.08.2010, 08:14
2 | #316
Кулик Алексей aka kpblc
Moderator

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


Нажми Ctrl + R, набери cmd. В окошке набери set и нажми Enter. Все переменные машины, до которых ты можешь добраться через getenv, будут перечислены
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.08.2010, 12:27
#317
МихМих


 
Регистрация: 06.12.2006
Калининград
Сообщений: 38
<phrase 1=


Подскажите пожалйста....
Пока что учусь создавать макрокомманды начал читать книгу Язык макрокомманд и создание кнопок.... дошёл до функций с калькулятором встал просто вопрос как с помощью макрокоманды просто начертить линию между двумя линиями с помощью привязок Nea (ближайшая).
Последовательность действий должна быть такая
1.Вызывается команда _line
Enter
2.'_Cal
Enter
3.p1=nea
Enter и указывается первая линия
4.'_cal
Enter
5.p2=nea и указывается вторая линия
Enter
Всё линия построена.
Теперь всё записываю в макрос
^C^C_line;'_cal;p1=nea;'_cal;p2=nea

Но при выборе второй линии квадратик привязки не появляется?((( что может быть?

P.S. Получилось вот таким образом ...
Код HTML:
^C^C_cal;p1=nea;\;p2=nea;\;^C^C_line;'_cal;p1;'_cal;p2;
но почему то в конце запрашивает следующую точку как сделать чтобы команда завершалась... если ставить в конце ^C^C то не срабатывает. Может можно этот код как то оптимизировать?

Последний раз редактировалось МихМих, 13.08.2010 в 13:11.
МихМих вне форума  
 
Непрочитано 13.08.2010, 13:18
#318
Кулик Алексей aka kpblc
Moderator

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


ИМХО:
Код:
[Выделить все]
^C^C_cal;p1=_nea;\;p2=_nea;\;^C^C_line;_none;!p1;_none;!p2;;
P.S. Не проверял.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.08.2010, 13:20
#319
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от МихМих Посмотреть сообщение
почему то в конце запрашивает следующую точку как сделать чтобы команда завершалась... если ставить в конце ^C^C то не срабатывает.
А команда _LINE как в AutoCAD'e работает? Она ведь всегда после указания начала и конца отрезка предлагает рисовать следующий отрезок с началом в конце предыдущего. Вот и здесь так. Просто добавь в конце второй «энтер», т.е. еще одну точку с запятой поставь.
 
 
Непрочитано 13.08.2010, 13:30
#320
МихМих


 
Регистрация: 06.12.2006
Калининград
Сообщений: 38
<phrase 1=


Цитата:
Сообщение от AlphaGeo Посмотреть сообщение
А команда _LINE как в AutoCAD'e работает? Она ведь всегда после указания начала и конца отрезка предлагает рисовать следующий отрезок с началом в конце предыдущего. Вот и здесь так. Просто добавь в конце второй «энтер», т.е. еще одну точку с запятой поставь.
Не прокатывает) пробовал уже

Цитата:
ИМХО:
Код:

^C^C_cal;p1=_nea;\;p2=_nea;\;^C^C_line;_none;!p1;_none;!p2;;

P.S. Не проверял.
Спасибо большое... то что нужно!!))

Попробовал и без _none работает...... для чего оно может понадобиться?

Последний раз редактировалось МихМих, 13.08.2010 в 13:39.
МихМих вне форума  
 
Непрочитано 13.08.2010, 13:37
1 | #321
Кулик Алексей aka kpblc
Moderator

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


Тьфу, дура я дура!
Код:
[Выделить все]
^C^C_.line;_nea;\_nea;\;
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.08.2010, 15:00
#322
МихМих


 
Регистрация: 06.12.2006
Калининград
Сообщений: 38
<phrase 1=


Кулик Алексей aka kpblc
Всё началось вот с этого макроса из книги В.Свет ...измерение угла двух линий за 2 щелчка. Я знаю что есть опечатки тут код уже с исправленными опечатками...... ну не работает ни в какую перепробовал уже ВСЁЁ!!! где ж загвоздка.... autocad2008 rus
Код:
[Выделить все]
^C^C_line;'_cal;P1=nea;\_Appint;@;'_cal;P2=nea;\;_Erase;_Last;;_Cal;Ang(@,P1,P2);;Ang(@,P2,P1);
Так и не понял что означает \_Appint .... вроде INT это кажущееся пересечение а вот APP ... ?
МихМих вне форума  
 
Непрочитано 13.08.2010, 15:07
1 | #323
Кулик Алексей aka kpblc
Moderator

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


int -> пересечение
appint -> кажущееся пересечение
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.08.2010, 16:40
#324
МихМих


 
Регистрация: 06.12.2006
Калининград
Сообщений: 38
<phrase 1=


Если начертить две линии а потом подействовать на первую нарисованную линию вот этим макросом ^C^C_line;'_cal;P1=nea;\_Appint;@; то получим точку пересечения этих линий..... подскажите как сохранить данную точку например на p3 . Нужно чтобы макрос автоматом сохранял координаты данной точки на p3
МихМих вне форума  
 
Непрочитано 13.08.2010, 16:57
1 | #325
Vova

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


Уже неоднократно писал, начиная от версии 2006, кажется, калькулятор в некоторых макросах стал сбоить. Я стал исследовать и даже на форуме приложил картинку, как сбоИт. Но сейчас не найти. Попробуй так: начни испытывать макрос с начала, удалив большую его часть, затем добавляй по знаку-два. Где-то под большим зумом выдается крючек в построениях, и он и дает сбой.
В книге есть опечатки, их список есть на Caduser.ru Но бОльшая часть макросов дана в книге в виде скрина с экрана, (специально так делал, чтобы избежать опечаток) а следовательно они однозначно работают. Кроме мест с калькулятором, но не все там дает сбой
Vova вне форума  
 
Непрочитано 14.08.2010, 11:12
#326
МихМих


 
Регистрация: 06.12.2006
Калининград
Сообщений: 38
<phrase 1=


Vova
Да вот к примеру у меня на 2008 автокаде русской версии макрос
Код:
[Выделить все]
^C^C_point;'cal;p1=nea;\_appint;@;
ставит точку на кажущемся пересечении двух линийно стоит добавить в код чтобы эта точка запоминалась например как P3 то код не работает
Код:
[Выделить все]
^C^C_point;'cal;p1=nea;\_appint;@;_cal;p3=@;
МихМих вне форума  
 
Непрочитано 16.08.2010, 18:05
#327
МихМих


 
Регистрация: 06.12.2006
Калининград
Сообщений: 38
<phrase 1=


Подскажите пожалуйста например в книге Света есть команда
^C^C_-insert;H3100;\;;\_cal;P1=@;
код рабочий...
так вот тут старнность \_cal при каких обстоятельствах функция _cal работает совместно с \ (ручным вводом) ?
например при команде _copy не прокатывает.....
МихМих вне форума  
 
Непрочитано 22.09.2010, 18:51
#328
Redya


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


Хочу чтобы мультивыноска сразу помещалась в свой слой. Но что то никак
Код:
[Выделить все]
^C^C_mleader;\\;\_Change;_Last;_P;_La;Vinoski;;
И что бы Dtext тоже помещался в свой. Не работает
Код:
[Выделить все]
^C^C_dtext;\;;_Change;_Last;_P;_La;Text;;
Redya вне форума  
 
Непрочитано 22.09.2010, 19:11
#329
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 571


Redya, попробуй так

Код:
[Выделить все]
^C^C_mleader;\\;\_Change;_Last;;_P;_La;Vinoski;;

^C^C_dtext;\;;_Change;_Last;;_P;_La;Text;;
после _Last нужно еще поставить ; - признак окончания выбора объектов, а то _Last это ты только выбрал последний объект.
TararykovDG вне форума  
 
Непрочитано 22.09.2010, 19:14
#330
Profan


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


Изменение слоя в макросе для текста выполняется только для последней введенной строки.
Profan вне форума  
 
Непрочитано 22.09.2010, 19:15
#331
Redya


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


TararykovDG , насчет текста проканало, спасибо! а вот выноской нет. пишет:
Код:
[Выделить все]
Command: _mleader

Specify leader arrowhead location or [leader Landing first/Content 
first/Options] <Options>:
Specify leader landing location:
Specify landing distance <0.0000>:

Command:
Command: _Change
1 found
Specify change point or [Properties]: _Last

Point or option keyword required.
Specify change point or [Properties]: No changeable object selected
Redya вне форума  
 
Непрочитано 22.09.2010, 19:34
#332
Profan


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


Попробуй такой макрос (проверялся в AutoCAD 2011):
Код:
[Выделить все]
^C^C_mleader;\\\_Change;_Last;;_P;_La;Vinoski;;
Profan вне форума  
 
Непрочитано 22.09.2010, 19:39
#333
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 571


Profan, точно конструкция ^C^C_dtext;\;;_Change;_Last;;_P;_La;Text;; канает только для последней строки

а вот ^C^C_mleader;\\\_Change;_Last;;_P;_La;Vinoski;; у меня (ACad 2008) не заработал, а заработал
Код:
[Выделить все]
^C^C_mleader;\\_Change;_Last;;_P;_La;Vinoski;;
TararykovDG вне форума  
 
Непрочитано 22.09.2010, 19:47
#334
Redya


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


Profan, taraykovDG, не работает.
Redya вне форума  
 
Непрочитано 22.09.2010, 19:53
#335
Profan


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


Что именно не работает?
Profan вне форума  
 
Непрочитано 22.09.2010, 19:54
#336
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 571


Redya, странно у меня работает. Ну а что ACad пишет в ком. строке


Добавлено. Если так, сразу слой менять, а потом восстанавливать
Код:
[Выделить все]
^C^C(setq lr (getvar 'clayer)) (setvar 'clayer "Vinoski") _mleader; (setvar 'clayer lr)

Последний раз редактировалось TararykovDG, 22.09.2010 в 20:39.
TararykovDG вне форума  
 
Непрочитано 23.09.2010, 10:41
#337
Redya


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


Простите. У Profan работает (я просто слой забыл тогда создать, и он не мог его найти), а вот у TararykovDG не работает. Спасибо!
Redya вне форума  
 
Непрочитано 22.11.2010, 16:06
#338
99xt1

нефтепереработка
 
Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77


День добрый.
Этот макрос
Цитата:
Сообщение от Krieger Посмотреть сообщение
Смыкание линий:
Код:
^C^C_fillet;_R;0.0;
у меня (AutoCAD 2010 Rus) не работает. В командной строке после ввода значения радиуса 0.0 команда просто прерывается и не предлагает выбрать две линии. Запускаю команду СОПРЯЖЕНИЕ. Все в порядке, а в макросе проблемы.
99xt1 вне форума  
 
Непрочитано 22.11.2010, 16:34
#339
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от 99xt1 Посмотреть сообщение
Этот макрос
Код:
[Выделить все]
^C^C_fillet;_R;0.0;
у меня (AutoCAD 2010 Rus) не работает. В командной строке после ввода значения радиуса 0.0 команда просто прерывается и не предлагает выбрать две линии. Запускаю команду СОПРЯЖЕНИЕ. Все в порядке, а в макросе проблемы.
Может стоит сделать вот так?
Код:
[Выделить все]
^C^C_fillet;_R;0.0;\
Добавлено:
Прошу прощения, написал сообщение не испытав. Не работает. Даже так вот не работает
Код:
[Выделить все]
^C^C_fillet;_R;0.0;\^Z

Последний раз редактировалось AlphaGeo, 22.11.2010 в 16:41.
 
 
Непрочитано 22.11.2010, 16:40
#340
Profan


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


Или вот так:
Код:
[Выделить все]
^C^C_fillet;_R;0.0;;
Profan вне форума  
 
Непрочитано 22.11.2010, 21:08
#341
Vova

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


Попробуй так
^C^C_filletrad;0;_fillet;u;\\
Vova вне форума  
 
Непрочитано 23.11.2010, 08:42
#342
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Vova Посмотреть сообщение
^C^C_filletrad;0;_fillet;u;\\
Зачем так сложно?
Этого достаточно:
Код:
[Выделить все]
^C^C_.filletrad;0.0;_.fillet;
Do$ вне форума  
 
Непрочитано 23.11.2010, 09:02
#343
Profan


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


Зачем так сложно? Сообщение 340 проглядели сослепу?
Profan вне форума  
 
Непрочитано 23.11.2010, 09:03
#344
99xt1

нефтепереработка
 
Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77


Работает и так
Цитата:
Сообщение от Profan Посмотреть сообщение
Код:
[Выделить все]
^C^C_fillet;_R;0.0;;
и так
Цитата:
Сообщение от Vova Посмотреть сообщение
Код:
[Выделить все]
^C^C_filletrad;0;_fillet;u;\\
. Спасибо.
Вопрос. Почему не работал самый первый вариант?
Код:
[Выделить все]
^C^C_fillet;_R;0.0;
99xt1 вне форума  
 
Непрочитано 23.11.2010, 12:05
#345
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,260


По моему мнению проще всего:
Код:
[Выделить все]
^C^C(setvar "filletrad" 0)
Но если принципиально не хочется использовать лисп-выражения - то другое дело.

Последний раз редактировалось Pilot, 23.11.2010 в 12:14.
Pilot вне форума  
 
Непрочитано 23.11.2010, 12:51
#346
99xt1

нефтепереработка
 
Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77


Не принципиально, просто интересно, почему не работает:
^C^C_fillet; - вызов команды
_R; - вызов параметра "радиус сопряжения"
0.0; - установка радиус в 0, после которой, по идее, Автокад должен предлагать сделать выбор объектов. Если делать последовательно "руками", то предлагает, а в макросе не предлагает. Вот и возникает вопрос: ПОЧЕМУ?
99xt1 вне форума  
 
Непрочитано 23.11.2010, 12:54
#347
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Глюкобаг
Do$ вне форума  
 
Непрочитано 23.11.2010, 15:59
#348
Vova

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


Есть две интересные посылки для обсуждения.
1. В моем вариянте 341 буква "U" поставлена для того, чтобы команда работала многоразово. ЗАметьте, "u' а не "m", как предписывается опциями команды англ автокада. Буква "U" была в прежних версиях, но с успехом работает в новых, в отличие от "M".
2. Вижу во многих макросах подчерк перед опциями в английском (чтобы работали в русском). А подчеркивание в алиасах, на форуме говорилось, не работает. Недоработка?
Vova вне форума  
 
Непрочитано 23.11.2010, 16:28
#349
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,260


Цитата:
Сообщение от Vova Посмотреть сообщение
... подчеркивание в алиасах, на форуме говорилось, не работает. Недоработка?
Да. Сейчас работаю в русскоязычном локализованном Акаде (умник сисадмин "удружил"). Так алиасы пришлось переписывать русскими командами.
Еще один недостаток алиасов - невозможность прописывать макросы прямо там. А было бы здорово. (Но об этом на форуме, кажется, когда-то уже говорилось)
Pilot вне форума  
 
Непрочитано 24.11.2010, 00:37
#350
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Vova Посмотреть сообщение
А подчеркивание в алиасах, на форуме говорилось, не работает. Недоработка?
Я думаю - особенности локализации. Которые определяются Autodesk.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 24.11.2010, 05:46
#351
Profan


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


Это не особенности локализации, а особенности рудимента. Файл acad.pgp появился еще тогда, когда подчерк "_" в AutoCAD'е не использовался. И в русском AutoCAD R10, например, приходилось даже команды в программах на AutoLisp записывать на русском языке.
Profan вне форума  
 
Непрочитано 06.12.2010, 22:42 Замена сообщений, выдаваемых командной строкой:
#352
Pavel23


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


Всем привет!
Хочу проконсультироваться, надеюсь, тема еще кем-то просматривается.
У меня есть макрокоманда для отрисовки мультилиний:
^C^C_cmlstyle st1;_cmljust 1;_cmlscale;\;_mline;
однако во время выполнения, в командной строке выдается сообщение:
"Новое значение CMLSCALE <1,000>:", а хочется, чтобы при запросе ввода в командную строку выдавалось немного другое: "Укажите смещение от опорных точек <1,000>:". Вопрос, как это можно реализовать в макросе кнопки, с помощью лисп выражения или diesel, может кто подскажет. Сам я не силен не в лиспе, не в diesel. Заранее очень благодарен, ну очень нужна такая фигня.
Pavel23 вне форума  
 
Непрочитано 07.12.2010, 07:56
#353
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


В макросе не получится, надо хоть и маленькую, но программку писать. Например такую:
Код:
[Выделить все]
;|функция kr_mlinedraw
Параметры:
style - стиль мультилинии "cmlstyle"
just - выравнивание "cmljust"

Пример вызова:
(kr_mlinedraw "STANDARD" 1)
|;
(defun kr_mlinedraw (style just)
  (if (setq scale (getreal (strcat "\nУкажите смещение от опорных точек <"(rtos (getvar "cmlscale") 2 4)">:")))
    (setvar "cmlscale" scale)
    );if
  (setvar "cmlstyle" style)
  (setvar "cmljust" just)
  (command "_mline")
  );defun
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 07.12.2010, 08:43
#354
Pavel23


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


Спасибо за код, но правда не успел попробовать.
У меня вчера примерно так получилось:
^C^C_cmlstyle st1;_cmljust 1;(setvar "cmlscale" (getint "Укажите смещение от опорных точек:")) \");_mline;
Работает вроде, на моем 2011 каде, не знаю правильно это или нет, подобрал методом научного тыка. Интересно будет ли работать у других, и в других версиях, а вот с <???>: текущим значением переменной пока никак. Может можно дополнить?

Попробовал лисп, конечно это круче, а можно добавить в код еще и функции создания нового слоя с выбором цвета для слоя из окна палитры?
У меня было: ^C^C_-layer;_unlo;st1;_t;st1;_on;st1;_m;st1;_c;\;;_lwe;0.3;;;_cmlstyle;st1;_cmljust;1;(setvar "cmlscale" (getint "Укажите смещение от опорных точек:")) \");_mline;, но цвет приходится вводить в ком. строке, а хочется выбрать в окне палитры. Это было бы ваще круто...

Последний раз редактировалось Pavel23, 07.12.2010 в 09:57.
Pavel23 вне форума  
 
Непрочитано 07.12.2010, 11:20
#355
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


И что, ты каждый раз нажимая кнопку переопределяешь цвет у слоя?
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 07.12.2010, 11:50
#356
Pavel23


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


Нет конечно, только при первом создании слоя и отрисовки млинии, потом просто жму [Enter], если не нужно менять цвет. У меня много кнопочек таких, каждая создает млинию по определенному шаблону в определенном слое, тобишь если десять млиний в чертеже - то десять слоев и каждая из них со своим шаблоном. Смысл в этом следующий, рисуется плиния (как бы опорная), затем рисуется млиния по контрточкам плинии (в шаблоне млинии всего одна линия с отступом -1 от средней точки), то есть опорные точки смещены на милиметр, рисуем вторую линию со смещением например 2, затем объединяем это дело в группу. Когда я изменяю плинию, двигая контрточки - меняются все три синхронно, так как конрточки общие. Слои нужны, что-бы редактировать млинии отдельно друг от друга (добавить вершины, изменить цвет и прочее). Вобщем цель этой затеи - получить псевдомультилинию, в которой можно не редактируя шаблона раздвигать относительно друг друга линии между собой, менять их цвет, менять независимо масштаб самих линий с определенным типом, вобщем модификация небольшая, дающая возможность хоть как-то редактировать млинию размещенную в чертеже.
Pavel23 вне форума  
 
Непрочитано 07.12.2010, 16:50
#357
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Как вызвать палитру цветов я не знаю. Можно ведь определиться с каким то одним цветом и забить его на кнопке, каждому типу млинии по своему цвету.
Вообще, можно рисовать ведь сразу несколько млиний одновременно и автоматом кидать их в группу. Т.е. алгоритм проги такой:
1. Жмем на кнопку.
2. Вводим значения между линиями в комстроку (т.е. по очереди масштаб будущих млиний).
3. Создаем один стиль млинии объединяющий в себе обе линии.
4. Отрисовываем вручную трассу (или что там у тебя). Попутно (или потом) создаем список точек трассы.
5. Удаляем все что нарисовали и создали.
6. Создаем новые 2 млинии, которые должны быть в группе.
7. Отрисовываем автоматом их по ранее созданному списку точек. Каждую в своем слое.
8. Объединяем в группу.

Здесь можешь взять проги для создания стиля млинии вместо их импорта из шаблона:
http://forum.dwg.ru/showthread.php?t...EC%EB%E8%ED%2A
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 07.12.2010, 19:12
#358
Pavel23


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


С шаблонами стилей млиний, как раз проблем нету, я вояю типа Tools для своей конторы, и шаблоны у меня загружаются из базы (файл.dwg), вместе с типами линий, кучей блоков, слоями и прочее. Кнопочка _-insert;"Файл.dwg";0,0;;;;_eras;_last;, в конце работы с чертежом двойное _purge, чтоб удалить лишние блоки. База лежит на серваке, это очень удобно, если я че-то там правлю или добавляю, при загрузке это все прилетает к пользователям. Шаблонов не так много, каждый со своим типом линий, ну штук десять, больше не пользуем, а вот кол-во линий каждый раз разное и 3, и по 7 бывает, как это воплотить в твоем предложении пока плохо представляю. Еще по возможности стараюсь кнопки переводить на скрипты, ложу их на сервак, тоже очень удобно модифицировать. К стати, лиспы тоже можно пихать в скрипты...
Предлагаю для решения проблем с цветом, тоже сделать на лиспе, а ком. строке при запросе цвета выводить подсказки "Укажите цвет линии [1-красный];[2-желтый];[3-зеленый]; ... основные цвета до 7-го подсказать;[1-255]:" думаю этого будет вполне достаточно. Правда в лиспе ваще не шарю, и как это реализовать не знаю. Если поможешь, огромное спасибо, если нет, так нет, у всех свои заботы...

Последний раз редактировалось Pavel23, 07.12.2010 в 22:10.
Pavel23 вне форума  
 
Непрочитано 14.12.2010, 09:55 Циклические кнопки на DIESEL
#359
Pavel23


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


Всем привет, замострячил тут кнопочку, которая блокирует и при повторном нажатии разблокирует нужные слои. Может кому пригодиться такой опыт.
У меня было много кнопочек управления определенными слоями проекта, теперь их стало в два раза меньше, одна кнопка и вкл и выкл. Для более стабильной работы, в конце кода можно добавить обнуление переменных.

Код:
[Выделить все]
^C^C_USERS3 _-layer _u;USERS4 _-layer _lo;'_setvar;USERI3;$M=$(if,$(=,$(getvar,USERI3),2),1,2);$M=$(if,$(=,$(getvar,USERI3),2),$(getvar,USERS3),$(getvar,USERS4));Слои_для_блокировки_через_запятую;;
Pavel23 вне форума  
 
Непрочитано 14.12.2010, 14:49
#360
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Цитата:
Сообщение от Pavel23 Посмотреть сообщение
С шаблонами стилей млиний, как раз проблем нету, я вояю типа Tools для своей конторы, и шаблоны у меня загружаются из базы (файл.dwg), вместе с типами линий, кучей блоков, слоями и прочее. Кнопочка _-insert;"Файл.dwg";0,0;;;;_eras;_last;
Лучше так:
Код:
[Выделить все]
^C^C_-insert;"Файл.dwg";^C_-purge;_Blocks;Файл;_n;
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 24.12.2010, 13:54
#361
Anton_Br

архитектор
 
Регистрация: 20.11.2007
Ростов-на-Дону
Сообщений: 539


Уважаемые товарищи! Есть в ACADe такая кнопка "Dimension, Precision, 0" (округление до целых) с макросом "^C^C_aidimprec _0".
Пытался на основе этой макрокоманды написать макрос для кнопки чтобы округление было до 10 мм. Например размер 504 округлялся до 500.

P.S. Заранее спасибо от чайника в написании макрокоманд
Anton_Br вне форума  
 
Непрочитано 25.12.2010, 03:20
#362
skkkk


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


Вроде этого?
Код:
[Выделить все]
^C^C(defun C:CHDIMRND ( / ent )(setq ent (vlax-ename->vla-object (car(entsel))))(vla-put-RoundDistance ent 10.0)(princ));CHDIMRND;
skkkk вне форума  
 
Непрочитано 25.12.2010, 18:48
#363
Anton_Br

архитектор
 
Регистрация: 20.11.2007
Ростов-на-Дону
Сообщений: 539


При выборе размера пишет:
"Select object: ; error: no function definition: VLAX-ENAME->VLA-OBJECT"
Anton_Br вне форума  
 
Непрочитано 25.12.2010, 21:13
#364
skkkk


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


Попробуй так:
Код:
[Выделить все]
^C^C(defun C:CH_DIMRND ( / ent )(vl-load-com)(setq ent (vlax-ename->vla-object (car(entsel))))(vla-put-RoundDistance ent 10.0)(princ));CH_DIMRND;


Добавлено:

Доработал макрос, теперь ведет себя в точности, как _aidimprec, т.е. поддерживает множественный выбор и выбор рамкой, и из всего набора объектов попавших в рамку, фильтрует только dimensions (размеры).
Код:
[Выделить все]
^C^C(defun C:CH_DIMRND ( / ent )(vl-load-com)(setq ent (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp(mapcar 'cadr (ssnamex (ssget '((0 . "*DIMENSION"))))))))(mapcar '(lambda (x) (vla-put-RoundDistance x 10.0)) ent));CH_DIMRND


Добавлено2:

Если надо подавлять нули после запятой, конечно, при их наличии (при DIMZIN=0):
Код:
[Выделить все]
^C^C(defun C:CH_DIMRND_DIMZIN ( / ent )(vl-load-com)(setq ent (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp(mapcar 'cadr (ssnamex  (ssget '((0 . "*DIMENSION"))))))))(mapcar '(lambda (x) (vla-put-RoundDistance x 10.0)) ent)
(mapcar '(lambda (x) (vla-put-PrimaryUnitsPrecision x 0)) ent));CH_DIMRND_DIMZIN
Это - более универсальный вариант, спасибо gomer за подсказку

Последний раз редактировалось skkkk, 15.01.2011 в 02:24.
skkkk вне форума  
 
Непрочитано 26.12.2010, 00:13
#365
Anton_Br

архитектор
 
Регистрация: 20.11.2007
Ростов-на-Дону
Сообщений: 539


Спасибо большое теперь работает! Я просто считаю последним делом размеры переписывать как некоторые делают...
Anton_Br вне форума  
 
Непрочитано 26.12.2010, 01:40
#366
skkkk


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


Offtop: Интересно, ты свои правишь размеры или чужие? Это я к тому, что можно их прямо в таком виде создавать (например, подправив Размерный стиль или изменив системную переменную DIMRNG, в твоем случае - в 10, или подумав, сделать на нее отдельную кнопку)
skkkk вне форума  
 
Непрочитано 26.12.2010, 01:51
#367
Anton_Br

архитектор
 
Регистрация: 20.11.2007
Ростов-на-Дону
Сообщений: 539


Не я просто столкнулся с тем что например сейчас причёсываю кладочные планы, на которых есть кладочные размеры по фасадам. Так вот несколько размеров надо округлять до 10 мм т.к. это части стен под углом 45 град. и подогнать под кладку не везде получилось. А выдавать на стройку размеры по кладке например 1237 или 931 мм неприлично.А так у меня достаточно высокая точность стоит до нескольких знаков после запятой. Компьютер тем и хорош что позволяет точно чертить.
Anton_Br вне форума  
 
Непрочитано 26.12.2010, 10:25
#368
gomer

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


Цитата:
Сообщение от Anton_Br Посмотреть сообщение
А так у меня достаточно высокая точность стоит до нескольких знаков после запятой.
Недавно пришлось работать со старыми чертежами лестниц копра доменной печи... все размеры были с точностью до целых... при том что все чертилось "от руки"... было интересно пересовывать их на компьютере, проверяя размеры... все сошлось...
Когда появляются углы, размеры не кратные 10 неизбежность... по крайней мере в металле...
gomer вне форума  
 
Непрочитано 26.12.2010, 15:25
#369
Vova

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


Цитата:
Сообщение от Anton_Br Посмотреть сообщение
А так у меня достаточно высокая точность стоит до нескольких знаков после запятой. Компьютер тем и хорош что позволяет точно чертить.
A в каких единицах ты чертишь-в мм? Тогда несколько знаков могут означать чуть-ли не нано.
Vova вне форума  
 
Непрочитано 28.12.2010, 13:51
#370
SAMik


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


Помогите пожалуйста небольшим макросом.
Сам только начал разбиратся с Лиспом, пока только научился чертить в каде по данным из екселя.
Прочитал эту ветку но полезного не нашёл, может кому не трудно будет.

Есть текст1 который надо заменить на "текст2 - текст3" текст 2 и 3 брать с чертежа. Таких операций надо много делать по этому надо по минимум нажатий: вызвал макрос, выбрал текст1,2,3 и текст 1 заменился.
Ну что то типа того) Буду очень признателен
SAMik вне форума  
 
Непрочитано 28.12.2010, 14:05
#371
skkkk


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


Как сосчитать сумму цифр из отдельных мтекстов
skkkk вне форума  
 
Непрочитано 28.12.2010, 15:10
#372
SAMik


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


Спасиб) буду пытатся разобратся) Но если кто может быстро черкануть то буду признателен, потому что необходимо работу делать сейчас(
SAMik вне форума  
 
Непрочитано 28.12.2010, 15:30
#373
skkkk


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


Offtop: Тут выбираешь 1-й текст (это уменьшаемое), 2-й текст (вычитаемое), и в 3-й текст вставляется разность)
кол-во знаков после запятой меняется в строчке (setvar "LUPREC" 2)
Вложения
Тип файла: lsp z-calc-text-value-.lsp (2.4 Кб, 100 просмотров)

Последний раз редактировалось skkkk, 28.12.2010 в 16:44. Причина: Добавил в код обработчик ошибок
skkkk вне форума  
 
Непрочитано 29.12.2010, 10:00
#374
SAMik


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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Offtop: Тут выбираешь 1-й текст (это уменьшаемое), 2-й текст (вычитаемое), и в 3-й текст вставляется разность)
кол-во знаков после запятой меняется в строчке (setvar "LUPREC" 2)
вот теперь конкретно и понятно) тут думаю быстро разберусь) спасибо огромное
SAMik вне форума  
 
Непрочитано 29.12.2010, 10:20 Может скрипт поможет
#375
Pavel23


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


Читал тут одну умную книгу мельком, называется "AutoCAD секреты, которые должен знать каждый пользователь". Где видал ту умную книгу не помню точно, но нашлась в инете быстро и на халяву. Понравилась глава 7, про пакеты, тобишь скрипты, запускаешь и он сам все делает и даже с кучей файлов, и тексты поправит, и другое что. Настоятельно рекомендую, там вроде все по простому изложено, что даже я понял...
Pavel23 вне форума  
 
Непрочитано 14.01.2011, 20:09
#376
skkkk


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


Offtop: Anton_Br, модернизировал твой макрос в #364.

Последний раз редактировалось skkkk, 14.01.2011 в 20:48.
skkkk вне форума  
 
Непрочитано 14.01.2011, 20:44
#377
Anton_Br

архитектор
 
Регистрация: 20.11.2007
Ростов-на-Дону
Сообщений: 539


Большое спасибо! Всё работает!
Anton_Br вне форума  
 
Непрочитано 14.01.2011, 23:32
1 | #378
gomer

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


Цитата:
Сообщение от Anton_Br Посмотреть сообщение
Большое спасибо! Всё работает!
А нули убрать? Да и вообще это не макрос, а целый лисп
такой,
Код:
[Выделить все]
(defun c:CHDIMRND (/ ss)
  (or (boundp 'vl-catch-all-error-p) (vl-load-com))
  (cond
    ((vl-catch-all-error-p
       (setq
	 ss (progn
	      (princ "\nУкажите размеры для изменения...")
	      (vl-catch-all-apply 'ssget (list '((0 . "*DIMENSION"))))
	    )
       )
     )
     (prompt "\nФункция отменена пользователем!")
    )
    ((not ss)
     (prompt "\nНеобходимо выбрать хотя бы один размер!")
    )
    (T
     (foreach &	(mapcar	'vlax-ename->vla-object
			(vl-remove-if
			  'listp
			  (mapcar 'cadr (ssnamex ss))
			)
		)
       (vla-put-RoundDistance & 10.0)
       (vla-put-PrimaryUnitsPrecision & acDimPrecisionZero)
     )
    )
  )
  (princ)
)
например:
gomer вне форума  
 
Непрочитано 14.01.2011, 23:44
#379
skkkk


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


Какие нули? Это лиспрос... или макрисп...
skkkk вне форума  
 
Непрочитано 14.01.2011, 23:54
1 | #380
gomer

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


Вот эти
Вложения
Тип файла: dwg
DWG 2004
нули.dwg (33.3 Кб, 2365 просмотров)
gomer вне форума  
 
Непрочитано 15.01.2011, 01:26
#381
skkkk


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


Offtop: И только? Ну я, в общем, так и думал. Это же DIMZINчик! Действительно, ты прав, добавил в #364. Хотя, может, Antonu_Br так и не надо... ведь, по умолчанию DIMZIN имеет значение 8, то есть, судя по всему, у него нулей-то и нет, как и у меня не было... Только вот зачем такой большой код? Anton_Br же просил макрос по аналогии с _aidimprec, а эти диалоги уже и превращают макрос в лисп
skkkk вне форума  
 
Непрочитано 15.01.2011, 01:58
#382
gomer

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


ну, я считаю, что макросы должны запускать лисп команды, а не создавать...по определению... Тогда пользователю будет приятнее работать и понятнее...
gomer вне форума  
 
Непрочитано 15.01.2011, 05:24
#383
skkkk


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


Offtop: Дело каждого... А если макрос содержит, например, и команды и опции, но не определен функцией defun, то его не повторить по правой кнопке или Enter'у, что часто неудобно. А я это так, ради интереса тренируюсь, без претензии на награды и почет. Это, к сведению - мой первый серьезный макролисп. Учусь. Практикуюсь. Здорово же, когда от этого еще и польза кому-то есть
skkkk вне форума  
 
Непрочитано 15.01.2011, 14:36
#384
gomer

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


Цитата:
Сообщение от skkkk Посмотреть сообщение
А если макрос содержит, например, и команды и опции, но не определен функцией defun, то его не повторить по правой кнопке или Enter'у, что часто неудобно.
В чем проблема-то? Лиспу подцепить к файлу настройки или вставить в *.mnl или загружать из библиотеки... или на худой конец в портфель отправить, а определять как ^c^cCHDIMRND

Макрос по определению служит для вызова нескольких команд с опциями
gomer вне форума  
 
Непрочитано 08.02.2011, 16:09
#385
gyani


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


Здравствуйте, подскажите

имея точку полученную ^C^C(setq pt1 (getpoint)); как pt1 сместить по х?

Последний раз редактировалось gyani, 08.02.2011 в 17:50.
gyani вне форума  
 
Непрочитано 09.02.2011, 02:21
#386
skkkk


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


Сместить точку как объект? или получить новую х-координату этой точки? Ничего не ясно из постановки вопроса. Лучше сразу подробней и толково объясни, чего нужно добиться от макроса. А переменная pt1 из твоего примера - это список, содержащий х- и y-координаты точки
skkkk вне форума  
 
Непрочитано 09.02.2011, 08:27
1 | #387
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от skkkk Посмотреть сообщение
Здравствуйте, подскажите

имея точку полученную ^C^C(setq pt1 (getpoint)); как pt1 сместить по х?
Как-то так наверное:
Код:
[Выделить все]
(mapcar '+ pt1 '(<тут вписать смещение по X> <тут вписать смещение по Y> <тут вписать смещение по Z>))
;;Например: (mapcar '+ pt1 '(1.0 0.0 0.0))
Do$ вне форума  
 
Непрочитано 09.02.2011, 10:12
#388
gyani


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


спасибо сделал так
^C^C(setq pt1 (getpoint));\(setq pt2 (mapcar '+ pt1 '(6.0 0.0 0.0)));_break;!A;!pt1;_non;!pt2;

Вопрос, можно ли добавить подсказку при вводе mtext? чтобы вместо mtext было что то полезное? как например при рисоавнии линии пишется укажите первую точку.

Последний раз редактировалось gyani, 09.02.2011 в 14:47.
gyani вне форума  
 
Непрочитано 09.02.2011, 16:28
#389
Volv


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


Привет. Народ, подскажите пож как прописать макрос на поворот копии обьекта с опорным углом. Я порылся в этой темке и нашол макрос на поворот с опорным углом -
Код:
[Выделить все]
(defun c:kr () (setq ss (ssget)) (command "_rotate" ss "" pause "_r" (getvar "lastpoint") pause));kr.
Пытался сам его ковырять, дабы реализовать поворт копии с опорным углом, но у меня ничего не выходит... Зарание спасибо...
Volv вне форума  
 
Непрочитано 09.02.2011, 16:45
#390
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от Volv Посмотреть сообщение
Привет. Народ, подскажите пож как прописать макрос на поворот копии обьекта с опорным углом. Я порылся в этой темке и нашол макрос на поворот с опорным углом -
Код:
[Выделить все]
(defun c:kr () (setq ss (ssget)) (command "_rotate" ss "" pause "_r" (getvar "lastpoint") pause));kr.
Пытался сам его ковырять, дабы реализовать поворт копии с опорным углом, но у меня ничего не выходит... Зарание спасибо...
Код:
[Выделить все]
(defun c:kr () (setq ss (ssget)) (command "_rotate" ss "" pause "_c" "_r" (getvar "lastpoint") pause));kr.
?
 
 
Непрочитано 09.02.2011, 16:49
#391
Volv


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


Цитата:
Сообщение от AlphaGeo Посмотреть сообщение
Код:
[Выделить все]
(defun c:kr () (setq ss (ssget)) (command "_rotate" ss "" pause "_c" "_r" (getvar "lastpoint") pause));kr.
?
что-то подобное пытался делать, но выдает такого рода сообщение

Код:
[Выделить все]
Command: (defun c:kr () (setq ss (ssget)) (command "_rotate" ss "" pause "_c" 
"_r" (getvar "lastpoint") pause))
C:KR
Command:     kr. Unknown command "KR.".  Press F1 for help.
Volv вне форума  
 
Непрочитано 09.02.2011, 18:50
#392
AlphaGeo


 
Сообщений: n/a


Volv, а ты попробуй сохранить эту строку в файл *.lsp и загрузить в AutoCAD, как приложение. Подробней можно прочитать здесь: Как использовать лисп, опубликованный на форуме. В таком случае можно будет и в автозагрузку этот макрос добавить.

Добавлено:
Можно еще попробовать упрощенный вариант (не тестировал) именно в качестве макроса. а не приложения.
Код:
[Выделить все]
^C^C_rotate;\\_c;_r;@;\

Последний раз редактировалось AlphaGeo, 09.02.2011 в 19:11.
 
 
Непрочитано 09.02.2011, 19:37
#393
Volv


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


Цитата:
Сообщение от AlphaGeo Посмотреть сообщение
Volv, а ты попробуй сохранить эту строку в файл *.lsp и загрузить в AutoCAD, как приложение. Подробней можно прочитать здесь: Как использовать лисп, опубликованный на форуме. В таком случае можно будет и в автозагрузку этот макрос добавить.

Добавлено:
Можно еще попробовать упрощенный вариант (не тестировал) именно в качестве макроса. а не приложения.
Код:
[Выделить все]
^C^C_rotate;\\_c;_r;@;\
указаный упрощенный макрос не работает..., но спасибо за подсказку. Что касается лиспа то нада сесть разобратся.
Volv вне форума  
 
Непрочитано 09.02.2011, 21:01
#394
Vova

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


*^C^CROTATE;\\;\90
Здесь угол задается путем изменения макроса (который удобнее расположить на палете) и предназначен для множественного использования подряд. Выбор объектов обязательно и только двумя кликами (можно рамкой).
Vova вне форума  
 
Непрочитано 10.02.2011, 08:36
#395
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Volv Посмотреть сообщение
что-то подобное пытался делать, но выдает такого рода сообщение

Код:
[Выделить все]
Command: (defun c:kr () (setq ss (ssget)) (command "_rotate" ss "" pause "_c" 
"_r" (getvar "lastpoint") pause))
C:KR
Command:     kr. Unknown command "KR.".  Press F1 for help.
Тоже когда-то сперва сделал макрос, потом написал такой лисп:
Код:
[Выделить все]
(defun c:rotateplus (/ *adoc* ss bpt opt nopt var_lst rec_var_lst)
  (vl-load-com)
  (vla-StartUndoMark (setq *adoc* (vla-get-ActiveDocument (vlax-get-acad-object))))
  (vl-catch-all-apply
    (function (lambda ()
		(sssetfirst nil (setq ss (ssget)))
		(setq bpt  (getpoint "\nBase point:")
		      opt  (getpoint bpt "\nOrientation point:")
		      nopt (getpoint bpt "\nNew position for orientation point:")
		) ;_ end of setq
	      ) ;_ end of lambda
    ) ;_ end of function
  ) ;_ end of vl-catch-all-apply
  (setq	rec_var_lst
	 (mapcar (function getvar)
		 (setq var_lst (list "osmode" "cmdecho"))
	 ) ;_ end of mapcar
  ) ;_ end of setq
  (mapcar (function setvar) var_lst (list 0 0))
  (sssetfirst nil nil)
  (vl-cmdf "_.rotate"
	   ss
	   ""
	   bpt
	   "_r"
	   bpt
	   opt
	   nopt
  ) ;_ end of vl-cmdf
  (mapcar (function setvar) var_lst rec_var_lst)
  (vla-EndUndoMark *adoc*)
  (princ)
) ;_ end of defun
Do$ вне форума  
 
Непрочитано 10.02.2011, 08:59
#396
Volv


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


Do$, в твоем посте приведено два варианта лиспа на поворот копии с рефрентной ссылкой, первый, написаный AlphaGeo, будет как бы попроще да и его работоспособность я уже проверил (только его нада постоянно подгружать), что касается твоего предложения, то его я не тестил, вот только мне не охота юзать лиспы, хочу юзать команду при помощи макроса....
Volv вне форума  
 
Непрочитано 10.02.2011, 09:44
#397
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Volv Посмотреть сообщение
первый, написаный AlphaGeo, будет как бы попроще
Испорчен я напрочь этим форумом - не могу просто писать, обязательно всякие проверки, подстраховки и прочие излишества применяю
Цитата:
Сообщение от Volv Посмотреть сообщение
вот только мне не охота юзать лиспы, хочу юзать команду при помощи макроса....
Хозяин - барин
Do$ вне форума  
 
Непрочитано 10.02.2011, 09:56
#398
Volv


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


а какую литературу лутше почитать по написани макросов, вернее по описанию каманда применяющихся в макросах. и что-то для чайников о лиспе, связаном непосредственно с автокадом, основаное на примерах и их разборе...?
Volv вне форума  
 
Непрочитано 10.02.2011, 10:00
#399
Лиспер


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


В.Свет "Язык макрокоманд AutoCAD и написание макросов". По-моему, так. Была в Download.
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 10.02.2011, 15:52
#400
Volv


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


Всем кто делал подсказки спасибо. Отдельное спасибо AlphaGeo.
В итоге вышло сделать кнопку, которая отвечает за поворот копии елемента с опорным углом

Код:
[Выделить все]
^C^C(defun c:kr () (setq ss (ssget)) (command "_rotate" ss "" pause "_c" "_r" (getvar "lastpoint") pause));kr
Volv вне форума  
 
Непрочитано 10.02.2011, 16:08
#401
Vova

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


Цитата:
Сообщение от Лиспер Посмотреть сообщение
В.Свет "Язык макрокоманд AutoCAD и написание макросов". По-моему, так.
AutoCAD Язык макрокоманд и создание кнопок
Устарела та часть, где применен калькулятор (не все работает начиная от 2006). Также глава про меню, вместо нее читай статью на главной странице
Vova вне форума  
 
Непрочитано 17.02.2011, 12:39
#402
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


Неподскажете как макрокоманду превратить в команду...что бы присвоить её псевдоимя в acad.pgp... ?
Konstruktiv54 вне форума  
 
Непрочитано 17.02.2011, 12:46
#403
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Цитата:
Сообщение от ShaRhaN Посмотреть сообщение
Неподскажете как макрокоманду превратить в команду...что бы присвоить её псевдоимя в acad.pgp... ?
Переписать её на лиспе.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 17.02.2011, 12:55
#404
Profan


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


Тогда не нужен будет никакой acad.pgp.
Profan вне форума  
 
Непрочитано 17.02.2011, 13:07
#405
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


Krieger, не подскажите как это переделать в лисп?
^C^C_spStdSelected;438035B5DE6E701C;
Konstruktiv54 вне форума  
 
Непрочитано 17.02.2011, 13:17
#406
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от ShaRhaN Посмотреть сообщение
Krieger, не подскажите как это переделать в лисп?
^C^C_spStdSelected;438035B5DE6E701C;
Может, так
Код:
[Выделить все]
(defun c:имя_команды () (command "_spStdSelected" "438035B5DE6E701C"))
?
Хотя я что-то не наблюдаю в своем AutoCAD'e такой команды, поэтому не знаю, будет ли lisp в таком виде работать...
 
 
Непрочитано 17.02.2011, 14:12
#407
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Цитата:
Сообщение от ShaRhaN Посмотреть сообщение
Krieger, не подскажите как это переделать в лисп?
^C^C_spStdSelected;438035B5DE6E701C;
Что это??? Собственно тогда как показали выше.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 17.02.2011, 14:22
#408
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


так я уже пытался ((
не работает...
это команда СПДСа...
Спасибо за помощь )
Konstruktiv54 вне форума  
 
Непрочитано 17.02.2011, 14:35
#409
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от ShaRhaN Посмотреть сообщение
так я уже пытался ((
не работает...
это команда СПДСа...
Спасибо за помощь )
Каким образом пытался? Записывал эту строчку в макрос кнопки? Или как положено сохранял в *.lsp файл и загружал в AutoCAD?
И как эта команда вообще работает? Какие сообщения и опции отображаются в командной строке? Смущает меня такой вот «438035B5DE6E701C» аргумент.
 
 
Непрочитано 17.02.2011, 14:59
#410
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


Сохранял в лисп файл )
Работает следующим образом:
"_spStdSelected" - команда выбора стандартного элемента из базы;
«438035B5DE6E701C» - идентификационный номер стандартного элемента;
Konstruktiv54 вне форума  
 
Непрочитано 17.02.2011, 15:11
#411
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Тогда назначь сочетание клавиш, там макрос можно оставить.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 17.02.2011, 15:11
#412
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от ShaRhaN Посмотреть сообщение
Работает следующим образом:
"_spStdSelected" - команда выбора стандартного элемента из базы;
«438035B5DE6E701C» - идентификационный номер стандартного элемента;
Так с командной строки ее можно выполнить, или элемент выбирается в появляющимся окне выбора?
 
 
Непрочитано 17.02.2011, 15:24
#413
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


Всё работает! невнимательность меня погубит!
Еще раз спасибо!

Последний раз редактировалось Konstruktiv54, 17.02.2011 в 15:34.
Konstruktiv54 вне форума  
 
Непрочитано 17.02.2011, 15:42
#414
Simon13


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


Подскажите! Всё уже облазил! Где найти макрос, который разрывает и заменяет другой линией разрыв, использовать для обозначения пунктиром невидимых частей. Спасибо!
Simon13 вне форума  
 
Непрочитано 17.02.2011, 16:03
#415
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Цитата:
Сообщение от Simon13 Посмотреть сообщение
Подскажите! Всё уже облазил! Где найти макрос, который разрывает и заменяет другой линией разрыв, использовать для обозначения пунктиром невидимых частей. Спасибо!
В этой теме и было:
http://forum.dwg.ru/showpost.php?p=330892&postcount=123
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 17.03.2011, 12:39
#416
SAMik


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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Offtop: Тут выбираешь 1-й текст (это уменьшаемое), 2-й текст (вычитаемое), и в 3-й текст вставляется разность)
кол-во знаков после запятой меняется в строчке (setvar "LUPREC" 2)
Вернулся из командировки принялся за доработку макроса)
Помогите кто может)
Макрос переделал, всё работает, но хотелось бы убыстрить работу с ним.
Сейчас после выбора двух текстов надо нажать ентер и потом выбрать изменяемый текст. Очень хотелось бы не нажимать ентер: выбрал два текста и третий изменяемый и готово, а то неудобно рукой прыгать от пробела к ентеру всё время...
Пытался разобраться сам, но мозгов на это пока не хватает

Код:
[Выделить все]
(defun c:z-calc-text-value- (/ adoc value ent obj ss)
 (vl-load-com)
;;;  (defun *error* (msg)(princ msg)(vl-cmdf "_redrawall")(vla-EndUndoMark adoc)
;;;    (setvar "LUPREC" oldLUPREC)(setvar "DIMZIN" oldDIMZIN))
;;;  (setq oldDIMZIN (getvar "DIMZIN"))
;;;  (setq oldLUPREC (getvar "LUPREC")) 
 (setq tt 1)
 (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  (vla-StartUndoMark adoc)
;;;  (setvar "DIMZIN" 0)
;;;  (setvar "LUPREC" 2)
   (princ "\n ÒÊÄ 1 è 2")
  (setq ss (ssget '((0 . "TEXT,MTEXT"))))
  (if (not ss)
    (princ "?? ??????? ???????")
    (progn
      (setq value 
    (apply
      (function strcat)
      (mapcar
        (function
          (lambda (a)
;;;        (vl-string-trim
          "%Uu {\\Ll}"
;;;          (vl-string-subst
;;;            "."
;;;            ","
		(strcat (cdr (assoc 1 (entget a))) " - ")
;;;            ) ;_ vl-string-subst
;;;          ) ;_ vl-string-trim
      ) ;_ lambda
          ) ;_ function
        (vl-remove-if
          (function listp)
          (mapcar (function cadr)
             (ssnamex ss)
            ) ;_ mapcar
          ) ;_ vl-remove-if
        ) ;_ mapcar
      ) ;_ apply
  ) ;_ setq
;;;      (if (vl-string-position (ascii ".00") value)
;;;  (setq value (vl-string-right-trim "." value))
;;;  ) ;_ if
      (setq value (substr value 1 (- (strlen value) 3)))
;;;      (princ  (substr value 1 5))
      ; (alert (strcat "????? = " value))
;;;      (rtos 11.293333 2 2) -> "11.29"
;;;(rtos 11.296333 2 2) -> "11.30"
      (while
  (and (not (setq  ent
       (car
         (nentsel
           (strcat "\n ïîäïèñü êàáåëÿ:")
           ) ;_ entsel
         ) ;_ car
      ) ;_ setq
      ) ;_ not
       (equal (getvar "ERRNO") 7)
       ) ;_ and
   (setvar "ERRNO" 0)
   ) ;_ while

      (if (and ent
         (vlax-property-available-p
     (setq obj (vlax-ename->vla-object ent))
     'TextString
     ) ;_ vlax-property-available-p
         ) ;_ and
  (progn
    (vlax-put-property obj 'TextString value)
    (vlax-release-object obj)
    ) ;_ progn
  ) ;_ if
      ) ;_ progn
    ) ;_ if
;;;      (setvar "DIMZIN" oldDIMZIN)
;;;      (setvar "LUPREC" oldLUPREC)
  (princ)
   ) ;_ defun
SAMik вне форума  
 
Непрочитано 25.03.2011, 04:22
2 | #417
Vova

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


Код:
[Выделить все]
 ^C^C$m=$(if,$(=,$(getvar,lwdefault),25),^C^Clwdefault;35,^C^Clwdefault;25) 
Это образец макроса, которым можно менять значение системной переменной поочередно на одно либо другое число в одной кнопке. Заодно расскажу о переменной Lwdefault. Я считаю что большинство линий, которые должны иметь "нормальную" толщину, так называемые Основныe, отрисовываются весом Default. Наш плоттер рисует такие линии красиво если их вес 35. Наши чертежи, в основном, большие, типа вашего А0, и печатаются вдоль рулона шириной 36 инчей - такова ширина чертежа. Но часто для собственных нужд приходится печатать чертеж уменьшенного размера, то есть поперек рулона. Так вот, если LWdefault=35, такой чертеж получается слишком жирным. Если-же воспользоваться галочкой Scale lineweight в диалоговом окне печати, то распечатка будет слабовата. А если выставить lwdefault в 25, то в самый раз. Вот макрос и меняет одним нажатием переменную с 35 на 25, а другим нажатиям наоборот.
В макрос можно подставить любую переменную, у которой нужно использовать поочередно два разных числовых значения
Vova вне форума  
 
Непрочитано 10.06.2011, 10:18
#418
Luna_S

arh
 
Регистрация: 16.03.2011
Moskow
Сообщений: 3


Доброго времени суток, прошу помощи в создании макроса для автокада:

сумма выделенных чисел
^C^C(if (null C:z-calc-text-value)(load "z-calc-text-value"));z-calc-text-value;

макрос не мой и я не умею их создавать (нет понимания как это делается), могу только пользоваться и назначать кнопкам. этот макрос у меня не работает не могу понять что не так автокад стоит 2012 engl.
если в последнем выражении поставить пробелы:
^C^C(if (null C:z-calc-text-value)(load "z-calc-text-value"));z calc text value;
то получается вообще не совсем понятная команда.
в общей сложности мне нужен макрос который считает сумму чисел, например есть экспликация помещений и есть площади помещений, площади пишутся цифрами мультитекста, выделяются нужне числа и считается общая сумма.
просто бывает нужно считать не все помещения а выборочно, а бывает все и сидеть складывать убивается оооочень много времени, которого как правило нет.

и еще вопрос есть рабочий макрос:
*^C^C_List;\;_dimordinate ;@;_Text;$m= $(Rtos,$(*,$(Getvar,area),0.000001),2,2);\
мне он очень нравиться и выдает число в нужном формате (я о запятой в нужном месте) но по умолчанию там слишком маленькая высота текста. можно ли как то дописать в этот макрос настройку на изменение высоты текста и толщину линии на которой он выноситься?
Luna_S вне форума  
 
Непрочитано 10.06.2011, 10:46
#419
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от Luna_S Посмотреть сообщение
сумма выделенных чисел
^C^C(if (null C:z-calc-text-value)(load "z-calc-text-value"));z-calc-text-value;

макрос не мой и я не умею их создавать (нет понимания как это делается), могу только пользоваться и назначать кнопкам. этот макрос у меня не работает не могу понять что не так автокад стоит 2012 engl.
По всей видимости, это макрос не для вычисления суммы выделенных тел, а для запуска LISP-программы, которая вычисляет сумму выделенных тел. AutoCAD'у должен быть доступен файл с именем z-calc-text-value и расширением lsp, например. Я так понимаю, сама программа в посте #416? Тогда почитайте «Как использовать лисп, опубликованный на форуме».
 
 
Непрочитано 12.06.2011, 02:21
#420
Sta1917

геодезист
 
Регистрация: 21.03.2009
Санкт-Петербург
Сообщений: 67


Привет, нужно создавать полилинию с уровнем Z=0, собрал команды в макрос: ^C^C_pline;\\\;_flatten;_Last;;n
Как реализовать пользовательский ввод _pline до тех пор пока не будет нажат Enter?
Sta1917 вне форума  
 
Автор темы   Непрочитано 12.06.2011, 17:10
#421
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,824
<phrase 1=


Цитата:
Сообщение от Sta1917 Посмотреть сообщение
Привет, нужно создавать полилинию с уровнем Z=0, собрал команды в макрос: ^C^C_pline;\\\;_flatten;_Last;;n
Как реализовать пользовательский ввод _pline до тех пор пока не будет нажат Enter?
ну зачем так сложно? отключи привязку по Z и все.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 12.06.2011, 18:17
#422
Sta1917

геодезист
 
Регистрация: 21.03.2009
Санкт-Петербург
Сообщений: 67


zenon, оказывается все просто А на будущее как это можно реализовать?
Sta1917 вне форума  
 
Непрочитано 13.06.2011, 09:13
#423
mamuk


 
Регистрация: 06.05.2010
Сургут
Сообщений: 248


Sta1917, это можно реализовать примероно так *^C^C_-layer;_m;_Водопровод_подземный;;_CELTYPE;gugk5_122_v;;;_CELWEIGHT;30;;;_pline; т.е. сначала выполнить настройки а потом рисовать полилинию. но в товоем случае это видимо не получится с командой _flatten. да и сдругими командами тоже т.к. отрисовка полилинии трубует завершения по enter.
mamuk вне форума  
 
Непрочитано 19.06.2011, 10:29
#424
konstruktornn


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


Всем, доброго времени суток.
У меня просьба, подскажите, что не так сделал
^C^C(setq lr (getvar 'clayer)) (setvar 'clayer "Размеры") _dimlinear; (setvar 'clayer lr).
Работает, но как-то криво.
Хотелось поставить размер в нужный слой, не выбирая объекты, а просто проставляя размеры.
konstruktornn вне форума  
 
Непрочитано 19.06.2011, 11:39
#425
gomer

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


Цитата:
Сообщение от konstruktornn Посмотреть сообщение
Хотелось поставить размер в нужный слой, не выбирая объекты, а просто проставляя размеры.
Код:
[Выделить все]
^C^C(setq lr (getvar 'clayer));clayer;Размеры;_dimlinear;\\\clayer;!lr;
это раз...
Это два
gomer вне форума  
 
Непрочитано 19.06.2011, 11:59
#426
konstruktornn


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


Спасибо. Понял свою ошибку
konstruktornn вне форума  
 
Непрочитано 20.06.2011, 11:03
#427
PSG


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


Подскажите, пожалуйста, можно ли создать макрос (выбрать на каком-то определенном слое "ИмяСлоя" МТЕХТ (многострочный текст), взорвать его, т.е. преобрабовать МТЕХТ в ТЕХТ, заменить "." на ",") или надо писать LISP-программу.
PSG вне форума  
 
Автор темы   Непрочитано 20.06.2011, 14:48
#428
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,824
<phrase 1=


PSG, _.QSELECT
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 20.06.2011, 15:51
#429
PSG


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


_QSELECT - быстрый выбор
Я так и делаю,
1. _QSELECT выбираю свойства объекта (МТЕХТ), значение (слой)
2. _ЕXPLODE
3. _QSELECT свойства объекта (ТЕХТ), значение (слой)
4. _FIND (найти "." и заменить на ",")
Хотелось бы, нажал на одну кнопку и все готово
PSG вне форума  
 
Непрочитано 21.06.2011, 17:30
#430
PSG


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


Подскажите, пожалуйста, как в макросе, вот таком -
^C^C(setq a(ssget "_X" '((0 . "MTEXT"))));(sssetfirst nil a);_find;(setq a(ssget "_X" '((0 . "MTEXT"))));(sssetfirst nil a);_explode
сделать, чтобы МТЕХТ выбирался не на всем чертеже, а на текущем слое (ActiveLayer)
PSG вне форума  
 
Непрочитано 21.06.2011, 17:42
#431
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


(ssget "_X" '((0 . "MTEXT"))) заменить на (ssget "_X" (list '(0 . "MTEXT") (cons 8 (getvar "clayer"))))
Do$ вне форума  
 
Автор темы   Непрочитано 21.06.2011, 17:44
#432
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,824
<phrase 1=


PSG, ну и кто мешает загнать сию последовательность в макрос??
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 21.06.2011, 19:03
#433
gomer

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


Цитата:
Сообщение от zenon Посмотреть сообщение
ну и кто мешает загнать сию последовательность в макрос??
Цитата:
Сообщение от PSG Посмотреть сообщение
^C^C(setq a(ssget "_X" '((0 . "MTEXT"))));(sssetfirst nil a);_find;(setq a(ssget "_X" '((0 . "MTEXT"))));(sssetfirst nil a);_explode
Ну и кто мешает писать на лиспе... это ж не макрос это лисп собственной персоной
gomer вне форума  
 
Непрочитано 21.06.2011, 19:12
#434
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от zenon Посмотреть сообщение
PSG, ну и кто мешает загнать сию последовательность в макрос??
_QSELECT не имеет формы для командной строки — только диалоговое окно... Так что без LISP'a не обойтись.
 
 
Непрочитано 22.06.2011, 10:21
#435
PSG


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


Всем ответившим, большое спасобо. Я только начинаю ... поэтому ...
PSG вне форума  
 
Непрочитано 23.06.2011, 10:25
#436
PSG


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


Еще вопрос -
^C^C(setq a(ssget "_X" (list '(0 . "MTEXT") (cons 8 (getvar "clayer")))));(sssetfirst nil a);_find;(setq a(ssget "_X" (list '(0 . "MTEXT") (cons 8 (getvar "clayer")))));(sssetfirst nil a);_explode
^C^C(setq a(ssget "_X" (list '(0 . "TEXT") (cons 8 (getvar "clayer")))));(sssetfirst nil a);_text-
по отдельности они работают, а если их объединить вместе
^C^C(setq a(ssget "_X" (list '(0 . "MTEXT") (cons 8 (getvar "clayer")))));(sssetfirst nil a);_find;(setq a(ssget "_X" (list '(0 . "MTEXT") (cons 8 (getvar "clayer")))));(sssetfirst nil a);_explode;(setq a(ssget "_X" (list '(0 . "TEXT") (cons 8 (getvar "clayer")))));(sssetfirst nil a);_text-
то не работают. В чем моя ошибка?
PSG вне форума  
 
Непрочитано 23.06.2011, 11:35
#437
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


А если после explode; поставить ^C^C?
Do$ вне форума  
 
Непрочитано 23.06.2011, 12:44
#438
PSG


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


Цитата:
Сообщение от Do$ Посмотреть сообщение
А если после explode; поставить ^C^C?
Не помогло

Команда:
Команда:
РАСЧЛЕНИТЬ
Выберите объект: (setq a(ssget "_X" (list '(0 . "TEXT") (cons 8 (getvar
"clayer")))))
nil


*Неверный выбор*
Требуется точка или Последний/Все/Группа

Выберите объект:
Команда:
PSG вне форума  
 
Непрочитано 23.06.2011, 13:42
#439
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Мне проще как-то так:
Код:
[Выделить все]
 ((lambda (ss / _dwgru-conv-pickset-to-list lst)
   (defun _dwgru-conv-pickset-to-list (value / tab item)
     (repeat (setq tab	nil
		   item	(sslength value)
	     ) ;_ end setq
       (setq tab (cons (ssname value (setq item (1- item))) tab))
     ) ;_ end repeat
   ) ;_ end defun
   (if ss
     (progn
       (setq lst (_dwgru-conv-pickset-to-list ss))
       (mapcar
	 '(lambda (obj)
	    (vla-put-TextString
	      obj
	      (vl-string-translate "." "," (vla-get-TextString obj))
	    ) ;_ end of vla-put-TextString
	  ) ;_ end of lambda
	 (mapcar 'vlax-ename->vla-object lst)
       ) ;_ end of mapcar
       (prompt
	 (strcat
	   "\nВзорвано мультитекстов: "
	   (itoa
	     (length
	       (mapcar '(lambda (ent) (vl-cmdf "_.explode" ent)) lst)
	     ) ;_ end of length
	   ) ;_ end of itoa
	   "шт."
	 ) ;_ end of strcat
       ) ;_ end of prompt
       (sssetfirst
	 nil
	 (ssget "_X" (list '(0 . "TEXT") (cons 8 (getvar "clayer"))))
       ) ;_ end of sssetfirst
     ) ;_ end of progn
   ) ;_ end of if
 ) ;_ end of lambda
  (ssget "_X"
	 (list '(0 . "MTEXT") (cons 8 (getvar "clayer")))
  ) ;_ end of ssget
)
(vl-cmdf "_text-")
Do$ вне форума  
 
Непрочитано 23.06.2011, 14:18
#440
PSG


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


Спасибо. Но пока для меня это сложно и не понятно. Сразу же вопрос, а как это загрузить? Что тут набирать в ком.строке?
PSG вне форума  
 
Непрочитано 23.06.2011, 14:32
#441
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Сохранить в текстовый файл, дать ему расширение LSP, файл расположить в путях поддержки автокада. Макрос для вызова:
Код:
[Выделить все]
^C^C(load <имя файла>);
Например: ^C^C(load "programma.lsp");
Do$ вне форума  
 
Непрочитано 23.06.2011, 14:42
#442
PSG


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


Все ясно.
После запуска макроса выдает ошибку
; ошибка: неверный тип аргумента: stringp nil
PSG вне форума  
 
Непрочитано 23.06.2011, 15:33
#443
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Может при копировании вкралась ошибка? Приложу на всякий случай файлик.
Если не поможет - то надо смотреть dwg-файл, что там такое, что вызывает сбой. У меня отрабатывает нормально. правда, у меня нет загадочной команды _TEXT-, что это за зверь?
Вложения
Тип файла: lsp test.lsp (1.2 Кб, 85 просмотров)

Последний раз редактировалось Do$, 23.06.2011 в 15:45.
Do$ вне форума  
 
Непрочитано 23.06.2011, 16:04
#444
PSG


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


Спасибо, буду пробовать. _text- это программка, которая подчеркивает выбранный однострочный текст.

Красота! Все получилось. Не срабатывало, потому что не было первой строки. Еще раз спасибо. Мне до того уровня , как до Китая пешком, век живи, век учись ...

Последний раз редактировалось PSG, 24.06.2011 в 09:53.
PSG вне форума  
 
Непрочитано 30.09.2011, 11:42
#445
Vadikus


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


Добрый день уважаемые форумчане. Устроился на новую работу, думал приду настрою автокад под себя со своими любимыми лиспами, не тут то было, на рабочих компах стоят AutoCAD LT 2010 (русский). Пришлось писать макросами начали появляться вопросы. Собственно сам макрос: ^C^CСлой;С;Размеры;_c;желтый;;;_dimlinear. Макрос работает, но хотелось, что бы по его завершении слой возвращался на предыдущий (что то типа лиспа от многоуважаемого VVA), который стоял до этой команды. Если правильно понял то это делается при помощи команды предыдущее состояние слоев СЛОЙП (_LAYERP), но вот самой команды найти никак не могу. Будьте добры подскажите что дописать в конце сего творения.
И еще один вопросик: можно ли повесить на кнопку макрос с использованием БВЫБОР (_QSELECT). Например жму кнопку включается БВЫБОР, в нем автоматически выбираются все размеры (линейные, радиусы и тд.), после выбора все автоматически переносится на слой "Размеры".
Может я конечно многого хочу, но хотелось бы так.
Vadikus вне форума  
 
Непрочитано 30.09.2011, 14:53
#446
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


Vadikus, для написания макросов очень поможет DIESEL (в лайте это единственная возможность хоть какую-то логику добавить)
Тестовый пример, макрос запоминает в переменной users5 имя текущего слоя, затем на слое 0 рисует линию, после чего возвращается на запомненный слой.
Код:
[Выделить все]
^C^Cusers5;$M=$(GETVAR,CLAYER);clayer;0;line;0,0;10,10;;clayer;$M=$(GETVAR,users5);

Последний раз редактировалось bargool, 30.09.2011 в 15:09.
bargool вне форума  
 
Непрочитано 30.09.2011, 15:18
#447
Vadikus


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


bargool, поставил для пробы на кнопку ваш макрос
Код:
[Выделить все]
^C^Cusers5;$M=$(GETVAR,_.CLAYER);_.clayer;0;_.line;0,0;10,10;;_.clayer;$M=$(GETVAR,users5);
я так понимаю для русского када надо еще "_." добавить.

Жму кнопку автокад хочет выполнить предыдущюю команду, слой 0 не переключается на предыдущий.

Последний раз редактировалось Vadikus, 30.09.2011 в 15:36.
Vadikus вне форума  
 
Непрочитано 30.09.2011, 15:58
#448
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


Vadikus, для использования английских команд в русском каде надо добавлять только "_" без точки
При этом имена системных переменных пишутся латиницей без добавления всяких подчеркиваний (вроде бы - проверить негде, если честно. в конторе все автокады английские), CLAYER тоже системная переменная. Но у меня действительно переходит на сохраненный слой только со второго раза...
Update: похоже, дизель свои выражения вычисляет до вызова команды, поэтому в данном макросе возвращает предыдущее значение users5
Update2 из этого последовал прекрасный вывод:
Код:
[Выделить все]
$M=^C^Cclayer;0;line;0,0;10,10;;clayer;$(GETVAR,CLAYER);

Последний раз редактировалось bargool, 30.09.2011 в 17:02.
bargool вне форума  
 
Непрочитано 30.09.2011, 17:36
#449
Vadikus


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


Нашел в соседней теме такую вещь, и обошлись без дизеля
Код:
[Выделить все]
^C^C_.dimlinear;\\\_.chprop;_last;;_la;"размеры";;
но с радиусами, диаметрами и _dimcontinue что то не хочет работать. И еще вопрос, можно ли данные макросы вызывать не кликая на кнопку панели, а прописать команду в *.pgp файле и вызывать с клавиатуры (типа ^С^С Defun c:"какая-то команда" _.dimlinear;\\\_.chprop;_last;;_la;"размеры";; ) и как включить повтор по ПКМ.

С радиусами и диаметрами разобрался, была лишняя палка (\), а вот с dimcontinue что то не получается (т.к. создается несколько размерных линий).

Последний раз редактировалось Vadikus, 02.10.2011 в 13:19.
Vadikus вне форума  
 
Непрочитано 24.10.2011, 12:01
#450
Conan_w

Инженер-проектировщик
 
Регистрация: 16.05.2007
Мурманск
Сообщений: 79
<phrase 1=


Может уже было подобное, заранее извиняюсь за лень чтоб просмотреть 23 страницы.
Достойная альтернатива кнопке "Сохранить"

Код:
[Выделить все]
^C^C_regenall;_.audit;_y;'_zoom;_e;_qsave;
__________________
Нащяльника,мая AutoCAD паставиль,инсталя сделаль,сапускаю, а она ажамбех пашамбе эшельбе шайтанама!
Conan_w вне форума  
 
Непрочитано 30.10.2011, 22:14
#451
Vova

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


В одной из тем один из самых знающих автокадчиков форума назвал макросы убожеством.
У макросов есть еще одно предназначение, оно хорошо работает и значительно экономит время. Вот пример, показанный в книге Autocad Язык макрокоманд и создание кнопок.
Цитата:
Главной задачей является .... а также очень быстро, в течение нескольких минут, составить временную команду для выполнения одноразовой рутинной операции.
Как-то к автору обратился сослуживец с просьбой что-нибудь придумать для облегчения его работы. На большом чертеже в разных местах была установлена серия объектов, которую надо было изменить следующим образом: один объект удалить, а находящий здесь же блок с атрибутом перекрасить в другой цвет. То есть предстояло поочередное применение трех команд Erase (Стереть), Eattedit (Атредакт) и Properties (Окносв). Изменить цвет слоя не представлялось возможным. Надо было действовать “One by one”, то есть обрабатывать один объект за другим. Скучная работа. На выполнение операции с одной группой объектов надо было затратить 14 щелчков мыши да еще копаться в диалоговом окне Enchanced Attribute Editor (Редактор атрибутов) и в окошке Color Control (Цвета), подбирая нужный цвет.
Я поставил на одну кнопку команды Erase (Стереть) -Attedit (‑Атред), наше [3-10] и Change (Изменить), видоизмененная часть нашего [12-11], внес некоторые поправки. Теперь на всю операцию надо было затратить всего три щелчка, если считать первым вызов команды. И заняло это всего 5 минут!
А вот два моих свежих примера. Надо было выборочно заменить блоки на другие, причем атрибуты должны были остаться со старого блока. Слои, которых было много вариаций, в основном, должны были сохраниться, но не все. Кое где и они менялись. Менялось и присоединение подходяших линий. Поскольку замена производилась в очень плотном чертеже, годилась только ручная обработка с визуальным контролем. Это занимало 25 кликов на блок. Блоков было около сотни. Макрос, который я сотворил за 10 мин делал эту работу за 12 кликов.
^C^C_I;LTG-FIX-BOX;\;;;;;XXX;SELECT;SI;\M;P;;\\TTC;;\\\\;E;\;MA;\\;
Второй макрос по-проще, вставляет блок и передает ему свойства с подходящей к блоку коммуникации.
^C^C_I;z-stub-dn;\96;;;MA;\\;
Оба макроса сугубо временные, никогда в таком виде никому не пригодятся, и как только я закончу чертеж, их удалю. Макросы безо всяких изысков, можно было убить время и сэкономить клик-другой, но время было дороже. Подобные для текущей задачи может сделать любой, слегка набивший на них руку пользователь
Vova вне форума  
 
Непрочитано 30.10.2011, 22:21
#452
Кулик Алексей aka kpblc
Moderator

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


> Достойная альтернатива кнопке "Сохранить"
Я бы сделал немного по-другому:
Код:
[Выделить все]
^C^C_.-purge;_a;;_n;_.-purge;_a;;_n;_.-purge;_r;;_n;_.audit;_y;_.-scalelistedit;_r;_y;_e;_.-purge;_a;;_n;_qsave;
Цитата:
Сообщение от Vova Посмотреть сообщение
В одной из тем один из самых знающих автокадчиков форума назвал макросы убожеством.
А можно конкретную ссылку? Просто интересно.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 30.10.2011 в 22:29.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 31.10.2011, 09:34
#453
Агент СмиТ

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


Заказчик в комплекте с техзаданием, требованиями и прочими инструкциями по выполнению работ предоставил надстройку для Autocad. Всё замечательно работает, но какой-то из лиспов надстройки периодически меняет настройки единиц чертежа, при этом "забывая" вернуть их в исходное после выполнения своего алгоритма.
Подскажите пожалуйста макрос для выставки линейных единиц в формат "десятичные" и угловых в формат "десятичные градусы", точность для линейных и угловых единиц одинакова "0.00".
Агент СмиТ вне форума  
 
Непрочитано 31.10.2011, 09:50
1 | #454
Кулик Алексей aka kpblc
Moderator

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


^C^C^Plunits;2;luprec;2;aunits;0;auprec;2
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 31.10.2011, 10:09
#455
Агент СмиТ

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


Вдвойне дает, кто дает скоро. Спасибо!!!
Агент СмиТ вне форума  
 
Непрочитано 04.11.2011, 10:30
#456
Astartes

Котло- и реакторостроение
 
Регистрация: 25.02.2010
Барнаул
Сообщений: 807


Здравствуйте.
Скажите, можно ли сделать макрос на создание именованного вида, без диалогового окна. Имя вида не важно, область вида, то что на экране.
Astartes вне форума  
 
Непрочитано 04.11.2011, 11:54
#457
mamuk


 
Регистрация: 06.05.2010
Сургут
Сообщений: 248


^C^C-вид;сохранить;вид1; в конце если не добавть имя вида то с клавы его вводить и enter
п.с. незнаю по английски звучат команды
mamuk вне форума  
 
Непрочитано 04.11.2011, 13:06
#458
Astartes

Котло- и реакторостроение
 
Регистрация: 25.02.2010
Барнаул
Сообщений: 807


mamuk, Спасибо, то что нужно.

Еще вопрос. На всякий случай )). Можно ли добавить в эту макрокоманду выбор нужной области рамкой.

Последний раз редактировалось Astartes, 05.11.2011 в 07:55.
Astartes вне форума  
 
Непрочитано 09.11.2011, 11:18
#459
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


существет кнопка перемещающие объекты на задний план: ^C^C^P_ai_draworder _Back ^P
пробовал переделать её как в первом посте
Цитата:
^C^C^P(defun c:break2 () (vl-cmdf "_break" pause "f" pause "@")(princ));break2;
Выдает что неизвестная команда _ai_draworder
Есть ли способ реализовать то что хотел или с этой командой не прокатит?
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Непрочитано 09.11.2011, 11:21
#460
Profan


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


А где сам переделанный макрос с _ai_draworder?
Profan вне форума  
 
Непрочитано 09.11.2011, 12:26
#461
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


^C^C^P(defun c:atback () (vl-cmdf "_ai_draworder" "_back") (princ));atback;
конструкция проверена не единожды. ругается именно vl-cmdf (пробовал и с command) на "_ai_draworder... ругается не только в тексте макроса, но и из ком строки.
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Непрочитано 09.11.2011, 12:41
#462
Profan


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


А если так попробовать:
Код:
[Выделить все]
^C^C^P(defun c:atback () (ai_draworder "_back") (princ));atback;
Profan вне форума  
 
Непрочитано 09.11.2011, 12:50
#463
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


как ни странно работает... неужели ai_draworder - лисповская функция?..
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Непрочитано 09.11.2011, 12:51
#464
Profan


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


Конечно. Все команды с префиксом ai - лисповские.
Существует специальный файл ai_utils.lsp.

Последний раз редактировалось Profan, 09.11.2011 в 13:29.
Profan вне форума  
 
Непрочитано 21.11.2011, 13:47
#465
migel123


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


Друзья, други, товарищи, коллеги, добрые люди, жители форума и все все все кто слышит меня даже из других галактек!!!!
Перейду сразу к делу! В автокаде, в режиме орто линия не ведется параллельно точки привязки, а непосредственно привязывается к этой точке если щелкать по этой точке. Я чертил в архикаде, там иначе, в компасе тоже так, как мне надо, (хотя компас мне не нравится). может надо прописать макрос или изменить настройки. Я прочитал переписку данной темы, нашел много мне нужного, но это последний вопрос который не дает мне покоя. Привожу схему:

http://files.mail.ru/PT1AWE?t=1
Не ясно почему в режиме орто линия как то может пойти под любым углом, если щелкать в нужную точку привязки. Програмный вариант типа попасть в точку привязки и немного отойти от нее меня не устраивает, это тормозит темп работы.
Заранее извиняюсь если задал глупый вопрос и заранее благодарю за проявленное понимание и помощь.
migel123 вне форума  
 
Непрочитано 21.11.2011, 22:46
#466
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,481
Отправить сообщение для maratovich с помощью Skype™


Есть такая засада в каде, тоже сначала (после компаса) не понимал, потом привык. Привязки срабатывают и ставят конец отрезка к ближайшей точке.
maratovich вне форума  
 
Непрочитано 21.11.2011, 22:47
#467
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от maratovich Посмотреть сообщение
Привязки срабатывают и ставят конец отрезка к ближайшей точке.
Вообще-то это зависит от настроек привязок. Лично у меня привязка "ближайшая" срабатывает тогда и только тогда, когда мне это надо. В остальных случаях работает другой набор.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 21.11.2011, 23:30
#468
forMA


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


При построении такой "строго" ортогональной прямой выключать привязки нафиг вручную или макросом.
forMA вне форума  
 
Непрочитано 22.11.2011, 00:18
#469
Cfytrr

Балка на балку, кирпич на кирпич...
 
Регистрация: 09.10.2007
Питер
Сообщений: 4,810
Отправить сообщение для Cfytrr с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Лично у меня привязка "ближайшая" срабатывает тогда и только тогда, когда мне это надо
Не поделитесь настройками?
__________________
...переменная FILEDIA создана для привлечения пользователей к форумам.
Cfytrr вне форума  
 
Непрочитано 22.11.2011, 01:18
#470
skkkk


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


Offtop:
Цитата:
Сообщение от migel123 Посмотреть сообщение
Друзья, други, товарищи, коллеги, добрые люди, жители форума и все все все кто слышит меня даже из других галактек!!!!
Перейду сразу к делу!
Хорошо что сразу к делу.... А то предчувствуется пятый том "Войны и мира"
skkkk вне форума  
 
Непрочитано 22.11.2011, 02:22
#471
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Cfytrr Посмотреть сообщение
Не поделитесь настройками?
Это какими? osmode (лично мои предпочтения!) = 503; ну и плюс временное включение нужных привязок через Ctrl+Правый клик
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.02.2012, 11:47
#472
Astartes

Котло- и реакторостроение
 
Регистрация: 25.02.2010
Барнаул
Сообщений: 807


Граждане, подскажете. Можно ли сделать макрокомаду типа. Быстрый выбор - мультивыноска - содержимое - поиск по глобальным значениям - [ввести нужное значение]?
Astartes вне форума  
 
Непрочитано 13.02.2012, 08:27
#473
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Быстрый выбор не повесить на макрос, т.к. эта команда только через диалоговое окно работает. Можно с помощью лиспа выкрутиться, если не автокад не LT.
Do$ вне форума  
 
Непрочитано 13.02.2012, 10:57
#474
Astartes

Котло- и реакторостроение
 
Регистрация: 25.02.2010
Барнаул
Сообщений: 807


Автокад полный 2011, но лиспа не знаю. ((
Astartes вне форума  
 
Непрочитано 13.02.2012, 14:22
#475
skkkk


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


Знаю только, как без диалогового окна выбрать все мультивыноски (тут, на форуме научили когда-то)
Код:
[Выделить все]
^C^C(defun mfunc(/ selset) (if (setq selset (ssget '((0 . "MULTILEADER")))) (sssetfirst selset selset)));(mfunc);
Как дальше поступить с этим набором - не знаю. И не совсем ясно, что значит "по глобальным значениям"? А после поиска что делать с этой выноской? Выделить? Зумировать? Править?
skkkk вне форума  
 
Непрочитано 13.02.2012, 18:48
#476
Astartes

Котло- и реакторостроение
 
Регистрация: 25.02.2010
Барнаул
Сообщений: 807


skkkk, Я мультивыносками проставляю позиции. Иногда требуется выделять диапазон, допустим с 31 позиции до 79. Это делается так. Быстрый выбор-мультивыноска-содержимое-поиск по глобальным символам - [3-7][0-9]. То что делать дальше с выделенными мультивыносками это моя печаль. ))) Смысл в том что нужно выделять несколько диапазонов плюс постоянно ошибаюсь в значениях, приходится каждый раз проделывать всю цепочку выбора заново.
Astartes вне форума  
 
Непрочитано 13.02.2012, 20:05
#477
skkkk


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


Снова не понял про глобальные символы
Цитата:
Сообщение от Astartes Посмотреть сообщение
[3-7][0-9]
Лучше бы файл с примером приложить во избежание бесполезных действий - так обычно быстрее дело идет
skkkk вне форума  
 
Непрочитано 13.02.2012, 20:24
#478
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 571


Цитата:
Сообщение от Astartes Посмотреть сообщение
skkkk, Я мультивыносками проставляю позиции. Иногда требуется выделять диапазон, допустим с 31 позиции до 79. Это делается так. Быстрый выбор-мультивыноска-содержимое-поиск по глобальным символам - [3-7][0-9]. То что делать дальше с выделенными мультивыносками это моя печаль. ))) Смысл в том что нужно выделять несколько диапазонов плюс постоянно ошибаюсь в значениях, приходится каждый раз проделывать всю цепочку выбора заново.
Astartes, попробуй так
Код:
[Выделить все]
 
(defun c:qsel()
  (vl-load-com)
  ((lambda(range)
     (if (not (vl-catch-all-error-p range))
       (sssetfirst nil (ssget "_X" (list (cons 0 "MULTILEADER") (cons 304 range))))
       )
     )
    (vl-catch-all-apply 'getstring
      (list t "\nВведите диапазон в формате [начало-конец]: ")
      )
    )
  (princ)
  ); end c:qsel
P.S. В ответ на запрос "Введите диапазон в формате [начало-конец]:" можно будет ввести, наример:
[1-10]
или
[2-6],[12-45]
и т.д.
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 14.02.2012, 05:10
#479
Astartes

Котло- и реакторостроение
 
Регистрация: 25.02.2010
Барнаул
Сообщений: 807


TararykovDG, Спасибо то что нужно.

skkkk, "Поиск по глобальным символам" это оператор в окне быстрого выбора, там же где, =, <, >, <>

Последний раз редактировалось Astartes, 14.02.2012 в 05:46.
Astartes вне форума  
 
Непрочитано 16.02.2012, 08:04
#480
Jonas

конструктор машиностроитель
 
Регистрация: 14.05.2007
Новосибирск
Сообщений: 893


При моделировании часто нужно выполнить вычитание при условии сохранения вычитаемого тела.
Для этого соорудил макрос:

Код:
[Выделить все]
 (defun c:delt (/ es1 es2 p1)
  (setq es1(entsel "Выберите тело: ")
        es2(entsel "Выберите тело для вычитания: ")
         p1(getpoint "Укажите любую точку:"))
  (command "_copy" (car es2) "" p1 p1)
    (command "_subtract" (car es1) "" (car es2) "")
  (command "_solidedit" "_body" "_separate" (car es1) "" "" )
  (command "_erase" pause )
  (princ)
  (princ)
)
Порядок работы:
- указываем тело для вычитания,
- указываем вычитаемое тело,
- указываем любую точку,
на случай если вычитаемое тело полое (труба), выполняется разделение и включается команда удаление,
- указываем удаляемые (не нужные) части.
Jonas вне форума  
 
Непрочитано 21.02.2012, 20:54
#481
gomer

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


Цитата:
Сообщение от Jonas Посмотреть сообщение
Для этого соорудил макрос:
это не макрос. это лиспина, причем весьма корявая! Что мешало написать хотя бы так:
Код:
[Выделить все]
 (defun c:delt ( / *error* es1 es2 )
  (defun *error* (msg) (princ))
  (if (and (setq es1 (car (entsel "\nВыберите тело: ")))
           (setq es2 (car (entsel "\nВыберите тело для вычитания: ")))
    )
    (progn
      (setvar 'cmdecho 0)
      (command "_copy" es2 "" '(0 0) '(0 0))
      (command "_subtract" es1 "" es2 "")
      (command "_solidedit" "_body" "_separate" es1 "" "" )
      (command "_erase" pause )
      (setvar 'cmdecho 1)
    )
  )
  (princ)
)
gomer вне форума  
 
Непрочитано 22.02.2012, 08:41
#482
Jonas

конструктор машиностроитель
 
Регистрация: 14.05.2007
Новосибирск
Сообщений: 893


Цитата:
Сообщение от gomer Посмотреть сообщение
это не макрос. это лиспина, причем весьма корявая! Что мешало написать хотя бы так:
Мешало отсутствие знаний.
Jonas вне форума  
 
Непрочитано 13.03.2012, 03:44
#483
skkkk


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


В 2008-м автокаде работал макрос
Код:
[Выделить все]
^C^C_qsave;_close
А 2011-й просит сохранить изменения еще раз. При больших размерах это небыстро. Причем в 2011-м если файл открыть и сразу закрыть, диалога "Сохранить изменения?.." не возникает. Если открыть, сохранить и закрыть - появляется, гад. Может, кого-то это тоже напрягло, и он нашел решение, как научить КАД не задавать лишних вопросов?
skkkk вне форума  
 
Непрочитано 26.03.2012, 10:05
#484
seregabs


 
Регистрация: 05.03.2012
Санкт-Петербург
Сообщений: 20
<phrase 1=


Цитата:
Сообщение от Volv Посмотреть сообщение
Всем кто делал подсказки спасибо. Отдельное спасибо AlphaGeo.
В итоге вышло сделать кнопку, которая отвечает за поворот копии елемента с опорным углом

Код:
[Выделить все]
^C^C(defun c:kr () (setq ss (ssget)) (command "_rotate" ss "" pause "_c" "_r" (getvar "lastpoint") pause));kr

Отличная кнопка, спасибо! А возможно ли ее зациклить, чтобы, накопировав n-ое кол-во элементов, выходить по Esc ?
seregabs вне форума  
 
Непрочитано 29.03.2012, 02:58
#485
skkkk


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


Так что ли?
Код:
[Выделить все]
^C^C(defun c:kr () (while t (setq ss (entsel)) (command "_rotate" ss "" pause "_c" "_r" (getvar "lastpoint") pause pause)));kr
skkkk вне форума  
 
Непрочитано 29.03.2012, 09:15
#486
Вовочка

пищевая технология
 
Регистрация: 02.06.2009
Киев
Сообщений: 283
<phrase 1=


"*" Звездочку спереди поставь
Вовочка вне форума  
 
Непрочитано 29.03.2012, 10:38
#487
seregabs


 
Регистрация: 05.03.2012
Санкт-Петербург
Сообщений: 20
<phrase 1=


Цитата:
Сообщение от skkkk Посмотреть сообщение
Так что ли?
Код:
[Выделить все]
^C^C(defun c:kr () (while t (setq ss (entsel)) (command "_rotate" ss "" pause "_c" "_r" (getvar "lastpoint") pause pause)));kr
Этот вариант после первого копирования запрашивает выбор объекта для следующего копирования, после чего уже для него надо ввести базовую точку, и угол. Т.е. по сути заменяет после первого копирования нажатие enter (повтор команды вобщем).

А хотелось бы, чтобы после первого копирования исходный объект был "уже выбран" и базовая точка осталась прежней, а кликать только для указания нового опорного угла. По аналогии с обычным копированием, где каждым следующим кликом вставляем объект в новую точку.




Добавление звездочки в самом (если я правильно понимаю) начале как исходного так и предложенного чуть выше варианта приводит к прокручиванию запросов в командной строке.
seregabs вне форума  
 
Непрочитано 29.03.2012, 13:26
#488
skkkk


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


Тогда так, если нужно вертеть копию одного объекта (минуется один enter - подтверждение набора):
Код:
[Выделить все]
^C^C(defun c:kr () (setq ss (entsel)) (setq pt (getpoint "Базовая точка:")) (while t (command "_rotate" ss "" pt "_c" "_r" (getvar "lastpoint") pause pause)));kr
или так, если копии нескольких объектов (множественный выбор):
Код:
[Выделить все]
^C^C(defun c:kr () (setq ss (ssget)) (setq pt (getpoint "Базовая точка:")) (while t (command "_rotate" ss "" pt "_c" "_r" (getvar "lastpoint") pause pause)));kr
Если опять-таки я правильно понял.
skkkk вне форума  
 
Непрочитано 29.03.2012, 14:08
#489
seregabs


 
Регистрация: 05.03.2012
Санкт-Петербург
Сообщений: 20
<phrase 1=


Цитата:
Сообщение от skkkk Посмотреть сообщение
или так, если копии нескольких объектов (множественный выбор):
Работает исправно)
Сперва хотел написать, что в идеале бы еще и первую точку опорного угла использовать заданную при первой операции. А потом подумал, что, быть может, так как сейчас даже и лучше...
Спасибо!
seregabs вне форума  
 
Непрочитано 29.03.2012, 21:26
#490
skkkk


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


Цитата:
Сообщение от seregabs Посмотреть сообщение
первую точку опорного угла использовать заданную при первой операции
Можно и так:
Код:
[Выделить все]
^C^C(defun c:kr () (setq ss (ssget)) (setq pt1 (getpoint "Базовая точка:")) (setq pt2 (getpoint "Опорный угол:")) (while t (command "_rotate" ss "" pt1 "_c" "_r" (getvar "lastpoint") pt2 pause)));kr

Последний раз редактировалось skkkk, 29.03.2012 в 21:34.
skkkk вне форума  
 
Непрочитано 01.04.2012, 11:34
#491
seregabs


 
Регистрация: 05.03.2012
Санкт-Петербург
Сообщений: 20
<phrase 1=


Тоже отлично! Спасибо!
seregabs вне форума  
 
Непрочитано 01.04.2012, 16:54
1 | #492
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


Цитата:
Сообщение от skkkk Посмотреть сообщение
В 2008-м автокаде работал макрос
Код:
[Выделить все]
^C^C_qsave;_close
А 2011-й просит сохранить изменения еще раз. При больших размерах это небыстро. Причем в 2011-м если файл открыть и сразу закрыть, диалога "Сохранить изменения?.." не возникает. Если открыть, сохранить и закрыть - появляется, гад. Может, кого-то это тоже напрягло, и он нашел решение, как научить КАД не задавать лишних вопросов?
^C^C(command "_qsave")(command "_quit" "_Y")
или
^C^C_qsave;_quit;_Y

Последний раз редактировалось roaa, 01.04.2012 в 17:07.
roaa вне форума  
 
Непрочитано 02.04.2012, 14:47
#493
skkkk


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


Цитата:
Сообщение от roaa Посмотреть сообщение
^C^C(command "_qsave")(command "_quit" "_Y")
или
^C^C_qsave;_quit;_Y
Думаю, неужели прокатит в 11-м? Закроет из командной строки диалог "Сохранить изменения...?" Не хочется FILEDIA обнулять...
Не прокатило.
Ладно, обнуляю. И тут не прокатывает!!! Диалог выскакивает всё равно.
Видимо новая опция в целях увеличения бдительности безопасности проделанной работы
Но и в 2008-м ^C^C_qsave;_close; никогда не подводили
skkkk вне форума  
 
Непрочитано 02.04.2012, 21:28
1 | #494
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


Цитата:
Сообщение от skkkk Посмотреть сообщение
Думаю, неужели прокатит в 11-м? Закроет из командной строки диалог "Сохранить изменения...?" Не хочется FILEDIA обнулять...
Для кнопки ^C^C(command "_qsave")(command "_quit" "_Y")пробел
^C^C_qsave;_quit;_Y;
опробывал - работает
roaa вне форума  
 
Непрочитано 02.04.2012, 22:16
#495
skkkk


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


В 2011-м? Странно... У меня не захотел. После выполнения макроса спрашивает опять "Сохранить...?" И при этом, quit закрывает все открытые файлы в текущем окне, а так не надо. Но с close ситуация аналогична.
skkkk вне форума  
 
Непрочитано 04.04.2012, 21:35
1 | #496
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


Цитата:
Сообщение от skkkk Посмотреть сообщение
Странно... У меня не захотел. После выполнения макроса спрашивает опять "Сохранить...?"
попробуйте так
(command "_qsave")(command "_close" "_n")
roaa вне форума  
 
Непрочитано 05.04.2012, 01:20
#497
skkkk


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


roaa, действительно, сработало! Даже при FILEDIA= 1/ Спасибо. Сам бы не додумался никогда. В прежних версиях такие фокусы не прокатывали...
Правда сделал так:
Код:
[Выделить все]
^C^C(command "_qsave")(command "_close" "_y")
Потому как при "_n" выводит еще один запрос "Действительно хотите ли отказаться...?", правда только в командной строке. Но при "_y", хоть и сохраняет повторно, но второй раз очень быстро, - зато надежнее. Как ни странно, без макроса два сохранения гораздо дольше (почти в два раза)
Добавлено: А первый раз пробовал только без "command" , поэтому и не получилось. Слишком отчаялся, видимо, при неудаче первого варианта

Последний раз редактировалось skkkk, 05.04.2012 в 01:29.
skkkk вне форума  
 
Непрочитано 05.04.2012, 11:33
#498
starr74


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


Подскажите, можно ли в AutoCad 2006 без установленного Express сделать такую команду Toggle Frames ^C^C_tframes, скрытие контура маскировки? если возможно то напишите макрос. заранее спасибо
starr74 вне форума  
 
Непрочитано 05.04.2012, 11:51
#499
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 571


Цитата:
Сообщение от starr74 Посмотреть сообщение
Подскажите, можно ли в AutoCad 2006 без установленного Express сделать такую команду Toggle Frames ^C^C_tframes, скрытие контура маскировки? если возможно то напишите макрос. заранее спасибо
Если правильно понял вопрос, то попробуй так
Код:
[Выделить все]
^C^C_.wipeout;_f _On; - включить контур маскировки
^C^C_.wipeout;_f _Off; - выключить контур маскировки
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 05.04.2012, 12:01
#500
ытя


 
Регистрация: 23.09.2005
СПб
Сообщений: 424


Удобнее http://forum.dwg.ru/showpost.php?p=200705&postcount=13
ытя вне форума  
 
Непрочитано 27.04.2012, 11:25
#501
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Помогите доработать макрос по заданию цвета.

Пока используется такой макрос:

Код:
[Выделить все]
*^C^C_change;\;_p;_c;5;;
Но у него есть недостаток. Если промазать мимо объекта то необходимо заново указать, что мне нужно изменить цвет на синий.
Как сделать чтобы можно было объекты выбирать и рамкой и выбором на объекте?

Вообще нужно сделать так:
Если на чертеже есть выбранные объекты, то при нажатии на кнопку сменить цвет.
(Что-то типа
Код:
[Выделить все]
^C^C_change;_p;_c;5;;
)
Если не выбрано, то выбирать объекты и после нажатия Enter сменить цвет.
__________________
Поезд который устал от ржавого здравомыслия рельсов...

Последний раз редактировалось Shoorup, 27.04.2012 в 11:40.
Shoorup вне форума  
 
Непрочитано 27.04.2012, 11:56
#502
ытя


 
Регистрация: 23.09.2005
СПб
Сообщений: 424


Цитата:
Сообщение от Shoorup Посмотреть сообщение
Если на чертеже есть выбранные объекты, то при нажатии на кнопку сменить цвет.
^C^C_chprop;_c;5;;
ытя вне форума  
 
Непрочитано 27.04.2012, 12:32
#503
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


Цитата:
Сообщение от Shoorup Посмотреть сообщение
Помогите доработать макрос по заданию цвета.
^C^C_select;\^C^C_change;_p;;_p;_c;5;;
невыделены объекты - выход по ПКМ
выделены - левая кнопка мыши (ЛКМ)
roaa вне форума  
 
Непрочитано 27.04.2012, 14:04
#504
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


roaa, Спасибо! То что нужно!
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 27.04.2012, 18:49
#505
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


Цитата:
Сообщение от Shoorup Посмотреть сообщение
Помогите доработать макрос по заданию цвета.
то же, но с выбором цвета
^C^C_select;\^C^C_change;_p;;_p;_c;(acad_colordlg 1);;
roaa вне форума  
 
Непрочитано 27.04.2012, 19:57
#506
Profan


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


roaa, а зачем еще ^C^C? Макросы работают и без них:
Код:
[Выделить все]
^C^C_select;\_change;_p;;_p;_c;5;;
^C^C_select;\_change;_p;;_p;_c;(acad_colordlg 1);;
Profan вне форума  
 
Непрочитано 27.04.2012, 22:00
#507
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


Цитата:
Сообщение от Profan Посмотреть сообщение
roaa, а зачем еще ^C^C? Макросы работают и без них:
странно, но без этого команда не работает с выбранными объектами
roaa вне форума  
 
Непрочитано 02.05.2012, 21:44
#508
Никита Ремизов


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


Здравствуйте! пытался создать макрокоманду на основе команды _plot для перевода черетежей в pdf, но столкнулся с проблемой при задании названия файла - каждый раз приходится вбивать вручную. Возможно ли чтобы файл получаемый на выходе получал название листа из которого была произведена печать? саму макрокоманду смогу выложить чуть позже, но в ней ничего важного/сложного.

И еще один вопрос пытался сделать макрокоманду для выбора предыдущих выбранных объектов, но _select;_previous;; - не работает, хотя когда просто вводишь команды через командную строку - всё ок. В чем загвоздка?
Никита Ремизов вне форума  
 
Непрочитано 02.05.2012, 22:27
#509
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


Цитата:
Сообщение от Никита Ремизов Посмотреть сообщение
макрокоманду для выбора предыдущих выбранных объектов
^C^C(command "_.Select" "_p" "")(sssetfirst nil (ssget "_p"))
roaa вне форума  
 
Непрочитано 02.05.2012, 22:52
#510
Никита Ремизов


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


Цитата:
Сообщение от roaa Посмотреть сообщение
^C^C(command "_.Select" "_p" "")(sssetfirst nil (ssget "_p"))
не работает
"лишняя закрывающая скобка на входе"
Никита Ремизов вне форума  
 
Непрочитано 02.05.2012, 23:21
#511
skkkk


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


Цитата:
Сообщение от Никита Ремизов Посмотреть сообщение
Возможно ли чтобы файл получаемый на выходе получал название листа из которого была произведена печать?
Возможно, но содержимое макроса будет зависеть от того *.pc3 файла, который используется для распечатки в *.pdf, а точнее, от тех опций, которые он запросит. В первом приближении макрос будет выглядеть где-то так
Код:
[Выделить все]
^C^C(command "_-plot" "_N" "" "" "DWG To PDF" (strcat (getvar "ctab") ".pdf") "_Y" "_Y")
.
Код:
[Выделить все]
(command "_-plot"
    "_N"; Выполнить детальное задание конфигурации?
    ""; Имя листа или [?] <Лист 1>
    ""; Имя набора параметров листа
    "DWG To PDF"; Имя устройства вывода
    (strcat (getvar "ctab") ".pdf"); Имя файла pdf
    "_Y"; Сохранить изменения параметров листа [Да/Нет]?
    "_Y"; Перейти к печати [Да/Нет]?
)

Это я использовал файл DWG To PDF.pc3 (прилагается). В каждом конкретном случае нужно поработать с командной строкой и посмотреть, что нужно скормить на каждый запрос и затем подставить в макрос. (getvar "ctab") - возвращает имя активного листа.
Ограничения:
1. Будет печататься только текущий лист (активный). Но это похоже то, что нужно.
2. Файл *.pdf сохранится в текущей папке. Если надо другую, добавить в strcat строку с адресом (strcat "C:\\Папка\\" (getvar "ctab") ".pdf")
3. Если файл *.pdf с таким именем уже существует в этой папке (например, захочется нажать эту кнопку на данном листе еще раз), - макрос не сработает, вернее сработает неверно - имя файлу будет присвоено "_Y". В общем, надо допиливать, но информации к действию, думаю пока должно хватить
Цитата:
Сообщение от Никита Ремизов Посмотреть сообщение
макрокоманду для выбора предыдущих выбранных объектов
LISP. Повтор предыдущего выбора элементов. Там несколько вариантов: макросы, лисп - можно выбрать по душе.
Вложения
Тип файла: rar DWG To PDF.rar (1.3 Кб, 86 просмотров)
skkkk вне форума  
 
Непрочитано 02.05.2012, 23:57
#512
perpetule


 
Регистрация: 23.09.2008
Волгоград
Сообщений: 810
<phrase 1= Отправить сообщение для perpetule с помощью Skype™


Цитата:
макрокоманду для выбора предыдущих выбранных объектов
http://forum.dwg.ru/showthread.php?t=58728
#11 пост 100% рабочий код, включил себе в частичный cui.

Цитата:
Возможно ли чтобы файл получаемый на выходе получал название листа из которого была произведена печать
Скорее так: Возможно ли чтобы файлЫ получаемыЕ на выходе получалИ названиЯ листОВ из которЫХ была произведена печать
Макросов, и вообще ничего внешнего дополнительного не треба...
Подшивка - диалог публикации - одно/многолистовой-pdf.
Либо вкладки лайоутов одного dwg (подшивка не треба...), выделение с shift, опубликовать по ПКМ, на встроенный PDF(внешний не катит, задание доп форматов, ищи *.PMP)

Последний раз редактировалось perpetule, 03.05.2012 в 00:09.
perpetule вне форума  
 
Непрочитано 09.06.2012, 15:57
#513
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Можно сделать такое макросом или нужно искать программиста?
Вставить блок в нужную точку, расчленить (внутри солид), и сделать его align (выровнять), при котором точка вставки остается на месте, а указать нужно только вторую точку солида и точку, в которую его нужно довернуть?
Уточнение: имеется в виду поворот в пространстве. Потому и align.

Последний раз редактировалось АлексЮстасу, 10.06.2012 в 17:10.
АлексЮстасу вне форума  
 
Непрочитано 10.06.2012, 00:31
#514
Кулик Алексей aka kpblc
Moderator

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


ИМХО это можно сделать через палитру инструментов.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.06.2012, 01:07
#515
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
ИМХО это можно сделать через палитру инструментов.
Ну, да, так и думалось - вставить такой макрос в палитру инструментов. Если такой макрос возможен.
Вставить блок, так понимаю: ^C^C_insert "block_name";\;;;
А как расчленить при вставке - уже не знаю.
Потом можно добавить _align, но как вместо первой точки - которую и первой точки - куда задать точку вставки блока? Да и откуда _align узнает, что выравнивать нужно именно этот вставленный элемент?

Последний раз редактировалось АлексЮстасу, 10.06.2012 в 01:22.
АлексЮстасу вне форума  
 
Непрочитано 10.06.2012, 15:41
#516
Кулик Алексей aka kpblc
Moderator

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


Блок закинь на палитру, потом на инструменте правый клик - и устанавливай свойства. Там все понятно (просто сейчас нет никакой возможности сделать скриншоты).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.06.2012, 15:58
#517
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Блок закинь на палитру, потом на инструменте правый клик - и устанавливай свойства. Там все понятно (просто сейчас нет никакой возможности сделать скриншоты).
Если в палитру вставить именно блок, то для расчленения там есть специальная строка. Но там некуда добавить другие действия. Например, _align. Там ведь нет командной строки для макроса.
Может быть кто подскажет, как сделать расчленение блока при вставке в макросе?

Последний раз редактировалось АлексЮстасу, 10.06.2012 в 16:14.
АлексЮстасу вне форума  
 
Непрочитано 10.06.2012, 16:38
#518
Кулик Алексей aka kpblc
Moderator

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


А запрос угла поворота - не то?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.06.2012, 16:52
#519
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А запрос угла поворота - не то?
Запрос угла поворота - это же в плоскости? А мне нужен _align - чтобы в пространстве.
АлексЮстасу вне форума  
 
Непрочитано 10.06.2012, 17:01
#520
skkkk


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Вставить блок в нужную точку, расчленить (внутри солид), и сделать его align (выровнять), при котором точка вставки остается на месте, а указать нужно только вторую точку солида и точку, в которую его нужно довернуть?
Если я все верно понял, то
Код:
[Выделить все]
^C^C_-insert;"block_name";_s;1;_r;0;\_rotate;_l;;(getvar "lastpoint");_R;(getvar "lastpoint");\\_explode;_l;
Если
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
его нужно довернуть
но не масштабировать, то можно обойтись без _align.

Добавлено:
Последние посты прочитал после написания своего.
АлексЮстасу, раз надо _align, лучше приложить файл и показать там какую точку вслед за какой этому "элайну" скармливать, не то можно долго гадать. Или хотя бы объяснить порядок действий при _aline: какие точки уже известны (как базовая точка вставки блока), а какие надо спросить у юзера.
Добавлено 2:
И еще может захотеться повтор всех процедур по enter, пробелу или правой кнопке мыши... Ведь может, правда? Не всегда охота тянуться снова к кнопке. Надо сразу определиться.

Последний раз редактировалось skkkk, 10.06.2012 в 17:17.
skkkk вне форума  
 
Непрочитано 10.06.2012, 17:22
#521
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от skkkk Посмотреть сообщение
Если я все верно понял, то
Код:
[Выделить все]
^C^C_-insert;"block_name";_s;1;_r;0;\_rotate;_l;;(getvar "lastpoint");_R;(getvar "lastpoint");\\_explode;_l;
Если но не масштабировать, то можно обойтись без _align.
Добавлено:
Последние посты прочитал после написания своего.
АлексЮстасу, раз надо _align, лучше приложить файл и показать там какую точку вслед за какой этому "элайну" скармливать, не то можно долго гадать. Или хотя бы объяснить порядок действий при _aline: какие точки уже известны (как базовая точка вставки блока), а какие надо спросить у юзера.
Добавлено 2:
И еще может захотеться повтор команды по enter или правой кнопке мыши... Ведь может, правда?
Надо сразу определиться.
Да, я уж осознал, что лучше сразу поподробнее было бы. На картинке сверху блок с нужным телом внутри, внизу тело вдоль 3D полилинии - то, что хотелось бы делать макросом.
Нужно вставить 3D тело (для простоты - цилиндр) с поворотом в пространстве вдоль известной 3D полилинии. Из панели тело можно вставить блоком с последующим расчленением - это уже мне давно kpblc объяснил.
Да, повтор может захотеться По крайней мере, может захотеться научиться его делать.
Миниатюры
Нажмите на изображение для увеличения
Название: вставка_блоков_с_поворотом.JPG
Просмотров: 137
Размер:	15.3 Кб
ID:	81897  
АлексЮстасу вне форума  
 
Непрочитано 10.06.2012, 17:58
#522
skkkk


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


Алекс Юстасу, лучше dwg, потому как неясно на скрине, где базовая точка вставки блока. Как я понимаю, Первая исходная точка для _align у нас - это точка вставки блока, она же его базовая точка, - она спрашивается у пользователя при вставке блока. Вторая исходная точка находится в плоскости цилиндра? Где именно? Ее можно, наверняка, рассчитать математически или геометрически, упразднив один клик. Первая целевая точка и Вторая целевая точка - похоже, что это две любые точки на 3D полилинии, т.е в идеале лучше у пользователя попросить не указать две точки, а выбрать полилинию? И, судя по всему, в опциях _align'a надо ответить Нет на вопрос Масштабировать...? .

Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Да, повтор может захотеться
Тогда лучше лисп, ну или макролисп, - это как больше по душе.
skkkk вне форума  
 
Непрочитано 10.06.2012, 18:08
#523
Кулик Алексей aka kpblc
Moderator

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


ИМХО надо искать тему "Программистам на заметку" - там были варианты программной вставки блока.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.06.2012, 00:40
#524
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от skkkk Посмотреть сообщение
Как я понимаю, Первая исходная точка для _align у нас - это точка вставки блока, она же его базовая точка, - она спрашивается у пользователя при вставке блока. Вторая исходная точка находится в плоскости цилиндра? Где именно? Ее можно, наверняка, рассчитать математически или геометрически, упразднив один клик. Первая целевая точка и Вторая целевая точка - похоже, что это две любые точки на 3D полилинии, т.е в идеале лучше у пользователя попросить не указать две точки, а выбрать полилинию? И, судя по всему, в опциях _align'a надо ответить Нет на вопрос Масштабировать...? .

Тогда лучше лисп, ну или макролисп, - это как больше по душе.
Больше по душе макросы, если бы я сам смог такие писать, и если эта задача макросами решается.
Действия видятся примерно так:
1. Указываю точку, туда вставляется блок.
2. Указываю точку блока, которую нужно поворачивать.
3. Указываю точку, в которую нужно повернуть.
4. Блок поворачивается относительно точки вставки.
5. Блок разбивается.
Указывать линию, вдоль которой нужно выравнивать блок, не общее решение, т.к. такой линии может не быть.
Повтор команды тоже под вопросом, т.к. большинство команд Автокада работает без него. Хотя, сам по себе повтор - очень экономит время-силы.

Про Ваш макрос можно невеже узнать?
^C^C_-insert;"block_name";_s;1;_r;0;\_rotate;_l;;(getvar "lastpoint");_R;(getvar "lastpoint");\\_explode;_l;
Что такое _s после имени блока, что такое _l после поворота и разбиения?
Про getvar боюсь даже спрашивать
Вложения
Тип файла: dwg
DWG 2004
вставка_блоков_с_поворотом1.dwg (323.6 Кб, 4390 просмотров)
АлексЮстасу вне форума  
 
Непрочитано 11.06.2012, 05:20
#525
skkkk


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


Ну раз
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Больше по душе макросы...
и есть мечта
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
...если бы я сам смог такие писать...
а также
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
...повтор может захотеться...
то предлагаю остановится на макролиспе.
Тут несколько иной синтаксис, но разобраться несложно.
Определяем нашу новую функцию:
Код:
[Выделить все]
(defun C:InsertAlign ())
и просим ее обращаться в командную строку AutoCADa, своевременно подкармливая необходимыми аргументами (в нашем случае это, например, точки или объект - блок или строка "блок_цилиндр" ):
Код:
[Выделить все]
(defun C:InsertAlign () (command "_-INSERT" "блок_цилиндр" "_S" "1" "_R" "0" pause))
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Что такое _s...?
это опция _Scale (Масштаб) команды "_-insert". Можно написать и по-русски "М", но тогда макрос не сработает у приятеля с английской версией. Опции англокоманд можно взять на autodesk.com в разделе Command Reference. Чуть-чуть заморочек - и даже китаец сможет использовать этом макросик
"1" - величина масштаба
_R - _rotate - поворот, он пока у нас нулевой ("0")
pause - это как в макросах слэш "\", то есть пауза программы, ожидание ответа пользователя
Так вот. Мы вставили блок. Теперь надо его "отЪэлайнить" . Продолжаем посылать челобитные в командную строку:
Код:
[Выделить все]
...."_ALIGN" "_L" "" (getvar "lastpoint")...
"_L" - это ответ _last (последний объект, над которым производились процедуры) на вопрос AutoCAD Выберите объекты:
"" - пустой ввод, enter, правая кнопка мыши
(getvar "lastpoint") - эта конструкция позволяет получить координаты последней фигурирующей точки, а мы помним, что определили ее в pause при выборе точки вставки блока. Ведь помним, да?
Добавив еще пару запросов точек со своими подсказками да эксплоудик, плюс непосредственный запуск созданной нами команды, получим что-то вроде
Код:
[Выделить все]
^C^C(defun C:InsertAlign () (command "_-INSERT" "блок_цилиндр" "_S" "1" "_R" "0" pause "_ALIGN" "_L" "" (getvar "LASTPOINT") (getvar "LASTPOINT") (getpoint "Указываю точку блока, которую нужно поворачивать:") (getpoint "Указываю точку, в которую нужно повернуть:") "" "_N" "_EXPLODE" "_L"));InsertAlign
Ставим на кнопку, тестируем. Должно повторяться по enter.
skkkk вне форума  
 
Непрочитано 11.06.2012, 15:00
#526
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от skkkk Посмотреть сообщение
то предлагаю остановится на макролиспе.
Тут несколько иной синтаксис, но разобраться несложно.
...
Ставим на кнопку, тестируем. Должно повторяться по enter.
Спасибо, все срослось!
Удалось осилить и Ваше разбиение объекта, и Ваше запоминание последней точки и последнего элемента. Звездочка в начале - для самоповтора макроса.
И аж два варианта: для вставки 3D модели с ориентацией ее в пространстве вдоль ее оси, и для вставки 3D модели с ориентацией ее в пространстве вдоль произвольно указанной оси.
Макрос для вставки 3D модели с нужным разворотом в пространстве с использованием метода Хмурого - через назначение UCS:
Код:
[Выделить все]
*^C^C_ucs _za \\_-insert "блок_3D_модели" (getvar "lastpoint");;;;_ucs _w _explode;_l;
1. указываем первую точку направления (оси Z ucs),
2. указываем вторую точку направления (оси Z ucs), она же точка вставки,
3. уже развернутый блок сам разбивается,
4. возвращается мировая система координат.
А есть способ вернуть не мировую, а ту систему координат, которая была до запуска макроса?

Но для общего случая нужно все-таки ALIGN, т.к. 3D модели могут быть сделаны уже с каким-то наклоном:
Код:
[Выделить все]
*^C^C_-insert "блок_3D_модели";\;;;_align _l; (getvar "lastpoint") (getvar "lastpoint") \\;;_explode;_l;
1. Указываем точку вставки,
2. указываем точку, за которую нужно повернуть,
3. указываем точку, в которую нужно повернуть,
4. блок сам разбивается.

Последний раз редактировалось АлексЮстасу, 13.06.2012 в 20:24.
АлексЮстасу вне форума  
 
Непрочитано 14.06.2012, 20:57
#527
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Заблудился в трех соснах, подскажите, плз!
Нужно выбрать блок из списка, а потом вызвать align. Пишу:
Код:
[Выделить все]
^C^C_insert;\_align _l;;
В 2006 работает, а в 2012 не вызывается окно вставки блоков, не появляется список доступных блоков.
Что неправильно?
Добавлено при проверке в 2008: этот макрос сработает в 2008 только после добавления точки с запятой перед _align!
Вставка точек перед командами ничего не меняет.

Если в моем русифицированном 2012 вместо _.insert в макросе написать ВСТАВИТЬ, то окно вставки блоков тоже не вызывается!
Если использовать макролисп
Код:
[Выделить все]
(command "_INSERT" ...
, то окно вставки блоков в 2012 тоже не вызывается.

Если в 2012 в макросе ничего, кроме
Код:
нет, то окно вставки блоков открывается. Но стоит добавить хоть что угодно, то _insert ждет ввода имени блока из командной строки. Что я не так делаю?

Последний раз редактировалось АлексЮстасу, 15.06.2012 в 18:16.
АлексЮстасу вне форума  
 
Непрочитано 26.06.2012, 10:53
#528
Astartes

Котло- и реакторостроение
 
Регистрация: 25.02.2010
Барнаул
Сообщений: 807


Приветствую. Можно ли оформить в макрокоманду вот такую цепочку.
Например: в таблице в графе позиция, вставляю поле, поле ссылается на объект мультивыноска.
Вставить поле-категория полей объекты -объект - тип объекта - выбрать объект - содержимое.
Тоже самое для атрибута блока, только там всесто "содержимого", нужно выбрать "значение".
Т.е. после вставки поля, нажал кнопку макроса, выбрал объект-цель.
Astartes вне форума  
 
Непрочитано 27.06.2012, 04:28
#529
skkkk


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


Offtop: Astares, а можно поподробнее после "Приветствую"?
Это я к тому, что лучше бы чётче формулировать мысли, точнее сказать, алгоритм действий понимать и правильно объяснить. Можно и своими словами, но последовательно и обстоятельно, примерно так (жирным запросы в командной строке):
Цитата:
Выбрать ячейку: - вставляется поле со ссылкой на мультивыноску (какую?)
Выбрать мультивыноску: (либо она будет выбрана раз и навсегда, например, при использовании файла в качестве шаблона?)
....и т.д.

А во-первых, по-моему, это сделать макрокомандами нельзя. Я бы посоветовал обратиться к поиску по словам, допустим, поле таблица и в какой-либо подходящей теме задать лисповедам уже ОСОЗНАННЫЙ вопрос и получить ПРАВИЛЬНУЮ помощь или узнать причину, по которой таковая невозможна

Добавлено:
Offtop: Только вот "объект-цель" всё же придется выбирать сначала, а уж потом ячейку, в которую вставляется поле, ссылающееся на "объект-цель". Да и целью тут, как я понял из описания задачи, является ячейка, а вовсе не мультивыноска, которая является исходным объектом (в противоположность целевому). В процессе алгоритмизации (осмысления условия задачи) важно не путать понятия, которые почти всегда идут на поводу у логики и здравого смысла. "Почти" - потому что бывают глюки, а обходные пути с логикой бывают в сомнительных отношениях

Последний раз редактировалось skkkk, 27.06.2012 в 04:51.
skkkk вне форума  
 
Непрочитано 24.08.2012, 19:19
#530
Никита Ремизов


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


А кто-нибудь может подсказать как макросом листу задать один из форматов вирт. принтера "dwg to pdf.pc3"?
Никита Ремизов вне форума  
 
Непрочитано 26.09.2012, 13:29
#531
Astartes

Котло- и реакторостроение
 
Регистрация: 25.02.2010
Барнаул
Сообщений: 807


Пишу в данной теме, так как проблема с макросом который взял отсюда.
^C^C^P_.-purge;_a;;_n;_.-purge;_a;;_n;_.-purge;_r;;_n;_.audit;_y;_.-scalelistedit;_r;_y;_e;_.-purge;_a;;_n;

Вводная: Работал на Акад 2011, русский, 32 бита, вин ХР. Макрос работал, все нормально.
Перешел на Акад 2012, русский, 64 бита вин 7. И макрос стал работать как то странно.
Провел эксперимент. (Лог эксперимента с пометками в приложении)
Открываю чистый чертеж. Делаю Аудит, все в порядке. Вставляю пару блоков с палитры инструментов, удаляю их, делаю Аудит, все в порядке. После этого сразу запускаю макрос, выдается сообщение "Обнаружены ошибки программы, рекомендуется сохранить чертеж и перезапустить программу". После этого делаю Аудит, он находит около 30 ошибок.
Т.е. получается макрос наделал ошибок в чертеже. Вот и не понятно как это так. Откуда ошибки в чертеже взялись, до запуска макроса Аудит ничего не находил.

УПД: В 2011 32 ХР, также после макроса появляются ошибки. Просто не выводится сообщение "Обнаружены ошибки программы, рекомендуется сохранить чертеж и перезапустить программу".
Итак резюме: Если все исправить аудитом, после него будет 0 ошибок. Запускаем макрос, после него аудит, эти ошибки опять появляются, так можно до бесконечности.


КРЫС помоги, я у тебя этот макрос взял. ))
Миниатюры
Нажмите на изображение для увеличения
Название: Ошибка1.jpg
Просмотров: 125
Размер:	28.7 Кб
ID:	87567  
Вложения
Тип файла: dwg
DWG 2007
Чертеж2.dwg (72.2 Кб, 4369 просмотров)
Тип файла: doc Лог эксперимента.doc (76.5 Кб, 130 просмотров)

Последний раз редактировалось Astartes, 26.09.2012 в 13:53.
Astartes вне форума  
 
Непрочитано 26.09.2012, 14:38
#532
Кулик Алексей aka kpblc
Moderator

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


Возможности скачать и проверить файл нет, поэтому "навскидку": в блоках есть атрибуты, для которых слой в описании блока не "0"
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 26.09.2012, 15:27
#533
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от Astartes Посмотреть сообщение
Пишу в данной теме, так как проблема с макросом который взял отсюда.
^C^C^P_.-purge;_a;;_n;_.-purge;_a;;_n;_.-purge;_r;;_n;_.audit;_y;_.-scalelistedit;_r;_y;_e;_.-purge;_a;;_n;

Вводная: Работал на Акад 2011, русский, 32 бита, вин ХР. Макрос работал, все нормально.
Перешел на Акад 2012, русский, 64 бита вин 7. И макрос стал работать как то странно.
Провел эксперимент. (Лог эксперимента с пометками в приложении)
Открываю чистый чертеж. Делаю Аудит, все в порядке. Вставляю пару блоков с палитры инструментов, удаляю их, делаю Аудит, все в порядке. После этого сразу запускаю макрос, выдается сообщение "Обнаружены ошибки программы, рекомендуется сохранить чертеж и перезапустить программу". После этого делаю Аудит, он находит около 30 ошибок.
Т.е. получается макрос наделал ошибок в чертеже. Вот и не понятно как это так. Откуда ошибки в чертеже взялись, до запуска макроса Аудит ничего не находил.

УПД: В 2011 32 ХР, также после макроса появляются ошибки. Просто не выводится сообщение "Обнаружены ошибки программы, рекомендуется сохранить чертеж и перезапустить программу".
Итак резюме: Если все исправить аудитом, после него будет 0 ошибок. Запускаем макрос, после него аудит, эти ошибки опять появляются, так можно до бесконечности.


КРЫС помоги, я у тебя этот макрос взял. ))
Я делаю проверки-чистки файлов своим макросом: removeallproxy;_y;_audit;_y
И с недавних пор (последний месяц - не больше) после моего макроса в моем Акад 2012, русский, 64 бита вин 7 стало появляться такое же окно об ошибках программы.
Общего в наших макросах "audit;_y". Что за засада?
Радует, что Автокад при этом не падает.
АлексЮстасу вне форума  
 
Непрочитано 26.09.2012, 15:34
#534
Кулик Алексей aka kpblc
Moderator

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


Ну как я и предполагал - атрибуты лежат на слоях, отличных от "0". об этой ошибке достаточно давно Андрей Бушман где-то говорил.
Выход: отредактировать блоки так, чтобы атрибуты лежали на слое "0". Или мириться с подобными сообщениями.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 26.09.2012, 16:17
#535
Astartes

Котло- и реакторостроение
 
Регистрация: 25.02.2010
Барнаул
Сообщений: 807


Кулик Алексей aka kpblc, Так, а почему стандартный Аудит ничего плохого не видит в атрибуте на слое "0", а макрос видит. Т.е. выбор либо пользоваться стандартным Аудит или пользоваться макросом, но атрибуты переводить на слой "0"?.
Второе, есть блоки без атрибутов, а таже самая история. Завтра на работу приду, выложу файл.
Astartes вне форума  
 
Непрочитано 26.09.2012, 16:46
#536
Кулик Алексей aka kpblc
Moderator

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


Обрати внимание: ошибки аудит выдает сразу после _.purge. Значит, ошибка в алгоритме работы _.purge. Можно поиграться с порядком очистки: сначала, например, блоки, потом слои, а потом уже все остальное + аудит.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 26.09.2012, 18:00
#537
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Проведите Audit вручную, с опцией "не исправлять ошибки" и посмотрите по логу командной строки что за ошибки.
У меня было такое в автокаде 2010, при проверке чертежа выскакивала именно такое окно с ошибкой. Посмотрел по логу Audita - не нравилась переменная DIMPOST.
После смены текущего размерного стиля ошибка пропала.
Do$ вне форума  
 
Непрочитано 27.09.2012, 07:06
#538
Astartes

Котло- и реакторостроение
 
Регистрация: 25.02.2010
Барнаул
Сообщений: 807


Do$, Вот сделал по вашему. Какаято проблема со слоями. Наверное это и есть о чем Алексей говорил. Атрибуты не на "0".
Команда: _AUDIT
Исправить все обнаруженные ошибки? [Да/Нет] <Н>:



Проверка заголовка


Проверка таблиц


Проверка объектов, проход 1

Проход 1: проверено объектов: 300
Проверка объектов, проход 2

Проход 2: проверено объектов: 200 AcDb2dVertex(2A2) Неверный слой
eWasErased $AUDIT-BAD-LAYER
AcDb2dVertex(2A3) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDb2dVertex(2A4) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDb2dVertex(2A5) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDb2dVertex(2AF) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDb2dVertex(2B0) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDb2dVertex(2B1) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDb2dVertex(2B4) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDb2dVertex(2B5) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDb2dVertex(2B6) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDb2dVertex(2B7) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDb2dVertex(2C3) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDb2dVertex(2C4) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDb2dVertex(2C5) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDb2dVertex(2C6) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDb2dVertex(2D0) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDb2dVertex(2D1) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDb2dVertex(2D2) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDb2dVertex(2D5) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDb2dVertex(2D6) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDb2dVertex(2D7) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDb2dVertex(2D8) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDbBlockReference(30F)
Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDbBlockReference(30F) не восстановлен.
AcDbAttribute(310) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDbAttribute(310) не восстановлен.
AcDbAttribute(311) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDbAttribute(311) не восстановлен.
AcDbAttribute(312) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDbAttribute(312) не восстановлен.
AcDbAttribute(313) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDbAttribute(313) не восстановлен.
AcDbAttribute(318) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDbAttribute(318) не восстановлен.
AcDbSequenceEnd(31D)
Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDbSequenceEnd(31D) не восстановлен.
AcDbBlockReference(31E)
Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDbBlockReference(31E) не восстановлен.
Проход 2: проверено объектов: 300 AcDbAttribute(33D) Неверный слой
eWasErased $AUDIT-BAD-LAYER
AcDbAttribute(33D) не восстановлен.
AcDbAttribute(33E) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDbAttribute(33E) не восстановлен.
AcDbAttribute(33F) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDbAttribute(33F) не восстановлен.
AcDbSequenceEnd(340)
Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDbSequenceEnd(340) не восстановлен.
AcDbBlockReference(341)
Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDbBlockReference(341) не восстановлен.
AcDbAttribute(342) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDbAttribute(342) не восстановлен.
AcDbSequenceEnd(343)
Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDbSequenceEnd(343) не восстановлен.
AcDbAttribute(34B) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDbAttribute(34B) не восстановлен.
AcDbAttribute(34C) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDbAttribute(34C) не восстановлен.
AcDbAttribute(34D) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDbAttribute(34D) не восстановлен.
AcDbAttribute(34E) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDbAttribute(34E) не восстановлен.
AcDbAttribute(353) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDbAttribute(353) не восстановлен.
AcDbAttribute(378) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDbAttribute(378) не восстановлен.
AcDbAttribute(379) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDbAttribute(379) не восстановлен.
AcDbAttribute(37A) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDbAttribute(37A) не восстановлен.
AcDbAttribute(37D) Неверный слой eWasErased $AUDIT-BAD-LAYER
AcDbAttribute(37D) не восстановлен.

Проверка блоков


Проверено блоков: 1

Всего найдено ошибок: 46, исправлено: 0
Astartes вне форума  
 
Непрочитано 05.10.2012, 13:14
#539
Astartes

Котло- и реакторостроение
 
Регистрация: 25.02.2010
Барнаул
Сообщений: 807


Приветствую. Вот http://forum.dwg.ru/showpost.php?p=397211&postcount=227 взял хороший лиспик. Удлинить/укоротить линию в две стороны одновременно. Вот только работает лисп в системе координат World. Можно ли сделать так чтобы лисп работал в любой системе координат?
Astartes вне форума  
 
Непрочитано 09.10.2012, 12:57
#540
hans-zemmer


 
Регистрация: 09.10.2012
Калининград
Сообщений: 7


Помогите. Нужна макрокоманда, которая построит фигуру по контурам (по аналогии штриховки), и сделает ее offset влево/вправо/вверх - 15мм, вниз - 12мм.
Спасибо.
hans-zemmer вне форума  
 
Непрочитано 09.10.2012, 15:19
#541
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от hans-zemmer Посмотреть сообщение
Помогите. Нужна макрокоманда, которая построит фигуру по контурам (по аналогии штриховки), и сделает ее offset влево/вправо/вверх - 15мм, вниз - 12мм.
Спасибо.
"фигуру" - это 3Д тело? Скорее всего тогда нужна не макрокоманда, а программа. Т.е., скорее всего, нужно в тему программирования.
АлексЮстасу вне форума  
 
Непрочитано 09.10.2012, 15:51
#542
hans-zemmer


 
Регистрация: 09.10.2012
Калининград
Сообщений: 7


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
"фигуру" - это 3Д тело? Скорее всего тогда нужна не макрокоманда, а программа. Т.е., скорее всего, нужно в тему программирования.
Написал "фигуру", т.к. она может быть произвольной по форме. 2D. Смотрите в приложении, что нужно. Без проставления размеров, естественно.
Вложения
Тип файла: dwg
DWG 2000
пример.dwg (32.1 Кб, 4543 просмотров)
hans-zemmer вне форума  
 
Непрочитано 09.10.2012, 16:12
#543
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от hans-zemmer Посмотреть сообщение
Написал "фигуру", т.к. она может быть произвольной по форме. 2D. Смотрите в приложении, что нужно. Без проставления размеров, естественно.
В макросе сначала сделайте _boundary - создайте замкнутый контур, а потом _offset на 0.15. А чтобы "низ" офсетился на 0.12 - это к программисту, по-моему.
АлексЮстасу вне форума  
 
Непрочитано 12.10.2012, 17:13 ВОЛШЕБНЫЙ ПЕНДЕЛЬ
#544
perpetule


 
Регистрация: 23.09.2008
Волгоград
Сообщений: 810
<phrase 1= Отправить сообщение для perpetule с помощью Skype™


Что за что отвечает, не расписываю - инфа открыта, некоторые переменные имеют и подводные камни, - для 2D
Код:
[Выделить все]
 _.RTDISPLAY 1 _.BPARAMETERFONT TXT.SHX _.BPARAMETERCOLOR 20 _.FIELDDISPLAY 1 _.XDWGFADECTL 0 _.OLEFRAME 2 _.IMAGEFRAME 2 _.PDFFRAME 2 _.EXTNAMES 1 _.SAVETIME 60 _.SDI 1 _.TASKBAR 0 _.PROXYNOTICE 0 _.TREEDEPTH -3020 _.REGENMODE 0 _.LAYLOCKFADECTL 50 
perpetule вне форума  
 
Непрочитано 15.10.2012, 16:26
#545
nikepiter

Инженер
 
Регистрация: 16.03.2009
Санкт-петербург
Сообщений: 77
<phrase 1= Отправить сообщение для nikepiter с помощью MSN Отправить сообщение для nikepiter с помощью Skype™


Уважаемые, подскажите, пожалуйста, есть ли возможность сделать команду, при которой в открывающемся окне печати было бы уже проставлено количество экземпляров 2 (3 и тп)?

То есть чтобы при печати из модели большого количества листов не требовалось каждый раз проставлять вручную количество экземпляров. Или для этого не требуется макрокоманда и это делается в настройках?
__________________
Что нам стоит дом построить, нарисуем будем жить!!!
nikepiter вне форума  
 
Непрочитано 15.10.2012, 17:27
#546
perpetule


 
Регистрация: 23.09.2008
Волгоград
Сообщений: 810
<phrase 1= Отправить сообщение для perpetule с помощью Skype™


Набор параметров листа (поисковый запрос по форуму) - работает и в модели.
perpetule вне форума  
 
Непрочитано 22.10.2012, 23:49
#547
Sta1917

геодезист
 
Регистрация: 21.03.2009
Санкт-Петербург
Сообщений: 67


Здравствуйте, помогите с макросом: вставляется блок с единственным атрибутом (берется из Z блока), выбирает его, ждет ввода положения Z, после делает регенерацию и превращает атрибуты в текст.
Цитата:
^C^C_-insert block;\1 1 0;_select;_L;\\\_regen;_burst;_L
Споткнулся на выборе и ожидании ввода после вставки.
Sta1917 вне форума  
 
Непрочитано 23.10.2012, 04:00
#548
Vova

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


Для начала почини burst, который в оригинале not good. Поищи по этому слову лисп от VVA
Vova вне форума  
 
Непрочитано 23.10.2012, 09:49
#549
Sta1917

геодезист
 
Регистрация: 21.03.2009
Санкт-Петербург
Сообщений: 67


Спасибо, починил, а как сделать это одной командой? Сейчас работают 2 кнопки: вставка блока/ вручную выделение блока и изменение Z через окно свойств/регенерация и расчленение.
Sta1917 вне форума  
 
Непрочитано 15.11.2012, 10:52
#550
Jonas

конструктор машиностроитель
 
Регистрация: 14.05.2007
Новосибирск
Сообщений: 893


Для выполнения стыковок и врезок одной детали с другой (например труб) писал макросы но поскольку без лисп-функций не обойтись, написал лиспы.
delt - для стыковки одной трубы к другой без отверстий.
delt2 - для для пристыковки трубы в прорезанное отверстие.
delt3 - для пристыковки трубы к трубе с отверстием равным внутреннему диаметру первой трубы.
В общем реализовал желание делать это двумя кликами - получилось.
Я не программист, наверно написано коряво, не судите а если можно поправьте.
Вложения
Тип файла: lsp delt.LSP (529 байт, 71 просмотров)
Тип файла: lsp delt2.LSP (516 байт, 67 просмотров)
Тип файла: lsp delt3.LSP (1.0 Кб, 67 просмотров)
Jonas вне форума  
 
Непрочитано 10.12.2012, 08:56
#551
Astartes

Котло- и реакторостроение
 
Регистрация: 25.02.2010
Барнаул
Сообщений: 807


Подскажите пожалуйста. Не получается макрокоманда.
Есть лисп по выделению мультивыносок по значению.
Нужно: qsel(лисп) -> ввел значение (мультивыноска выделилась) -> _ddedit -> меняю значение на нужное.
Написал вот такой код ^C^C_qsel;\;_ddedit;\ , но он не работает. Хотя теже действия последовательно делаю через командную строку все нормально.

ЗЫ: Еще вопрос. Как записать команды в макрос ctrl+A и ctrl+F (во время редактирования)?

УПД: Нашел правильное сочетание: ^C^C_qsel;\_ddedit. А вот команды для ком. строки в режиме редактирования "выделить все" и "редактировать поле" не нашел
Вложения
Тип файла: lsp Diapazon mleader.lsp (343 байт, 67 просмотров)

Последний раз редактировалось Astartes, 12.12.2012 в 05:49.
Astartes вне форума  
 
Непрочитано 21.01.2013, 11:49
1 | #552
LENTO


 
Регистрация: 18.01.2013
Киев
Сообщений: 4


Уважаемые форумчане! Так как в макрокомандах только начал разбираться и не могу найти ошибку в следующем макросе ^C^CКонтур;Д;К;Н;Список; (русский автокад).Суть в том чтобы после команды контур открывался список с его свойствами. Так как у меня Автокад 2011 LT применять лисп не могу!!!
LENTO вне форума  
 
Непрочитано 21.01.2013, 11:54
#553
Jonas

конструктор машиностроитель
 
Регистрация: 14.05.2007
Новосибирск
Сообщений: 893


Цитата:
Сообщение от LENTO Посмотреть сообщение
Уважаемые форумчане! Так как в макрокомандах только начал разбираться и не могу найти ошибку в следующем макросе ^C^CКонтур;Д;К;Н;Список; (русский автокад).Суть в том чтобы после команды контур открывался список с его свойствами. Так как у меня Автокад 2011 LT применять лисп не могу!!!
Лучше скажите какую задачу решаете (чего хотите)?
__________________
Из честолюбия или чувства долга не может родиться ни чего ценного. А. Эйнштейн
Jonas вне форума  
 
Непрочитано 21.01.2013, 11:56
#554
Кулик Алексей aka kpblc
Moderator

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


Команда _boundary требует предварительного выбора. Можно попробовать так:
Код:
[Выделить все]
^C^C_.-boundary;_a;_b;_n;_p;\;_.properties;_select;_last
P.S. Работу не проверял.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 21.01.2013, 14:18
#555
LENTO


 
Регистрация: 18.01.2013
Киев
Сообщений: 4


^C^C_.-boundary;_a;_b;_n;_p;\;_.properties;_select;_last


Спасибо за быстрый ответ НО кнопка не совсем работает, после выбора объекта
все кабы зацикливается и просит ввести параметры с начала!

Суть задачи чтобы не обводить полилинией объекты из отрезков и т.п.(чтоб узнать площадь) а выбрать узнаваемый контур после чего выводятся его свойства. Извините если не совсем ясно объясняю
LENTO вне форума  
 
Непрочитано 21.01.2013, 14:59
#556
Кулик Алексей aka kpblc
Moderator

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


Сначала надо выбрать объекты, потом уже запускать макрос.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 22.01.2013, 10:40
#557
LENTO


 
Регистрация: 18.01.2013
Киев
Сообщений: 4


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Сначала надо выбрать объекты, потом уже запускать макрос.
Все равно даже после первоначального выбора объектов и запуска макроса кнопка просит выбрать объекты и задать параметры( контур, островки, объект).
Может это все резаный автокад LT
LENTO вне форума  
 
Непрочитано 22.01.2013, 16:24
#558
Кулик Алексей aka kpblc
Moderator

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


pickadd = ?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.01.2013, 12:41
#559
LENTO


 
Регистрация: 18.01.2013
Киев
Сообщений: 4


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
pickadd = ?
Значение системной переменной PICKADD =1 . Пробовал менять на 0 и 2, увы нечего не получаеться,ситуация ка раньше! Но даже после проделанных операций по созданию контура его свойства не выводятся, то есть к команде свойства дело не доходит
LENTO вне форума  
 
Непрочитано 22.02.2013, 11:41
#560
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


Макрос для перевода нескольких линий в полилинии:

(vl-cmdf "._PEdit" "_m" (ssget '((0 . "LINE"))) "" "_y" "")
roaa вне форума  
 
Непрочитано 22.02.2013, 11:42
#561
Кулик Алексей aka kpblc
Moderator

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


roaa, попробуй поставить peditaccept в 0 и снова запусти макрос. Получишь на выходе ошибку.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 22.02.2013, 11:48
#562
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


Autocad 2008 - русский, peditaccept равен 0... ошибок нет...
roaa вне форума  
 
Непрочитано 22.02.2013, 12:40
#563
Кулик Алексей aka kpblc
Moderator

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


Тьфу, блин, переклинило Поставь в 1.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 22.02.2013, 14:13
#564
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Тьфу, блин, переклинило Поставь в 1.
И так попробывал, и сяк...ошибок не возникает...команда отрабатывает свое полностью...Дома на 13 каде проверю.

Проверил. Все в норме...работает.

Последний раз редактировалось roaa, 22.02.2013 в 20:46.
roaa вне форума  
 
Непрочитано 24.02.2013, 13:32
#565
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


Зацикленное перемещение объектов. Выход по второму клику ПКМ.
^C^C(while (ssget) (vl-cmdf "._move" "_p" "" pause pause))
roaa вне форума  
 
Непрочитано 26.02.2013, 11:39
#566
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Прошу помощи в реализации макроса динамического блока (ДБ).
Есть файл "dwgRele_03.dwg" с единственным блоком "Rele_N"
Напомню, что имя файла и имя блока должны быть разными, иначе AutoCAD выдаст ошибку: "Блок ... ссылается сам на себя". После вставки в чертеж по кнопке вставляется простой блок с именем "dwgRele_03" из чертежа "dwgRele_03.dwg" содержащий ДБ "Rele_N". Блок "dwgRele_03" нужно расчленить чтобы он "превратился" в ДБ "Rele_N". Других путей я не знаю.

ДБ вставляется в чертежи по кнопке с макросом:
Код:
[Выделить все]
^C^C_-insert;dwgRele_03;\1;;;_.explode;_last;_.-purge;_all;;_n;
Во время вставки в чертеж вставляется два ДБ. Один с именем "dwgRele_03.dwg", другой "Rele_N". После вставики "dwgRele_03.dwg" пуржится макросом и остается только "Rele_N".
Но есть одно "волосатое НО"... При повторном нажатии идет значительная задержка вставки блока (минута) при этом в командной строке пишет: "Повторное определение блока Rele_N пропущено.", AutoCAD виснет на минуту, потом отвисает и вроде как работает как обычно дальше. Экспериментами удалось обнаружить, что проблемы тормозов проявляют себя только если в чертеже нет вхождения блока dwgRele_03.
т.е. если макрос написать так:
Код:
[Выделить все]
^C^C_-insert;dwgRele_03;\1;;;_.explode;_last;
то тормозов не будет. Но хочется же чтобы блока "dwgRele_03" в чертеже небыло.

Поэтому может кто подскажет как реализовать такое:
1. Вставляем блок по старому макросу с удалением блока "dwgRele_03"
Код:
[Выделить все]
^C^C_-insert;dwgRele_03;\1;;;_.explode;_last;_.-purge;_all;;_n;
2. Если в чертеже есть блок "Rele_N" то выполнить макрос
Код:
[Выделить все]
^C^C_-insert;Rele_N;\1;1;0;;;;;;;
если нет, то выполнить макрос:
Код:
[Выделить все]
^C^C_-insert;dwgRele_03;\1;;;_.explode;_last;_.-purge;_all;;_n;

Offtop: Перелопачивал свои блоки... нашел блок с именем "dwgRU" - Выравниватель
__________________
Поезд который устал от ржавого здравомыслия рельсов...

Последний раз редактировалось Shoorup, 26.02.2013 в 11:58.
Shoorup вне форума  
 
Автор темы   Непрочитано 26.02.2013, 12:18
#567
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,824
<phrase 1=


Shoorup, когда-то напарывался на файл в котором описание динамики блока было описано непосредственно в самом файле, а не в реакторе блока. После вставки его как блока получался динамический блок. Вот только не могу вспомнить где это видел.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 26.02.2013, 14:13
#568
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Цитата:
Сообщение от zenon Посмотреть сообщение
описание динамики блока было описано непосредственно в самом файле...
zenon, спасибо за наводку!
Почему-то сразу до этого не додумался. Нужно описывать ДБ не отдельным блоком в чертеже, а заходить в редактор блоков и выбирать там <Текущий чертеж> и там все описывать. Ну а макрос простая вставка блока.
Код:
[Выделить все]
^C^C_-insert;dwgRele_03;\1;1;0;;;;;;;;;;
Только все переделывать накорню... скопировать описание блока в чертеж не получится. Работы на день-два точно...
__________________
Поезд который устал от ржавого здравомыслия рельсов...

Последний раз редактировалось Shoorup, 26.02.2013 в 15:54.
Shoorup вне форума  
 
Непрочитано 27.02.2013, 12:45
#569
Xara

Помидорка
 
Регистрация: 03.02.2012
Сообщений: 135


Люди, а как в макрос записать путь к блоку в DWG-файле?
Мой блок Т1 определен в файле tables_draw_new в папке d:\st_functions\add_st.
Я прописываю в макрос команду
Код:
[Выделить все]
^C^C(defun C:inscommand () (command "_.-INSERT" "d:\st_functions\add_st\tables_draw_new\T1" pause "" "" "") (command "_explode" entlast ""));inscommand
На что товарищ автокад мне говорит
Код:
[Выделить все]
(defun C:inscommand () (command "_.-INSERT" "d:
и не желает выполнять вставку блока.
ps: (двойные слэши "\\" пробовал, не катит)

Что же я не так делаю?
__________________
Боишься - не делай. Делаешь - не бойся.
Xara вне форума  
 
Непрочитано 27.02.2013, 12:51
#570
Кулик Алексей aka kpblc
Moderator

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


Попробуй обратные слеши.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 27.02.2013, 12:59
#571
Xara

Помидорка
 
Регистрация: 03.02.2012
Сообщений: 135


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Попробуй обратные слеши.
Код:
[Выделить все]
Command: inscommand _.-insert Enter block name or [?] <T11>: 
d://st_functions//add_st//tables_draw_new//T1
Invalid block name.
; error: Function cancelled
Этот вариант тоже не прокатил (с любыми слешами):
Код:
[Выделить все]
^C^C_-insert;d:\st_functions\add_st\tables_draw_new;\T1;;;_.explode;_last

АП: Попробовал вариант ^C^C_-insert;"d:\st_functions\add_st\tables_draw_new.dwg";\T1;;;_.explode;_last
Акад сначала запросил имя блока:
Код:
[Выделить все]
-INSERT Enter block name or [?] <T1>:
Потом вывел окошко выбора блока, я нажал отмену.
Потом он мне построчно просил ввести путь и вставил блок, причем вручную пришлось добивать параметры вставки.
Полный код из ком.строки:
Код:
[Выделить все]
Command: _-insert
Enter block name or [?] <T1>: "d:

Command: st_functions
Unknown command "ST_FUNCTIONS".  Press F1 for help.

Command: add_st
Unknown command "ADD_ST".  Press F1 for help.

Command: tables_draw_new.dwg"
Unknown command "DWG"".  Press F1 for help.

Command:
-INSERT Enter block name or [?] <T1>: T1

Units: Millimeters   Conversion:    1.0000
Specify insertion point or [Basepoint/Scale/Rotate]:

Point or option keyword required.
Specify insertion point or [Basepoint/Scale/Rotate]: Specify scale factor <1>:

Specify rotation angle <0>:
__________________
Боишься - не делай. Делаешь - не бойся.

Последний раз редактировалось Xara, 27.02.2013 в 13:35.
Xara вне форума  
 
Непрочитано 27.02.2013, 18:17
#572
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


Цитата:
Сообщение от Xara Посмотреть сообщение
Люди, а как в макрос записать путь к блоку в DWG-файле?
Мой блок Т1 определен в файле tables_draw_new в папке d:\st_functions\add_st.
Если не ошибаюсь, ежели определение блока Т1 в чертеже отсутствует, то выдернуть его из файла так не получится.
Почитайте
http://forum.dwg.ru/showthread.php?t=55898
roaa вне форума  
 
Непрочитано 10.03.2013, 12:26
#573
Inventor_S

конструктор
 
Регистрация: 04.06.2010
г. Минск
Сообщений: 30


Может кто знает как сделать макрос мультивыноски (_mleader) с выравниванием мтекста по центру ? Что-то пробовал, не получается.
Inventor_S вне форума  
 
Непрочитано 10.03.2013, 15:30
#574
skkkk


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


Inventor_S, макросом - никак. Только лиспом. Offtop: Чтоб не оффтопить тут, ответил в наиболее близкой по смыслу теме
skkkk вне форума  
 
Непрочитано 13.06.2013, 17:18
#575
Cosinus

Белая и черная магия в строительстве
 
Регистрация: 02.02.2007
Воронеж
Сообщений: 168
Отправить сообщение для Cosinus с помощью Skype™


Подскажите пожалуйста, как бы сделать, чтобы вызывалась команда filter, но без диалога, с настройками на выбор объектов с цветом 131?
__________________
Грызи гранит науки. Не можешь грызть - соси!
Cosinus вне форума  
 
Непрочитано 13.06.2013, 17:26
#576
skkkk


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


Если я правильно понял, то для выбора всех объектов цветом 131 я бы использовал _qselect, а не _filter. А если бы хотел без диалогового окна, то повесил бы на кнопку такой макрос:
Код:
[Выделить все]
^C^C(defun mfunc(/ selset) (if (setq selset (ssget '((62 . 131)))) (sssetfirst selset selset)));(mfunc);
skkkk вне форума  
 
Непрочитано 13.06.2013, 17:53
#577
Cosinus

Белая и черная магия в строительстве
 
Регистрация: 02.02.2007
Воронеж
Сообщений: 168
Отправить сообщение для Cosinus с помощью Skype™


skkk Благодарю, то что я хотел
__________________
Грызи гранит науки. Не можешь грызть - соси!
Cosinus вне форума  
 
Непрочитано 15.06.2013, 03:35
#578
GGarry


 
Регистрация: 06.06.2007
Il
Сообщений: 87


Цитата:
Сообщение от skkkk Посмотреть сообщение
Если я правильно понял, то для выбора всех объектов цветом 131 я бы использовал _qselect, а не _filter. А если бы хотел без диалогового окна, то повесил бы на кнопку такой макрос:
Код:
[Выделить все]
^C^C(defun mfunc(/ selset) (if (setq selset (ssget '((62 . 131)))) (sssetfirst selset selset)));(mfunc);
Привет!!!
А можно было бы здесь выделить несколько параметров у примивов?
1. line center 2
2. line continue
3. dim
__________________
Пьер был светский человек и поэтому мочился духами.
GGarry вне форума  
 
Непрочитано 15.06.2013, 09:52
#579
skkkk


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


Ничего не понял. Хочется намного более чёткой постановки вопроса.
1. Что значит "line center 2"?
2. "Line continue" - рискну предположить, что нужно выбрать все линии с типом линии Continuous.
3. "Dim" - это выбрать все размеры?
skkkk вне форума  
 
Непрочитано 19.06.2013, 15:28
#580
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от PSG Посмотреть сообщение
Еще вопрос -
^C^C(setq a(ssget "_X" (list '(0 . "MTEXT") (cons 8 (getvar "clayer")))));(sssetfirst nil a);_find;(setq a(ssget "_X" (list '(0 . "MTEXT") (cons 8 (getvar "clayer")))));(sssetfirst nil a);_explode
^C^C(setq a(ssget "_X" (list '(0 . "TEXT") (cons 8 (getvar "clayer")))));(sssetfirst nil a);_text-
по отдельности они работают, а если их объединить вместе
^C^C(setq a(ssget "_X" (list '(0 . "MTEXT") (cons 8 (getvar "clayer")))));(sssetfirst nil a);_find;(setq a(ssget "_X" (list '(0 . "MTEXT") (cons 8 (getvar "clayer")))));(sssetfirst nil a);_explode;(setq a(ssget "_X" (list '(0 . "TEXT") (cons 8 (getvar "clayer")))));(sssetfirst nil a);_text-
то не работают. В чем моя ошибка?
Это из #436, два года назад
Та же проблема. Если после _explode ничего делать не нужно, то макрос работает нормально. А если после него что-то нужно еще сделать, то _explode не выполняется, и далее соответственно.
Правда, это для Автокадов 2006-2008. В 2012 удается победить. Но у людей - участников процесса - есть только 2006-2008.
Моя задача: разметить полилинию блоками в виде поперечных полилиний, разбить эти блоки, чтобы на пересечениях выбранных полилиний расставить точки.
Мой макрос:
Код:
[Выделить все]
^C^C_measure;\_b;"поперечник";_y;40;_SelectSimilar;_l;;_explode\POLYPOINT
"поперечник" - имя блока, ориентируем вдоль указанной полилинии, ставим через 40 единиц.
POLYPOINT - команда расстановки точек на всех пересечениях указанных полилиний к программке из http://forum.dwg.ru/showpost.php?p=1108065&postcount=37
Если убрать это "\POLYPOINT", то в Акадах 2006-2008 _explode выполняется. А полностью - нет.
Миниатюры
Нажмите на изображение для увеличения
Название: Расставить_поперечники_вдоль_красной_линии.png
Просмотров: 68
Размер:	10.7 Кб
ID:	105908  Нажмите на изображение для увеличения
Название: Вставить_точки_в_пересечения_линий.png
Просмотров: 70
Размер:	13.5 Кб
ID:	105909  

Последний раз редактировалось АлексЮстасу, 19.06.2013 в 16:04.
АлексЮстасу вне форума  
 
Непрочитано 19.06.2013, 16:02
1 | #581
skkkk


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


Так?
Код:
[Выделить все]
^C^C_measure;\_b;поперечник;_y;40;_xplode;_p;;;;_selectsimilar;_p;;POLYPOINT;
Только одного не пойму: почему не расставить блоки-точки таким же образом (_measure), а потом взорвать. Или еще лучше: сразу включить в описание блока "поперечник" объект - точку?
skkkk вне форума  
 
Непрочитано 19.06.2013, 16:06
#582
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от skkkk Посмотреть сообщение
Так?
Код:
[Выделить все]
^C^C_measure;\_b;поперечник;_y;40;_xplode;_p;;;;_selectsimilar;_p;;POLYPOINT;
Только одного не пойму: почему не расставить блоки-точки таким же образом (_measure), а потом взорвать. Или еще лучше: сразу включить в описание блока "поперечник" объект - точку?
Уря! Получилось! В небольшой модификации (без selectsimilar)^
Код:
[Выделить все]
^C^C_measure;\_b;поперечник;_y;40;_xplode;_p;;;;POLYPOINT;
Точки нужно вставить на пересечениях не только размеченной линии, но и других указанных линий. Которые в общем случае находятся на неодинаковых расстояниях от размеченной линии. И их не одинаковое количество, разная длина и т.п.
И эти "другие" линии пользователю нужно выбрать вручную.
Красная - размечаемая (_measure) линия.

Никогда б не догадался, что после "_p" нужно вставить аж четыре ";"!
Миниатюры
Нажмите на изображение для увеличения
Название: Расставить_поперечники_вдоль_красной_линии.png
Просмотров: 139
Размер:	10.7 Кб
ID:	105910  Нажмите на изображение для увеличения
Название: Вставить_точки_в_пересечения_линий.png
Просмотров: 148
Размер:	13.5 Кб
ID:	105911  

Последний раз редактировалось АлексЮстасу, 19.06.2013 в 16:20.
АлексЮстасу вне форума  
 
Непрочитано 20.06.2013, 09:53
#583
pan

добрый человек
 
Регистрация: 23.02.2004
Глушь
Сообщений: 971


Глядя на приведенный пример, imho напрашивается применить массив по траектории (_arraypath)
__________________
Правильно сформулированный вопрос содержит 90% ответа.
pan вне форума  
 
Непрочитано 20.06.2013, 15:45
#584
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от pan Посмотреть сообщение
Глядя на приведенный пример, imho напрашивается применить массив по траектории (_arraypath)
В общем случае линии выглядят примерно как на картинке здесь.
Т.е. места пересечений непредсказуемы массивами или т.п.
Миниатюры
Нажмите на изображение для увеличения
Название: Вставить_точки_в_пересечения_линий_общий.png
Просмотров: 147
Размер:	9.2 Кб
ID:	106005  
АлексЮстасу вне форума  
 
Непрочитано 21.06.2013, 14:08
#585
Conan_w

Инженер-проектировщик
 
Регистрация: 16.05.2007
Мурманск
Сообщений: 79
<phrase 1=


Одновременное выключение слоёв (кроме активного).
Код:
[Выделить все]
^C^C_.-layer;_of;*;;;
... и включение.
Код:
[Выделить все]
^C^C_.-layer;_of;*;;;
__________________
Нащяльника,мая AutoCAD паставиль,инсталя сделаль,сапускаю, а она ажамбех пашамбе эшельбе шайтанама!
Conan_w вне форума  
 
Непрочитано 21.06.2013, 14:21
#586
skkkk


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


Почему оба макроса одинаковы?
А чем не нравятся команды _layiso и _layon?
skkkk вне форума  
 
Непрочитано 25.06.2013, 08:49
#587
ProPeller

Пастух
 
Регистрация: 16.07.2012
Питер
Сообщений: 318


Вставка блоков по вершинам полилинии. Вдруг кому пригодится.
Код:
[Выделить все]
*^C^C_line ;\;_ucs _ob _l;_pedit _l _y _j _all;;;_draworder _l;;;_insert имя_блока_назад @;;;0,0;_draworder _l;;;_insert имя_блока_центр 0,0;;;;_draworder _l;;;_insert имя_блока_вперед 0,0;;;;_ucs;;
В моем случае например это разного рода столбы с направленными от них стрелками

Просто тыкаете в точки а автокад вам все сам рисует.
Миниатюры
Нажмите на изображение для увеличения
Название: 2013-06-10_170334.png
Просмотров: 169
Размер:	3.4 Кб
ID:	106230  

Последний раз редактировалось ProPeller, 25.06.2013 в 09:01.
ProPeller вне форума  
 
Непрочитано 25.06.2013, 15:54
#588
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от ProPeller Посмотреть сообщение
Вставка блоков по вершинам полилинии. Вдруг кому пригодится.
Код:
[Выделить все]
*^C^C_line ;\;_ucs _ob _l;_pedit _l _y _j _all;;;_draworder _l;;;_insert имя_блока_назад @;;;0,0;_draworder _l;;;_insert имя_блока_центр 0,0;;;;_draworder _l;;;_insert имя_блока_вперед 0,0;;;;_ucs;;
В моем случае например это разного рода столбы с направленными от них стрелками

Просто тыкаете в точки а автокад вам все сам рисует.
Прописал свои блоки - сработало, когда имена блоков взял в ковычки Наверное, для моих имен со скобками так требуется.
На последней поворотной точке draworder не сработал - столб под линией. На самой последней точке столб не нарисовался.
И при повторном вызове упорно начинает с последней точки уже нарисованной ЛЭП или любого другого последнего элемента.
А так - здорово

Последний раз редактировалось АлексЮстасу, 25.06.2013 в 16:15.
АлексЮстасу вне форума  
 
Непрочитано 25.06.2013, 16:35
#589
ProPeller

Пастух
 
Регистрация: 16.07.2012
Питер
Сообщений: 318


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Прописал свои блоки - сработало, когда имена блоков взял в ковычки Наверное, для моих имен со скобками так требуется.
На последней поворотной точке draworder не сработал - столб под линией. На самой последней точке столб не нарисовался.
И при повторном вызове упорно начинает с последней точки уже нарисованной ЛЭП или любого другого последнего элемента.
А так - здорово
Все верно, есть мелкие недостатки. К сожалению на уровне макросов я не имею представления как от них избавиться. Для себя привычку выработал, перед тем как новую линию начинаю рисовать, сперва рисую отрезок с конечной точкой в начале планируемой линии и тут же его удаляю, после чего вызываю макрос и понеслась =))
Насчет последнего столба, привык добавлять одну лишнюю точку и удалять лишний сегмент, и два ненужных блока. В общем эти мелкие действия с лихвой компенсируются вырученным временем на отрисовку этих элементов по отдельности
ProPeller вне форума  
 
Непрочитано 02.09.2013, 15:32
#590
dedadeda


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


ПОМОГИТЕ разобраться...

Стоит задача - организовать автонумерацию в autocad 2013 LT. как я понимаю в нем LISPa НЕТ!
1. было найдено решение в виде макроса автонумерации
*^c^c_text;_m;\;;$M=$(getvar,USERI1);_setvar;USERI1;$(+,1,$(getvar,USERI1))
но тут невозможно ввести суфикс и префикс для нумерации.

2. Также было найдено в сети решение для нумерации для autocad LT
// Symphony Interactive Inc.
//
// Auto text enumerator tool for AutoCAD LT
//
// Create a new tool or menu item and copy/paste the following diesel code to it:
//
// Please feel free to contribute/improve this code!
//
// Clone this mercurial repository: http://[email protected]

*^C^C$M=$(if,$(=,$(getvar,USERI2),1),setvar;USERI2;0;-attedit;;;;;\;v;r;$(getenv,Prefix)$(getvar,USERI1)$(getenv,Suffix);N;setvar;USERI2;1;setvar;USERI1;$(+,1,$(getvar,USERI1)),setenv;Prefix;\setenv;Suffix;\setvar;USERI1;\setvar;USERI2;1)

Помогите разобраться, как это работает? и работает ли вообще? и можно ли адаптировать второй макрос для нумерации текстовой переменной с суффиксом и префиксом ...БЕЗ LISPA....
dedadeda вне форума  
 
Непрочитано 05.09.2013, 11:50
#591
Bestoloch


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


часто нужно проставить размер кратно какому-то числу (следующего вида 11х200=2200, так вот следующий макрос можно для этого использовать). Для этого нужно предварительно ввести modemacro, затем шаг, вызвать макрос, выбрать два объекта и размер проставится в таком виде.

Ну и конечно нужно заранее выбрать нужный размерный стиль.

Макрос:

^C^C_line;'cal;p1=nea;\\'cal;p2=per;\\;_erase;_last;;_dist;'cal;p1;\'cal;p2;\_dimaligned;'cal;p1;\'cal;p2;\текст;$m=$(rtos,$(/,$(*,$(getvar,distance),$(getvar,dimlfac)),$(getvar,modemacro)),2,0)х$m=$(getvar,modemacro)=<>;

Последний раз редактировалось Bestoloch, 05.09.2013 в 11:55.
Bestoloch вне форума  
 
Непрочитано 28.10.2013, 12:40
#592
off

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


Вводная часть. Чертежи для для печати сформированы в пространстве листа. Ширина чертежа 297, т.е. при печати на 610 бумаге помещается парочка одинаковых чертежей. Левый нижний угол чертежа в пространстве листа лежит в координатах 0,0. Чтобы дублировать полностью все что относится к оформлению (там помимо видового экрана, штампика и оформительских надписей используюся wipeout-ы) сделал простенький макрос, который выбирает все что имеется в пространстве листа и копирует от точки с координатами 0,0 к точке с координатами 0,297.
^C^C_ai_selall _copy 0,0 0,297
off вне форума  
 
Непрочитано 28.10.2013, 17:04
#593
Агент СмиТ

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


Кто нибудь может подсказать макрос на кнопку отключения/включения "отображения изображения"?
__________________
Каждая система стремится к равновесию.
Агент СмиТ вне форума  
 
Непрочитано 28.10.2013, 20:41
#594
art_rrc


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


Цитата:
Сообщение от Агент СмиТ Посмотреть сообщение
Кто нибудь может подсказать макрос на кнопку отключения/включения "отображения изображения"?
Макрос не подскажу, но могу предложить альтернативный вариант. Можно добавить команду на панель быстрого доступа и перенести ее на 1й слот. Активировать последовательным нажатием alt,1.
art_rrc вне форума  
 
Непрочитано 28.10.2013, 23:43
#595
Vova

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


Цитата:
Сообщение от Агент СмиТ Посмотреть сообщение
Кто нибудь может подсказать макрос на кнопку отключения/включения "отображения изображения"?
Кто-нибудь понял вопрос? (кроме art_rrc)
А так-же ответ на него?

Цитата:
Сообщение от art_rrc Посмотреть сообщение
Макрос не подскажу, но могу предложить альтернативный вариант. Можно добавить команду на панель быстрого доступа и перенести ее на 1й слот. Активировать последовательным нажатием alt,1.
Vova вне форума  
 
Непрочитано 29.10.2013, 00:56
#596
off

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


Цитата:
Сообщение от Vova Посмотреть сообщение
Кто-нибудь понял вопрос?
Предположу что автор выключает растр выставляя значение "Show image" в "No", а хочет чтобы была кнопочка которая бы при нажатии на нее делала это не заставляя открывать окно свойств. Думаю что макросом тут не отделаться, т.к. это свойство каждого рисунка в отдельности и нужно делать программу которая бы шерстила файл на предмет наличия в нем растровых картинок и меняла бы им свойства (в идеале в виде переключателя on/off).

Для себя данную задачу решил следующим образом - растр помещаю на специальный слой и двумя макросами его включаю/выключаю.
^C^C_-layer _on;АРХИВ_РАСТР;;
^C^C_-layer _of;АРХИВ_РАСТР;;

Таким же образом поступил и с внешней ссылкой
^C^C_-XREF;_R;Объект
^C^C_-XREF;_U;Объект
где Объект - имя ссылки.
Оба решения оправдывают себя только в том случае если вн.ссылка или набор растров в чертеже одна(ин).
off вне форума  
 
Непрочитано 29.10.2013, 09:23
#597
Агент СмиТ

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


Vova
Цитата:
Сообщение от Vova Посмотреть сообщение
Кто-нибудь понял вопрос? (кроме art_rrc)
А так-же ответ на него?
Прошу прощения за недостаточно очевидную формулировку вопроса, off меня поправил
Цитата:
Сообщение от off Посмотреть сообщение
Предположу что автор выключает растр выставляя значение "Show image" в "No"
ответ art_rrc я тоже не понял, т.к. не представляю где в автокаде находится "1й слот" и что это такое
off
Цитата:
Сообщение от off Посмотреть сообщение
Думаю что макросом тут не отделаться, т.к. это свойство каждого рисунка в отдельности и нужно делать программу которая бы шерстила файл на предмет наличия в нем растровых картинок и меняла бы им свойства (в идеале в виде переключателя on/off).
Вся соль в том, что бы не плодить количество слоёв (в файле итак присутствуют пару десятков растров по слоям). Я помещаю несколько растров на один слой для однократной работы с ними (например оцифровки отдельных элементов) и поочерёдно каждый растр включаю и отключаю. Далее эти растры переношу в скрытый слой, либо вообще удаляю, посему нет необходимости "шерстить" весь файл и отключать все растры в нём.
Если реализовать выборочное отключение/включение растров ("Show image" в "No"/"Yes"), мне кажется было бы удобно для работы с "временной подложкой".
__________________
Каждая система стремится к равновесию.
Агент СмиТ вне форума  
 
Непрочитано 29.10.2013, 09:31
#598
VVA

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


Цитата:
Сообщение от Агент СмиТ Посмотреть сообщение
Кто нибудь может подсказать макрос на кнопку отключения/включения "отображения изображения"?
Цитата:
Сообщение от Vova Посмотреть сообщение
Кто-нибудь понял вопрос?
Предположу что речь идет о рамке изображения (команда _imageframe)
Мой вариант (подсмотрено у Raster Design)
Макрос
Код:
[Выделить все]
^C^C^P(imageframe);^P
Код
Код:
[Выделить все]
(defun imageframe ( / FLAG DICT )
  ;;;Включает / отключает контур растра
  (if (setq DICT (dictsearch (namedobjdict) "ACAD_IMAGE_VARS"))
    (progn
      (and
        (setq FLAG (assoc 70 DICT))
        (entmod (subst (cons 70 (boole 6 (cdr FLAG) 1))
                       FLAG
                       DICT
                       )
                )
        (command "_.regen")
        )
      )
    (progn
      (command "_imageframe" 0)
      (while (> (getvar "CMDACTIVE") 0) (command))
      )
    )
 (princ)
)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 29.10.2013, 09:46
#599
off

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


Так у imageframe 3 значения 0,1,2. Можно же с помощью Diesel выражений сделать переключатель по значениям. Взяв за образец $M=$(if,$(eq,$(getvar,UCSFOLLOW),0),UCSFOLLOW 1,UCSFOLLOW 0). Или там какие-то подводные камни?
off вне форума  
 
Непрочитано 29.10.2013, 10:25
#600
Агент СмиТ

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


VVA
Цитата:
Сообщение от VVA Посмотреть сообщение
Предположу что речь идет о рамке изображения (команда _imageframe)
Дело здесь не в _imageframe, т.к. требуется скрыть не рамки растров, а их содержимое. Попробую пояснить с помощью принтскрина. Включены растры "основной подложки" и "временной подложки",показ верхнего и нижнего "временных растров" отключен, среднего включен (в свойствах "Показ изображения">"Да"). Далее см. пост 597.
Миниатюры
Нажмите на изображение для увеличения
Название: Врем. подложка.gif
Просмотров: 107
Размер:	55.0 Кб
ID:	115207  
__________________
Каждая система стремится к равновесию.
Агент СмиТ вне форума  
 
Непрочитано 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,990
<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 Кб, 99 просмотров)
__________________
Как использовать код на Лиспе читаем здесь
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 Кб, 149 просмотров)
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
Просмотров: 94
Размер:	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,772


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

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<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,990
<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 вне форума  
 
Непрочитано 31.10.2013, 09:05
#621
Агент СмиТ

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


Первое, что приходит на ум - быстрый выбор.
Изображения
Тип файла: tif Выбор растра.tif (104.5 Кб, 103 просмотров)
__________________
Каждая система стремится к равновесию.
Агент СмиТ вне форума  
 
Непрочитано 31.10.2013, 09:30
#622
gomer

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


Цитата:
Сообщение от Агент СмиТ Посмотреть сообщение
быстрый выбор
вообще-то я про фильтры ssget
gomer вне форума  
 
Непрочитано 31.10.2013, 09:41
#623
VVA

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


Цитата:
Сообщение от gomer Посмотреть сообщение
Слушайте, а как выбрать только изображения, которые не отображаются?
Выбрать все, преобразовать в список, пройтись по списку и оставить только те, у которых vla-get-imagevisibility = :vlax-false
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 31.10.2013, 10:10
#624
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 571


Цитата:
Сообщение от gomer Посмотреть сообщение
вообще-то я про фильтры ssget

Цитата:
Сообщение от VVA Посмотреть сообщение
Выбрать все, преобразовать в список, пройтись по списку и оставить только те, у которых vla-get-imagevisibility = :vlax-false
А если сразу так
Код:
[Выделить все]
 (ssget "_X" (list '(0 . "IMAGE") '(-4 . "<NOT") '(-4 . "&") (cons 70 1) '(-4 . "NOT>")))
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 31.10.2013, 16:53
#625
VVA

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


TararykovDG, Ну или нажать F1 и найти в хэлпе соответствующую dxf группу
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 02.11.2013, 17:06
#626
gomer

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


Если кому интересно, выложил свою версию обработки изображений здесь
gomer вне форума  
 
Непрочитано 20.12.2013, 15:13 мои макрокоманды
#627
mateus


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


кто нибудь можете помоч хочу сделать команду "зеркальное отображение, точка привязки-между двумя точками" вроде написл макрос однако неудачно
^C^C;_MIRROR;'_m2P;\\\
mateus вне форума  
 
Непрочитано 20.12.2013, 15:44
#628
BulKonst

Инженер-конструктор
 
Регистрация: 03.07.2009
МО
Сообщений: 19


Проставляет размер и автоматически начинает строить цепочку размеров от него:
^C^C^P(defun C:dimBulKonst () (vl-cmdf "_dimlinear" pause pause pause "_dimcontinue"));dimBulKonst
Устанавливает ПСК, проставляет размер от ПСК и автоматически начинает строить цепочку размеров от него (удобно для простановки размеров 3D):
^C^C^P(defun C:PSKdimBulKonst () (vl-cmdf "_ucs" "_o" pause "_dimlinear" "@" pause pause "_dimcontinue"));PSKdimBulKonst
BulKonst вне форума  
 
Непрочитано 20.12.2013, 15:48
#629
Кулик Алексей aka kpblc
Moderator

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


BulKonst, это не макросы, а лисп-функции, записанные внутрь макроса. В LT работать не будут.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 25.12.2013, 16:30
#630
BulKonst

Инженер-конструктор
 
Регистрация: 03.07.2009
МО
Сообщений: 19


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
это не макросы, а лисп-функции, записанные внутрь макроса. В LT работать не будут.
Да пожалуйста:
Код:
[Выделить все]
^C^C_.dimlinear;\\\_.dimcontinue;
Код:
[Выделить все]
^C^C_.ucs;_o;\_.dimlinear;@;\\_.dimcontinue;
Только при быстром повторе (например при нажатии на пробел) будет вызываться последняя команда в макрокоманде (в данном случае _.dimcontinue).
Для возможности быстрого повтора см. #628
BulKonst вне форума  
 
Непрочитано 31.01.2014, 21:23
#631
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Как в макросе выполнить после черчения полилинии какое-то действие? Не важно какое - разбить, сделать офсет или пр. У меня либо полилиния не чертится, либо следующее действие не выполняется
Для примера, допустим, нужно начертить полилинию, и ее разбить.
Пишу:
Цитата:
^C^C_PLINE;\;_EXPLODE;_L;;
- не чертит.
А так:
Цитата:
^C^C_PLINE;;_EXPLODE;_L;;
- не разбивает.
Перепробовал массу вариантов "прокладок" между _PLINE и следующим нужным действием - почему-то не получается.
Кстати, на всех 32-х страницах этой темы поиск не показывает ни одной "_PLINE"!
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 31.01.2014, 21:46
#632
art_rrc


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Как в макросе выполнить после черчения полилинии какое-то действие? Не важно какое - разбить, сделать офсет или пр. У меня либо полилиния не чертится, либо следующее действие не выполняется
Доброго времени суток. Боюсь, что для макрокоманды, это невыполнимая задача (скорей всего, но не факт). Дело в том, что символ "\" предусматривает указание одной точки на экране. А количество точек (если полилиния не является типовой) нам заранее неизвестно. Так например макрос "^C^C_PLINE;\\\\;_EXPLODE;_L;" - будет замечательно работать, но только для полилиний, состоящих СТРОГО из 4х вершин.
art_rrc вне форума  
 
Непрочитано 01.02.2014, 18:09
#633
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от art_rrc Посмотреть сообщение
Боюсь, что для макрокоманды, это невыполнимая задача (скорей всего, но не факт). Дело в том, что символ "\" предусматривает указание одной точки на экране. А количество точек (если полилиния не является типовой) нам заранее неизвестно. Так например макрос "^C^C_PLINE;\\\\;_EXPLODE;_L;" - будет замечательно работать, но только для полилиний, состоящих СТРОГО из 4х вершин.
Последнее я уже прочувствовал.
Нашел здесь от VVA близкий вариант для создания замкнутых полилиний с закрашиванием их площадей:
Цитата:
^C^C(progn(setvar "CMDECHO" 1)(command "_pline" pause)(while (= (getvar "CMDACTIVE") 1)(command pause))(vla-put-Closed (vlax-ename->vla-object (entlast)) :vlax-true)(command "_-bhatch" "_P" "_SOLID" "_S" (entlast) "" ""))
Если заменить закрашивание (command "_-bhatch" "_P" "_SOLID" "_S" (entlast) "" "") на, например, разбивание (command "_EXPLODE" "_LAST"), то все получается.
Только как теперь избавиться от обязательного замыкания? И как сделать описание нужной второй команды не внутри этого лиспа, а после него, вне него. Некоторые команды из лиспа не проходят.

Последний раз редактировалось АлексЮстасу, 01.02.2014 в 20:28.
АлексЮстасу вне форума  
 
Непрочитано 01.02.2014, 21:28
#634
Vova

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


Была сходная задача: нарисовать контур из полилинии после чего он автоматом закрашивался штриховкой. Полилиния могла иметь разное количество вершин, вот здесь
Я решил задачу применением того что никто из форумчан не повторил, а именно Action Recorder. С тех пор на форуме такие страшные слова не проскакивали. Но кто делает макросы, для них не составит труда, потому что процесс сходный. В теме найдешь код.
Думаю, и твоя задача может решиться без лиспа
Vova вне форума  
 
Непрочитано 01.02.2014, 23:31
#635
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от Vova Посмотреть сообщение
Action Recorder. В теме найдешь код.
Кода почему-то не нашел. (Там, кстати, 12 страниц).
В конечном итоге мне нужно создать несколько панелей инструментов или палитр, содержащих наборы нужных действий и настроек вычерчиваемых элементов. Но, к своему удивлению, уперся в почти нереализуемость макросами самого простого - pline+еще операция.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 02.02.2014, 16:43
#636
Vova

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Кода почему-то не нашел. (Там, кстати, 12 страниц).
Попробуй в но. 96. Но сначала прочитай текст сообщения, который определяет порядок действий, обрати внимание что надо переименовать файл
Кстати, сама тема про конкурс мне кажется, была очень интересной, она зацепила много народу. Увы, сейчас таких нет
Vova вне форума  
 
Непрочитано 03.02.2014, 00:56
#637
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от Vova Посмотреть сообщение
Попробуй в но. 96.
В приложенном к тому #96 файле 82 страницы! И я совсем не понимаю, что там написано, кроме "pline", да и то найдено поиском Ворда, потому что знал что искать. Т.е. подправить в случае чего как?
И как вставить в пользовательское меню (в палитры) эти "аксьены"?
Если бы мне удалось соорудить макросы для черчения полилиний+другие действия, и подобные нужные макросы, то был бы один файл палитры или несколько палитр.
Если же удастся вставить в палитры эти Action, то будут файлы палитр + еще файлы Action. Что неизбежно скажется на передаче этих палитр пользователям.
Конкретно для моей задачи мне использование Action пока не видится - кажется громоздким и потенциально ненадежным.
Собственно, макросы и лиспы тем и хороши, что ими можно управлять самим, и использовать разным способом, в т.ч. из палитр.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 04.02.2014, 03:27
#638
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Пытаюсь в макросе
Цитата:
^C^C(command "_cmddia" "0") (command "_.ADEATTACHDATA" "od_1" "_a" "_n" "_l") (command "_cmddia" "1")
описать лисп-выражением команду Autocad Map 3D - ADEATTACHDATA.
Автокад ругается, что не может вызвать команду из ADS или AutoLISP.
Цитата:
Команда: (command "_cmddia" "0") nil
Команда: (command "_.ADEATTACHDATA" "od_1" "_a" "_n" "_l")
Не удалось вызвать команду из ADS или AutoLISP.
Внутренняя ошибка.Неизвестная команда "OD_1". Для вызова справки нажмите F1.
Неизвестная команда "A". Для вызова справки нажмите F1.
Неизвестная команда "N". Для вызова справки нажмите F1.
Неизвестная команда "L". Для вызова справки нажмите F1.
nil
Команда: (command "_cmddia" "1") nil
cmddia здесь для насильственного отключения оконного вида, т.к. маповская команда на знак тире "-" не реагирует, и пишет
Цитата:
Неизвестная команда "-ADEATTACHDATA".
Как правильно записать в лисп-выражении команду Autocad Map 3D?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 04.02.2014, 12:35
#639
twilight


 
Регистрация: 17.10.2009
Сообщений: 1,108


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
cmddia здесь для насильственного отключения оконного вида,
Если это макрос то переменные переключаются просто в лоб: ^C^C_cmddia;0;

cmddia - "Controls the display of the In-Place Text Editor for the LEADER and QLEADER commands."

Цитата:
т.к. маповская команда на знак тире "-" не реагирует, и пишет
Если команда не умеет в безоконном режиме, то и работать в нем она не научится, хоть ей монитор выключай.
twilight вне форума  
 
Непрочитано 04.02.2014, 15:38
#640
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от twilight Посмотреть сообщение
Если это макрос то переменные переключаются просто в лоб: ^C^C_cmddia;0;
Если команда не умеет в безоконном режиме, то и работать в нем она не научится, хоть ей монитор выключай.
В лисп-выражении тоже в лоб. Или по лбу.
Если оконный режим выключить cmddia, то ADEATTACHDATA срабатывает.
Хоть так: ^C^C_CMDDIA;0;_.adeattachdata;имя_ОД;_a;_n;_l;;_CMDDIA;1;, хоть так: ^C^C(command "_cmddia" "0")_.adeattachdata;имя_ОД;_a;_n;_l;; (command "_cmddia" "1") .

Суть в том, что это действие (ADEATTACHDATA) нужно выполнить в макросе, в котором сначала чертится полилиния. А полилинию из макроса нормально начертить только из лиспа. Про это в #632, в здесь от VVA и пр.
Соответственно, прошу помощи именно в лиспе для запуска команды Autocad Map 3D - ADEATTACHDATA. Чтобы можно было вставлять в макросы с черчением полилиний или т.п.
Сейчас не получается, пишет:
Цитата:
Не удалось вызвать команду из ADS или AutoLISP.
Так понимаю, что именно из-за того, что это команда Autocad Map 3D. Или я там еще что-то неверно написал?

Последний раз редактировалось АлексЮстасу, 04.02.2014 в 16:16.
АлексЮстасу вне форума  
 
Непрочитано 12.02.2014, 03:00
#641
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Нерешаемая задача?
Черт с ним, с Map 3D.
Может быть так: как в макросе после лиспа типа
(progn(setvar "CMDECHO" 1)(command "_pline" pause)(while (= (getvar "CMDACTIVE") 1)(command pause))(vla-put-Closed (vlax-ename->vla-object (entlast)) :vlax-true))
от VVA или т.п. выполнить обычные консольные команды? Не встраивать действия внутрь лиспа (поскольку из него не все запускается), а записать после него? У меня такие команды воспринимаются как параметры для команд из лиспа, а не как команды, которые нужно выполнить после.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 12.02.2014, 09:21
#642
Кулик Алексей aka kpblc
Moderator

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


Попробуй нечто типа
Код:
[Выделить все]
 (defun tt (/ ent)
  (setq ent (entlast))
  (command "_.pline")
  (while (/= (getvar "cmdactive") 0)
    (command pause)
    ) ;_ end of while
  (if (/= (entlast) ent)
    (progn
      (setq ent (entlast))
      (command "_.arrayclassic")
      (while (/= (getvar "cmdactive") 0)
        (command pause)
        ) ;_ end of while
      ) ;_ end of progn
    ) ;_ end of if
  (command "_.line" pause pause)
  ) ;_ end of defun
Но я далеко не уверен, что сработает.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.02.2014, 15:56
#643
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Попробуй нечто типа
Спасибо! Но вопрос немного в другом.
Скрупулезно старый лисп VVA я не проверял, но в целом, допустим, он устраивает.
Вопрос не только и не столько в подходящем лиспе.
Вопрос в том, как в одном макросе после лиспа выполнить консольную команду? Или - как завершить выполнение лиспа, чтобы сработала команда послеработы лиспа?
Дописать после лиспа перед командой что-нибудь вроде ;_ end of progn?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 12.02.2014, 16:00
#644
Кулик Алексей aka kpblc
Moderator

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


АлексЮстасу, консольная команда и так сработает: (command "_.-layer" "_create" и т.д. Вопрос, насколько я понял, был в обработке команды, имеющей только режим диалогового окна. Я тебе пример и показал (тот факт, что я использовал _.arrayclassic, на принцип не влияет никоим образом).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.02.2014, 16:34
#645
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
консольная команда и так сработает: (command "_.-layer" "_create" и т.д.
Не срабатывает - воспринимается как параметры для полилинии!
Например, после ^C^C(progn(setvar "CMDECHO" 1)(command "_pline" pause)(while (= (getvar "CMDACTIVE") 1)(command pause))(vla-put-Closed (vlax-ename->vla-object (entlast)) :vlax-true)) (command "_EXPLODE" "_L")
Разбивание не производится, а пишется:
Цитата:
Команда:
Команда: (progn(setvar "CMDECHO" 1)(command "_pline" pause)(while (= (getvar
"CMDACTIVE") 1)(command pause))(vla-put-Closed (vlax-ename->vla-object
(entlast)) :vlax-true)) _pline
Начальная точка: (command "_EXPLODE" "_L")
Неверная точка.
Начальная точка:
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 12.02.2014 в 16:41.
АлексЮстасу вне форума  
 
Непрочитано 12.02.2014, 17:00
#646
Кулик Алексей aka kpblc
Moderator

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


АлексЮстасу, во-первых, у тебя не проверяется корректность срабатывания команды _.pline. Во-вторых, ты сравниваешь cmdactive с 1, а я с 0. Попробуй прогнать либо #642, либо такой:
Код:
[Выделить все]
 (defun c:tt (/ ent)
  (setq ent (entlast))
  (command "_.pline")
  (while (/= (getvar "cmdactive") 0)
    (command pause)
    ) ;_ end of while
  (if (/= (entlast) ent)
    (progn
      (setq ent (vlax-ename->vla-object (entlast)))
      (vla-put-closed ent :vlax-true)
      (command "_.explode" (entlast))
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of defun
AutoCAD 2013 x64 обработал корректно.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.02.2014, 17:32
#647
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
во-первых, у тебя не проверяется корректность срабатывания команды _.pline. Во-вторых, ты сравниваешь cmdactive с 1, а я с 0. Попробуй прогнать либо #642, либо такой:
Лисп цельнотянутый у VVA из старой темы.
Вопрос сейчас не только про лисп... Или в первую очередь не про сам лисп.

Вопрос про то, как в одном макросе соединить лисп и консольные команды. Не вызвать лиспом команду, не встроить в лисп команду, а выполнить в макросе сначала лисп, а потом, после, независимо от лиспа выполнить команду?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 12.02.2014, 17:43
#648
gomer

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Вопрос про то, как в одном макросе соединить лисп и консольные команды.
не нужно этого делать
gomer вне форума  
 
Непрочитано 12.02.2014, 18:37
#649
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от gomer Посмотреть сообщение
не нужно этого делать
Почему нет?
Для меня это путь был бы самым простым.
В том числе и потому, что лиспера, разбирающегося в Map 3D здесь пока не обнаружилось, а команды Map 3D из этих лиспов не идут:
Цитата:
Не удалось вызвать команду из ADS или AutoLISP.
В идеале для меня были бы одни консольные команды - нужно делать палитру с большим числом макросов. Но Автокад с PLINE подложил сюрприз. Возможно, и другие похожие команды без лиспа не сделать.
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 12.02.2014 в 18:56.
АлексЮстасу вне форума  
 
Непрочитано 12.02.2014, 19:28
#650
gomer

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Почему нет?
Потому, что нельзя объять необъятное и не стоит делать плохо, когда можно сделать хорошо. А во=вторых, чтобы нарисовать замкнутый контур из отрезков не обязательно рисовать полилинию замыкать ее, а потом разбивать, достаточно просто нарисовать отрезки и замкнуть последний
gomer вне форума  
 
Непрочитано 12.02.2014, 19:36
#651
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от gomer Посмотреть сообщение
Потому, что нельзя объять необъятное и не стоит делать плохо, когда можно сделать хорошо. А во=вторых, чтобы нарисовать замкнутый контур из отрезков не обязательно рисовать полилинию замыкать ее, а потом разбивать, достаточно просто нарисовать отрезки и замкнуть последний
Что необъятного и плохого в совмещении в макросе лиспа и команд? Научили бы как совместить - а расхлебывать буду сам.
Замкнутый контур, контур из отрезков, рисование полилиний, разбивание и пр. - это лишь примеры. Для простоты. Без конкретного смысла. О чем я с первого своего сообщения на эту тему писал.
Не столько прошу помощи написать мне лиспы или макросы, сколько прошу научить, как это писать, чтобы работало. В частности, как собирать макросы из готовых, допустим, лиспов и команд вертикального приложения.
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 12.02.2014 в 20:17.
АлексЮстасу вне форума  
 
Непрочитано 12.02.2014, 20:31
#652
gomer

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


просто поймите, что макросы не предназначены выполнять всю рутинную работу за вас, это делают приложения на разных языках, а макросы просто склеивают это воедино или выполняют мелкие операции, как-то ткнуть пару опций в команде или засветить пимпочку в менюшке
gomer вне форума  
 
Непрочитано 12.02.2014, 20:38
#653
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от gomer Посмотреть сообщение
просто поймите, что макросы не предназначены выполнять всю рутинную работу за вас, это делают приложения на разных языках, а макросы просто склеивают это воедино или выполняют мелкие операции, как-то ткнуть пару опций в команде или засветить пимпочку в менюшке
Посмотрите - ровно такую задачу и решаю: соединить, например, черчение полилинии с каким-то действием над ней. Как раз для макроса.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 12.02.2014, 23:54
#654
gomer

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Посмотрите - ровно такую задачу и решаю: соединить, например, черчение полилинии с каким-то действием над ней. Как раз для макроса.
Это можно одной командой сделать без всяких макросов, смотрите выше, хотя там половины кода нет, который нужен
gomer вне форума  
 
Непрочитано 13.02.2014, 00:46
#655
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от gomer Посмотреть сообщение
Это можно одной командой сделать без всяких макросов, смотрите выше, хотя там половины кода нет, который нужен
"Одна команда выше" - это какая? И какой половины там нет? Про вызов команды Autocad Map 3D? С последним совершенно согласен. Только как его сделать, чтобы эти команды вызывались из лиспа?
А вне лиспа эти команды срабатывают.
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 13.02.2014 в 01:59.
АлексЮстасу вне форума  
 
Непрочитано 13.02.2014, 11:31
#656
gomer

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
как его сделать, чтобы эти команды вызывались из лиспа?
так же как и с командами чистого автокада
gomer вне форума  
 
Непрочитано 13.02.2014, 15:21
#657
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от gomer Посмотреть сообщение
так же как и с командами чистого автокада
Намекните что-нибудь.
Уже раза три здесь писал, что, например, на Map 3D команду _.adeattachdata;имя_ОД;_a;_n;_l;; или (command "_.adeattachdata" "имя_ОД" "_a" "_n" "_l") пишется:
Цитата:
Не удалось вызвать команду из ADS или AutoLISP
.
Это если ее вставить в лисп VVA вместо штрихования:
^C^C(progn(setvar "CMDECHO" 1)(command "_pline" pause)(while (= (getvar "CMDACTIVE") 1)(command pause))(vla-put-Closed (vlax-ename->vla-object (entlast)) :vlax-true)(command "_-bhatch" "_P" "_SOLID" "_S" (entlast) "" ""))
Например, так:
^C^C(progn(setvar "CMDECHO" 1)(command "_pline" pause)(while (= (getvar "CMDACTIVE") 1)(command pause))(vla-put-Closed (vlax-ename->vla-object (entlast)) :vlax-true)(command "_.adeattachdata" "Apron" "_a" "_n" "_l"))
или
^C^C(progn(setvar "CMDECHO" 1)(command "_pline" pause)(while (= (getvar "CMDACTIVE") 1)(command pause))(vla-put-Closed (vlax-ename->vla-object (entlast)) :vlax-true)((command "_cmddia" "0")(command "_.adeattachdata" "Apron" "_a" "_n" "_l")(command "_cmddia" "1")))
то неизменно сообщают:
Цитата:
Команда: _.adeattachdata
Не удалось вызвать команду из ADS или AutoLISP.
Внутренняя ошибка.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 13.02.2014, 15:29
#658
gomer

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Это если ее вставить в лисп VVA вместо штрихования:
А если из лиспа запустить, тоже не работает??
gomer вне форума  
 
Непрочитано 13.02.2014, 16:11
#659
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от gomer Посмотреть сообщение
А если из лиспа запустить, тоже не работает??
В смысле "из лиспа"?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 13.02.2014, 16:19
#660
gomer

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


Вот такого например
Код:
[Выделить все]
 (defun c:test ()
  (setvar "CMDECHO" 1)
  (command "_pline" pause)
  (while (= 1 (getvar "CMDACTIVE"))
    (command pause)
  )
  (vla-put-Closed (vlax-ename->vla-object (entlast)) :vlax-true)
  (command "_cmddia" "0")
  (command "_.adeattachdata" "Apron" "_a" "_n" "_l")
  (command "_cmddia" "1")
)
gomer вне форума  
 
Непрочитано 13.02.2014, 17:13
#661
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от gomer Посмотреть сообщение
Вот такого например
Код:
[Выделить все]
 (defun c:test ()
  (setvar "CMDECHO" 1)
  (command "_pline" pause)
  (while (= 1 (getvar "CMDACTIVE"))
    (command pause)
  )
  (vla-put-Closed (vlax-ename->vla-object (entlast)) :vlax-true)
  (command "_cmddia" "0")
  (command "_.adeattachdata" "Apron" "_a" "_n" "_l")
  (command "_cmddia" "1")
)
И из тех, и из этого лиспа:
Цитата:
Команда: _cmddia
Новое значение CMDDIA <1>: 0
Команда: _.adeattachdata
Не удалось вызвать команду из ADS или AutoLISP.
Внутренняя ошибка.
Команда: Apron Неизвестная команда "APRON". Для вызова справки нажмите F1.
Команда: _a Неизвестная команда "A". Для вызова справки нажмите F1.
Команда: _n Неизвестная команда "N". Для вызова справки нажмите F1.
Команда: _l Неизвестная команда "L". Для вызова справки нажмите F1.
Команда: _cmddia
Новое значение CMDDIA <0>: 1
Команда: nil
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 18.02.2014, 22:03 Выравнивание однострочных текстов - макрос на кнопку или в палитру
#662
Stroit'el


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


Offtop: (По мотивам обнуления координаты z)
Написал для AUTOCAD LT 2009 Работает также и в AUTOCAD LT 2011
Корректно работает только для однострочных текстов
--------------------------------------------------------------------------------------------------------------------------------------------
Кнопки на палитру находятся здесь http://dwg.ru/dnl/12625
Подробный разбор макроса смотрите здесь http://forum.dwg.ru/showpost.php?p=1...&postcount=672

Offtop: Добавил комментарий по просьбе АлексЮстасу

Выравнивание однострочных текстов по X
Указать точку выравнивания, выбрать только текстовые объекты (можно рамкой)
Код:
[Выделить все]
^C^Cuserr1;0;_id;\userr1;'cal;rxof(@);\;;_select;$M=$(if,$(getvar,cmdactive),\,)_move;_pr;;1e99,0,0;;;_pr;;-1e99,0,0;;;_pr;;'cal;xof([$m=$(getvar,userr1),0,0]);;
Выравнивание однострочных текстов по Y
Указать точку выравнивания, выбрать только текстовые объекты (можно рамкой)
Код:
[Выделить все]
^C^Cuserr1;0;_id;\userr1;'cal;ryof(@);\;;_select;$M=$(if,$(getvar,cmdactive),\,)_move;_pr;;0,1e99,0;;;_pr;;0,-1e99,0;;;_pr;;'cal;yof([0,$m=$(getvar,userr1),0]);;
Изображения
Тип файла: jpg Picture.jpg (28.3 Кб, 378 просмотров)

Последний раз редактировалось Stroit'el, 01.03.2014 в 23:53. Причина: правка оформления
Stroit'el вне форума  
 
Непрочитано 27.02.2014, 02:52
1 | #663
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Stroit'el - круто!
Я не столько про действия макросов (действуют), сколько про неведомые мне возможности, в них использованные. Одни циклы меня серьезно впечатляют.
Правда, мне в этих макросах мало что понятно. Можно их прокомментировать? Что в них что?
Например, что такое "userr1", что такое "_id"? И т.д.
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 27.02.2014 в 03:06.
АлексЮстасу вне форума  
 
Непрочитано 27.02.2014, 03:19
#664
skkkk


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


Переменные ORTHOMODE и POLARMODE - не оно? Хоть напрямую прописывать имя переменной в макрос, хоть функцией setvar. Если нужно менять режимы во время выполнения команды, то название переменной в макросе предваряется апострофом. Надеюсь, правильно понял вопрос.
Добавлено:
Пока писал ответ, вопрос уже исчез, получилось, будто я невпопад вообще что-то написал... Вопрос был в том, можно ли из макросов управлять режимами ОРТО и Отслеживания.

Последний раз редактировалось skkkk, 27.02.2014 в 03:32.
skkkk вне форума  
 
Непрочитано 27.02.2014, 03:27
#665
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от skkkk Посмотреть сообщение
ORTHOMODE и POLARMODE
Пардон, я уже до этих переменных добрался - сразу не заметил их. И потому изменил свой вопрос.
Но про эти переменные и их применение тоже спасибо - ключевые моменты я не знал.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 27.02.2014, 03:42
#666
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Offtop: Тем более удалить, что номер его - ужас, ужас, ужас
Все-таки не POLARMODE, а AUTOSNAP (+РЕЖИМРИС) == 8 отвечает за включение/отключение полярного отслеживания?
Еще открытие для меня - этот плюс перед +РЕЖИМРИС! бывает и с плюсом?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 27.02.2014, 03:49
#667
skkkk


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Все-таки не POLARMODE, а AUTOSNAP
Все верно, ошибся я малёк... Буду впредь повнимательнее.
skkkk вне форума  
 
Непрочитано 27.02.2014, 04:02
#668
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от skkkk Посмотреть сообщение
Все верно
А POLARMODE==1 мне нужна для включения полярного отслеживания "от последнего сегмента".
Только вот привязки куда-то ичезли, хотя в настройках они включены!
По умолчанию AUTOSNAP у меня был 39. Когда вместо своей AUTOSNAP==8 ставлю AUTOSNAP в 39, то привязки восстанавливаются. Т.е. как и установить и полярное отслеживание, и чтобы работали привязки одновременно?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 27.02.2014, 11:35
#669
skkkk


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
как и установить и полярное отслеживание, и чтобы работали привязки одновременно?
Может, я чего не понимаю, но привязки и полярное отслеживание у меня работают независимо друг от друга. А вот орто с отслеживанием вместе работать не могут - либо одно, либо другое.
skkkk вне форума  
 
Непрочитано 27.02.2014, 15:54
#670
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от skkkk Посмотреть сообщение
привязки и полярное отслеживание у меня работают независимо друг от друга
Да, похоже, дело в том, что значения AUTOSNAP не просто выставляются, а плюсуются. Если установил просто 8, то будет без привязок. А если взять текущее значение (у меня было 39) и прибавить 8 (т.е. будет 47), то одновременно будет и полярное, и привязка.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 27.02.2014, 16:46
#671
skkkk


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Только вот привязки куда-то ичезли, хотя в настройках они включены!
О каких привязках идет речь? OSNAP или AUTOSNAP? Видимо второе, а я подумал о первом...
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Да, похоже, дело в том, что значения AUTOSNAP не просто выставляются, а плюсуются.
Все верно. Из справки:
Цитата:
Параметр хранится в виде битового кода, использующего сумму следующих значений.
skkkk вне форума  
 
Непрочитано 28.02.2014, 10:37
1 | #672
Stroit'el


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Stroit'el...Можно их прокомментировать? Что в них что?
Например, что такое "userr1", что такое "_id"? И т.д.

Сам макрос смотрите http://forum.dwg.ru/showpost.php?p=1...&postcount=662




Задача заключается в том, чтобы запомнить точку выравнивания, и затем по этой точке выровнять однострочные тексты, для этого используем переменную userr1. Идея выравнивания навеяна интересной макрокомандой обнуления координаты z.
------------------------------------------------------------------------------------------------------------------------------------------------------------------
userr1; - пользовательская переменная, ; - здесь, - подтверждение в ответ на запрос команды

0; ввод числа 0 - обнуление userr1, ; - здесь, - заканчивает работу команды

_id; ввод команды id - получение координаты точки с чертежа, ; - здесь, - подтверждение ввода (аналог нажатия ENTER).

\userr1; - после указания точки на чертеже присваиваем новое значение переменной userr1, которое получим с помощью координатного фильтра калькулятора командной строки, \ - ввод. Далее, userr1 - вызов команды присвоения значения переменной, ; - переход к получению значения (аналог нажатия ENTER).

'cal;rxof(@);\;; - 'cal - прозрачный вызов калькулятора командной строки, rxof - фильтр по координате х, @ - координаты последней точки, которые хранятся в памяти программы AUTOCAD, точка эта была указана вначале работы макроса (использовалась команда _id).
_select;$M=$(if,$(getvar,cmdactive),\,) - выбор текстов в любом порядке, с учетом активности команды select (используется переменная cmdactive в выражении Дизель). Посмотрите примечание по этому поводу.

_move;_pr;;1e99,0,0;;;_pr;;-1e99,0,0;;;_pr;; - перемещаем тексты по координате x в бесконечность (1e99) и затем возвращаем обратно (-1e99) по координате х в точку 0, здесь: _pr - предыдущий набор выбора. Команда перемещения снова вызывается по ";" (соответствует нажатию ENTER). Разделитель для ввода значений координат - запятая.

'cal;xof([$m=$(getvar,userr1),0,0]);; - перемещение текстов из точки 0 в точку, которая была указана (точка выравнивания), обратите внимание на квадратные скобки для ввода координат

------------------------------------------------------------------------------------------------------------------------------------------------------------------
PS.
$m=$(getvar,userr1) - выражение на языке ДИЗЕЛЬ (в autocade LT есть очень удобный язык программирования ДИЗЕЛЬ и великолепный язык макрокоманд, спасибо разработчикам за то, что это у нас есть...) http://exchange.autodesk.com/autocad...30d6b-7b3c.htm

\ - ввод в ответ на запрос команды, использование которого очень интересно тем, что, например, позволяет ввести какую-либо другую команду и затем указать объекты, таким образом возможно осуществлять комбинацию различных команд

_ нижнее подчеркивание позволяет использовать англоязычные команды в локализованных версиях AUTOCAD (не используется для переменных).

Есть замечательная книга Владимира Света "Язык макрокоманд и создание кнопок" http://dwg.ru/dnl/3480.


*Примечание
Ограничение использования данного макроса для всех объектов, кроме текстов, заключается в том, что макрос "плющит" такие объекты, например, отрезки становятся нулевой длины, поэтому рекомендуется использовать данный макрос только для текстов.


Второй макрос работает аналогично.

Спасибо за проявленный Вами интерес.
Спасибо дорогому ФОРУМУ dwg.ru.

Последний раз редактировалось Stroit'el, 02.03.2014 в 00:43.
Stroit'el вне форума  
 
Непрочитано 04.03.2014, 16:17
#673
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Можно ли в макросе запомнить текущее состояние параметров черчения (цвет, слой, вес, тип линий, ширину, масштаб типа линий), а также значение параметров черчения (AUTOSNAP), а после выполнения каких-то действий восстановить их?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 04.03.2014, 16:41
#674
Кулик Алексей aka kpblc
Moderator

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


В макросе - нет (ну или использовать USER*-переменные. А там наверняка возникнет проблема с обратным восстановлением значений).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 04.03.2014, 16:42
#675
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
наверняка возникнет проблема с обратным восстановлением значений
В чем там засада с восстановлением?
Если нельзя или не стоит командами, то, значит, программно?
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 04.03.2014 в 16:51.
АлексЮстасу вне форума  
 
Непрочитано 04.03.2014, 17:37
1 | #676
Кулик Алексей aka kpblc
Moderator

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


Переменных USER* не так уж и много - 5 целых, 5 строковых и 5 действительных. При этом некоторые хранятся в чертеже, некоторые - нет.
Теперь смотри:
слой (clayer) - строковое значение, хранить в USERS#
цвет (cecolor) - опять строковое. Опять USERS#
вес (celweight) - целое, с возможностью отрицательных. USERI#
тип (celtype) - строка, USERS#
масштаб типа линии (celtscale или ltscale) - двойной точности, USERR#
Пока системных переменных немного, все хорошо, можно запомнить, где что лежит и как называется. А теперь добавь сюда, например, osmode (целое), autosnap (целое), - и очень быстро ты упрешься в то, что переменные USER* кончились

----- добавлено через ~3 мин. -----
Придется (по идее) либо писать лиспы, либо еще каким-то образом извращаться (и я даже догадываюсь каким )
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 04.03.2014, 20:29
#677
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
либо еще каким-то образом извращаться (и я даже догадываюсь каким )
Каким бы? Забить? Положить?

Если для совсем-совсем-совсем тупых - как, например, переменной USERS1 присвоить значение clayer в макросе?
Пишу, допустим: ^C^CUSERS1;CLAYER; - присваивает не значение CLAYER, а строку "CLAYER".
Или (собезьянничал): ^C^C(setvar "USERS1" CLAYER) - ругается: ошибка: Настройка переменной AutoCAD отвергнута: "USERS1" nil.
Или (тоже собезьянничал): ^C^C(setq USERS1 (getvar "CLAYER")) - не ругается, но и не присваивает ничего.
Или (еще собезьянничал): ^C^C$USERS1=$(getvar,CLAYER) - тоже не ругается, и ничего не присваивает.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 04.03.2014, 20:46
#678
Кулик Алексей aka kpblc
Moderator

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


Пишу без када, поэтому критика не принимается
^C^Cusers1;$(getvar,clayer);
^C^C(setvar "users1" (getvar "clayer"));
P.S. Поищи функцию универсального обработчика ошибок (уж поминали такие вещи миллион раз)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 04.03.2014, 20:53
1 | #679
gomer

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


АлексЮстасу, ^C^CUSERS1;$M=$(getvar,CLAYER);
gomer вне форума  
 
Непрочитано 04.03.2014, 21:03
#680
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Пишу без када, поэтому критика не принимается
^C^Cusers1;$(getvar,clayer);
^C^C(setvar "users1" (getvar "clayer"));
Абсолютно без критики: первая не дает ничего, а вторая присваивает почему-то "0".
Цитата:
Сообщение от gomer Посмотреть сообщение
^C^CUSERS1;$M=$(getvar,CLAYER);
тоже присваивает почему-то "0".
Активный слой совсем-совсем не "0".
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 04.03.2014, 21:29
#681
gomer

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


Цитата:
тоже присваивает почему-то "0".
Активный слой совсем-совсем не "0".
Да неужели?
gomer вне форума  
 
Непрочитано 05.03.2014, 02:49
1 | #682
skkkk


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Можно ли в макросе запомнить текущее состояние параметров черчения (цвет, слой, вес, тип линий, ширину, масштаб типа линий), ...
А нельзя ли начертить что бы то ни было и присвоить последнему объекту (доступному по опции _last) нужные свойства, например, командой _CHANGE?
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
... а также значение параметров черчения (AUTOSNAP), а после выполнения каких-то действий восстановить их?
А вот тут-то и...
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
... возникнет проблема с обратным восстановлением значений).
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
В чем там засада с восстановлением?
Засада в том, что если пользователь нажмет ESC или произойдет еще какая-нибудь ошибка (нет слоя, не подгружен тип линии, объект не создался и т.д.), то ничего не восстановится. В этом, на мой взгляд, одно из основных ограничений языка макрокоманд. Второе ограничение - макрос нельзя повторить ни по Enter, ни по стрелке вверх.
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Если нельзя или не стоит командами, то, значит, программно?
Если мы упираемся в необходимость изменения системных переменных, лучше программно, только если AutoCAD не LT.
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Поищи функцию универсального обработчика ошибок (уж поминали такие вещи миллион раз)
Обработка ошибок решает проблему восстановления переменных.
skkkk вне форума  
 
Непрочитано 05.03.2014, 03:00
#683
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от gomer Посмотреть сообщение
Цитата:
тоже присваивает почему-то "0".
Активный слой совсем-совсем не "0".
Да неужели?
Гм... Кажется, понял почему у меня не получалось - я вставлял Ваше и kpblc выражения в макрос в Tool Palette, а там отдельно определяется и слой, и цвет и пр. Видимо, вмешиваются эти определения из Tool Palette.
Попробовал вставить в отдельную кнопку - работает! Спасибо.
Жаль, что пробовать макрос на кнопке неудобно, дольше, чем в палитре. Вы как макросы проверяете?
Но как же быть, если я планирую использовать эти макросы в палитрах?
И не подскажете, что такое $M?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 05.03.2014, 08:45
#684
gomer

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Жаль, что пробовать макрос на кнопке неудобно, дольше, чем в палитре. Вы как макросы проверяете?
ну у меня есть отдельное меню для макросов
gomer вне форума  
 
Непрочитано 05.03.2014, 08:55
#685
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Обработка ошибок решает проблему восстановления переменных.
Дополнительно: http://autolisp.ru/2009/09/13/error-catch/
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
в макрос в Tool Palette, а там отдельно определяется и слой, и цвет и пр
В свойствах инструмента установи "Использовать слой" - "Текущий". Возможно, поможет.
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Но как же быть, если я планирую использовать эти макросы в палитрах?
А надо ли?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.03.2014, 18:42
#686
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А надо ли?
А что делать, если нужно определить параметры черчения нескольких сотен объектов? Для ускорения черчения и исключения ошибок назначения параметров. Нужно меню объектов, где для каждого объекта все прописано.
Есть готовые альтернативы Tool Palette?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 05.03.2014, 20:56
#687
Кулик Алексей aka kpblc
Moderator

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


Я про то, что макросы в палитрах лучше не использовать. Это неэффективно. Я бы делал ставку на лисп-приложения - они и гибче будут, и проще в поддержке (естественно, при соблюдении некоторых условий).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.03.2014, 21:05
#688
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Я про то, что макросы в палитрах лучше не использовать. Это неэффективно. Я бы делал ставку на лисп-приложения - они и гибче будут, и проще в поддержке (естественно, при соблюдении некоторых условий).
С лиспами в #631-661 уперся в тупик. Нужно, чтобы можно было после черчения полилиний и пр. выполнять команду Autocad Map 3D, а из лиспа она не запускалась. Или я ее не умею правильно готовить.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 17.03.2014, 08:06
#689
Astartes

Котло- и реакторостроение
 
Регистрация: 25.02.2010
Барнаул
Сообщений: 807


Приветствую. Кто сможет помочь.
Хоть это и не макрос, но был выложен в этой теме.
Вот лисп для быстрого выделения мультивыносок по диапазону.
Скажите что нужно поменять, чтобы также по диапазону выделялся мтекст?
Пробовал в коде MULTILEADER заменить на MTEXT или MULTITEXT, но не лисп не работает.
Код:
[Выделить все]
 (defun c:qsel()
  (vl-load-com)
  ((lambda(range)
     (if (not (vl-catch-all-error-p range))
       (sssetfirst nil (ssget "_X" (list (cons 0 "MULTILEADER") (cons 304 range))))
       )
     )
    (vl-catch-all-apply 'getstring
      (list t "\nВведите диапазон в формате [начало-конец]: ")
      )
    )
  (princ)
  ); end c:qsel
__________________
AutoCad 2011 -> AutoCad 2013
Astartes вне форума  
 
Непрочитано 17.03.2014, 09:54
#690
Кулик Алексей aka kpblc
Moderator

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


Astartes, а "диапазон" - это что? Применительно к MTEXT.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.03.2014, 10:11
#691
Astartes

Котло- и реакторостроение
 
Регистрация: 25.02.2010
Барнаул
Сообщений: 807


Кулик Алексей aka kpblc, Тоже что и для мультивыносок.
Диапазон чисел (числовые значения мтекста).
В спецификации номера позиций забиты мтекстом.
Если стандартным методом. то КвикСелект-Мтекст-Содержимое-Оператор (поиск с глобальными символами) - Значение [0-9],[0-9][0-9].
В общем все тоже самое что и для мвыносок, только нужно чтобы выбирался мтекст.
__________________
AutoCad 2011 -> AutoCad 2013
Astartes вне форума  
 
Непрочитано 17.03.2014, 10:14
#692
Кулик Алексей aka kpblc
Moderator

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


Кхм... А как бы учесть вариант принудительного форматирования текста?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.03.2014, 11:02
#693
Astartes

Котло- и реакторостроение
 
Регистрация: 25.02.2010
Барнаул
Сообщений: 807


Кулик Алексей aka kpblc, Если это ко мне вопрос то я не знаю.
А как он учтен в вышевыложенном лиспе для мвыноски? Ведь мвыноска это по сути тот же мтекст. Или нет?
__________________
AutoCad 2011 -> AutoCad 2013
Astartes вне форума  
 
Непрочитано 17.03.2014, 17:24
#694
kakt00z

инженер-проектировщик КИПиА
 
Регистрация: 30.08.2008
Минск
Сообщений: 159


(list (cons 0 "MTEXT") (cons 1 range))
kakt00z вне форума  
 
Непрочитано 18.03.2014, 05:07
#695
Astartes

Котло- и реакторостроение
 
Регистрация: 25.02.2010
Барнаул
Сообщений: 807


kakt00z, Спасибо, заработало.
__________________
AutoCad 2011 -> AutoCad 2013
Astartes вне форума  
 
Непрочитано 30.04.2014, 04:28
#696
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Как сделать обработку в макросе и предварительно выбранного, и выбранного после запуска макроса?
Например, нужно заменить типы линий на непрерывный (не важно на какой):
^C^C_chprop;_lt;Continuous;; - заменит типы линий у предварительно выбранного. Если нет предварительно выбранного, то не сработает.
^C^C_chprop;\;_lt;Continuous;; - заменит типы линий только у одного элемента, выбранного после вызова макроса . Для предварительно выбранного не сработает.
^C^C_chprop;\\;_lt;Continuous;; - заменит типы линий только у двух элементов, выбранных после вызова макроса, или у всех элементов, выбранных рамкой. Для предварительно выбранного не сработает.
Как делается это нормально - чтобы для обработки выбрать все нужное как до, так и после запуска?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 30.04.2014, 05:33
1 | #697
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Как сделать обработку в макросе и предварительно выбранного, и выбранного после запуска макроса?
Например, нужно заменить типы линий на непрерывный (не важно на какой):
^C^C_chprop;_lt;Continuous;; - заменит типы линий у предварительно выбранного. Если нет предварительно выбранного, то не сработает.
^C^C_chprop;\;_lt;Continuous;; - заменит типы линий только у одного элемента, выбранного после вызова макроса . Для предварительно выбранного не сработает.
^C^C_chprop;\\;_lt;Continuous;; - заменит типы линий только у двух элементов, выбранных после вызова макроса, или у всех элементов, выбранных рамкой. Для предварительно выбранного не сработает.
Как делается это нормально - чтобы для обработки выбрать все нужное как до, так и после запуска?
Попробуй так, без ^C^C:
Код:
[Выделить все]
(if (setq ss (ssget)) (command "_chprop" ss "" "_lt" "Continuous" "")) (setq ss nil)
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 30.04.2014, 06:28
1 | #698
gomer

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


Цитата:
Сообщение от Krieger Посмотреть сообщение
Попробуй так, без ^C^C:
Зачэм?
^C^C((lambda (ss) (if ss (command "_chprop" ss "" "_lt" "Continuous" ""))) (ssget))
усе работает, хотя это идеологически не макрос, стопиццот раз уже повторял
gomer вне форума  
 
Непрочитано 30.04.2014, 07:53
#699
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Цитата:
Сообщение от gomer Посмотреть сообщение
Зачэм?
^C^C((lambda (ss) (if ss (command "_chprop" ss "" "_lt" "Continuous" ""))) (ssget))
усе работает, хотя это идеологически не макрос, стопиццот раз уже повторял
Ну да, работает. Что то подумалось что выделение должно сняться.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 30.04.2014, 17:15
#700
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от Krieger Посмотреть сообщение
Попробуй так
Цитата:
Сообщение от gomer Посмотреть сообщение
усе работает
Спасибо!
Вы писали не командами, а на лиспе (?), потому что написать чисто макрос, учитывающий выбор и до, и после, нельзя?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 01.05.2014, 06:11
#701
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Макросом не получается.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 01.05.2014, 08:14
#702
Karloson1


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


День добрый всем.
Помогите как сделать команду
_Spline;\_ai_draworder _Back
сплайн спрашивает только 1 точку и переходит к выбору объекта для опускания на задний план
Как сделать так чтоб сплайн чертился а по завершению опускался назад даже может и _last
Karloson1 вне форума  
 
Непрочитано 01.05.2014, 09:03
#703
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Цитата:
Сообщение от Karloson1 Посмотреть сообщение
День добрый всем.
Помогите как сделать команду
_Spline;\_ai_draworder _Back
сплайн спрашивает только 1 точку и переходит к выбору объекта для опускания на задний план
Как сделать так чтоб сплайн чертился а по завершению опускался назад даже может и _last
Пробуй:
Код:
[Выделить все]
^C^C(vl-load-com) (VL-CATCH-ALL-APPLY '(lambda()(command "_.SPLINE")(while (> (getvar "CMDACTIVE") 0) (command pause)))) (command "_draworder" "_l" "" "_b")
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 01.05.2014, 09:22
#704
Karloson1


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


Krieger
Попробовал но сплайн работает а на задний план не опускает
Karloson1 вне форума  
 
Непрочитано 01.05.2014, 10:07
#705
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Цитата:
Сообщение от Karloson1 Посмотреть сообщение
Krieger
Попробовал но сплайн работает а на задний план не опускает
Попробуй так:
Код:
[Выделить все]
^C^C(vl-load-com) (progn (VL-CATCH-ALL-APPLY '(lambda()(command "_.SPLINE")(while (> (getvar "CMDACTIVE") 0) (command pause)))) (command "_draworder" "_l" "" "_b"))
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 01.07.2014, 11:18
#706
Агент СмиТ

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


Доброго дня всем!
Помогите пожалуйста доработать макрос объединения ячеек таблицы в строке:
Код:
[Выделить все]
*^R^C^C_EditTableCell \\o;m;h;q
При запуске макрос просит указать таблицу, а затем номер её строки. Можно ли сделать ввод нескольких номеров за один вызов, или хотя бы подавить запрос на повторный выбор таблицы?
__________________
Каждая система стремится к равновесию.
Агент СмиТ вне форума  
 
Непрочитано 01.07.2014, 12:00 Макрос на основе команды _pedit
#707
kpectoff


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


Добрый день. Столкнулся с проблемой.
Есть замкнутый контур, состоящий из отрезков. Мне необходимо его (контур) превратить в полилинию и перенести её на текущий слой.
Я написал макрос:
^C^C_pedit;\;Д;\;;_laycur;_last;
Макрос не работает. После объединения в полилинию команда _pedit не прирывается. Помогите, пожалуйста, решить проблему.
kpectoff вне форума  
 
Непрочитано 01.07.2014, 12:49
#708
CaMoCAD


 
Регистрация: 25.03.2008
Зелик
Сообщений: 1,576


Ключ "Д" - это добавить? Если выбираете рамкой, - то надо 2 тыка ...Д;\\...
__________________
* Буква "ё" не используется в тексте исключительно в связи с требованиями ЕСКД.
CaMoCAD вне форума  
 
Непрочитано 01.07.2014, 14:35
#709
kpectoff


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


Цитата:
Сообщение от CaMoCAD Посмотреть сообщение
Ключ "Д" - это добавить? Если выбираете рамкой, - то надо 2 тыка ...Д;\\...
Большое спасибо, всё сработало!
кому, если вдруг нужно, рабочий скрипт:
^C^C_pedit;\;Д;\\;;_laycur;_last;
kpectoff вне форума  
 
Непрочитано 15.10.2014, 08:08
#710
Valery Brelovsky

Инженер дорожник
 
Регистрация: 22.10.2007
Израиль
Сообщений: 1,859


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
^C^C^Plunits;2;luprec;2;aunits;0;auprec;2
Спасибо, то что искал. Последнее время кому то нравится устанавливаь углы в градусы/минуты/ сек. Их потом при необходимости вводить не очень удобно, в десятичных удобнее. Просто добавил в макрос сохранениея, и теперь сохранив всё установилось как нужно.
Valery Brelovsky вне форума  
 
Непрочитано 28.10.2014, 23:15
#711
off

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


Целью создания макроса было создание нескольких кнопок для оперативной печати листов формата А4, А3 на заданном принтер и сохранение в PDF. В качестве виртуального принтера PDF используется PDFCreator, в качестве реального принтера струйник WF-7010 (возможна печать А3 и А4). Принтер имеет некоторые особенности, с которыми пришлось бороться.
Введение: Основой макроса является команда -plot. Команда имеет большое количество параметров, чтобы не запутаться с ними и нужен xls файл. Основными являются:
-Формат бумаги
-PC3 файл
-Ориентация листа (Portrait/Landscape)
1. Создаем *.pc3 для каждого принтера, который вы планируете использовать, изменяем если требуется поля печати (в pdf обязательно выставлять в 0, для реальных принтеров все зависит от их возможностей печатать без полей). При изменении полей, ограничении списка выводимых форматов создается pmp файл. Желательно также как и с pc3 придерживаться какой-то системы в их наименовании.
2.Определяемся с наименованиями форматов бумаги. В PDFCreator форматы называются просто A3, A4. В реальном принтере могут быть варианты, так у моего принтера формат А4 именуется так A4 (210 x 297 mm) .
3.Определяемся с ориентацией листа.
Выполнив пункты 1-3 открываем файл xls и вносим в соответствующие ячейки ваши данные. В нижней строчке все параметры с помощью функции СЦЕПИТЬ объединяются в одну строку, которая и будет макросом. Выполняем Копировать-Вставить значения и вставляем строчку в соседнюю ячейку. Теперь в этой ячейке содержится нужный нам текст, который вставляется на кнопку или в инстр.палитру. (лучше сначала вставить в палитру, на время отладки, а потом уже переносить на панель в виде кнопки).
Полученный макрос будет иметь примерно такой вид:
Код:
[Выделить все]
_imageframe 2;_PSLTSCALE 0;_wipeout _f;_off;$M=$(if,$(eq,$(getvar,tilemode),1),^C^C_-PLOT;_Y;Model;A4_WF7010;A4 (210 x 297 mm);_M;_P;_N;_W;\\_F;"0,0";_Y;.;_Y;_A;_N;_N;_Y,^C^C_-PLOT;_Y;;A4_WF7010;A4 (210 x 297 mm);_M;_P;_N;_W;\\_F;"0,0";_Y;.;_Y;_N;_N;_N;_N;_N;_Y)
В начале макроса код
Код:
[Выделить все]
_imageframe 2;_PSLTSCALE 0;_wipeout _f;_off;
отношения к команде PLOT не имеет, просто выполняются полезные для печати действия - контур растров становится непечатаемым, отключается масштабирование типов линий в пространстве листа, отключаются рамки маскировки. Если что из этого вам не нужно - просто убираете ненужное из кода (в экселе этот перечень в отдельной ячейке хранится).
Часть кода
Код:
[Выделить все]
$M=$(if,$(eq,$(getvar,tilemode),1)....
определяет находитесь ли вы в пространстве листа или модели и активирует соответствующую ветвь алгоритма, т.к. у команды -PLOT немного отличаются параметры в разных пространствах.
После выполнения этих муторных действий вы получите набор кнопок с помощью которого можно быстро напечатать несколько листов, не заморачиваясь на выставления параметров печати. Для всего остального есть листы или мощные проги типа той, которую развивает bargool или платной программы, которая печатает с использованием блоков/рамок.

В приложении иконки для кнопок и экселевский файл, упрощающий написание макроса. В файле все параметры и команды на английском с _.

Что касается борьбы с принтером WF-7010 - у него есть два лотка, первый соответственно для А4, второй для А3. Автоматом он не выбирает какую брать бумагу, поэтому пришлось задавать это явно и создавать по pc3 файлу для каждого формата. К тому же оказалось что пользовательские форматы листов можно добавлять только для первого лотка (хотел создать форматы А3 и А4 вместо А4(297x210 mm) и A3 (11***in).
Вложения
Тип файла: rar PLOT.rar (13.5 Кб, 53 просмотров)
off вне форума  
 
Непрочитано 28.10.2014, 23:54
#712
skkkk


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


Offtop: off, спасибо, что поделился плодами своих трудов. Получилась целая статья
skkkk вне форума  
 
Непрочитано 30.10.2014, 11:05
#713
off

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


В дополнение к #711.
Макрос для печати последней конфигурации:
для англ.версии ^C^C_-plot _N;Model;previous plot;;_N;_N;_Y;
для русской версии ^C^C_-plot _N;Model;Предыдущая печать;;_N;_N;_Y;
Повторяет печать с последними настройками.
off вне форума  
 
Непрочитано 30.12.2014, 17:15
#714
mateus


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


ни как не могу создать команду поворот по базовой точке по двум точкам, может кто поможет к новому году?
mateus вне форума  
 
Непрочитано 30.12.2014, 19:20
#715
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от mateus Посмотреть сообщение
поворот по базовой точке по двум точкам
Возможно, это сгодится?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 31.12.2014, 08:30
#716
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Цитата:
Сообщение от mateus Посмотреть сообщение
ни как не могу создать команду поворот по базовой точке по двум точкам, может кто поможет к новому году?
Лови
Код:
[Выделить все]
(defun c:kr () (setq ss (ssget)) (command "_rotate" ss "" pause "_r" (getvar "lastpoint") pause));kr
Собственно уже было в этой теме.
http://forum.dwg.ru/showpost.php?p=330892&postcount=123
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 31.12.2014, 13:36
#717
mateus


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


огромное всем спасибо
с наступающим всем
успехов в новом году
mateus вне форума  
 
Непрочитано 06.01.2015, 17:00
#718
mateus


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


можно ли чтоб созданная команда работала с клавиатуры?
mateus вне форума  
 
Непрочитано 06.01.2015, 17:13
#719
Кулик Алексей aka kpblc
Moderator

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


Напиши лисп, гарантируй его загрузку.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.01.2015, 16:49
#720
mateus


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


(defun c:kr () (setq ss (ssget)) (command "_rotate" ss "" pause "_r" (getvar "lastpoint") pause));kr
можно ли чтоб созданная команда работала с клавиатуры?
mateus вне форума  
 
Непрочитано 09.01.2015, 18:28
#721
Кулик Алексей aka kpblc
Moderator

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


Она уже работает. Это не макрокоманда, а нормальное описание Lisp-функции.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.01.2015, 19:40
#722
art_rrc


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


Цитата:
Сообщение от mateus Посмотреть сообщение
(defun c:kr () (setq ss (ssget)) (command "_rotate" ss "" pause "_r" (getvar "lastpoint") pause));kr
можно ли чтоб созданная команда работала с клавиатуры?
Вот макрокоманда.. ^C^Cповернуть;\о;\\\ Далее адаптация ->Горячие клавиши....
art_rrc вне форума  
 
Непрочитано 09.01.2015, 19:57
#723
skkkk


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Она уже работает. Это не макрокоманда, а нормальное описание Lisp-функции.
Работает только после первого нажатия на кнопку с этим макросом. По постам mateus'a видно, что он еще не читал этого. Но, видимо, придётся
skkkk вне форума  
 
Непрочитано 10.01.2015, 12:08
#724
mateus


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


Я профан, спасибо вам я справился с лиспом "повернуть" а вот с этим уж никак
^C^C_MIRROR;_m2p
mateus вне форума  
 
Непрочитано 02.02.2015, 13:24
#725
blind4ik


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


Приветствую.
Стоит конкретная задача преобразовать содержимое dxf в другой вид.
Прилагаю исходный и конечный файлы.
Моя последовательность действий приведена ниже.
Что из этого можно выполнить макросами, а что нет? Можно ли одним или несколькими макросами с перерывами на манипуляции вручную?
Еще не всю тему прочел, и вообще только учусь.
Прошу ткнуть носом, где читать про каждый конкретный случай (если есть такой).
Автокад 2010 рус, но файлы формата акад2004 если это важно.

формат - стиль текста STANDART был txt.shx - стал win_eskd.shx- применить - закрыть
формат - отображение точек - круг с точкой размер 0.25 в абсолютных единицах
формат - единицы чертежа - десятичные, 0.000, метры, Град/Мин/Сек, 0d00'00", общие
создать слой - PI_OT0
создать слой - PI_ST0
создать текстовый стиль SHRFT - win_eskd.shx, высота 0.95, коэф. сжатия 0.85, угол наклона 15d
быстрый выбор - все полилинии - удалить
быстрый выбор - весь текст с цветом 0,0,255 - переместить в слой PI_OT0 и поменять стиль на SHRFT, высота 1, цвет по слою, положение Z=0
быстрый выбор - все точки - положение Z=0 - переместить в слой PI_ST0
быстрый выбор - слой подписи точек - стиль STANDART
сдвинуть слой PI_OT0 влево на 0.5 вверх на 0.3
сдвинуть слой подписи точек влево на 1.2
очистить - удалить все - все

Еще дополнение
можно ли на одну кнопку повесить замораживание и размораживание одного слоя?
А то у меня две кнопки ^C^C_-layer;_freeze;NAD_M0;;
Заранее спасибо
blind4ik вне форума  
 
Непрочитано 02.02.2015, 13:39
1 | #726
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от blind4ik Посмотреть сообщение
стиль текста STANDART был txt.shx - стал win_eskd.shx- применить - закрыть
Команда _.-style
Цитата:
Сообщение от blind4ik Посмотреть сообщение
отображение точек
Системные переменные pdmode, pdsize
Цитата:
Сообщение от blind4ik Посмотреть сообщение
единицы чертежа
Команда _.-units, системные переменные lunits, aunits, luprec, auprec, insunits, insunitsdefsource, insunitdeftarget
Цитата:
Сообщение от blind4ik Посмотреть сообщение
создать слой
Команда _.-layer
Цитата:
Сообщение от blind4ik Посмотреть сообщение
быстрый выбор - все полилинии - удалить
Команды, по-моему, нет (кроме _.qselect, у которой есть только диалоговый режим работы). Решается лиспом / vba / .NET / arx
Цитата:
Сообщение от blind4ik Посмотреть сообщение
сдвинуть слой PI_OT0 влево на 0.5 вверх на 0.3
Сдвинуть слой невозможно. Только объекты слоя. Попробуй заблокировать все слои, кроме нужного, потом _.select _all и команда _.move
Цитата:
Сообщение от blind4ik Посмотреть сообщение
очистить - удалить все - все
Тут что запрашивается? _.-purge, что ли?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 03.02.2015, 13:29
#727
blind4ik


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


Почему-то файлы не приложились к предыдущему сообщению, ну, впрочем, они и не нужны.
Спасибо за помощь.
Получилось это:
первая часть
^C^C'_.zoom _e;_.-style STANDARD win_eskd.shx;0;0.85;;;;_.-style SHRFT win_eskd.shx;0;0.85;15;;;lunits 2;aunits 1;luprec 3;auprec 3;insunits 6;insunitsdefsource 6;pdmode 32;pdsize 0.25;_.-layer;Н;PI_OT0;;_.-layer;Н;PI_ST0;;flatten;_all;;n;

вторая часть вручную быстрым выбором раскидываю по слоям и меняю стили текстов,
_change
_chprop
этими командами можно как то? и

и третья часть
_-layer;_freeze;*;;_-layer;Р;Подписи точек;;_move;_all;П;-1.2,0;;_-layer;_freeze;*;;_-layer;Р;PI_OT0;;_move;_all;П;-0.8,0.2;_-layer;Р;*;;
про то, что сдвинуть слой это действительно я коряво написал
ну и _.-purge;итд

Где посмотреть перевод всех команд рус и англ акада? Чтобы не использовать русские буквы _.-layer;Н [Новый] или _-layer;Р [Разморозить], _move;_all;П, итд.
Чем отличается пробел от ввода и от ; в макросе? Минус как я понял, чтобы не выводить диалоговое окно если оно есть. До книги язык макрокоманд еще не дошел, но скоро дойду.
blind4ik вне форума  
 
Непрочитано 03.02.2015, 13:43
#728
Кулик Алексей aka kpblc
Moderator

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


Советую поставить английскую локализацию и на ней ставить эксперименты
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 04.02.2015, 18:03
#729
skkkk


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


Цитата:
Сообщение от blind4ik Посмотреть сообщение
Где посмотреть перевод всех команд рус и англ акада?
Насчет перевода в виде списка "англ-рус" в одном месте не знаю, но можно смотреть в английской справке, а если трудности с переводом возникнут, то подглядывать в русскую.
skkkk вне форума  
 
Непрочитано 04.02.2015, 21:41
1 | #730
Yuriy-I

сп. САПР, архитектор
 
Регистрация: 25.05.2008
Санкт-Петербург
Сообщений: 116


Цитата:
Сообщение от blind4ik Посмотреть сообщение
Где посмотреть перевод всех команд рус и англ акада?
http://yuriy-i.narod.ru/acd---1-cmd-all.htm
__________________
"лучше" или "хуже" - понятия относительные
Yuriy-I вне форума  
 
Непрочитано 25.02.2015, 09:42
#731
RNB

Проектирование мостов
 
Регистрация: 29.01.2014
Новосибирск
Сообщений: 433


Не могу понять в чём дело.
^C^Cusers1;$m=$(Getvar,Clayer);_Clayer;Выноски;_Line;\\;_Clayer;$m=$(Getvar,users1);
По идее в конце должен возвращаться слой, активный до начала выполнения макроса. На практике же, слой принимает ПРЕДЫДУЩЕЕ значение переменной Users1. В чем соль?

----- добавлено через ~4 мин. -----
Ах да, Автокад 2015 рус

Последний раз редактировалось RNB, 25.02.2015 в 09:47.
RNB вне форума  
 
Непрочитано 25.02.2015, 10:10
1 | #732
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Фиг знает. Лови:
Код:
[Выделить все]
^C^C_-layer;_make;выноски;;_line;\\;_layerp
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 25.02.2015, 10:27
#733
RNB

Проектирование мостов
 
Регистрация: 29.01.2014
Новосибирск
Сообщений: 433


Цитата:
Сообщение от Krieger Посмотреть сообщение
^C^C_-layer;_make;выноски;;_line;\\;_layerp
Спасибо! Можно даже чуть короче
Код:
[Выделить все]
^C^C_clayer;выноски;_line;\\;_layerp
Теперь вопрос, можно ли как-то сделать то же самое, но с зацикленной командой (_pline, _xline), чтобы можно было вводить не определенное количество пользовательских данных ("\"), а бесконечное, до нажатия Enter или Esc?
RNB вне форума  
 
Непрочитано 25.02.2015, 10:36
#734
Кулик Алексей aka kpblc
Moderator

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


Макросом - по-моему, никак.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 25.02.2015, 10:40
#735
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Цитата:
Сообщение от RNB Посмотреть сообщение
Спасибо! Можно даже чуть короче
Можно, но не нужно. В моем случае слой создается. Поэтому код будет работать даже в чертежах где нет этого слоя.
Цитата:
Сообщение от RNB Посмотреть сообщение
Теперь вопрос, можно ли как-то сделать то же самое, но с зацикленной командой (_pline, _xline), чтобы можно было вводить не определенное количество пользовательских данных ("\"), а бесконечное, до нажатия Enter или Esc?
Это лисп нужен. А вообще есть ведь tool palettes, там на кнопках можно слой задать.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 25.02.2015, 10:40
#736
RNB

Проектирование мостов
 
Регистрация: 29.01.2014
Новосибирск
Сообщений: 433


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Макросом - по-моему, никак.
Жаль. Ну что ж, давно хотел взяться за лисп. "Валера, настало твоё время"

----- добавлено через ~11 мин. -----
Цитата:
Сообщение от Krieger Посмотреть сообщение
Можно, но не нужно. В моем случае слой создается. Поэтому код будет работать даже в чертежах где нет этого слоя.
На этот случай да, полностью согласен. Еще добавить туда все параметры, и будет то, что нужно. Еще раз спасибо!
Цитата:
Сообщение от Krieger Посмотреть сообщение
Это лисп нужен. А вообще есть ведь tool palettes, там на кнопках можно слой задать.
Да, буду погружаться в лисп. tool palettes не очень подходит, так как большинство часто используемых команд "забиндены" на мышку

----- добавлено через ~4 ч. -----
Цитата:
Сообщение от RNB Посмотреть сообщение
Теперь вопрос, можно ли как-то сделать то же самое, но с зацикленной командой (_pline, _xline), чтобы можно было вводить не определенное количество пользовательских данных ("\"), а бесконечное, до нажатия Enter или Esc?
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Макросом - по-моему, никак.
Цитата:
Сообщение от Krieger Посмотреть сообщение
Это лисп нужен
Понимаю, что не та тема, но так, по-моему будет проще, чем объяснять заново в теме с лиспом... Подскажите выражение, которое позволяет выполнить желаемое, пожалуйста
RNB вне форума  
 
Непрочитано 26.02.2015, 12:29
1 | #737
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Цитата:
Сообщение от RNB Посмотреть сообщение
Понимаю, что не та тема, но так, по-моему будет проще, чем объяснять заново в теме с лиспом... Подскажите выражение, которое позволяет выполнить желаемое, пожалуйста
Проверяй переменную CMDACTIVE во время выполнения команды.
Код:
[Выделить все]
(defun c:ll ()
(command "_-layer" "_m" "выноски" "" "_line")
(while (> (getvar "CMDACTIVE") 0)(command pause))
(command "_layerp")
    )
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 26.02.2015, 15:40
#738
RNB

Проектирование мостов
 
Регистрация: 29.01.2014
Новосибирск
Сообщений: 433


Цитата:
Сообщение от Krieger Посмотреть сообщение
(defun c:ll ()
(command "_-layer" "_m" "выноски" "" "_line")
(while (> (getvar "CMDACTIVE") 0)(command pause))
(command "_layerp")
)
Отлично! Спасибо! Я уже сделал, но по сравнению с этим - через .... Добавлю обработчик ошибок и буду радоваться

Последний раз редактировалось Кулик Алексей aka kpblc, 26.02.2015 в 15:45.
RNB вне форума  
 
Непрочитано 28.03.2015, 22:19
#739
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


как сделать переключатель QPMODE на кнопку (если 0, то при нажатии ставить 1, и наоборот)?
Konstruktiv54 вне форума  
 
Непрочитано 28.03.2015, 22:21
1 | #740
Кулик Алексей aka kpblc
Moderator

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


Так ведь в статусной строке выводится соответствующий переключатель, нет?
Код:
[Выделить все]
^C^C$(setvar,qpmode,$(abs,$(-,1,$(getvar,qpmode))))
Кажется, так. Работу не проверял.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 28.03.2015, 22:28
#741
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


насколько часто помогает, настолько часто и раздражает...решил на кнопку мыши повесить ))
неа, не работает
Konstruktiv54 вне форума  
 
Непрочитано 28.03.2015, 22:59
#742
Кулик Алексей aka kpblc
Moderator

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


На кнопку мыши? А лиспы поддерживаются (т.е. AutoCAD не LT)? Если да, то можно поставить такое:
Код:
[Выделить все]
^C^C^P(defun c:qp1() (setvar "qpmode" (1- (getvar "qpmode"))));qp1;
Или, второй вариант, более интересный:
Код:
[Выделить все]
^C^C^P(defun c:qp1() (setvar "qpmode" (* -1 (getvar "qpmode"))));qp1;
Ну и третий, совсем устойчивый:
Код:
[Выделить все]
^C^C^P(defun c:qp1 () (setvar "qpmode" (if (= (getvar "qpmode") 0) 1 (* -1 (getvar "qpmode")))));qp1;
Если же ACAD LT, можно попытаться так:
Код:
[Выделить все]
^C^Cqpmode;$M=$(*,-1,$(getvar,qpmode));
P.S. Честно говоря, я DIESEL уже капитально подзабыл...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 28.03.2015, 23:10
#743
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


Все работает, спасибо )
Ну и вишенкой на торте было бы закрывание открытого окна быстрых свойств, при выключении QPMODE!
Konstruktiv54 вне форума  
 
Непрочитано 29.03.2015, 00:22
#744
gomer

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


http://forum.dwg.ru/showthread.php?t=66490
gomer вне форума  
 
Непрочитано 29.03.2015, 07:26
#745
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


что-то я затупил...при выборе другого объекта, или выполнении какой-нибудь команды быстрые свойства сами закрываются
Konstruktiv54 вне форума  
 
Непрочитано 30.03.2015, 06:44
#746
RNB

Проектирование мостов
 
Регистрация: 29.01.2014
Новосибирск
Сообщений: 433


Цитата:
Сообщение от Konstruktiv54 Посмотреть сообщение
как сделать переключатель QPMODE на кнопку (если 0, то при нажатии ставить 1, и наоборот)?
Стесняюсь спросить, зачем? Кнопочка же есть в нижней панели?
RNB вне форума  
 
Непрочитано 30.03.2015, 07:15
#747
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


я не помню когда я последний раз нажимал кнопочки на панельках )) у меня все команды на клавиатуре...ну или на мышке, которая в прочем тоже, с клавиатурой ))
Konstruktiv54 вне форума  
 
Непрочитано 30.03.2015, 07:26
#748
RNB

Проектирование мостов
 
Регистрация: 29.01.2014
Новосибирск
Сообщений: 433


Цитата:
Сообщение от RNB Посмотреть сообщение
Стесняюсь спросить, зачем? Кнопочка же есть в нижней панели?
Да что-то форум не полностью прогрузился и я увидел только начало диалога. У меня у самого всё на мышке, сейчас уже не представляю, как по другому жить)
RNB вне форума  
 
Непрочитано 30.03.2015, 08:33
#749
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


Возвращаясь к теме...все таки не очень удобно что быстрые свойства не сразу закрываются при отключении QPMODE, про какие настройки говорил Гомер, я не понял...я установил эту панельку, поигрался, ничего подходящего не нашел.
Konstruktiv54 вне форума  
 
Непрочитано 30.03.2015, 16:34
#750
Cfytrr

Балка на балку, кирпич на кирпич...
 
Регистрация: 09.10.2007
Питер
Сообщений: 4,810
Отправить сообщение для Cfytrr с помощью Skype™


Товарищи, подскажите, можно ли создать такой макрос чтоб при вызове команды _dist переменная DYNMODE принимала значение 2, а после завершения команды снова обнулялась?
__________________
...переменная FILEDIA создана для привлечения пользователей к форумам.
Cfytrr вне форума  
 
Непрочитано 30.03.2015, 16:44
1 | #751
Кулик Алексей aka kpblc
Moderator

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


Offtop: Можно. Создавай
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.03.2015, 17:06
#752
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


Алексей, а мой вопрос прокомментируешь?
Konstruktiv54 вне форума  
 
Непрочитано 30.03.2015, 17:12
1 | #753
Кулик Алексей aka kpblc
Moderator

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


Konstruktiv54, ну не люблю я макросы, я лиспы предпочитаю писать и использовать. Это для меня проще, быстрее и устойчивее.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.03.2015, 18:06
#754
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


Offtop: я еще не освоил ни лисп, ни макросы...вот только только с VBA разбираюсь ))
а на лиспе можно принудительно закрыть это чертово окошко? )
Konstruktiv54 вне форума  
 
Непрочитано 30.03.2015, 21:07
1 | #755
Кулик Алексей aka kpblc
Moderator

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


ACAD2014, только что проверил код переключения:
Код:
[Выделить все]
 (vl-load-com)
(defun qpo (/)
  (setvar "qpmode" (* -1 (getvar "qpmode")))
  ) ;_ end of defun
(vlax-add-cmd "qpo" 'qpo "qpo" 1)
Окно быстрых свойств закрывается моментально.
То же, но с подсветкой последнего выбранного элемента:
Код:
[Выделить все]
 (vl-load-com)
(defun qpo (/ ss)
  (setvar "qpmode" (* -1 (getvar "qpmode")))
  (if (setq ss (ssget "_P"))
    (sssetfirst ss ss)
    ) ;_ end of if
  ) ;_ end of defun
(vlax-add-cmd "qpo" 'qpo "qpo" 1)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.04.2015, 17:03
#756
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


Столкнулся с проблемой, что этот лисп работает только в последнем открытом документе. Альт+табом перекючаешься на другой файл, и выпадает ошибка что-то там command mismatch.
Вернулся к коду из 742, только добавил в него деселект. все заработало так как надо ))
Код:
[Выделить все]
^C^C^P(defun c:qp1 () (setvar "qpmode" (if (= (getvar "qpmode") 0) 1 (* -1 (getvar "qpmode")(setvar "pickfirst" 0)))));qp1;
update
что-то я хрень какую-от написал )) хотя сам макрос и работает!
нашел гдд-то на форуме, что setvar "pickfirst" 0 отменяет селекцию и применил, но с этим "pickfirst" 0 работать вообще не удобно!
подскажите как отменить селекцию элементов по окончании функции.
Ну вроде бы выкрутился вот так...не знаю в чем смысл но работает как надо )
Код:
[Выделить все]
^C^C^P(defun c:qp1 () (setvar "qpmode" (if (= (getvar "qpmode") 0) 1 (* -1 (getvar "qpmode")(setvar "pickfirst" 0)(setvar "pickfirst" 1)))));qp1;

Последний раз редактировалось Konstruktiv54, 09.04.2015 в 20:46.
Konstruktiv54 вне форума  
 
Непрочитано 19.12.2015, 10:49
#757
vik74


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


Цитата:
Сообщение от VVA Посмотреть сообщение
Вместо X вписать
0 - 2002 Автокад
6 - 2004,2005,2006 Автокад
7 - 2007, 2008, 2009 Автокад
Вариант для 2004,2005 и 2006 Автокада
А если мне надо загрузить ExplodeProxy2010x64, то как надо написать?
vik74 вне форума  
 
Непрочитано 18.01.2016, 14:16 Zenon
#758
perpetule


 
Регистрация: 23.09.2008
Волгоград
Сообщений: 810
<phrase 1= Отправить сообщение для perpetule с помощью Skype™


Объект Xline строится по по произвольному отрезку/полилинии, с поворотом в указанной точке на произвольный угол (не работает по примитивам блока и arx объектов сторонних навесок на автокад).

В ком строку RUS/ENG
Прямая Угол Б
_XLINE _ANG _REFERENCE

Макросы на кнопку RUS/ENG
^C^CПРЯМАЯ;Угол;Б;/;
^C^C_XLINE;_ANG;_REFERENCE;/;


__________________
tc71
perpetule вне форума  
 
Непрочитано 19.01.2016, 01:57
#759
sathalex


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


Добрый день, подскажите, как дополнить данный макрос ^C^C_-insert;(имя блока);\;;;\ чтобы блок вставлялся в исходных координатах.
sathalex вне форума  
 
Непрочитано 19.01.2016, 09:59
#760
Кулик Алексей aka kpblc
Moderator

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


Сначала определи, что такое "исходные координаты".
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.01.2016, 10:21
#761
gladi


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


Помогите...
Как сделать Объект Xline по по произвольному отрезку/полилинии, но с учетом объектов блоков и xref.
В лиспе не селен, поэтому прошу гуру.
gladi вне форума  
 
Непрочитано 20.01.2016, 00:26
#762
sathalex


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Сначала определи, что такое "исходные координаты".
К примеру создал я блок (скажем круг), с координатами его центра x=100 y=100, хотелось бы макросом вставить его в новый чертеж, с теми же координатами центра.
sathalex вне форума  
 
Непрочитано 20.01.2016, 06:54
#763
baksconstructor


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


Цитата:
Сообщение от sathalex Посмотреть сообщение
с координатами его центра x=100 y=100, хотелось бы макросом вставить его в новый чертеж, с теми же координатами центра.
Координаты Х и У должны находится в 0,0,0 блока, тогда всё получится.
Создайте блок в котором координатамы его центра x=100 y=100, а сам блок вставьте в чертеж в 0,0,0.
При вставке этого чертежа блока он вставится так как надо.
baksconstructor вне форума  
 
Непрочитано 26.01.2016, 10:55
#764
AlexZh


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


Макрос для выравнивания текста атрибута и изменения его положения


*^C^C-АТР;_Y;;;;\;Угол;0;Положение;\;

Пользуюсь часто.
AlexZh вне форума  
 
Непрочитано 26.01.2016, 11:50
#765
Кулик Алексей aka kpblc
Moderator

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


... И работает только в русской версии AutoCAD.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 26.01.2016, 13:27
#766
AlexZh


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


Да. имею русскую версию.

*^C^C_-ATTEDIT;_Y;;;;\;_Angle;0;_Position;\;
AlexZh вне форума  
 
Непрочитано 02.02.2016, 01:25
#767
Vova

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


Цитата:
Сообщение от AlexZh Посмотреть сообщение
Макрос для выравнивания текста атрибута и изменения его положения....
Для выравнивания (всех) атрибутов (а также обеих текстов) служит стандартная команда Express Torient (Text orientation). Атрибут передвигается грипсой, если он не заблокирован). Проще создать алиас для Torient, например, TT, и избежать таким образом лишней кнопки. Если, конечно, часто приходится выравнивать не все атрибуты у блока, тогда макрос зарулит
Vova вне форума  
 
Непрочитано 18.04.2016, 09:58
#768
betonolom


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


Доброго дня, товарищи!
Часто приходится работать с чертежами коллег и настраивать листы для дальнейшей печати (многие оформляют чертежи в листах, но не настраивают печать как положено).
Я написал небольшой макрос: выделяет весь чертеж (все видовые экраны, рамки и т.д.), указываем левый нижний угол форматки листа и все перемещается на настроенную область листа (соответственно левый нижний угол форматки переносится в точку с координатами 0,0).

^C^Cdynmode;-3;_.zoom;_e;_move;_all;;\0,0;dynmode;3;_.zoom;_e;

Может кто подскажет как усовершенствовать макрос (или решить это лиспом) так, чтоб левый нижний угол форматки указывался не вручную, а автоматически (точка с наименьшими координатами)
betonolom вне форума  
 
Непрочитано 18.04.2016, 12:17
#769
vik74


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


Цитата:
Сообщение от betonolom Посмотреть сообщение
Может кто подскажет как усовершенствовать макрос (или решить это лиспом) так, чтоб левый нижний угол форматки указывался не вручную, а автоматически (точка с наименьшими координатами)
А мне понравилась программа "РЕВЕРС" Кириллова Дмитрия, она сама собирает все форматки и выводит на печать, хоть с модели, хоть с листа. Да стоит копейки.
vik74 вне форума  
 
Непрочитано 22.04.2016, 14:29
#770
Mitek

Мостовик-затейник
 
Регистрация: 25.02.2006
Москва
Сообщений: 76


Всем привет.
Очень нужен макрос, или скорее всего лисп, который бы подсчитывал количество неиспользуемых масштабов аннотаций, и при превышении определённого адекватного количества (например 100), чистил бы их командой (command "_-scalelistedit" "_d" "*" "_e").

Чтобы не задавали вопросы в стиле "а зачем так надо", и "почему именно так надо", опишу проблему.
В проектном институте на сервере выложены файлы с коммуникациями и есть сводный план сетей, который ссылками собирает эти файлы. В некоторых файлах содержится по 15-17 тысяч масштабов аннотаций, и вместо 2-3 секунд на подключение такого файла как ссылки тратится 1,5-2 минуты (засекал). Если таких файлов много, то сводник грузится неимоверно долго.
Многие видимо отключили запрос автокада про большое количество масштабов аннотаций и их не чистят.
Так же есть люди, которые пользуются аннотативными объектами со своими масштабами, поэтому вариант лиспа с полной очисткой масштабов и создания новых категорически не годится.
Просто чистить неиспользуемые масштабы аннотаций тоже нельзя, так как некоторые используют эти масштабы для видовых окон.

Ещё вариант: как-то (не знаю как) включить в автокаде автоматическую очистку при большом количестве масштабов аннотаций, но там тоже засада, автокад в таком случае сбрасывает список масштабов на стандартный, а этого делать нельзя.

Последний раз редактировалось Mitek, 22.04.2016 в 14:40.
Mitek вне форума  
 
Непрочитано 25.04.2016, 09:53
#771
RNB

Проектирование мостов
 
Регистрация: 29.01.2014
Новосибирск
Сообщений: 433


Цитата:
Сообщение от Mitek Посмотреть сообщение
Всем привет.
Очень нужен макрос, или скорее всего лисп, который бы подсчитывал количество неиспользуемых масштабов аннотаций, и при превышении определённого адекватного количества (например 100), чистил бы их командой (command "_-scalelistedit" "_d" "*" "_e").

Чтобы не задавали вопросы в стиле "а зачем так надо", и "почему именно так надо", опишу проблему.
В проектном институте на сервере выложены файлы с коммуникациями и есть сводный план сетей, который ссылками собирает эти файлы. В некоторых файлах содержится по 15-17 тысяч масштабов аннотаций, и вместо 2-3 секунд на подключение такого файла как ссылки тратится 1,5-2 минуты (засекал). Если таких файлов много, то сводник грузится неимоверно долго.
Многие видимо отключили запрос автокада про большое количество масштабов аннотаций и их не чистят.
Так же есть люди, которые пользуются аннотативными объектами со своими масштабами, поэтому вариант лиспа с полной очисткой масштабов и создания новых категорически не годится.
Просто чистить неиспользуемые масштабы аннотаций тоже нельзя, так как некоторые используют эти масштабы для видовых окон.

Ещё вариант: как-то (не знаю как) включить в автокаде автоматическую очистку при большом количестве масштабов аннотаций, но там тоже засада, автокад в таком случае сбрасывает список масштабов на стандартный, а этого делать нельзя.
Открываешь список масштабов, выбираешь все, нажимаешь кнопочку "Удалить". Используемые останутся, остальные канут в лету
RNB вне форума  
 
Непрочитано 25.04.2016, 10:06
#772
Mitek

Мостовик-затейник
 
Регистрация: 25.02.2006
Москва
Сообщений: 76


Цитата:
Сообщение от RNB Посмотреть сообщение
Открываешь список масштабов, выбираешь все, нажимаешь кнопочку "Удалить". Используемые останутся, остальные канут в лету
Замечательный ответ!
Как это сделать ручками я и так знаю.
Мне нужен лисп для автоматического исполнения его на 600 компах!
Алексей Кулик, VVA, где вы? Помогите, очень надо
Mitek вне форума  
 
Непрочитано 25.04.2016, 11:33
#773
RNB

Проектирование мостов
 
Регистрация: 29.01.2014
Новосибирск
Сообщений: 433


Цитата:
Сообщение от Mitek Посмотреть сообщение
Замечательный ответ!
Как это сделать ручками я и так знаю.
Мне нужен лисп для автоматического исполнения его на 600 компах!
Если знаете, как руками, в чём проблема сделать макрос?
-scalelistedit;_D;*;_E;
RNB вне форума  
 
Непрочитано 25.04.2016, 11:40
#774
Mitek

Мостовик-затейник
 
Регистрация: 25.02.2006
Москва
Сообщений: 76


RNB, вы умеете внимательно читать посты? В самом первом посте я написал, что этот макрос (точнее я указал команду (command "_-scalelistedit" "_d" "*" "_e"), что по сути одно и то же), нужно выполнять при условии, что количество масштабов превышает определенное адекватное количество (например 100), иначе ничего не выполнять!
Как узнать количество масштабов аннотаций в чертеже с помощью лиспа?
Mitek вне форума  
 
Непрочитано 25.04.2016, 11:41
#775
RNB

Проектирование мостов
 
Регистрация: 29.01.2014
Новосибирск
Сообщений: 433


Цитата:
Сообщение от Mitek Посмотреть сообщение
RNB, вы умеете внимательно читать посты? В самом первом посте я написал, что этот макрос (точнее я указал команду (command "_-scalelistedit" "_d" "*" "_e"), что по сути одно и то же)
Извиняюсь, пропустил мимо глаз
RNB вне форума  
 
Непрочитано 26.04.2016, 13:10
#776
Mitek

Мостовик-затейник
 
Регистрация: 25.02.2006
Москва
Сообщений: 76


Благодаря одному человеку, знающему lisp, написан небольшой код:
Код:
[Выделить все]
 (setq od (namedobjdict))
(setq spis (dictsearch od "ACAD_SCALELIST"))
(setq k 0 n 0) ;k - количество масштабов аннотаций
(repeat (length spis)
 (if (= 350 (car (nth n spis)))
  (setq k (+ k 1))
 )
 (setq n (+ n 1))
)
(if (> k 100) ; Если количество масштабов больше 100
 (alert (strcat "Этот чертёж содержит "(itoa k)" масштабов аннотаций!!"))
;(command "_-scalelistedit" "_d" "*" "_e") ;Вариант очистки вместо окна с предупреждением
)
Так что фактически вопрос решился
Mitek вне форума  
 
Непрочитано 26.04.2016, 13:31
#777
Кулик Алексей aka kpblc
Moderator

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


... И работает только в текущем документе.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 26.04.2016, 13:42
#778
Mitek

Мостовик-затейник
 
Регистрация: 25.02.2006
Москва
Сообщений: 76


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
... И работает только в текущем документе.
Ну да. А этот лисп грузится через acaddoc.lsp в каждый открываемый документ на каждом компьютере Так что этого пока вполне достаточно.
Offtop: P.S. На всякий случай, в теме http://adn-cis.org/forum/index.php?topic=709.0 тоже я (Подшиваленко Дмитрий).
Mitek вне форума  
 
Непрочитано 06.05.2016, 09:57
#779
99xt1

нефтепереработка
 
Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77


Помогите составить макрокоманду. Надо:
1. Установить размерный стиль.
2. Запустить команду параллельного размера.
3. После выбора начала первой и второй выносных линий, выбрать опцию "Текст", и ввести значение, размерного текста.
4. Выбрать положение размерной линии.
5. К полученному размеру применить команду "Размер, наклон" (_dimedit;_o) и наклонить на -30 градусов.

У меня получилось только первых 2 пункта:
^C^C-dimstyle;_restore;ISOTEXT-1;_dimaligned;
Понял что надо добавить паузу для ручного ввода, а потом продолжить макрос, но как не знаю. Книгу "Язык макрокоманд" скачал и начала читать, но решение надо сегодня, боюсь не успею прочесть))

окончание макрокоманды будет _dimedit;_o;\;-30;
Вот серединку бы добавить.

Последний раз редактировалось 99xt1, 06.05.2016 в 10:15.
99xt1 вне форума  
 
Непрочитано 06.05.2016, 10:52
1 | #780
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Цитата:
Сообщение от 99xt1 Посмотреть сообщение
Помогите составить макрокоманду.
Значение текста из макроса не получится ввести.
Попробуй так:
Код:
[Выделить все]
(defun c:dimob30 (/ p1 p2 txt)
	(setq p1 (getpoint "\nначало:") p2 (getpoint p1 "\nокончание:"))
	(princ (distance p1 p2))
	(setq txt (getstring "\nзначение:"))
	(command "_-dimstyle" "_restore" "Dist_A_R001")
	(command "_dimaligned" p1 p2 "_t" txt pause)
	(command "_dimedit" "_o" "_l" "" "-30")
  );defun
Как использовать лисп, опубликованный на форуме
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 06.05.2016, 10:52
1 | #781
AlexCondor

инженер
 
Регистрация: 03.08.2007
Сообщений: 1,325


99xt1,
Может так
^C^C-dimstyle;_restore;ISOTEXT-1;_dimaligned;\\_text;\\_dimedit;_o;\;-30;
AlexCondor вне форума  
 
Непрочитано 06.05.2016, 11:05
#782
99xt1

нефтепереработка
 
Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77


Цитата:
Сообщение от Krieger Посмотреть сообщение
Попробуй так:
Всё отлично, благодарю.

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от AlexCondor Посмотреть сообщение
99xt1,
Может так
^C^C-dimstyle;_restore;ISOTEXT-1;_dimaligned;\\_text;\\_dimedit;_o;\;-30;
Так тоже работает, но получается надо "руками" выбирать размер для dimedit. Т.е. надо как-то выбрать автоматически только что созданный размер.

Вот так вроде
^C^C-dimstyle;_restore;ISOTEXT-1;_dimaligned;\\_text;\\_dimedit;_o;_Last;;-30;
99xt1 вне форума  
 
Непрочитано 06.05.2016, 11:13
1 | #783
AlexCondor

инженер
 
Регистрация: 03.08.2007
Сообщений: 1,325


99xt1,
Да так, а вообще я взял окончание предложенное вами же...
AlexCondor вне форума  
 
Непрочитано 06.05.2016, 11:23
#784
99xt1

нефтепереработка
 
Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77


AlexCondor, верно. Это я ошибся сначала. Учусь. Благодарю.

Это автоматизирую простановку размеров в изометрических чертежах построенных в плоскости
Миниатюры
Нажмите на изображение для увеличения
Название: Изометрия.png
Просмотров: 141
Размер:	64.8 Кб
ID:	169965  
99xt1 вне форума  
 
Непрочитано 07.05.2016, 11:02
#785
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 188
Отправить сообщение для nolte с помощью Skype™


99xt1,предложу простановку размера и диаметра блоком с атрибутами
Миниатюры
Нажмите на изображение для увеличения
Название: 1212.JPG
Просмотров: 68
Размер:	62.2 Кб
ID:	170009  
__________________
Знание лисп: со справочником Н. Полещука
nolte вне форума  
 
Непрочитано 28.07.2016, 09:48
#786
Maksim7enov


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


Здравствуйте уважаемые специалисты! Прошу помощи. Решил попытать удачу и создать простой макрос для команды повернуть с базовой точкой выглядит он так
Код:
[Выделить все]
^C^C_Rotate;\О;
меня интересует можно ли сократить один щелчок т.е. вызывает команду, выбираем объект, ставим базовую точку и сразу ставим 2-у точку опорного отрезка?
У меня получилось только предварительно выбрав объект вызываю команду, задаю базовую точку, 1 точка опорного отрезка, 2 точка опорного отрезка и поворачиваю.

Последний раз редактировалось Кулик Алексей aka kpblc, 28.07.2016 в 10:05.
Maksim7enov вне форума  
 
Непрочитано 28.07.2016, 10:05
1 | #787
skkkk


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


А лисп подойдет? Не люблю скакать по этим менюшкам, чтобы создавать и тестировать макросы. А на лиспе уже решение есть, но оно заработает только, если Автокад не LT. Зато будет вызываться повторно по правой кнопке или Enter.
skkkk вне форума  
 
Непрочитано 28.07.2016, 10:06
#788
Maksim7enov


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


Подой

----- добавлено через 51 сек. -----
Подойдет! только я попутно еще разобраться хотел, что к чему и что неправильно делал.
Maksim7enov вне форума  
 
Непрочитано 28.07.2016, 10:34
1 | #789
skkkk


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


Цитата:
Сообщение от Maksim7enov Посмотреть сообщение
Подойдет!
Хорошо
Код:
[Выделить все]
 (defun C:ROTATE+ ( / sset pt pt2)
	(or
		(setq sset (ssget "_I"))
		(setq sset (ssget))
	)
	(if sset (setq pt (getpoint "\nБазовая точка:")))
	(cond  
	  (	pt
		(setq pt2 (getpoint pt "\nОпорный угол <0>"))
		(if (null pt2) (setq pt2 (polar pt 0 1)))
		(vl-cmdf  "_.ROTATE" sset "" pt "_R" pt pt2 pause)
	  )
	)
	(princ)
)
Цитата:
Сообщение от Maksim7enov Посмотреть сообщение
я попутно еще разобраться хотел, что к чему и что неправильно делал
Не стану углубляться и проверять, но наверное, макрос будет таким:
Код:
[Выделить все]
^C^C_Rotate;\О;(getvar "LASTPOINT");\
skkkk вне форума  
 
Непрочитано 28.07.2016, 10:41
#790
Maksim7enov


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


Большое спасибо! вот и я думал как сослаться на последнюю точку, только моих знаний не хватает) Буду учиться!)
Maksim7enov вне форума  
 
Непрочитано 28.07.2016, 16:24
#791
Клаус


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


Электрик по образованию, при рисовании планов использую вот такие макросы:
1)*^C^C_fillet;Радиус;0.8;;_Polyline; -- Скругляет углы полилинии, начальнику нравится что кабель поворачивает плавно, мне тоже нравится
2)*^C^C_fillet;Радиус;0;;_Polyline; -- действие противоположное первому, применяю при изменении трассы кабеля
3)^C^CПСК;НН;С -- сохранить ПСК с указанием имени (новую ПСК обычно задаю командой Объект (^C^C_ucs _ob ))
4)^C^C_Plan;Текущая; -- поворачивает вид оператора в соответствии с текущей ПСК
Клаус вне форума  
 
Непрочитано 30.07.2016, 14:15
#792
Vova

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


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

----- добавлено через ~19 мин. -----
Цитата:
Сообщение от Клаус Посмотреть сообщение
2)*^C^C_fillet;Радиус;0;;_Polyline; -- действие противоположное первому, применяю при изменении трассы кабеля
Пока не устаканилась трасса лучше рисовать ее одиночными полилиниями или даже отрезками (!?). Для этого поищи лисп от Profan, кaжется, нзывается Poliline-1. Если соединять их командой из Express Exfillet (вместо Fillet) то скругления также останутся не связанными с прилегающими прямыми. Зато затем все окончательно соединить легко командой Join. Если-же изначально не использовать полилинии а только отрезки и дуги но хочется иметь конечный результат в виде полилиний то команда Join легко превратит все соединенное в полилинию, если первый отрезок превратить в полилинию командой Pedit. Это мало кто знает, но, кажется, работает не во всех автокадах
Vova вне форума  
 
Непрочитано 30.07.2016, 17:07
#793
VVA

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


Цитата:
Сообщение от skkkk Посмотреть сообщение
^C^C_Rotate;\О;(getvar "LASTPOINT");\
Цитата:
Сообщение от Maksim7enov Посмотреть сообщение
Большое спасибо! вот и я думал как сослаться на последнюю точку, только моих знаний не хватает) Буду учиться!)
Символ @ - ссылка на последнюю введенную точку. На этом построен ввод относительных координат с клавиатуры Еще пример можно посмотреть в первом посте темы (ищи макросы с символом @)
Без проверок, новый вид макроса
Код:
[Выделить все]
^C^C_Rotate;\О;@;\
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 31.07.2016, 12:38
#794
gomer

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


Цитата:
Сообщение от Клаус Посмотреть сообщение
_fillet;Радиус
никогда не смешивайте английские команды и русские, это признак дурного тона
gomer вне форума  
 
Непрочитано 31.07.2016, 12:44
#795
Maksim7enov


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


Цитата:
Сообщение от VVA Посмотреть сообщение
Символ @ - ссылка на последнюю введенную точку. На этом построен ввод относительных координат с клавиатуры Еще пример можно посмотреть в первом посте темы (ищи макросы с символом @)
Без проверок, новый вид макроса
Код:
[Выделить все]
^C^C_Rotate;\О;@;\
Спасибо! за ссылку. Только начал с этим разбираться. Но пока еще не понял полезно ли будет изучать лисп? Так как знания програмирования у меня 0, решил начать с макросов думаю это легче чем лисп. Так же не нашел применения лисп для проектирования ВК.
Maksim7enov вне форума  
 
Непрочитано 31.07.2016, 13:34
#796
skkkk


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


Клаус, на эту тему (скругление смежных отрезков) есть примитивный лиспик, он может обработать сразу много полилиний. Чтобы вернуть обратно скругления, надо назначить радиус равным нулю.
Цитата:
Сообщение от Vova Посмотреть сообщение
Макросы надо создавать на инструментальной палете, и тогда не придется "скакать".
Уважаемый Vova, на самой заре своей карьеры инженера мне довелось познакомиться с Вашей книгой. Именно она родила во мне интерес к программированию, за что я лично Вам непомерно благодарен. Только бы этот совет мне бы узреть лет эдак девять назад, когда я составлял для себя и коллег десятки макросов, упрощающих жизнь инженера. Просто однажды я "уперся" в ограничения языка макрокомманд, мне (нам) стало важно иметь повтор многих комманд по правой кнопке мыши - и я стал все чаще использовать в макросах конструкции с defun. После и вовсе потребовалось в программах иметь не только последовательность определенных команд и их опций, но и различные вычисления, интерактивную работу с пользователем, довольно сложные построения... Пусть Вы об этом и не знаете, но я - Ваш прилежный ученик и тайный поклонник, и первым, с кем бы я захотел встретиться, приехав в Америку, были бы именно Вы, если не откажете в такой чести... И оттого, что я перерос этот язык, уважение нисколько не уменьшилось, и оттого с каждым разом все больнее, когда я предлагаю кому-то альтернативные варианты программ в обход макрокоманд. Но, как говорится, "Платон мне друг...", - уверен, что Вы поймете меня правильно. Еще раз - спасибо огромное Вам за ваши "отцовские" наставления, за Ваши викторины и каверзные вопросы и просто интересные темы, в которых я пусть и заочно (намного позднее, чем Вы их размещали), но поучаствовал; за примеры Ваших проектов, из которых я почерпнул много полезного для себя. Серьезно - Вы - один из моих лучших учителей, хоть об этом пока и не знали.

Цитата:
Сообщение от Vova Посмотреть сообщение
Пока не устаканилась трасса лучше рисовать ее одиночными полилиниями или даже отрезками
Скажите, а появление средней ручки полилинии, кажется, в 2011-м, не изменило Вашего мнения на этот счет? Дело в том, что после этого я стал сторонником целостности трасс, с учетом, что можно, зажав Ctrl, добавить нужную вершину, я довольно ловко справляюсь с корректировкой трассы, не разрывая ее, а просто вернув все "скругления" к прямым (и не только) углам. После корректировки - повторно скругляю программкой из приведенной мною ссылки.

Цитата:
Сообщение от VVA Посмотреть сообщение
Без проверок, новый вид макроса
Я хотел было вспомнить про выражения на языке Delphi для макросов, как более близкие к этому языку и способные работать в LT версиях, но твой вариант оказался "качественнее", я совсем забыл про эту собачку.
skkkk вне форума  
 
Непрочитано 31.07.2016, 17:51
#797
VVA

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


Цитата:
Сообщение от Vova Посмотреть сообщение
Пока не устаканилась трасса лучше рисовать ее одиночными полилиниями или даже отрезками (!?). Для этого поищи лисп от Profan, кaжется, нзывается Poliline-1
По-моему, здесь это было LISP. Отрисовка произвольной трассы из отрезков и дуг.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 06.08.2016, 21:05
#798
Vova

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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Уважаемый Vova, на самой заре своей карьеры инженера мне довелось познакомиться с Вашей книгой. Именно она родила во мне интерес к программированию, за что я лично Вам.....
Спасибо за хороший отзыв, уважаемый SkkkK. Эта книга дала "програмистскую" путевку в жизнь многим пользователям, среди них одним из известных являетя Кулик Алексей aka kpblc. Всегда с удовольствием вспоминаю тот период в 2002году когда писал книгу. Я мало тогда знал о макросах, да и, похоже, и не было спецов, хотя бы что то написавших о них, в том числе на английском. Наш форум тогда реорганизовывался, админ просил помочь с названиями направлений и тем. Я предложил в раздел Программирование ввести и макросы. Поначалу это слово фигурировало в темах но потом исчезло так как никто ничего туда не писал. Я хотел поделиться теми крохами знаний, что имел, связался с издательством и сообщил о готовности написать небольшую брошюру, страниц на 30-40. А дальше, подумал, появятся отзывы и можно было бы продолжить тему. Но издательство связалось с Полещуком, он дал добро на тему, и они сказали что брошюра не их профиль, нужна книга хотя бы страниц на 200. Я приуныл но стал копать. Дело в том что я тогда работал на ЛТ и о лиспах ничего не слышал. Короче, нарыл аж на 300 страниц. Книга получилась удачная. Сегодня она, конечно, немного устарела. Две главы уже не работают: про меню (так как в АС- 2006 появилось CUI), и о калькуляторе, ибо в автокаде появился на нем какой- то баг, сбивающий процесс расчета. Остальным можно пользоваться до сих пор. Хотя считается что компьютерные книги долго не живут. И данная тема не появилась бы на форуме без этой книги.

Чем-же рисовать. полилиниями или отрезками? Я сторонник отрезков, если нет необходимости выделять всю трассу для просмотра или задавать толщину. Во всяком случае, пока делается чертеж и если трасса сложная и их много, и они пресекаются. Ведь в процессе создания чертежа обычно маршрут трасс меняется. Крайним случаем такого чертежа, где миллион линий и все они пересекаются является электрич. схема. Пока ее сформируешь, сотни и сотни раз отрезки перерисовываются, идут другим маршрутом и грипса на середине сегмента полилинии мало поможет. Если в конце черчения, когда все устаканилось.все отрезки превратить в полилинии (кстати, это легко и быстро делает команда Join, даже примененная к чистым отрезкам) то и в этом случае возможны коллизии, если схема в полилиниях а не в отрезках. Ведь обычно вскоре последуют изменения, которые может делать другой сотрудник, менее продвинутый. Он все повзрывает.
SKKKK, если будешь в наших краях, конечно, встретимся и поговорим, и даже примем на грудь
Vova вне форума  
 
Непрочитано 07.08.2016, 20:57
#799
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от Vova Посмотреть сообщение
Во всяком случае, пока делается чертеж и если трасса сложная и их много, и они пресекаются. Ведь в процессе создания чертежа обычно маршрут трасс меняется. Крайним случаем такого чертежа, где миллион линий и все они пересекаются является электрич. схема. Пока ее сформируешь, сотни и сотни раз отрезки перерисовываются, идут другим маршрутом и грипса на середине сегмента полилинии мало поможет. Если в конце черчения, когда все устаканилось.все отрезки превратить в полилинии (кстати, это легко и быстро делает команда Join, даже примененная к чистым отрезкам) то и в этом случае возможны коллизии, если схема в полилиниях а не в отрезках. Ведь обычно вскоре последуют изменения, которые может делать другой сотрудник, менее продвинутый. Он все повзрывает.
Если можно, то уточните - желательны, удобны именно отрезки или необходимо разбивать на пересечениях?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 08.08.2016, 00:06
#800
Vova

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Если можно, то уточните - желательны, удобны именно отрезки или необходимо разбивать на пересечениях?
Это не совсем offtop, в конце будет и про макрокоманду
Насколько я помню историю схемных пересечений то она выглядела так: при царе горохе и в СССР до 60х- 70х годов пересечения в схемах согласно рисовательному госту осуществлялось разрывом с дугой, что давало понять что эл. контакта в месте пересечения нет. Затем гост упростили: дугу убрали но разрыв оставили. И, наконец, в очередном новом госте убрали и разрыв. Поскольку все схемные пересечения обычно осуществляются под прямым углом, разночтений - есть ли контакт не возникало, а карандашное черчение значительно упростилось. В США гостов на рисование нет, что вызывает недоумение на форуме. Рисовали согласно традициям начальников. Когда я делал свою первую схему, уже в автокаде, на образцах увидел разрывы. Поначалу и я делал разрывы, а потом понял что многократное изменение конфигурации схемы, перенос ранее нарисованных отрезков, составляющих линию- фидер требует много доп. работы. И я вспомнил последний советский гост неразрывных пересечений и стал так рисовать. Начальству понравилось, и это стало традицией в нашей компании, а также в тех, куда попадали мои чертежи. Чужие схемы видел разные, по всем трем вариантам. Наши легко читаются и отслеживаются в автокаде несколькими кликами от начала до конца.
Для того чтобы трасса прослеживалась малым количеством кликов (в пределе одним, если сделать ее полилинией) надо кроме того сделать некоторое количество "хитрых" блоков того оборудования, которое нанизано на линию. Именно тогда я и изобрел блок с маскировкой, который получил широкое распространение на форуме. Но автокад иногда капризничает и опускает блоки с вайпаутом вниз, под линию. Отдать файл - чертеж в чужие руки небезопасно Поэтому не надо перебарщивать, стараясь непремено не разрывать свои трассы, добиваясь одного клика для выделения. На всякий случай я имею макрос, поднимающий весь слой, на котором размещены блоки с вайпаутом наверх, сделанный на базе команды... ХХХХ.
Предлагаю умельцам создать такой макрос здесь

Последний раз редактировалось Vova, 08.08.2016 в 00:28.
Vova вне форума  
 
Непрочитано 08.08.2016, 11:03
#801
quazi


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


Подскажите как сделать инструмент палитры, в котором можно было бы задать значения атрибутов блока.
Вижу, что можно задать значения параметров динамического блока.
А как быть с атрибутами?
Если не в тему написал, то направьте)
quazi вне форума  
 
Непрочитано 11.08.2016, 16:18
#802
boiler85


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


Помогите пожалуйста дописать макрос для того, чтобы взорвать все штриховки в чертеже:
^C^C(sssetfirst nil (ssget "_x" '((0 . "HATCH"))));; _explode
Если ввести в ком.строку (без ^C^C), то все работает. При назначении на кнопку выдает ошибку.

----- добавлено через ~17 ч. -----
Все, разобрался:
^C^C(sssetfirst nil (ssget "_x" '((0 . "HATCH")))) _explode
Взрывает все штриховки на чертеже
boiler85 вне форума  
 
Непрочитано 26.08.2016, 16:19
#803
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Можно в макросе после вычерчивания полилинии задать ее замыкание? Closed? Пробую - не получается.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 26.08.2016, 16:32
1 | #804
Кулик Алексей aka kpblc
Moderator

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


При рисовании полилинии заранее неизвестно количество кликов, так что макрос вряд ли решит эту задачу.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 26.08.2016, 19:55
#805
Vova

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Можно в макросе после вычерчивания полилинии задать ее замыкание? Closed? Пробую - не получается.
Вопрос задан так, что можно ответить положительно: можно ^C^C_PL;
То есть это обычная команда но перенесенная на смд. кнопку
Для замыкания надо нажать "С".
Видимо ты хотел чтобы макрос почувствовал нажатие на начало полилинии, и она замкнулась. Наверное, можно реализовать эту идею и в макросе, если бы он запомнил координаты начала полилинии и, придя сюда последним кликом замкнул ее, а потом удалил последнй отрезок равный 0. Но для этого надо использовать выражения лиспа, а, может быть и калькулятора (без лиспа). В моей книге Язык макрокоманд... Калькулятор использовался, но в автокадах после 2002 там, в калькуляторе, что-то сбоило. Как в современных не знаю.
Мне кажется, я реализовывал подобную идею через Action Recorder Там полилиния с неизвестным заранее количеством точек замыкалсь и покрывалась штриховкой. Посмотри тему по ключевому слову Action Recorder
И тогда мы с тобой "утрем нос" самому Кулику который считает этот рекордер ерундой. (Шутка, Алексей)
Vova вне форума  
 
Непрочитано 26.08.2016, 21:18
#806
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от Vova Посмотреть сообщение
Видимо ты хотел чтобы макрос почувствовал нажатие на начало полилинии
В данный момент я пытаюсь понять, какие параметры в макросах из Tool Pallettes могут оказаться в принципе. Лиспы в макросах при этом я, конечно, игнорирую - в них может же быть что угодно.
Если говорить о хотениях, то для замыкания я бы хотел, чтобы при черчении полилинии после Esc или Enter ей придавался признак Closed. А не как сделано сейчас - вводишь Closed, и она сразу замыкается.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 27.08.2016, 00:05
#807
Vova

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


Признаться, я мало что понимаю. Причем здесь Tool Palettes? Или ты нашел некую особенность в кнопке на палитре в отличие от обычной кнопки? И что за ESC, Это ^С в макросе или реальное нажатие на кнопку на клаве?
Об'ясни что ты хочешь или напиши неработающий макрос
Vova вне форума  
 
Непрочитано 27.08.2016, 12:02
#808
skkkk


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Если говорить о хотениях, то для замыкания я бы хотел, чтобы при черчении полилинии после Esc или Enter ей придавался признак Closed. А не как сделано сейчас - вводишь Closed, и она сразу замыкается.
Могу предложить лиспик, но надо бы знать: замыкаться она должна несмотря на то, как отстоят друг от друга первая и последняя точки или только в том случае, если они совпадают?
skkkk вне форума  
 
Непрочитано 27.08.2016, 12:37
#809
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 10,960


Цитата:
Сообщение от skkkk Посмотреть сообщение
замыкаться она должна несмотря на то, как отстоят друг от друга первая и последняя точки или только в том случае, если они совпадают?
и третий вариант - первая и последняя точки отстоят друг от друга на расстояние не больше указанного
Сергей812 вне форума  
 
Непрочитано 28.08.2016, 15:23
#810
skkkk


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


Сергей812, допуск-то ввести совершенно несложно, и даже я подразумевал это априори, но ведь участники форума пользуются привязками все без изъятья, не так ли?
skkkk вне форума  
 
Непрочитано 28.08.2016, 17:04
#811
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,029


Цитата:
Сообщение от Vova Посмотреть сообщение
Причем здесь Tool Palettes? Или ты нашел некую особенность в кнопке на палитре в отличие от обычной кнопки?
Мне нужно было понять, если я возьму кем-то когда-то как-то сделанную Tool Palette, будет ли там описано, в том числе, и Closed. Например, средствами макросов. Т.е., если я правильно понял, то замыкания/не замыкания описаны не будут, если говорить об обычных макросах, без лисп-выражений.
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 28.08.2016, 17:19
#812
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 10,960


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Мне нужно было понять, если я возьму кем-то когда-то как-то сделанную Tool Palette, будет ли там описано, в том числе, и Closed. Например, средствами макросов. Т.е., если я правильно понял, то замыкания/не замыкания описаны не будут, если говорить об обычных макросах, без лисп-выражений
у вас же вроде есть программист. Почему не хотите создать свою палитру и реализовать весь необходимый функционал?

----- добавлено через ~4 мин. -----
Цитата:
Сообщение от skkkk Посмотреть сообщение
допуск-то ввести совершенно несложно, и даже я подразумевал это априори, но ведь участники форума пользуются привязками все без изъятья, не так ли?
зависит от конкретной задачи и реализации)
Сергей812 вне форума  
 
Непрочитано 29.08.2016, 19:17
#813
Buffalo


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


Чем дольше пользуюсь макрокомандами, тем ленивей становлюсь. Порой объединяю одну команду и один ключ, мелочь, а приятно. Вот мои 5 копеек:
1) Печать текущего листа в папку, где лежит с DWG (лист настроен под "dwg to pdf").
^C^C-печать;;;;;;;;
Если лист с таким же именем уже существует в папке, то вот такой
^C^C-печать;;;;;Д;;;
сделал себе на панели быстрого доступа две кнопочки, первой запускаю печать листа первый раз, потом пока корректирую чертеж второй печатаю с заменой.

2) Окно выбора листа из шаблона "Форматы_листов.dwt" для добавления в чертеж
^C^C^R_LAYOUT _TEMPLATE "Форматы_листов.dwt"

3) Кнопка создает слой "Видовые экраны", назначает ему зеленый цвет, делает непечатаемым, запускает построение прямоугольного видового экрана
^C^C-СЛОЙ;С;ВИДОВЫЕ_ЭКРАНЫ;У;ВИДОВЫЕ_ЭКРАНЫ;Ч;Н;ВИДОВЫЕ_ЭКРАНЫ;Ц;ЗЕЛЕНЫЙ;ВИДОВЫЕ_ЭКРАНЫ;;^C^C-ВЭКРАН;

4) Кнопка назначает привязку с ближней (можно вбить любое удобное значение osmode) и разрывает линию в точке, запускается снова, пока не будет нажата Esc
*^C^COSMODE 4671 РАЗОРВАТЬ \П \@

5) Объединение элементов в полилинию. Может собирать в разные полилинии не соприкасающиеся сегменты при единоразовом выборе.
*^C^C_.PSELECT С \\;;^C^CПОЛРЕД Н ТЕКУЩИЙ;;Д;0;;

6) Вырубить к лешему видовой куб и панель навигации одной кнопкой
^C^CКУБ О NAVBARDISPLAY 0

7) Удаление объектов при выборе их линией, пока не будет нажата ESC
*^C^Cстереть л \\;;
*^C^COSMODE 0 стереть рм \\\\\;;OSMODE 4671 - удаление объектов режущим многоугольником, до выбора объектов отключается привязка, после включается, сколько символов \ - столько вершин у многоугольника

8) Собрать выбранные рамкой объекты в блок со "случайным" именем с базовой точкой в начале координат. Удобно, когда нужно скопировать группу объектов в другой чертеж в координатах и не потерять возможность выбора группы
*^C^C_.PSELECT С \\;^C^CБТКОПИРОВАТЬ 0,0 ВСТБЛОК 0,0 СТЕРЕТЬ ТЕКУЩИЙ;;

9) Полилиния в виде линии разрыва с поворотом и масштабированием. Зачастую нужна просто линия, по которой можно обрезать без маскировок и прочей автоматизации. Если не параноить за размеры изломов, то вполне удобная вещь
^C^COSMODE 0 плиния \@14.5,0 @.25,-.75 @.5,1.5 @.25,-.75 @14.5,0;;повернуть @0,0;;@-30,0 о @0,0 @30,0 \^C^Cмш @0,0;;@0,0 о @0,0 @30,0 \OSMODE 4207

10) Ну и коллекция "ленивых" кнопок:
^C^C_zoom .5x - расширить рабочее пространство, когда двойной клин на колесо уже не помогает
^C^CУвеличить ц 50 - укоротить объект на половину
^C^Cатробновить в \д - обновить атрибуты у выбранного кликом блока
^C^С_slice \ 3 \; - резать тело по 3 точкам
^C^Cтеквизстиль р пск м -вид _SEISO PERSPECTIVE 1 - реалистичный визуальный стиль, с перспективой
^C^C_ucs в;_flatshot \;;; - плоский снимок

P.S. Работаю в Русской локализации верисии 2012. Знаю, что использовать в локализации команды на латинице с подчеркиванием и смешивать с кирилическими - дурной тон, прошу прощения, каюсь, виноват. Но к стати, там где нужен предварительный выбор - команда выбрать не вкатывает, _.PSELECT - как я понимаю несколько иная функция, по крайней мере, на сколько я помню, кнопки с выбором начинали работать только через нее
Buffalo вне форума  
 
Непрочитано 23.11.2016, 15:17
#814
Linkshunter

проектирование а/дорог
 
Регистрация: 03.07.2013
СПб
Сообщений: 376


...помогите плиз, нужен макрос на добавление контура к штриховке; (акад2015 рус)

^C^C_-HATCHEDIT;\Д В - работает, но запрашивает лишний запрос

Код:
[Выделить все]
Команда: _-HATCHEDIT
Выберите объект штриховки:
Задайте параметр штриховки [Неассоциативная/сТиль/Свойства/поРядок прорисовки/Добавить контуры/Удалить контуры/Восстановить контур/свяЗать/Отдельные штриховки/Исходная точка/Аннотативный/Цвет штриховки/сЛой/Прозрачность] <Свойства>: Д
Укажите внутреннюю точку или [Выбор объектов]: В
Выберите объекты: найдено: 1
Выберите объекты:
Укажите внутреннюю точку или [Выбор объектов]:

Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Можно в макросе после вычерчивания полилинии задать ее замыкание? Closed? Пробую - не получается.
...я замыкаю через редактирование: _pedit _close _exit

Последний раз редактировалось Linkshunter, 23.11.2016 в 15:54.
Linkshunter вне форума  
 
Непрочитано 24.11.2016, 13:24
1 | #815
skkkk


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


Linkshunter, никогда такого не делал, сейчас попробовал - у меня не срабатывает данная последовательность: Добавить контуры -> Выбрать объекты.
Но зато сработала такая последовательность:
Команда: -РЕДШТРИХ
Выберите объект штриховки:
Введите параметр штриховки [Неассоциативная/сТиль/Свойства/поРядок
прорисовки/Добавить контуры/Удалить контуры/Восстановить
контур/свяЗать/Отдельные штриховки/Исходная точка/Аннотативный/Цвет
штриховки/сЛой/Прозрачность] <Свойства>: В
Введите тип объекта контура [Область/Полилиния] <Полилиния>: П
Связать штриховку с новым контуром? [Да/Нет] <Д>:


Чтобы макрос заработал в Автокаде любой локализации (мало ли что?), рекомендуется использовать английские буквы опций, которые можно взять из Справки по Автокад:

Enter hatch option [DIsassociate/Style/Properties/DRaw order/ADd boundaries/Remove boundaries/recreate Boundary/ASsociate/separate Hatches/Origin/ANnotative/ hatch COlor/ LAyer/ Transparency]

[Region/Polyline]

[Yes/No]



Проверять не стану, но навскидку, макрос будет таким (ну или типа такого):
Код:
[Выделить все]
^C^C_-HATCHEDIT;\_B;_P;_Y;
skkkk вне форума  
 
Непрочитано 24.11.2016, 14:06
#816
Linkshunter

проектирование а/дорог
 
Регистрация: 03.07.2013
СПб
Сообщений: 376


Цитата:
Сообщение от skkkk Посмотреть сообщение
Чтобы макрос заработал в Автокаде любой локализации (мало ли что?), рекомендуется использовать английские буквы опций, которые можно взять из Справки по Автокад:
спасибо за наводку, но не помогло,макрос вида ^C^C_-HATCHEDIT;\_AD;_S;_S; лишний запрос в конце все равно так же выдает. Подозреваю что -то не так делаю - не пойму почему выбор объектов начинается снова, когда набор уже есть
Команда: _-HATCHEDIT
Выберите объект штриховки:
Задайте параметр штриховки [Неассоциативная/сТиль/Свойства/поРядок прорисовки/Добавить контуры/Удалить контуры/Восстановить контур/свяЗать/Отдельные штриховки/Исходная точка/Аннотативный/Цвет штриховки/сЛой/Прозрачность] <Свойства>: _AD
Укажите внутреннюю точку или [Выбор объектов]: _S
Выберите объекты: _S
Выберите объекты: найдено: 1
Выберите объекты:
Укажите внутреннюю точку или [Выбор объектов]:


макрос типа ^C^C_-HATCHEDIT;\_AD;_S;\\;; делает то, что мне надо, но только с двумя последовательно выбранными контурами(по числу обратных слэш в конце)

Последний раз редактировалось Linkshunter, 24.11.2016 в 14:49. Причина: добавил
Linkshunter вне форума  
 
Непрочитано 24.11.2016, 15:09
#817
skkkk


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


Не пойму, что делает этот макрос. Точнее эта опция "Добавить контуры". У меня она ничего не добавляет. Чего-то я не догоняю. Догадываюсь, что речь идет о контурах не в виде полилинии, а о ручках по контурам штриховки при ее (полилинии) отсутствии. Но сколько не тыкаю в эти штриховки, не могу сообразить, о чем речь. Может, дело пойдет, если приложить к посту файл с примером - что есть и что надо?
skkkk вне форума  
 
Непрочитано 24.11.2016, 19:10
#818
Linkshunter

проектирование а/дорог
 
Регистрация: 03.07.2013
СПб
Сообщений: 376


Цитата:
Сообщение от skkkk Посмотреть сообщение
Не пойму, что делает этот макрос. Точнее эта опция "Добавить контуры". У меня она ничего не добавляет.
должна добавлять к уже существующей штриховке новые контуры(полилинии)
На второй гифке стандартная работа команды без макроса вручную
Миниатюры
Нажмите на изображение для увеличения
Название: контур.gif
Просмотров: 86
Размер:	71.7 Кб
ID:	179687  Нажмите на изображение для увеличения
Название: стд_контур.gif
Просмотров: 66
Размер:	1.34 Мб
ID:	179689  
Вложения
Тип файла: dwg
DWG 2007
new block.dwg (109.8 Кб, 27 просмотров)

Последний раз редактировалось Linkshunter, 24.11.2016 в 19:16.
Linkshunter вне форума  
 
Непрочитано 26.11.2016, 13:45
#819
skkkk


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


Цитата:
Сообщение от Linkshunter Посмотреть сообщение
добавлять к уже существующей штриховке новые контуры(полилинии)
А я на картинке увидел, как к существующим контурам (полилиниям) добавляются новые штриховки

Цитата:
Сообщение от Linkshunter Посмотреть сообщение
макрос типа ^C^C_-HATCHEDIT;\_AD;_S;\\;; делает то, что мне надо
Я так понял, проблема решилась в итоге?
skkkk вне форума  
 
Непрочитано 29.11.2016, 09:13
#820
Linkshunter

проектирование а/дорог
 
Регистрация: 03.07.2013
СПб
Сообщений: 376


Цитата:
Сообщение от skkkk Посмотреть сообщение
Я так понял, проблема решилась в итоге?
частично жму в конце ентер 2 раза вместо одного
Linkshunter вне форума  
 
Непрочитано 29.11.2016, 13:39
#821
skkkk


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


А если в макросе после S оставить только один слэш (\)? Он ведь означает пользовательский ввод.
skkkk вне форума  
 
Непрочитано 29.11.2016, 19:04
#822
Linkshunter

проектирование а/дорог
 
Регистрация: 03.07.2013
СПб
Сообщений: 376


Цитата:
Сообщение от skkkk Посмотреть сообщение
А если в макросе после S оставить только один слэш (\)? Он ведь означает пользовательский ввод.
все верно, тогда корректно сработает на добавлении одного контура(один клик мыши по одной полилинии, а ежели более одного или выбрать рамкой - то доп.запрос выйдет.Макрос заранее не знает,какое количество контуров планируется добавить )
Linkshunter вне форума  
 
Непрочитано 29.11.2016, 21:59
#823
skkkk


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


Тогда, может, так:
Код:
[Выделить все]
^C^C_-HATCHEDIT;\_AD;_S;
skkkk вне форума  
 
Непрочитано 04.12.2016, 15:54
#824
Maksim7enov


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


Здравствуйте, прошу прощения если поставил вопрос не корректно. Решил написать простой макрос для перемещения объектов в точку 0,0,0. Так как опыта в написании у меня маловато то особо не получилось) Макрос работает только с 1 объектом, при выделении объектов рамой он просто переносит их на отрезок от начала координат до координаты самого объекта. Так же не работает если сначала выделить объект а потом вызывать команду. Подскажите пожалуйста в чем проблема и как ее решить.
Код:
[Выделить все]
^C^C_move;\;\0,0,0
----- добавлено через ~43 мин. -----
Все разобрался. Выбираем объекты. Вызываем команду. Задаем базовую точку и все.
Код:
[Выделить все]
^C^C_move;\0,0,0
Maksim7enov вне форума  
 
Непрочитано 09.01.2017, 11:26
#825
betonolom


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


Лисп был опубликован в этой теме:
Цитата:
Сообщение от TararykovDG Посмотреть сообщение
Astartes, попробуй так
Код:
[Выделить все]
 
(defun c:qsel()
  (vl-load-com)
  ((lambda(range)
     (if (not (vl-catch-all-error-p range))
       (sssetfirst nil (ssget "_X" (list (cons 0 "MULTILEADER") (cons 304 range))))
       )
     )
    (vl-catch-all-apply 'getstring
      (list t "\nВведите диапазон в формате [начало-конец]: ")
      )
    )
  (princ)
  ); end c:qsel
P.S. В ответ на запрос "Введите диапазон в формате [начало-конец]:" можно будет ввести, наример:
[1-10]
или
[2-6],[12-45]
и т.д.
У меня работает не корректно:
при запросе [1-18] выделяются выноски с позицией 1 и 8;
при запросе [7-23] выделяются выноски с позицией 7 и 3;
при запросе [20-36] выделяются выноски с позицией 1,3,6 и т.д.

Autocad 2015 64
Может кто-то сможет подсказать как исправить...
Вложения
Тип файла: dwg
DWG 2010
для_форума.dwg (209.5 Кб, 34 просмотров)

Последний раз редактировалось betonolom, 09.01.2017 в 14:08. Причина: добавлено вложение
betonolom вне форума  
 
Непрочитано 09.01.2017, 12:08
#826
skkkk


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


betonolom, где файл (желательно в формате 2010)? Подозреваю, что там может быть форматирование в мультивыносках.
skkkk вне форума  
 
Непрочитано 10.03.2017, 14:27
#827
Browning Zed


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


Подскажите, как правильно задать макрос, чтобы он подгружал файл LSP, если функция не выполняется? Если команду нужно выполнить, но эта команда отсутствует, я вешаю на кнопку следующий макрос:
Код:
[Выделить все]
^C^C^P(if (not c:(***))(load"***.LSP"));^P(***);
Но почему-то с функциями этот макрос не прокатывает. Например, из этой программы: LISP. Выравнивание текста по двум точкам, мне нужно использование функцию (Kr_AligmentTextLine -2 "ang" 2 nil). Соответственно прописываю в макросе:
Код:
[Выделить все]
^C^C^P(if (not c:(Kr_AligmentTextLine -2 "ang" 2 nil))(load"Kr_AligmentTextLine.LSP"));^P(Kr_AligmentTextLine -2 "ang" 2 nil);
Но лисп не подгружается, и соответственно команда не выполняется. Что нужно сделать, чтобы это работало?
Browning Zed вне форума  
 
Непрочитано 10.03.2017, 18:02
#828
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,825


Попробуй так:
Код:
[Выделить все]
^C^C(if (not Kr_AligmentTextLine)(load "Kr_AligmentTextLine.LSP"));(Kr_AligmentTextLine -2 "ang" 2 nil)
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 07.05.2017, 21:44
#829
Walkmax


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


Скажите пожалуйста, есть ли возможность оперировать командой checkstandards через макрос?
Walkmax вне форума  
 
Непрочитано 07.05.2017, 22:01
#830
Кулик Алексей aka kpblc
Moderator

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


Насколько я помню, у команды _.checkstandards нет режима ком.строки. Так что макросом не получится.
P.S. Решения по обработке стандартов, кажется, на форуме были
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.07.2017, 15:24
#831
Maksim7enov


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


Здравствуйте! Нужен совет и попутно Ваша помощь. Для быстрого составления спецификаций применяю извлечение данных их созданных мной динамических блоков, интересует как можно сделать расстановку блоков быстрее.
Для начала опишу свой алгоритм работы:
1. Построение аксонометрической схемы (не в масштабе);
2. Гидравлический расчет трубопроводов;
3. Нанесение диаметров на аксонометрическую схему;
А вот сейчас пошла работа с блоками
4. Расстановка блоков с указанием их диаметра. Применяю такие блоки как отвод, переход, шаровой кран и т.д.
5. Извлечение данных.
6. После извлечения составление спецификации.

В приложенном файле 1 блок отвода для примера. Думаю будет удобнее создать макрос для вставки блоков, который будет повторяться пока я не отменю команду. Макрос я сделал.
Интересует можно ли за счет макросов сделать и извлечение данных уйти от лишних движений, или работа с диалоговыми окнами в макросах не возможна?
Так же интересует Ваше мнение по данному способы составления спецификаций, может есть лучше и быстрее.
Файл: выполняю в автокаде 2014, сохранил в 2004
Созданный мной макрос для вставки блока
Код:
[Выделить все]
*^C^C_insert;"Отвод 45 ГОСТ 17375-2001";\;1;0;\\\\\\
Планирую сделать такие же макросы для других блоков. Выбрал макросы из-за того, что команда может повторяться и вставляется быстрее чем с палитры. Не нравится только то, что в конце макроса пришлось делать много пользовательских вводов для возможности изменения угла отвода для нормального отображения на схеме и указания диаметра. Сразу прошу меня не ругать за туманные объяснения:
Вложения
Тип файла: dwg
DWG 2004
Отвод.dwg (70.0 Кб, 23 просмотров)
Maksim7enov вне форума  
 
Непрочитано 25.07.2017, 16:54
#832
Клаус


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


Ребята кто может помочь с макросом?
в макросе нужно переносить внешние ссылки из одного слоя в другой+ заблокировать и заморозить слой
__________________
Читайте интернет -- там всё написано!
Клаус вне форума  
 
Автор темы   Непрочитано 25.07.2017, 18:34
#833
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,824
<phrase 1=


Цитата:
Сообщение от Клаус Посмотреть сообщение
Ребята кто может помочь с макросом?
в макросе нужно переносить внешние ссылки из одного слоя в другой+ заблокировать и заморозить слой
а сам? попробовать не хочешь?
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 01.08.2017, 11:00
#834
Клаус


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


Цитата:
Сообщение от zenon Посмотреть сообщение
попробовать не хочешь
помощь утопающим--дело рук самих утопающих.
Спасибо за совет, прям вдохновился и сразу всё понял. гуд. Zenon, если есть желание помочь, то сбрось пожалуйста годные ссылки на темы по вводу в Lisp и на темы где рассмотрены похожие вопросы. Буду благодарен. Спасибо.
__________________
Читайте интернет -- там всё написано!
Клаус вне форума  
 
Непрочитано 11.08.2017, 10:32
#835
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


Цитата:
Сообщение от Клаус Посмотреть сообщение
Ребята кто может помочь с макросом?
в макросе нужно переносить внешние ссылки из одного слоя в другой+ заблокировать и заморозить слой
тут дело пахнет программированием (_.QSELECT без окошка не робит вроде как и на стадии выбора ссылок - это уже нужен Lisp (может дизель? я не изучал его) )
а это уже другая ветка... макросами не решить.
а по поводу блокировки слоя изучай _-Layer в командной строке, правила написания макросов не такие уж и сложные.
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Непрочитано 16.08.2017, 10:46
#836
AlexZh


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


Цитата:
Сообщение от Клаус Посмотреть сообщение
Ребята кто может помочь с макросом?
в макросе нужно переносить внешние ссылки из одного слоя в другой+ заблокировать и заморозить слой
Начну пожалуй.

_-LAYER;Р;Слой;А;Слой;;_CHPROP;\;_LA;Слой;;_-LAYER;Б;Слой;_F;Слой;;


Вместо "Слой" вписываешь нужный.

Работа в русской версии AutoCad, т.к. некоторый команды английские не знаю.

Из минусов - выбор вручную и по одному.

Думаю, знающие поправят.
__________________
Проекты СС
AlexZh вне форума  
 
Непрочитано 17.08.2017, 11:12
#837
AMDen

Инженер-проектировщик
 
Регистрация: 07.07.2016
Санкт-Петербург
Сообщений: 723


Здравствуйте, форумчане!
Следующий алгоритм рутинной работы хочется заменить нажатием одной кнопки:
- быстрый выбор всех размеров;
- порядок прорисовки на передний план;
- быстрый выбор всех блоков;
- порядок прорисовки на передний план;
- быстрый выбор всех мультивыносок;
- порядок прорисовки на передний план.
Нужен именно такой порядок.
Почитав форумы понял что QSELECT через макрос не сделать (возможно не правильно понял). Языком лиспа не владею.
Может кто подскажет примером или советом?
AMDen вне форума  
 
Непрочитано 17.08.2017, 11:40
#838
Кулик Алексей aka kpblc
Moderator

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


Попробуй использовать _selectsimilar
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.08.2017, 12:53
#839
AMDen

Инженер-проектировщик
 
Регистрация: 07.07.2016
Санкт-Петербург
Сообщений: 723


_selectsimilar - выбрать подобные, т.е. изначально нужно выбирать образец. Или можно как прописать в коде тип объекта?
AMDen вне форума  
 
Непрочитано 22.08.2017, 10:49
#840
Linkshunter

проектирование а/дорог
 
Регистрация: 03.07.2013
СПб
Сообщений: 376


Цитата:
Сообщение от AMDen Посмотреть сообщение
_selectsimilar - выбрать подобные, т.е. изначально нужно выбирать образец. Или можно как прописать в коде тип объекта?
...рекомендую поковырять стандартные командs - во первых половина того что Вам надо уже есть в акад, во вторых с макросом разберетесь

ТЕКСТПЕРПЛАН -
аннотации - ^C^C^P_texttofront _a ^P
только выноски - ^C^C^P_texttofront _l ^P
только размеры - ^C^C^P_texttofront _d ^P
только тексты - ^C^C^P_texttofront _t ^P
штриховки на задний план HATCHTOBACK
и т.п.
ЗЫ: если работать по слоям, есть классная программа от lee-mac
http://lee-mac.com/layerdraworder.html
Linkshunter вне форума  
 
Непрочитано 22.08.2017, 12:03
#841
AMDen

Инженер-проектировщик
 
Регистрация: 07.07.2016
Санкт-Петербург
Сообщений: 723


Цитата:
Сообщение от Linkshunter Посмотреть сообщение
ТЕКСТПЕРПЛАН -
аннотации - ^C^C^P_texttofront _a ^P
только выноски - ^C^C^P_texttofront _l ^P
только размеры - ^C^C^P_texttofront _d ^P
только тексты - ^C^C^P_texttofront _t ^P
штриховки на задний план HATCHTOBACK
Спасибо! Новая для меня команда, поизучаю.

Цитата:
Сообщение от Linkshunter Посмотреть сообщение
ЗЫ: если работать по слоям, есть классная программа от lee-mac
http://lee-mac.com/layerdraworder.html
Этот лисп я видел. Если правильно понял, там каждый раз нужно выбирать слои, которые надо переместить. Много действий для трех слоев.
AMDen вне форума  
 
Непрочитано 13.11.2017, 09:24
#842
jkalex

геодезист
 
Регистрация: 22.12.2009
Киров
Сообщений: 23


Подскажите, пожалуйста, как написать макрокоманду: выбрать из текущего пространства все объекты фиолетового цвета и изменить им цвет на "по блоку"
jkalex вне форума  
 
Непрочитано 14.11.2017, 14:31
#843
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


jkalex, лиспом как два пальца... выбор по фильтру и обработка набора. Макросом... мсье знает толк в извращениях (по моему никак, вроде не раз поднимали подобные вопросы в том числе совсем 10 постов назад...)
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Непрочитано 03.12.2017, 17:24
#844
boretskiy.a

геодезист
 
Регистрация: 26.11.2010
Луцк
Сообщений: 33


Может кому и пригодится. В макросах можно прописать создание слоя, цвета, тип л/п, соответствующих примитиву или объекту. Разнообразить можно до невозможного если подлючить лисп.
^C^C(setvar "attdia" 0) (setvar "attreq" 1) (if (tblsearch "layer" "ОГРАЖДЕНИЯ") (command "_layer" "_set" "ОГРАЖДЕНИЯ" "") (command "_layer" "_make" "ОГРАЖДЕНИЯ" "")) Mline s 1 ST PR_12
или
^C^C(command "-linetype" "l" "475_2" "armigw.lin" "s" "475_2" "" (command "-layer" "_m" "ОГРАЖДЕНИЯ" "_s" "ОГРАЖДЕНИЯ" ""))(command "_pline")
или
^C^C^P(if (tblsearch "layer" "НАДЗЕМКА")(command "_layer" "_set" "НАДЗЕМКА" "")(command "_layer" "_make" "НАДЗЕМКА" "") );^Pl2p;
или
^C^C^P(if (not c:insert_395_2 )(load "VNEMASHT.LSP" ));^Pinsert_395_2
boretskiy.a вне форума  
 
Непрочитано 03.12.2017, 20:25
#845
Кулик Алексей aka kpblc
Moderator

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


boretskiy.a, в макросах можно обойтись без command, setvar etc. И ты забыл про локализацию ACAD. Теоретически должно быть так:
Код:
[Выделить все]
^C^Cattdia;0;attreq;1;_.-layer;_m;Ограждения;_,mline;_s;1;_st;_pr_12;
^C^C^_.-linetype;_l;475_2;armigw.lin;_s;475_2;;_-layer;_m;Ограждения;_pline
И т.д. Но я не уверен, что у каждого пользователя есть файл armigw.lin И лиспы - тоже )))
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 02.01.2018, 11:43
#846
Immortal_6666

вольный копейщик
 
Регистрация: 03.11.2010
Сообщений: 132


Пытаюсь сделать мультивыноску с определенным текстом в виде макроса (чтобы повесить на кнопку и в два клика проставлять одинаковые надписи). Вроде все просто: команда, два пользовательских выбора на экране (положение стрелки + положение текста), далее enter.

Записал так:

Код:
[Выделить все]
^C^C_mleader;//тест;
Не работает, в Командной строке висит запрос "введите текст"... Может кто сталкивался или понимает, что ему не нравится? Подскажите пожалуйста как поправить?

Сейчас использую тоже самое, но записанное через рекордер операций. Работает, но немного подглючивает, макросом как мне кажется более стабильно должно работать.
Immortal_6666 вне форума  
 
Непрочитано 02.01.2018, 11:56
#847
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 10,960


Immortal_6666, будет интересно - статья от Алексея Кулика.
Сергей812 вне форума  
 
Непрочитано 02.01.2018, 12:10
#848
Immortal_6666

вольный копейщик
 
Регистрация: 03.11.2010
Сообщений: 132


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Immortal_6666, будет интересно - статья от Алексея Кулика.
Я прочитал, но видимо, этот тот случай, когда "вижу фигу" - порядок-то у меня вполне определен (значение в реестре 1) - я сначала посмотрел, что хочет Автокад - положение стрелки, положение полки, текст, а потом уже писал макрос. Вопрос в том, почему предложенный ему текст не "проглатывается" командой, а игнорируется...
Immortal_6666 вне форума  
 
Непрочитано 02.01.2018, 12:31
#849
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 10,960


Цитата:
Сообщение от Immortal_6666 Посмотреть сообщение
(значение в реестре 1) - я сначала посмотрел, что хочет Автокад - положение стрелки, положение полки, текст
вообще то тогда в реестре должно быть 2 согласно статье при таком порядке запроса

----- добавлено через ~11 мин. -----
хотя ошибся: для такого порядка в статье - нуль получается
Цитата:
[leader arrowHead first/leader Landing first/Options]
в любом случае лучше в виде лиспа через vla-AddMleader создавать, имхо - а не через командные методы.
Сергей812 вне форума  
 
Непрочитано 02.01.2018, 13:06
#850
Immortal_6666

вольный копейщик
 
Регистрация: 03.11.2010
Сообщений: 132


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
вообще то тогда в реестре должно быть 2 согласно статье при таком порядке запроса

----- добавлено через ~11 мин. -----
хотя ошибся: для такого порядка в статье - нуль получается
Нет, не соглашусь. Вы почему-то рассматриваете исключительно то, что написано между [], а это уже опции команды. При этом упускаете "стандартный" порядок действий, который получается, если пользователь не выбирает опции. Именно 1 для такого порядка. И в статье это указано - там таблица даже есть в конце, где и скрин кс дан, и по-русски описано что происходит: сначала все точки, потом текст. И запрос КС начинается "Specify leader arrowhead location or" что у меня и происходит. По ветке "or" идти не обязательно. В любом случае, статья, к сожалению, никак не помогает мне решить задачу...

В виде лиспа мне знаний не хватает. Да и просто интересно, где я ошибаюсь в макросе, т.к. задача вроде примитивная...

П.С. А есть какая-то веская причина, почему так не любят "командные методы"? Я не против лисп, просто зачем изобретать каждый раз велосипед... В лисп всегда надо предусмотреть все события, все варианты, кучу всего прописать, часто "лишнего", т.к. "а вдруг что-то пойдет не так". А зачастую нужна просто последовательность обычных команд. По сути предложить программе нажать кнопки за пользователя.
Я почему макросы такие люблю - вот повесил его на палитру, в свойствах указал в какой слой помещать, для некоторых инструментов можно сразу стиль указать и готово. В а лиспе пришлось бы описывать создание стиля, создание слоя и т.п.
Я-то очень хочу в нем разобраться. Но часто получается, что это микроскоп, которым при каждом удобном случае предлагают забивать гвозди... И чтобы сделать примитивную вещь нужно ну очень много всего знать, что ставит в тупик, т.к. даже не знаешь, как подступиться к задаче.

Последний раз редактировалось Immortal_6666, 02.01.2018 в 13:19.
Immortal_6666 вне форума  
 
Непрочитано 02.01.2018, 13:15
#851
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 10,960


лисп даст более предсказуемый результат - ищите по vla-AddMleader готовый код и разбирайтесь. А смысл статьи - что Аутодеск максимально усложнил работу с мультивыносками командными методами)
Сергей812 вне форума  
 
Непрочитано 02.01.2018, 13:22
1 | 1 #852
engngr

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


Immortal_6666, попробуйте
^C^C_mleader;\\текст
engngr вне форума  
 
Непрочитано 02.01.2018, 13:26
#853
Immortal_6666

вольный копейщик
 
Регистрация: 03.11.2010
Сообщений: 132


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
лисп даст более предсказуемый результат - ищите по vla-AddMleader готовый код и разбирайтесь. А смысл статьи - что Аутодеск максимально усложнил работу с мультивыносками командными методами)
чтобы результат стал предсказуемым нужно потратить ни одну сотню часов разбираясь в коде, что для человека без программистского бэкграунда не так просто.

----- добавлено через ~1 мин. -----
Цитата:
Сообщение от engngr Посмотреть сообщение
Immortal_6666, попробуйте
^C^C_mleader;\\текст
engngr, спасибо огромное!!!!
Я ведь пробовал менять направление слэшей... и не помогало. А Ваш код скопировал - и работает. Еще раз спасибо за ответ по делу!!!
Immortal_6666 вне форума  
 
Непрочитано 02.01.2018, 13:28
1 | 1 #854
engngr

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


Цитата:
Сообщение от Immortal_6666 Посмотреть сообщение
от моего метода отличается отсутствием ; в конце. К сожалению, не помогло. Он почему-то не обрабатывает //
Косая черта в другую сторону.
Ожидание ввода от пользователя - \, а не /.
engngr вне форума  
 
Непрочитано 02.01.2018, 13:31
#855
Immortal_6666

вольный копейщик
 
Регистрация: 03.11.2010
Сообщений: 132


Цитата:
Сообщение от engngr Посмотреть сообщение
Косая черта в другую сторону.
Ожидание ввода от пользователя - \, а не /.
да-да, это я невнимателен. уже выше подправил свой ответ.
просто шикарно работает!!!
очень помогли!

----- добавлено через 6 сек. -----
engngr, а если нужно в текст выноски добавить 2 строки, т.е принудительный переход на новую строку. Это возможно реализовать макросом? Попробовал код \X который позволяет делать такое в текстовой строке размера и \P из Мтекста, тут не сработали. Очевидно потому, что \ трактуется как пользовательский выбор. У меня просто есть выноски, которые всегда пишутся в две строки.

----- добавлено через ~8 мин. -----
И поле таким образом засунуть не получилось
^C^C_mleader;\\%<\AcVar CustomDP.Тест>%
Может надо в какие-то символы обернуть код поля?

Последний раз редактировалось Immortal_6666, 02.01.2018 в 13:48.
Immortal_6666 вне форума  
 
Непрочитано 02.01.2018, 15:14
1 | #856
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 611


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
в любом случае лучше в виде лиспа через vla-AddMleader создавать, имхо - а не через командные методы.
Почему? Пример Immortal_6666 очень хорошо описывается простым выражением:
Код:
[Выделить все]
(command "_MLEADER" pause pause "Текст")
Естественно, должен быть настроен стиль мультивыноски.
Для Immortal_6666. А вообще, при работе с мультивыноской в более сложных случаях лучше отказаться от макросов и применять VLisp. Много разных возможностей появляется: и многострочность, и поля и др.
Setvar вне форума  
 
Непрочитано 02.01.2018, 15:28
#857
Immortal_6666

вольный копейщик
 
Регистрация: 03.11.2010
Сообщений: 132


Setvar, ок, согласен на vlisp.
Можно ли малой кровью в это
Код:
[Выделить все]
(command "_MLEADER" pause pause "Текст")
добавить вторую строку и пользовательское поле?

Не одновременно, а в принципе, т.к. это две разные задачи - просто текст в две строки и 1 строка, но с полем. Причем очень важно, чтобы поле осталось именно полем.
Код поля есть: %<\AcVar CustomDP.Тест>%
Я уже весь буржуй нет облазил (на русском вообще ничего нет), книгу В.Света штудирую второй час... Научился вставлять в выноску переменные, но вот поле и вторую строку никак.. либо как-то не так ищу.

Находил только решения, где поле преобразуется в текст, сохраняется в переменную, потом переменную скармливают тексту или выноске. Но мне не подходит такое, т.к. там вставлется просто текст.

----- добавлено через ~6 мин. -----
Интуитивно мне казалось, что должно быть как-то так:

^C^C(command "_MLEADER" pause pause $M=$(%<\AcVar CustomDP.Тест>%))

но нет...

Последний раз редактировалось Immortal_6666, 02.01.2018 в 15:59.
Immortal_6666 вне форума  
 
Непрочитано 02.01.2018, 16:17
#858
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 611


Поле - это ведь не самоцель. Поле должно быть с чем-то связано программно или вручную.
Ничего тут не выйдет "малой кровью".
Setvar вне форума  
 
Непрочитано 02.01.2018, 16:24
#859
Immortal_6666

вольный копейщик
 
Регистрация: 03.11.2010
Сообщений: 132


Цитата:
Сообщение от Setvar Посмотреть сообщение
Поле - это ведь не самоцель. Поле должно быть с чем-то связано программно или вручную.
Ничего тут не выйдет "малой кровью".
Не очень понял... поле как раз самоцель. Есть пользовательское поле в документе (в шаблоне даже), оно заполняется 1 раз. И именно с ним должна быть связь. Потом по всему чертежу расставляются выноски с этим полем. А поле оно потому, что содержимое может в любой момент поменяться и удобно, что изменится все везде и само.

Руками я делал так: выноска - указал точки - вставить поле - выбрал какое. Далее, записал эти шаги через рекордер операций - тоже все работает. Аналогично проделал с выносками, содержимое которых одинаково во всех проектах. Кнопки со всеми этими выносками разложены на палитре. Работает, но у рекордера есть минусы (иногда подглючивает) и нужно хранить файлы .actm.

В итоге, с Вашей помощью, удалось для выносок, где всего 1 строка использовать макрос\код. Так я избавился от части файлов рекордера операций. Хочется проделать тоже самое с выносками где 2 строки и теми, где поля.
Про поле я еще могу понять, что это может быть сложно программно. Но про вторую строку, кажется, что должно быть просто решение, вроде управляющего символа для перевода на новую строку.
Immortal_6666 вне форума  
 
Непрочитано 02.01.2018, 16:33
#860
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 611


Абстрактно рассуждаете, товарищ. Никакой связи ЗДЕСЬ ни с каким полем не обозначено. Топтание на пустом месте.
Setvar вне форума  
 
Непрочитано 02.01.2018, 16:38
#861
Immortal_6666

вольный копейщик
 
Регистрация: 03.11.2010
Сообщений: 132


Цитата:
Сообщение от Setvar Посмотреть сообщение
Абстрактно рассуждаете, товарищ. Никакой связи ЗДЕСЬ ни с каким полем не обозначено. Топтание на пустом месте.
Setvar, Я картинку сделал. Может так понятнее будет?

Код данного поля такой:

%<\AcVar CustomDP.тест>%

Если я копирую эту строку в любой текст, вставляется поле. Разве это не связь? Она вполне конкретная. Но скормить эту строку выноске программно у меня не получается. Хотя руками через ctrl+v работает. По-моему чистая конкретика, а не абстракция.

Аналогично с переносом - в мтексте это \P
Но конструкция (command "_MLEADER" pause pause "Текст\PТекст") уже не работает.
Миниатюры
Нажмите на изображение для увеличения
Название: поле.PNG
Просмотров: 101
Размер:	34.0 Кб
ID:	197362  

Последний раз редактировалось Immortal_6666, 02.01.2018 в 16:48.
Immortal_6666 вне форума  
 
Непрочитано 02.01.2018, 17:47
#862
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 10,960


И в чем проблема с многострочным текстом? "\n" - управляющая группа переноса
Код:
[Выделить все]
(command "_MLEADER" pause pause "Текст\nText\nИ третья строка")
Сергей812 вне форума  
 
Непрочитано 02.01.2018, 18:02
#863
Immortal_6666

вольный копейщик
 
Регистрация: 03.11.2010
Сообщений: 132


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
И в чем проблема с многострочным текстом? "\n" - управляющая группа переноса
Код:
[Выделить все]
(command "_MLEADER" pause pause "Текст\nText\nИ третья строка")
в том, что не работает так... строка в принципе не выполняется тогда, разрываясь в месте "/". Cм. картинку.
Хм.. а не работает она именно с кнопки. А если скопировать весь код в кс, то работает.
Миниатюры
Нажмите на изображение для увеличения
Название: не работает.PNG
Просмотров: 54
Размер:	4.5 Кб
ID:	197363  
Immortal_6666 вне форума  
 
Непрочитано 02.01.2018, 18:08
#864
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 10,960


Лог:
Цитата:
Команда: (command "_MLEADER" pause pause "Текст\nText\nИ третья строка")
_MLEADER
Укажите местоположение полки выноски или [вначале Стрелка выноски/Вначале содержимое/Параметры] <Вначале содержимое>:
Положение стрелки выноски:
Введите текст: Текст
Text
И третья строка
Команда: nil
И результат:
Миниатюры
Нажмите на изображение для увеличения
Название: Выноска_с_многострочным_текстом.JPG
Просмотров: 47
Размер:	13.4 Кб
ID:	197364  
Сергей812 вне форума  
 
Непрочитано 02.01.2018, 18:10
#865
Immortal_6666

вольный копейщик
 
Регистрация: 03.11.2010
Сообщений: 132


Сергей812, видимо, вы код копируете прямо в кс. А попробуйте поместить кнопку на палитру или куда-либо еще. И будет обрываться на "\" выполнение. Почему-то разница есть.
Immortal_6666 вне форума  
 
Непрочитано 02.01.2018, 18:14
#866
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 10,960


а если сделать файл *.lsp
Код:
[Выделить все]
 (defun c:MLeader123(/)
  (command "_MLEADER" pause pause "Текст\nText\nИ третья строка")
)
загрузить в акад и повесить на кнопку? Команда будет MLeader123
Сергей812 вне форума  
 
Непрочитано 02.01.2018, 18:19
1 | #867
Immortal_6666

вольный копейщик
 
Регистрация: 03.11.2010
Сообщений: 132


Сергей812, это да, такое я уже сам попробовал. Работает конечно. Просто мне-то как раз уйти хотелось от внешних файлов. Странно, что без отдельного файла не хочет... это загадка для меня. Видимо, в файле загружает весь код, потом выполняет, а если сразу на кнопку, то по посимвольно интерпретирует.
В любом случае, спасибо большое за ответы!

Последний раз редактировалось Immortal_6666, 02.01.2018 в 18:35.
Immortal_6666 вне форума  
 
Непрочитано 02.01.2018, 22:33
#868
engngr

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


А можно в строку команды на кнопке включить лисп с возвращаемым значением в виде двух строк? - сейчас сам не могу попробовать
engngr вне форума  
 
Непрочитано 03.01.2018, 10:53
#869
Immortal_6666

вольный копейщик
 
Регистрация: 03.11.2010
Сообщений: 132


engngr, я не смог понять, что имеется в виду. Вероятно, знаний не хватает. Пробовал вот так:

^C^C((setq ts "текст1\nтекст2")(command "_MLEADER" pause pause ts))

все равно прерывается на \
Immortal_6666 вне форума  
 
Непрочитано 03.01.2018, 16:04
#870
skkkk


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


Immortal_6666, тут должна сработать следующая последовательность:
1. Создаём выноску с любым текстом, можно пустую: "".
2. Назначаем ей текстовую строку:
Код:
[Выделить все]
(vla-put-textstring (vlax-ename->vla-object (entlast)) "тут код поля в кавычках")
Пишу с телефона и без проверок, но вроде не напутал со скобками.
Но есть в таком примитивном подходе большой минус. Если пользователь по каким-то причинам отменит создание выноски, то строка назначится последнему созданному в чертеже объекту, если он, конечно, текстовый. Это плохая программа получится. До тех пор, пока vl-cmdf возвращал T в случае успешного завершения и nil в противном случае, такую проверку было устроить легко при помощи if. Но (вроде) с 2012-й (или с 15-й) версии vl-cmdf возвращает не пойми что, и такую проверку сделать нельзя. Надо предварительно перед созданием выноски запоминать последний примитив и перед назначением выноске строки проверять, добавился ли объект или нет, и если да, то модифицировать ему строку. Есть функции от VVA mip:mark для установки метки и вторая (название не помню, но они вместе), которая проверяет, добавлялись ли объекты после установки метки.

Последний раз редактировалось skkkk, 03.01.2018 в 16:11.
skkkk вне форума  
 
Непрочитано 03.01.2018, 17:04
#871
Immortal_6666

вольный копейщик
 
Регистрация: 03.11.2010
Сообщений: 132


skkkk, я попытался вот так:

Код:
[Выделить все]
 (defun c:test4(/)
  (command "_MLEADER" pause pause "")
  (vla-put-textstring (vlax-ename->vla-object (entlast)) "%<\AcVar CustomDP.Тест>%"))
Вроде как "не создать выноску" тут никак. Если только не поставил вторую точку, но тогда и код далее не выполняется. В этом плане проблемы нет. Но вставляет решетки... Хотя свойство на которое ссылается поле в документе есть, проверял.

----- добавлено через ~7 мин. -----
Не знаю, важно ли это. Но если посмотреть код поля этих решеток, то у них название свойства с маленькой буквы, а у родного поля -с большой. Хотя в коде, большая стоит. Возможно причина, в проблемах с кодировкой! У меня первая буква подменяется на т со штрихом сверху... правлю в NotePad++ - может он виноват. С кодировкой разобрался, но не помогло.
Также, заметил что в коде поля пропадает \, добавил еще 1, получилось так:

Код:
[Выделить все]
(defun c:test4(/)
  (command "_MLEADER" pause pause "")
  (vla-put-textstring (vlax-ename->vla-object (entlast)) "%<\\AcVar CustomDP.Тест>%")
  )
Теперь код поля из лиспа и код "родного поля" не отличаются ничем. Но первое выдает статус "неизвестно" и решетки...

----- добавлено через ~4 мин. -----
Ура! Заработало! Более простым методом:

Код:
[Выделить все]
 (defun c:test4(/)
	(setq ts "%<\\AcVar CustomDP.Тест>%" )
	(command "_MLEADER" pause pause ts)
  )
Но слеш \ лишний все равно надо добавлять - куда-то он пропадает сам по себе.
Спасибо всем, кто участвовал в обсуждении!!!

Последний раз редактировалось Immortal_6666, 03.01.2018 в 17:50.
Immortal_6666 вне форума  
 
Непрочитано 03.01.2018, 18:11
1 | #872
skkkk


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


Цитата:
Сообщение от Immortal_6666 Посмотреть сообщение
слеш \ лишний все равно надо добавлять - куда-то он пропадает сам по себе.
Этот слэш является служебным символом, когда нужно, например в строке поставить его же, как в случае с полем или кавычку, чтобы она не заканчивала строку.
Так что он пропадает не зря.
skkkk вне форума  
 
Автор темы   Непрочитано 09.01.2018, 14:15
#873
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,824
<phrase 1=


Immortal_6666, в качестве бреда
последовательность
  1. Создать выноску с пустым текстовым полем
  2. Вызвать команду редактирования текста с выбором последнего созданного объекта (Последний/_L)
  3. Вставить требуемое значение
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 09.01.2018, 16:19
#874
Immortal_6666

вольный копейщик
 
Регистрация: 03.11.2010
Сообщений: 132


zenon, спасибо. В принципе, задача уже решилась. См. пост 871
Immortal_6666 вне форума  
 
Непрочитано 30.01.2018, 13:31
#875
engngr

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


Цитата:
Сообщение от Immortal_6666 Посмотреть сообщение
Просто мне-то как раз уйти хотелось от внешних файлов.
Пока наткнулся: https://forum.dwg.ru/showpost.php?p=303625&postcount=89
engngr вне форума  
 
Непрочитано 23.03.2018, 16:36
#876
vedmak


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


Подскажите как отредактировать лисп чтобы он не только блокировал разблокировал ВЭ, но еще и слой видового экрана Defpoints ставил
Код:
[Выделить все]
 (defun c:vpunlockall () ; 06/07/04
  (vl-load-com)
  (vlax-for lay
                (vla-get-layouts
                  (vla-get-activedocument
                    (vlax-get-acad-object)
                  )
                )
    (if (eq :vlax-false (vla-get-modeltype lay))
      (vlax-for ent (vla-get-block lay) ; for each ent in layout
        (if (= (vla-get-objectname ent) "AcDbViewport")
          (progn
            (vla-put-displaylocked ent :vlax-false)
            (vla-put-color ent 3); 3 green
          )
        )
      )
    )
  )
)


(defun c:vplockall () ; 06/07/04
  (vl-load-com)
  (vlax-for lay
                (vla-get-layouts
                  (vla-get-activedocument
                    (vlax-get-acad-object)
                  )
                )
    (if (eq :vlax-false (vla-get-modeltype lay))
      (vlax-for ent (vla-get-block lay) ; for each ent in layout
        (if (= (vla-get-objectname ent) "AcDbViewport")
          (progn
            (vla-put-displaylocked ent :vlax-true)
            (vla-put-color ent 1);1 red
          )
        )
      )
    )
  )
)
vedmak вне форума  
 
Непрочитано 17.05.2018, 01:46
#877
Rijik-pijik


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


Добрый вечер. Подскажите пожалуйста как в этом макросе отредактировать точность площади до м2

проставляет площадь объекта
^C^C^P_.area;_Object;\^C(setq txt (getvar "AREA"))(princ "Укажите точку")(command "_text" pause "" "" txt)(princ)
Rijik-pijik вне форума  
 
Непрочитано 17.05.2018, 04:05
#878
art_rrc


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


Цитата:
Сообщение от Rijik-pijik Посмотреть сообщение
Подскажите пожалуйста как в этом макросе отредактировать точность площади до м2
Просто задайте для файла по умолчанию в "units", должно сработать.
art_rrc вне форума  
 
Непрочитано 17.05.2018, 06:05
#879
RNB

Проектирование мостов
 
Регистрация: 29.01.2014
Новосибирск
Сообщений: 433


Цитата:
Сообщение от Rijik-pijik Посмотреть сообщение
Добрый вечер. Подскажите пожалуйста как в этом макросе отредактировать точность площади до м2

проставляет площадь объекта
^C^C^P_.area;_Object;\^C(setq txt (getvar "AREA"))(princ "Укажите точку")(command "_text" pause "" "" txt)(princ)
Попробуйте (setq txt (round(getvar "AREA")))
RNB вне форума  
 
Непрочитано 17.05.2018, 08:49
#880
Rijik-pijik


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


Цитата:
Сообщение от RNB Посмотреть сообщение
Попробуйте (setq txt (round(getvar "AREA")))

не работает
Rijik-pijik вне форума  
 
Непрочитано 17.05.2018, 11:45
1 | #881
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,664


Цитата:
Сообщение от Rijik-pijik Посмотреть сообщение
Подскажите пожалуйста как в этом макросе отредактировать точность площади до м2
из кв. мм в кв. м
^C^C^P_.area;_Object;\^C(setq txt (/(getvar "AREA")1e6)(princ "Укажите точку")(command "_text" pause "" "" txt)(princ)

2 знака после запятой
^C^C^P_.area;_Object;\^C(setq txt (atof(rtos(getvar "AREA")2 2))(princ "Укажите точку")(command "_text" pause "" "" txt)(princ)
koMon вне форума  
 
Непрочитано 25.05.2018, 19:06
#882
Rijik-pijik


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


koMon, Спасибо за ответ. К сожалению не работает (((
Rijik-pijik вне форума  
 
Непрочитано 25.05.2018, 20:01
1 | #883
engngr

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


Цитата:
Сообщение от Rijik-pijik Посмотреть сообщение
К сожалению не работает (((
У вас скобок перебор, а в коде макрокоманды наоборот.
Цитата:
Сообщение от koMon Посмотреть сообщение
^C^C^P_.area;_Object;\^C(setq txt (atof(rtos(getvar "AREA")2 2))(princ "Укажите точку")(command "_text" pause "" "" txt)(princ)
Д.б.
^C^C^P_.area;_Object;\^C(setq txt (atof(rtos(getvar "AREA")2 2)))(princ "Укажите точку")(command "_text" pause "" "" txt)(princ)
engngr вне форума  
 
Непрочитано 25.05.2018, 20:19
1 | #884
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,664


Цитата:
Сообщение от engngr Посмотреть сообщение
Д.б.
^C^C^P_.area;_Object;\^C(setq txt (atof(rtos(getvar "AREA")2 2)))(princ "Укажите точку")(command "_text" pause "" "" txt)(princ)
Rijik-pijik, ну теперь-то заработает точно!
koMon вне форума  
 
Непрочитано 25.05.2018, 21:44
#885
Rijik-pijik


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


Цитата:
Сообщение от engngr Посмотреть сообщение
У вас скобок перебор, а в коде макрокоманды наоборот.

Д.б.
^C^C^P_.area;_Object;\^C(setq txt (atof(rtos(getvar "AREA")2 2)))(princ "Укажите точку")(command "_text" pause "" "" txt)(princ)
Работает )) только нулей после запятой много очень
Rijik-pijik вне форума  
 
Непрочитано 29.05.2018, 10:46
#886
skkkk


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


Цитата:
Сообщение от Rijik-pijik Посмотреть сообщение
только нулей после запятой много очень
За их количество отвечает переменная LUPREC
skkkk вне форума  
 
Непрочитано 29.05.2018, 20:47
1 | #887
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,664


Цитата:
Сообщение от Rijik-pijik Посмотреть сообщение
только нулей после запятой много очень
Д.д.б.)
^C^C^P_.area;_Object;\^C(setq txt (rtos(getvar "AREA")2 2))(princ "Укажите точку")(command "_text" pause "" "" txt)(princ)
koMon вне форума  
 
Непрочитано 01.06.2018, 18:10
#888
asas


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


[quote=koMon;1733509]Д.д.б.)
^C^C^P_.area;_Object;\^C(setq txt (rtos(getvar "AREA")2 2))(princ "Укажите точку")(command "_text" pause "" "" txt)(princ)[/
А можно как-то сделатъ чтобы в конце единицы показывал ? Спасибо, класная штука

----- добавлено через ~4 мин. -----
А вот так же проставитъ длину полилини можно?
asas вне форума  
 
Непрочитано 01.06.2018, 18:39
#889
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от asas Посмотреть сообщение
А вот так же проставитъ длину полилини можно?
Макросом - вряд ли.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 01.06.2018, 19:23
#890
asas


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


^C^C_area о \_text \;;%%u$M=$(*,$(fix,$(*,$(getvar,area),0.0001)),0.01)м%%178;

Почему етот макрос у меня нули показывает, чего ему не хватает ?

Последний раз редактировалось asas, 01.06.2018 в 19:30.
asas вне форума  
 
Непрочитано 02.06.2018, 08:32
1 | #891
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,664


Цитата:
Сообщение от asas Посмотреть сообщение
А можно как-то сделатъ чтобы в конце единицы показывал ?
думаю можно так
^C^C^P_.area;_Object;\^C(setq txt (strcat(rtos(getvar "AREA")2 2)" Единицы"))(princ "Укажите точку")(command "_text" pause "" "" txt)(princ)

Цитата:
Сообщение от asas Посмотреть сообщение
А вот так же проставитъ длину полилини можно?
и так, возможно
^C^C^P_.list;;\^C(setq txt (strcat(rtos(getvar "PERIMETER")2 2)" Единицы"))(graphscr)(princ "Укажите точку")(command "_text" pause "" "" txt)(princ)
koMon вне форума  
 
Непрочитано 02.06.2018, 09:11
#892
asas


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


Цитата:
Сообщение от koMon Посмотреть сообщение
думаю можно так
^C^C^P_.area;_Object;\^C(setq txt (strcat(rtos(getvar "AREA")2 2)" Единицы"))(princ "Укажите точку")(command "_text" pause "" "" txt)(princ)


и так, возможно
^C^C^P_.list;;\^C(setq txt (strcat(rtos(getvar "PERIMETER")2 2)" Единицы"))(graphscr)(princ "Укажите точку")(command "_text" pause "" "" txt)(princ)
Спасибо, а можно маштабный коэфициент, чтобы в метрах показывать?

На линию почему-то не проставляет ее длину
asas вне форума  
 
Непрочитано 03.06.2018, 15:06
#893
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,664


Цитата:
Сообщение от asas Посмотреть сообщение
Спасибо, а можно маштабный коэфициент, чтобы в метрах показывать?
площадь или длину?

Цитата:
Сообщение от asas Посмотреть сообщение
На линию почему-то не проставляет ее длину
Для ПОЛИЛИНИИ и др. примитивов, для которых команда List считает периметр! В остальных случаях последний посчитанный периметр.
^C^C^P_.list;_si;\^C(graphscr)(setq txt (strcat(rtos(getvar "PERIMETER")2 2)" Единицы"))(princ "Укажите точку")(command "_text" pause "" "" txt)(princ)
koMon вне форума  
 
Непрочитано 03.06.2018, 17:19
#894
asas


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


Цитата:
Сообщение от koMon Посмотреть сообщение
площадь или длину?
Спасибо, площадь получаетъся в квадратных милиметрах, хотелосъ бы в метрах, линии тоже желателъно в метрах, спасибо

Последний раз редактировалось asas, 03.06.2018 в 17:24.
asas вне форума  
 
Непрочитано 03.06.2018, 20:22
2 | #895
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,664


Цитата:
Сообщение от asas Посмотреть сообщение
Спасибо, площадь получаетъся в квадратных милиметрах, хотелосъ бы в метрах, линии тоже желателъно в метрах, спасибо
площадь
^C^C^P_.area;_Object;\^C(setq txt (strcat(rtos(*(getvar "AREA")1e-6)2 2)" кв.м"))(princ "Укажите точку")(command "_text" pause "" "" txt)(princ)
длина
^C^C^P_.list;_si;\^C(graphscr)(setq txt (strcat(rtos(*(getvar "PERIMETER")1e-3)2 2)" м"))(princ "Укажите точку")(command "_text" pause "" "" txt)(princ)
koMon вне форума  
 
Непрочитано 04.06.2018, 08:16
#896
Кулик Алексей aka kpblc
Moderator

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


Это в LT работать не будет - используются лисповые конструкции.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 04.06.2018, 22:40
#897
Rijik-pijik


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Это в LT работать не будет - используются лисповые конструкции.
Такая чудесная команда , а на рабте LT
Rijik-pijik вне форума  
 
Непрочитано 05.06.2018, 08:54
#898
asas


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


Не поиму почему на одном и том же чертеже показывает длину то в цм то мм, как понимаю что-то задано не так у меня, посоветуите что небутъ пожалуиста, какие предположение, сдпасибо
asas вне форума  
 
Непрочитано 07.11.2018, 15:00
#899
Alex_Shaton


 
Регистрация: 09.09.2017
Гомель
Сообщений: 19


Подскажите, пожалуйста, как макрокомандой можно изменить текстовый стиль и масштаб аннотаций, запустить лисп, а после завершения его работы вернуть текстовый стиль и масштаб аннотаций на установленные по умолчанию? Пробовал по-всякому, в командной строке либо ничего, либо - слишком много аргументов.
Alex_Shaton вне форума  
 
Непрочитано 07.11.2018, 15:07
#900
Кулик Алексей aka kpblc
Moderator

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


Запоминаешь значения системных переменных, устанавливаешь нужные, выполняешь лисп, восстанавливаешь исходные значения переменных. В чем вопрос-то?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.11.2018, 15:46
#901
Alex_Shaton


 
Регистрация: 09.09.2017
Гомель
Сообщений: 19


Кулик Алексей aka kpblc, вопрос в переключении текстового стиля. Ввожу (setvar"TEXSTYLE""493_P131"), в командной строке - Настройка переменной AutoCAD отвергнута: "TEXSTYLE" "493_P131". AutoCAD 2015.

----- добавлено через ~16 мин. -----
Прошу прощения, вопрос снят. Ошибся в названии переменной.

----- добавлено через ~1 ч. -----
Прописал так:
^C^C(setvar"CANNOSCALE""2:1");^C^C(setvar"TEXTSTYLE""493_P131");^C^C_TXTCNTR; ^C^C(setvar"TEXTSTYLE""492_Bm_431");^C^C(setvar"CANNOSCALE""2:1");
Поодиночке вроде все срабатывает, а вместе - не срабатывает лисп. Подскажите, пожалуйста, в чем загвоздка?
Alex_Shaton вне форума  
 
Непрочитано 11.11.2018, 20:46
#902
Кулик Алексей aka kpblc
Moderator

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


TXTCNTR, интересно - что это такое, откуда взято и что делает?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.11.2018, 21:07
#903
Alex_Shaton


 
Регистрация: 09.09.2017
Гомель
Сообщений: 19


Одна из команд лиспа Text_on_Line.fas, взято на форуме Геодезист.ru. Сначала рисуется замкнутый контур, затем команда запуска,пишешь текст, указываешь контур и текст размещается по центру контура.http://geodesist.ru/threads/gr-my-lisp-apps.70144/
Alex_Shaton вне форума  
 
Непрочитано 11.11.2018, 21:31
#904
Alex_Shaton


 
Регистрация: 09.09.2017
Гомель
Сообщений: 19


Вот и сам лисп
Вложения
Тип файла: rar Text_on_Line.rar (9.0 Кб, 34 просмотров)
Alex_Shaton вне форума  
 
Непрочитано 12.11.2018, 08:09
1 | #905
Кулик Алексей aka kpblc
Moderator

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


Это не lsp, а fas. Исходников нет, и что и когда там запрашивается - разбираться не хочу. Посмотри в книге В.Света, как в макросах обрабатываются запросы данных у пользователя.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 26.01.2019, 21:04
#906
off

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


*^C^C_select;\_torient;_Pr;;0;_move;_Pr;;@;установка поворота текста на заданное значение и перемещение (в данном случае - установка в ноль).
Использовал для оформления топографической съемки. При выполнении макроса есть один лишний клик - избавиться от него не удалось.
p.s. используется команда из ExpressTools.
off вне форума  
 
Непрочитано 26.02.2019, 18:30
#907
Vova

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


Есть кнопка с выпадающими из нее другими кнопками. Все мои самодельные кнопки расположены с левой стороны правого (из двух) монитора и всегда на прошлом компе раскрывались вправо, то есть на поле своего монитора. При переходе на новый комп кнопки стали вылетать влево, то есть на поле чужого (левого) монитора. Что неудобно. Кто-нибудь сталкивался с таким?
Есть еще одно обстоятельство. Левый монитор является главным по отношению к правому. Может быть кнопки стремяться к главному? Windows-10.
Vova вне форума  
 
Непрочитано 26.02.2019, 21:42
#908
Кулик Алексей aka kpblc
Moderator

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


ИМХО к макрокомандам это не имеет никакого отношения. Графическая область ACAD'а где находится? На главном?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 26.02.2019, 23:10
#909
engngr

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


Цитата:
Сообщение от Vova Посмотреть сообщение
Может быть
Поперетаскивать меню на разные борты - на левый, на правый, обратно - и посмотреть, что будет?
engngr вне форума  
 
Непрочитано 27.02.2019, 01:13
#910
Vova

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


То aka kpblc> На этих кнопках находятся макрокоманды. Поэтому в этой теме теперь как-бы к месту. Все остальные команды автокада, уже давно в рибонах. Автокады находятся на обеих экранах.
То engngr> Если перетащить кнопки на правый край, из них выдвигаются вложенные кнопки влево, то есть на поле своего экрана. Но я привык держать их на левой стороне...
Vova вне форума  
 
Непрочитано 11.04.2019, 11:21
#911
gumel


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


Ребят, прошу помощи. Нужен макрос, в котором для выбранных объектов обрабатывалась бы команда _massprop.
Среди выбранных объектов имеются солиды и регионы.
Нужно получить результат деления. Значения Volume (объем солидов) поделить на значение Area (площадь регионов).


Прикладываю тестовый пример. Должно получится 300.
Вложения
Тип файла: dwg
DWG 2004
test.dwg (138.0 Кб, 26 просмотров)

Последний раз редактировалось gumel, 11.04.2019 в 11:56.
gumel на форуме  
 
Непрочитано 07.07.2019, 06:23
#912
Наталья Катаева


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


Доброго всем дня! Пожалуйста, подскажите, как найти в Автокаде макрос команды, которой нет на кнопке или в меню? Интересует команда DIMLAYER, хочу попробовать на ее основе сделать аналогичную для выносок, но в списке команд Costomize Interface ее нет.
Наталья Катаева вне форума  
 
Непрочитано 07.07.2019, 11:09
#913
cadhlp by PG


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


Цитата:
Сообщение от Наталья Катаева Посмотреть сообщение
Доброго всем дня! Пожалуйста, подскажите, как найти в Автокаде макрос команды, которой нет на кнопке или в меню? Интересует команда DIMLAYER, хочу попробовать на ее основе сделать аналогичную для выносок, но в списке команд Costomize Interface ее нет.
Так ведь DIMLAYER вроде как системная переменная, а не команда, поэтому ее там инет
cadhlp by PG вне форума  
 
Непрочитано 07.07.2019, 14:30
#914
Наталья Катаева


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


А где найти код системной переменной?
Наталья Катаева вне форума  
 
Непрочитано 07.07.2019, 14:48
#915
skkkk


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


Хорошо бы сразу описать подробнее, что именно нужно...
skkkk вне форума  
 
Непрочитано 07.07.2019, 15:03
#916
engngr

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


Что такое
Цитата:
Сообщение от Наталья Катаева Посмотреть сообщение
код системной переменной
?
engngr вне форума  
 
Непрочитано 07.07.2019, 16:04
#917
Наталья Катаева


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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Хорошо бы сразу описать подробнее, что именно нужно...
Так вроде написала... Хочу сделать команду, которая задавала бы слой по умолчанию для выносок и мультивыносок, чтобы она работала также, как системная переменная DIMLAYER (так как почему-то на выноски та не действует). В макросах и лиспах я не бум-бум, потому решила, что проще всего будет найти макрос этой команды и поменять в нем что-нибудь, если пойму - что. Наверное, я слишком просто это себе представляла, но изучать программирование из-за одной удобной фишки как-то времени не хватает. Нашла такой вот макрос: *^C^C_mleader;\\Ваш текст;_change;_l;;_p;_la;Примечание;; он должен создавать выноску в нужном слое (точнее, переносить в него созданную), но там есть текст по умолчанию. Если его убрать, будет работать вот такая аброкадабра? *^C^C_mleader;\_change;_l;;_p;_la;; Боюсь даже пробовать, так как не знаю, как вернуть потом все назад, то есть чтобы другой переменной выноски снова создавались в текущем слое. Если это не очень сложно, можете подсказать, как такое сделать?
Наталья Катаева вне форума  
 
Непрочитано 07.07.2019, 17:17
1 | #918
AlexCondor

инженер
 
Регистрация: 03.08.2007
Сообщений: 1,325


Наталья Катаева, Может все-таки попробовать автоматический перенос, и там не только для выносок, из этой темы, или утилиту от Lee MaC
AlexCondor вне форума  
 
Непрочитано 08.07.2019, 12:00
#919
Наталья Катаева


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


Цитата:
Сообщение от AlexCondor Посмотреть сообщение
или утилиту от Lee MaC
Спасибо!
Попробовала эту утилиту, она работает, но как сделать, чтобы выноски переносились в мой слой, а не тот, который создается утилитой? Править в самом ее тексте? В пояснениях автора я мало что поняла.
Наталья Катаева вне форума  
 
Непрочитано 08.07.2019, 12:54
#920
AlexCondor

инженер
 
Регистрация: 03.08.2007
Сообщений: 1,325


Да , надо править. Если вы говорите об утилите от Lee Mac, то там есть настройка новых слоев:
Код:
[Выделить все]
 
("[DM]TEXT,TEXT"       "TEXT"           "Text Layer"                   2        "Continuous"           -3                 1                 nil         )
("DIM*,*LEADER"        "DIMENSIONS"     "Dimension Layer"              3        "Continuous"           -3                 1                 nil         )
("*VPORT*"             "DEFPOINTS"      ""                             7        "Continuous"           -3                 0                 nil         )
("XLINE"               "XLINE"          "Construction Lines"          12        "HIDDEN"                0                 0                 nil         )
Попробуйте откорректировать ее под себя.
AlexCondor вне форума  
 
Непрочитано 08.07.2019, 17:59
#921
Наталья Катаева


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


Спасибо еще раз! А если нужно оставить только действие с выносками и убрать все остальные? Просто стереть строчки 1, 3 и 4? Или нужно искать дальше относящиеся к ним тексты и их тоже стирать?
Наталья Катаева вне форума  
 
Непрочитано 09.07.2019, 09:39
1 | #922
AlexCondor

инженер
 
Регистрация: 03.08.2007
Сообщений: 1,325


Цитата:
Сообщение от Наталья Катаева Посмотреть сообщение
А если нужно оставить только действие с выносками и убрать все остальные?
Я думаю будет достаточно откорректировать только эти действия и оставить одну строку
Код:
[Выделить все]
 
(*LEADER"        "ВАШЕИМЯСЛОЯ"     "Dimension Layer"              3        "Continuous"           -3                 1                 nil         )
AlexCondor вне форума  
 
Непрочитано 09.07.2019, 15:49
#923
Vova

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


Цитата:
Сообщение от Наталья Катаева Посмотреть сообщение
Так вроде написала... Хочу сделать команду, которая задавала бы слой по умолчанию для выносок и .... В макросах и лиспах я не бум-бум, потому решила, что проще всего будет найти макрос этой команды и поменять в нем что-нибудь, если пойму - что. Наверное, я слишком просто это себе представляла, но изучать программирование из-за одной удобной фишки как-то времени не хватает. Нашла такой вот макрос: *^C^C_mleader;\\Ваш текст;_change;_l;;_p;_la;Примечание;; он должен создавать выноску в нужном слое (точнее, переносить в него созданную), но там есть текст по умолчанию. Если его убрать, будет работать вот такая аброкадабра? *^C^C_mleader;\_change;_l;;_p;_la;; Боюсь даже пробовать, так как не знаю, как вернуть потом все назад, то есть чтобы другой переменной выноски снова создавались в текущем слое. Если это не очень сложно, можете подсказать, как такое сделать?

Припоминаю, я писал статью на эту тему, и может даже так быть, приведенный в цитате макрос мой. (правда, млидеров тогда еще не было, но обычные конечно были). Но не могу найти на сайте раздела "статьи", или что-то в этом роде. Подскажите пож.
Vova вне форума  
 
Непрочитано 10.07.2019, 18:12
#924
Vova

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


Цитата:
Сообщение от Наталья Катаева Посмотреть сообщение
В макросах и лиспах я не бум-бум, потому решила, что проще всего будет найти макрос этой команды и поменять в нем что-нибудь, если пойму - что
Наталья, макрос который вы нашли, действительно оказался (изначально) мой, из этой статьи, опубликованной когда-то здесь https://dwg.ru/pub/7
Если вы ее (статью) освоите, не так страшно окажется не только подредактировать готовый макрос, но и создать свой.
Vova вне форума  
 
Непрочитано 12.07.2019, 07:23
#925
Наталья Катаева


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


Vova Большое спасибо за интересные и понятные статьи. Обязательно попробую разобраться.



Цитата:
Сообщение от AlexCondor Посмотреть сообщение
Я думаю будет достаточно откорректировать только эти действия и оставить одну строку
Ура, получилось!!! Спасибо огромное!
Наталья Катаева вне форума  
 
Непрочитано 19.02.2020, 13:15
#926
kolemba


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


Добрый день. Необходимо вставить в выноски с различными текстами в конце из буфера обмена текст одинаковый.
Какой символ необходимо использовать для клавиши <end> записывая команду? Так - ^C^C_textedit;_end;_paste - при выборе выноски только курсор в тексте появляется. Как правильно написать? Спасибо
kolemba вне форума  
 
Непрочитано 19.02.2020, 13:32
#927
skkkk


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


Боюсь, макросами тут не обойтись. Они-то посылают команды в командную строку, а при активном редакторе текста командная строка не воспринимает ничего.
skkkk вне форума  
 
Непрочитано 19.02.2020, 13:33
#928
kolemba


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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Боюсь, макросами тут не обойтись. Они-то посылают команды в командную строку, а при активном редакторе текста командная строка не воспринимает ничего.
Спасибо и на том)
kolemba вне форума  
 
Непрочитано 20.02.2020, 15:31
#929
skkkk


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


Цитата:
Сообщение от kolemba Посмотреть сообщение
вставить в выноски с различными текстами в конце из буфера обмена текст одинаковый
kolemba, поигрался в перерыве - получился на тему небольшой лисп несложный.
Offtop: ощущение возникло, будто словом обмолвился с богатырём русским
Код:
[Выделить все]
;;; Добавление текстового содержимого буфера обмена в конец Мтекста, выноски, мультивыноски (через пробел)
;;; Использована функция VVA mip:entsel
(vl-load-com)
(defun C:TEST ( / last_ent paste_str txt_ent)
	(setq last_ent (entlast))
	(vl-cmdf "_PASTECLIP" '(0 0 0))
	(if (not (eq last_ent (entlast)))
		(if (= (cdr (assoc 0 (entget (entlast)))) "MTEXT")
			(progn
				(setq paste_str (cdr (assoc 1 (entget (entlast)))))
				(entdel (entlast))
				(while (setq txt_ent (mip:entsel "\nВыберите текстовый объект для добавления к нему текста из буфера:" '("MTEXT" "LEADER" "MULTILEADER") nil))
					(vla-put-TextString 
						(vlax-ename->vla-object txt_ent)
						(strcat (vla-get-TextString (vlax-ename->vla-object txt_ent)) " " paste_str)
					)
				)
			)
			(princ "\nВ буфере обмена не текст")
		)
		(princ "\nБуфер обмена пуст")
	)
	(princ)
)
	
	(defun mip:entsel (promt filter entlist / key n newentlist ent_point promt)
	;;;Функция mip:entsel
	;;;Еденичный выбор объекта, замена функции entsel
	;;;Возвращает entity name выбранного примитива или nil, точку указания запоминает в переменной LASTPOINT
	;;;Параметры:
	;;;promt - предложение выбрать объект (string)
	;;;filter - фильтр объектов для выбора вида '("LINE" "LWPOLYLINE")
	;;;entlist - список примитивов которые не надо выбирать (либо список entity name, либо PICKSET)
	;;;
	;;;Примеры:
	;;;(mip:entsel "\nВыберите объекты" '("LINE" "LWPOLYLINE") nil)
	;;;(mip:entsel "\nВыберите объекты" nil nil)
	;;;(setq aa nil) (mip:entsel "\nВыберите объекты" '("LINE" "LWPOLYLINE") (while (setq a (car (entsel))) (setq aa (append aa (list a)))))
	;;;(mip:entsel "\nВыберите объекты" '("LINE" "LWPOLYLINE") (ssget))
	  (setq key T n 0 newentlist nil)
	  (if (eq (type entlist) 'PICKSET)
		(progn
			(while (setq a (ssname entlist n)) (setq newentlist (append newentlist (list a)) n (1+ n)))
			(setq entlist newentlist)
		);progn
	   );if
		(while key
			(if (or (setq ent_point (entsel promt)) (= (getvar "ERRNO") 7))
			(if (or (eq (type ent_point) 'LIST) (not ent_point))
			  (if ent_point
				(if (member (setq ent (car ent_point)) entlist)
				  (princ "\nПримитив уже выбран")
				  (if filter
					  (if (not (member (cdr (assoc 0 (entget ent))) filter))
					(progn (setq str "\nНеверный выбор, выберите: ")
					  (princ (substr (setq str (foreach n filter (setq str (strcat str n ", ")))) 1 (- (strlen str) 2)))
					);progn
					(setq key nil)
					  );if
					(setq key nil)
				);if
				);if
				(setq key T)
			  );if
				(setq key nil)
			);if
		  (setq key nil)
			);if
		 );while
	  (if (eq (type ent_point) 'LIST)
		(progn (setvar "LASTPOINT" (cadr ent_point)) ent)
		ent_point
	  );if
	);defun
	(princ "\nКоманда \"TEST\" загружена")
	(princ)

На всякий случай: Как использовать лисп, опубликованный на форуме
Миниатюры
Нажмите на изображение для увеличения
Название: 2020-02-20 at 15-17-08.gif
Просмотров: 77
Размер:	676.5 Кб
ID:	223337  

Последний раз редактировалось skkkk, 21.02.2020 в 16:42. Причина: (vl-load-com)
skkkk вне форума  
 
Непрочитано 21.02.2020, 14:19
#930
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,664


а не удобнее ли будет визуализировать сдержимое буфера обмена, вставив его, например, в диалог?
koMon вне форума  
 
Непрочитано 21.02.2020, 14:33
#931
skkkk


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


koMon, не знаю. ТЗ получилось весьма лаконичное и размытенькое - я как понял, так и сделал. Может, ты понял как-то иначе. Просто никак не возьму в толк: зачем диалог туда вплетать? Обычно, если человек хочет чего-то куда-то вставить, он предварительно это откуда-то копирует. Скопировал фрагмент текста откуда угодно, вызвал команду - и вставляй во всё подряд сколько влезет. А так еще дополнительные нажатия на закрытие диалога. Но что-то мне подсказывает, что фигню ты вряд ли посоветуешь.
Поэтому, хоть ни фига и не понял, но очень интересно.

----- добавлено через ~5 мин. -----
А вот то, что тексты сейчас захочется скопом выбирать - это уж наверняка
skkkk вне форума  
 
Непрочитано 21.02.2020, 16:27
#932
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,664


skkkk, а если скопировал в буфер не всё, например. накопировал всё это добро, а потом где-то оно вылезет...
koMon вне форума  
 
Непрочитано 21.02.2020, 16:32
#933
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 10,960


а за диалогом выбора пойдет поиск в скопированном, маски, шаблоны и пошло-поехало монструозное вместо функции с одним определенным функционалом)
Сергей812 вне форума  
 
Непрочитано 21.02.2020, 16:47
#934
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,664


так-то оно конечно и будет) но поскольку суть сводится с прилеплению к текстам выносок какого-то аппендикса, который каким-то образом окажется в буфере, но имхо я бы сделал так:
1. простейший диалог с редактируемой строкой и кнопкой выбора выносок
2. пастим в строку диалога буфер, проверяем чего там на пастили
3. выбираем выноски
4. лепим аппендикс
koMon вне форума  
 
Непрочитано 21.02.2020, 16:50
#935
skkkk


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


Offtop:
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
и пошло-поехало монструозное вместо функции с одним определенным функционалом
Offtop: koMonCAD


Цитата:
Сообщение от koMon Посмотреть сообщение
а если скопировал в буфер не всё, например. накопировал всё это добро, а потом где-то оно вылезет...
Предлагаю подождать фидбэка. Может, вообще уже человек выполнил работу и ему уже не нужно. А мы тут блин, разводим обсуждение, к тому же - оффтопим. Если будет потребность, можно продолжить, заодно и попросить тему отделить
skkkk вне форума  
 
Непрочитано 21.02.2020, 16:56
#936
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,664


вот ещё, можно из буфера сразу в диалог загнать строку, поплясав слегка

----- добавлено через ~3 мин. -----
Offtop:
Цитата:
Сообщение от skkkk Посмотреть сообщение
koMonCAD

Offtop: неа Autodeskkkk
koMon вне форума  
 
Непрочитано 06.04.2020, 06:29
#937
gumel


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


Добрый день! Возможно ли сделать переименование блока при клике по нему? Или это уже из области Лиспа?
В чертеже имеется добрая сотня блоков со своеобразными именами. Хотелось бы переименовать большинство. Rename работает но уж очень неудобно пользоваться.

Заранее благодарен.
gumel на форуме  
 
Непрочитано 06.04.2020, 10:59
#938
Alex.gomel


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


Цитата:
Сообщение от gumel Посмотреть сообщение
Rename работает но уж очень неудобно пользоваться.
А если так:
^C^P_rename;_b;(vla-get-effectivename (vlax-ename->vla-object (car(entsel))));
Alex.gomel вне форума  
 
Непрочитано 06.04.2020, 11:44
#939
gumel


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


Цитата:
Сообщение от Alex.gomel Посмотреть сообщение
А если так:
^C^P_rename;_b;(vla-get-effectivename (vlax-ename->vla-object (car(entsel))));
Спасибо!

немного поправил:

^C^P-rename;_b;(vla-get-effectivename (vlax-ename->vla-object (car(entsel))));

и заработало!
gumel на форуме  
 
Непрочитано 06.04.2020, 12:07
#940
Кулик Алексей aka kpblc
Moderator

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


gumel, забыл "_" перед -rename.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.04.2020, 12:11
#941
gumel


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
gumel, забыл "_" перед -rename.
Ну да, верно.
Без "_" только в инглиш версии работает.
gumel на форуме  
 
Автор темы   Непрочитано 06.04.2020, 14:28
#942
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,824
<phrase 1=


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
забыл "_" перед -rename.
тогда уж окончательно "_."
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 21.04.2020, 11:58
#943
Brain Murder

Инженер
 
Регистрация: 11.06.2010
Москва
Сообщений: 1,446


Коллеги, подскажите по макрокоманде. Можно ли записать в макрокоманду повторно ранее указанную вручную точку?
Код:
[Выделить все]
^C^C_AstM4CommDetCrHeightKote;\\\_-insert;lvl_sym;\;;;_.explode;_last;_.-purge;_all;;_n;
Чуть подробнее описал на картинке.
Миниатюры
Нажмите на изображение для увеличения
Название: 2020-04-21_11-54-16.png
Просмотров: 141
Размер:	11.3 Кб
ID:	225260  
__________________
YouTube Titan [email protected]
Brain Murder вне форума  
 
Непрочитано 21.04.2020, 13:48
#944
Кулик Алексей aka kpblc
Moderator

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


lastpoint?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 21.04.2020, 14:41
#945
Brain Murder

Инженер
 
Регистрация: 11.06.2010
Москва
Сообщений: 1,446


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
lastpoint?
Вот так?
Код:
[Выделить все]
^C^C_AstM4CommDetCrHeightKote;\\\_-insert;lvl_sym;_lastpoint;;;_.explode;_last;_.-purge;_all;;_n;
Почему то не канает.
Обрывается на _lastpoint и просит ввести точку или ключевое слово.
__________________
YouTube Titan [email protected]
Brain Murder вне форума  
 
Непрочитано 21.04.2020, 16:51
#946
Кулик Алексей aka kpblc
Moderator

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


Я просто с макросами совсем уже не дружу много лет. А если попробовать @?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 21.04.2020, 17:09
#947
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,664


_lastpoint -> (getvar 'lastpoint)
koMon вне форума  
 
Непрочитано 21.04.2020, 17:39
#948
Brain Murder

Инженер
 
Регистрация: 11.06.2010
Москва
Сообщений: 1,446


Цитата:
Сообщение от koMon Посмотреть сообщение
_lastpoint -> (getvar 'lastpoint)
Спасибо. Видимо это правильный ответ. Получилось вот так
Код:
[Выделить все]
^C^C_AstM4CommDetCrHeightKote;\\\_-insert;lvl_sym;(getvar 'lastpoint);;;;_.explode;_last;_.-purge;_all;;_n;
Но в моём случае увы не работает. Это ^C^C_AstM4CommDetCrHeightKote не родная команда ACAD и он не определяет ручное указание точки как указание точки. И вставляет в предыдущую точку указанную в голом ACAD.
__________________
YouTube Titan [email protected]
Brain Murder вне форума  
 
Непрочитано 21.04.2020, 19:00
#949
Кулик Алексей aka kpblc
Moderator

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


Brain Murder, все ж попробуй использовать @
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 21.04.2020, 23:12
#950
Brain Murder

Инженер
 
Регистрация: 11.06.2010
Москва
Сообщений: 1,446


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Brain Murder, все ж попробуй использовать @
Вроде по всякому пробовал. Куда @ то пришить ^C^C_AstM4CommDetCrHeightKote;\\\_-insert;lvl_sym;_lastpoint;;;_.explode;_last;_.-purge;_all;;_n;?
__________________
YouTube Titan [email protected]
Brain Murder вне форума  
 
Непрочитано 22.04.2020, 00:35
#951
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
^C^C_AstM4CommDetCrHeightKote;\\\_-insert;lvl_sym;@;;;_.explode;_last;_.-purge;_all;;_n;
Мне кажется, так.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 22.04.2020, 12:51
#952
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,664


Brain Murder, а каким образом AstM4CommDetCrHeightKote получает точку? может определить её предварительно и передать в AstM4CommDetCrHeightKote и далее?
koMon вне форума  
 
Непрочитано 01.09.2020, 10:11
#953
gumel


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


Есть ли возможность с помощью макроса поменять цвет фона?
Tools - Options - Display - Colors - а там уже: Black or White
gumel на форуме  
 
Непрочитано 01.09.2020, 13:22
#954
Кулик Алексей aka kpblc
Moderator

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


gumel, поиск игнорируем? https://dwg.ru/cse?q=%D0%BF%D0%BE%D0...BE%D0%BD%D0%B0
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 01.09.2020, 15:24
#955
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,985


Цитата:
Сообщение от gumel Посмотреть сообщение
Есть ли возможность с помощью макроса поменять цвет фона?
Tools - Options - Display - Colors - а там уже: Black or White
https://forum.dwg.ru/showthread.php?t=157306
Nike вне форума  
 
Непрочитано 11.02.2021, 09:47
#956
PsR


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


Раньше можно было сделать массив и после этого построить линии вдоль которой размножить объекты, в том числе и линию под углом к главным осям. Сейчас можно это сделать так: _.arrayclassic, потом нажать на кнопочку "указать угол поворота массива". Как это вписать в макрокоманду?
PsR вне форума  
 
Непрочитано 24.02.2021, 07:02
#957
KaHgbIK


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


Доброго времени суток уважаемые однофорумчане!
Подскажите, пожалуйста, как мне добиться следующего результата: необходимо вставить несколько одинаковых блоков, притом так, чтобы, в чертеже, они были расчленены.
Что написал я: ^C^C^_-вставить;ИМЯ_БЛОКА;\;;;
Данная команда позволяет мне вставить один нерасчлененнный блок
Чтобы зациклить, что логично, я добавил следующее: *^C^C^_-вставить;ИМЯ_БЛОКА;\;;;
И тут я наткнулся на проблему того, что не знаю команду чтобы можно было расчленить все вставленные мной блоки. Конечно можно привести эту команду к виду примерно такому: *^C^C^_-вставить;ИМЯ_БЛОКА;\;;;_расчленить;последний;;, после чего повторять команду, но это не то, потому что мне необходимо вставить много блоков, хотелось бы выполнять действие, как говориться одной кнопкой. Буду рад советам, заранее благодарю
KaHgbIK вне форума  
 
Непрочитано 24.02.2021, 09:31
#958
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,664


*^C^C._-insert;ИМЯ_БЛОКА;_e;_y;\;;;
koMon вне форума  
 
Непрочитано 24.02.2021, 09:41
#959
KaHgbIK


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


Цитата:
Сообщение от koMon Посмотреть сообщение
*^C^C._-insert;ИМЯ_БЛОКА;_e;_y;\;;;
К сожалению данный вариант не работает. Он делает возможным изменить масштаб и угол поворота, но не расчленяет вставленный блок

----- добавлено через ~18 мин. -----
Еще один момент который я недорассказал, из-за него как раз вся проблема. Для данной операции я сделал отдельную кнопку на панели, и когда вводишь команду вручную, то расчленение происходит, а через кнопку - нет
KaHgbIK вне форума  
 
Непрочитано 25.02.2021, 06:36
#960
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


Цитата:
Сообщение от KaHgbIK Посмотреть сообщение
Подскажите, пожалуйста, как мне добиться следующего результата: необходимо вставить несколько одинаковых блоков, притом так, чтобы, в чертеже, они были расчленены.
Почему бы просто не повесить этот блок на палитру и в свойствах на палитре указать "Расчленять"-"Да"?
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Непрочитано 25.02.2021, 11:26
#961
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,664


Цитата:
Сообщение от KaHgbIK Посмотреть сообщение
К сожалению данный вариант не работает.
обязан работать, потому что команда -insert имеет среди своих опций опцию расчленить. я также повесил его на кнопку и проверил работоспособность. поскольку макрос есть краткая форма записи командных действий, проверьте его на примере команды с консоли, вводя опции и проверяя работу команды. если команда позволит вставить в точке расчленённый блок, то и правильно записанный макрос сможет это сделать.

Последний раз редактировалось koMon, 25.02.2021 в 11:43.
koMon вне форума  
 
Непрочитано 22.04.2021, 09:39
#962
gumel


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


Спрошу тут. Есть ли способ выбрать все динамические блоки одним махом?
gumel на форуме  
 
Непрочитано 22.04.2021, 10:42
#963
Кулик Алексей aka kpblc
Moderator

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


Макросом? Вряд ли.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 22.04.2021, 12:46
#964
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,270
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от gumel Посмотреть сообщение
Спрошу тут. Есть ли способ выбрать все динамические блоки одним махом?
мож так?
Код:
[Выделить все]
^C^C(defun mfunc(/ selset) (if (setq selset (ssget "_X" '((0 . "insert")(102 . "*")))) (sssetfirst selset selset)));(mfunc);

но
Цитата:
Сообщение от Александр Ривилис
группа 102 может появится и от реакторов.
__________________
Мастерская СПДС

Последний раз редактировалось doctorraz, 22.04.2021 в 13:25. Причина: все 102 будет собирать
doctorraz вне форума  
 
Непрочитано 22.04.2021, 13:26
1 | #965
Кулик Алексей aka kpblc
Moderator

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


doctorraz, сугубо ИМХО - ориентироваться на наличие словарей так себе идея. Они могут быть и у обычных блоков, только аннотативных. Или вообще у динамических массивов, как мне кажется.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 22.04.2021, 13:49
#966
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,270
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
так себе идея
согласен, тем более проверил эту конструкцию в нано работает в АК нет(((

----- добавлено через ~8 мин. -----
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Или вообще у динамических массивов, как мне кажется.
да есть, но как мне кажется дин массив, это тоже дин блок... или нет?
у массива (102 . "{ACAD_REACTORS")
=============
все жэж так ищет
(ssget "_X" '((0 . "insert")(102 . "{ACAD_XDICTIONARY")))
только как для автокада оформить пары кодов, шоб лопал

----- добавлено через ~7 мин. -----
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Они могут быть и у обычных блоков, только аннотативных
да,
значит только перебор
__________________
Мастерская СПДС

Последний раз редактировалось doctorraz, 22.04.2021 в 14:00.
doctorraz вне форума  
 
Непрочитано 22.04.2021, 14:18
1 | #967
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от doctorraz Посмотреть сообщение
дин массив, это тоже дин блок
С точки зрения программиста - да. А вот с точки зрения пользователя - вопрос. Я как-то разгонял по этому вопросу: https://autolisp.ru/2021/02/11/primi...tivnyj-massiv/
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.01.2023, 10:42
#968
gumel


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


Иногда, в ситуации когда в чертеже много размерных линий, возникает путаница какой именно использовать стиль. Можно ли сделать такой макрос, чтобы текущим стилем размерных линий становился стиль по клику на интересующий размер?
gumel на форуме  
 
Непрочитано 10.01.2023, 10:52
1 | #969
Кулик Алексей aka kpblc
Moderator

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


Макросом - вряд ли.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.01.2023, 16:18
#970
Alex.gomel


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


ADDSELECTED
Alex.gomel вне форума  
 
Непрочитано 17.01.2023, 12:52 Помогите!
#971
Khvatov90

Инженер-проектировщик
 
Регистрация: 17.01.2023
Москва
Сообщений: 6


Дорого времени суток, уважаемые форумчане!

Я долго пытаюсь разобраться с Diesel в Autocad. Не могу найти мануалов для чайников, коим я и являюсь. Везде подразумевается уже какое-то понимание в написании кода. Если есть что-нибудь такое, поделитесь пожалуйста.
А сама потребность достаточно проста. Я пытаюсь привязать видимость блока к переменной "если" т.е, у меня есть блок ответвителя магистрального, есть два атрибута: затухание по верхнему и по нижнему диапозону. Мне надо чтобы при выборе видимости блока, значение затуханий менялось. пример: если "видимость1" то "3,8" , если "видимость2" то "4". Насколько это реально сделать в Diesel? может я не там ищу совсем? Заранее спасибо за потраченное время!


С Уважением к Вам и Вашему делу, Максим.
Khvatov90 вне форума  
 
Непрочитано 17.01.2023, 12:55
#972
AMDen

Инженер-проектировщик
 
Регистрация: 07.07.2016
Санкт-Петербург
Сообщений: 723


Цитата:
Сообщение от Khvatov90 Посмотреть сообщение
Мне надо чтобы при выборе видимости блока, значение затуханий менялось. пример: если "видимость1" то "3,8" , если "видимость2" то "4"
Достаточно использовать таблицу свойств блока. Без Diesel.
AMDen вне форума  
 
Непрочитано 17.01.2023, 12:59
#973
Khvatov90

Инженер-проектировщик
 
Регистрация: 17.01.2023
Москва
Сообщений: 6


Цитата:
Сообщение от AMDen Посмотреть сообщение
Достаточно использовать таблицу свойств блока. Без Diesel.
Все облазил! абсолютно. Простите за мою не осведомлённость. Если у Вас не займет много времени, сможете как для глупого человека объяснить? я нашел где располагается видимость в свойстве блока в поле. Но хоть убейте, не могу найти где задать условие. Если вы имеете ввиду просто в каждом виде добавлять новые атрибуты, то это мне не совсем подходит. У меня подсчеты в формуле в поле слетают тогда. Я привязываюсь полем помимо данных внутри блока, еще и к внешним данным.
Khvatov90 вне форума  
 
Непрочитано 17.01.2023, 13:02
#974
AMDen

Инженер-проектировщик
 
Регистрация: 07.07.2016
Санкт-Петербург
Сообщений: 723


Цитата:
Сообщение от Khvatov90 Посмотреть сообщение
Если вы имеете ввиду просто в каждом виде добавлять новые атрибуты, то это мне не совсем подходит.
Нет, не это.

Покажите ваши наработки с блоком.
И наверно не в этой теме надо тогда писать.
AMDen вне форума  
 
Непрочитано 25.01.2023, 07:59
#975
RNB

Проектирование мостов
 
Регистрация: 29.01.2014
Новосибирск
Сообщений: 433


Цитата:
Сообщение от Khvatov90 Посмотреть сообщение
Все облазил! абсолютно. Простите за мою не осведомлённость. Если у Вас не займет много времени, сможете как для глупого человека объяснить? я нашел где располагается видимость в свойстве блока в поле. Но хоть убейте, не могу найти где задать условие. Если вы имеете ввиду просто в каждом виде добавлять новые атрибуты, то это мне не совсем подходит. У меня подсчеты в формуле в поле слетают тогда. Я привязываюсь полем помимо данных внутри блока, еще и к внешним данным.
Вам просто нужен динамический блок. Рекомендую ютуб от @Pashasevkav. И не только по динблокам, но и в целом посмотреть. Откроете для себя много нового.
Если после просмотра появятся точечные вопросы, пишите в личку, чем смогу - помогу.
RNB вне форума  
 
Непрочитано 02.03.2023, 09:31
#976
Astartes

Котло- и реакторостроение
 
Регистрация: 25.02.2010
Барнаул
Сообщений: 807


Добрый день.
Возможно ли записать макросом следующую последовательность действий.
Командой _-pdfattach вставить ПДФ, путь C:\DO\ДО.pdf, указать номер страницы, в координаты 0,0, масштабный коэффициент 25.4, угол поворота - без поворота.
Написал свой вариант, но что-то не работает.
Если последовательно вводить с ком строки, то все норм. Но коде ниже прерывается на указании пути.

^C^C_-pdfattach;"C:\DO\ДО.pdf";\;\0,0;;

Попробовал разные варианты, но так и не добился результата.
__________________
AutoCad 2011 -> AutoCad 2013
Astartes вне форума  
 
Непрочитано 02.03.2023, 09:34
#977
engngr

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


Цитата:
Сообщение от Astartes Посмотреть сообщение
Попробовал разные варианты
Какие разные? обратный слеш? двойной?

Последний раз редактировалось engngr, 02.03.2023 в 09:39. Причина: слеееш
engngr вне форума  
 
Непрочитано 02.03.2023, 09:37
#978
Astartes

Котло- и реакторостроение
 
Регистрация: 25.02.2010
Барнаул
Сообщений: 807


Цитата:
Сообщение от engngr Посмотреть сообщение
Какие разные? обратный сшел? двойной?
Пока не получается пройти дальше указание пути.

Команда: _-pdfattach
Путь к файлу PDF, который требуется внедрить: "C:

Путь можно прописать как-то?
__________________
AutoCad 2011 -> AutoCad 2013
Astartes вне форума  
 
Непрочитано 02.03.2023, 09:39
#979
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от engngr Посмотреть сообщение
обратный сшел? двойной?
Намекали уже ))
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 02.03.2023, 09:44
#980
Astartes

Котло- и реакторостроение
 
Регистрация: 25.02.2010
Барнаул
Сообщений: 807


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Намекали уже ))
Да. Понял. В путях надо косую черту ставить /

Пинок помог.

^C^C_-pdfattach;C:/DO/ДО.pdf;\0,0;25.4;;
__________________
AutoCad 2011 -> AutoCad 2013
Astartes вне форума  
 
Непрочитано 06.03.2024, 12:20
#981
Ingpro


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


Это было где-то на форуме, но пусть будет и в этой теме...
Размер наклонной линии (удобно для простановки размеров раскосов ферм)
Код:
[Выделить все]
 ^C^C_UCS;_OBJ;\_DIMLINEAR;;@;\_UCS;_P;
Линия под углом
Код:
[Выделить все]
 ^C^C_Ortho;_On;_snapang;\_LINE;\_'snapbase 0,0;\_'snapang 0;

Последний раз редактировалось Ingpro, 06.03.2024 в 12:33.
Ingpro вне форума  
 
Непрочитано 06.03.2024, 12:30
1 | #982
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
^C^C(vl-cmdf "_.erase" (ssget "_X" '((0 . "DIMENSION"))) "");
Вроде так
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.03.2024, 13:42
1 | #983
Ingpro


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
^C^C(vl-cmdf "_.erase" (ssget "_X" '((0 . "DIMENSION"))) "");
Алексей, спасибо, это идеально срабатывает! В одно нажатие на палитре!
В этой теме было 2 макроса (удаление размеров с выбором), но не совсем то, что нужно:
Код:
[Выделить все]
 ^C^C(vl-cmdf "_.erase" (ssget (quote ((0 . "DIMENSION")))) "");
Код:
[Выделить все]
 ^C^C(sssetfirst nil (ssget '((0 . "DIMENSION"))));
А можно этот макрос
Код:
[Выделить все]
 ^C^C(vl-cmdf "_.erase" (ssget "_X" '((0 . "DIMENSION"))) "");
изобразить на лисп
Получилось так:
Код:
[Выделить все]
 (defun C:DimDel ()
(vl-cmdf "_.erase" (ssget "_X" '((0 . "DIMENSION"))) "")
(princ)
)
Даже можно "два в одном флаконе":
Код:
[Выделить все]
 ;; Удаляет все размеры без выбора
(defun C:DimDel ()
(vl-cmdf "_.erase" (ssget "_X" '((0 . "DIMENSION"))) "")
(princ)
)

;; Удаляет только размеры в выбранной области
(defun C:SelDimDel ()
(vl-cmdf "_.erase" (ssget (quote ((0 . "DIMENSION")))) "")
(princ)
)
Работает!

Последний раз редактировалось Ingpro, 06.03.2024 в 15:02.
Ingpro вне форума  
 
Непрочитано 11.03.2024, 10:39
#984
Ingpro


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


Команда: СОП
СОПРЯЖЕНИЕ
Выберите первый объект или [оТменить/полИлиния/раДиус/оБрезка/Несколько]:
Код:
[Выделить все]
 ^C^Cсопряжение \; \H; \Д;0;
Макрос должен выполнить Несколько сопряжений раДиусом = 0,
но сопряжения создаются только для двух пар линий...
1. Как изменить макрос, чтобы сопряжения выполнялись для нескольких (больше двух) пар линий?
2. Если до запуска этого макроса выполнить сопряжение радиусом 20 (например), то макрос делает сопряжение этим же радиусом 20, а не 0.
Как это можно подправить?
Спасибо...
Ingpro вне форума  
 
Непрочитано 11.03.2024, 11:23
#985
Кулик Алексей aka kpblc
Moderator

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


Так вроде эта команда работает только на пары элементов...
Код:
[Выделить все]
^C^C_.fillet;_radius;0.0;_m;
И тыркай хоть до посинения
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.03.2024, 11:38
#986
Ingpro


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
^C^C_.fillet;_radius;0.0;_m;
Чё-то не хочет:
Неизвестная команда "M".
А вот так получилось:
Код:
[Выделить все]
 ^C^C_.fillet;_radius;0.0;_multiple;_.fillet;

Последний раз редактировалось Ingpro, 11.03.2024 в 11:55.
Ingpro вне форума  
 
Непрочитано 11.03.2024, 11:57
#987
engngr

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


Была штука, которая зацикливает команду в макросе.
multiple в макросах не работает же?
engngr вне форума  
 
Непрочитано 11.03.2024, 12:03
#988
Ingpro


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


Цитата:
Сообщение от engngr Посмотреть сообщение
multiple в макросах не работает же?
В этом работает...
Код:
[Выделить все]
 ^C^C_.fillet;_radius;0.0;_multiple;_.fillet;
----- добавлено через ~3 мин. -----
Цитата:
Сообщение от engngr Посмотреть сообщение
Была штука, которая зацикливает команду в макросе
* что-ли?
Ingpro вне форума  
 
Непрочитано 11.03.2024, 14:49
#989
Ingpro


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


Пытаюсь загнать в макрос построение круга по двум точкам (2Т), с указанием расстояния (оно же диаметр) до второй точки.
Не получается указать расстояние до второй точки . ACad просит ввести расстояние (Вторая конечная точка диаметра круга)...
Код:
[Выделить все]
 ^C^CОрто;вкл;круг;2Т;Д;800;
Если ENG, вообще doesn't understand
Код:
[Выделить все]
 ^C^C_Ortho;_On;_CIRCLE;2Р;D;800;
Ingpro вне форума  
 
Автор темы   Непрочитано 11.03.2024, 15:16
#990
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,824
<phrase 1=


Цитата:
Сообщение от Ingpro Посмотреть сообщение
Не получается указать расстояние до второй точки
и не получится, откуда ACAD знает куда надо откладывать указанное расстояние.
PS кроме расстояния нужно еще и направление!
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 11.03.2024, 15:22
#991
Ingpro


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


Цитата:
Сообщение от zenon Посмотреть сообщение
PS кроме расстояния нужно еще и направление!
А можно указать направление "вниз"?
Ingpro вне форума  
 
Непрочитано 11.03.2024, 15:40
#992
engngr

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


Цитата:
Сообщение от Ingpro Посмотреть сообщение
А можно указать направление "вниз"?
Через угол, может.
<270;800

Или опять мини-лисп.
engngr вне форума  
 
Непрочитано 11.03.2024, 15:57
#993
Ingpro


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


Цитата:
Сообщение от engngr Посмотреть сообщение
Через угол, может.
<270;800
Код:
[Выделить все]
 ^C^CОрто;вкл;круг;2Т;Д;<270;800;
Неа, не хочет...
¿Или угол не в том месте?

Последний раз редактировалось Ingpro, 11.03.2024 в 16:14.
Ingpro вне форума  
 
Непрочитано 11.03.2024, 18:52
#994
engngr

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


^C^C_.circle _2p \@0,-400
engngr вне форума  
 
Непрочитано 11.03.2024, 19:08
#995
Ingpro


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


Цитата:
Сообщение от engngr Посмотреть сообщение
^C^C_.circle _2p \@0,-400
Здорово! Спасибо, engngr! Если бы ещё зациклить процесс, было бы супер...
engngr, поясните, пожалуйста, это: \@0, что означает
если -400 заменить на 400, круг строится вверх.
А если надо влево или вправо, нужно изменить \@0,???
Зациклить можно добавив *:
Цитата:
Сообщение от engngr Посмотреть сообщение
*^C^C_.circle _2p \@0,-400

Последний раз редактировалось Ingpro, 11.03.2024 в 20:02.
Ingpro вне форума  
 
Непрочитано 11.03.2024, 19:35
#996
Кулик Алексей aka kpblc
Moderator

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


В.Свет, "Язык макрокоманд". Есть в Download
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.03.2024, 19:54
#997
Ingpro


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


Цитата:
Сообщение от Ingpro Посмотреть сообщение
@0,-400
@ "Данный символ вставляется, если нужно ввести относительные координаты точки. Координаты вводят в последовательности X,Y,Z через запятую, например @10,20 — это смещение на 10 по оси X и на 20 по оси Y относительно предыдущей указанной точки (если Z=0, его не указывают). Тогда как абсолютные координаты, например: 10,20 отсчитываются от нуля системы координат".
Но как это работает в макросе ^C^C_.circle _2p \@0,-400 не могу понять...
Что нужно поставить вместо 0 в \@0,-400, чтобы круг построился влево?

Последний раз редактировалось Ingpro, 11.03.2024 в 20:01.
Ingpro вне форума  
 
Непрочитано 11.03.2024, 20:10
#998
engngr

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


Цитата:
Сообщение от Ingpro Посмотреть сообщение
@ "Данный символ вставляется, если нужно ввести относительные координаты точки. Координаты вводят в последовательности X,Y,Z через запятую, например @10,20 — это смещение на 10 по оси X и на 20 по оси Y относительно предыдущей указанной точки (если Z=0, его не указывают). Тогда как абсолютные координаты, например: 10,20 отсчитываются от нуля системы координат".
Но как это работает в макросе ^C^C_.circle _2p \@0,-400 не могу понять...
Что нужно поставить вместо 0 в \@0,-400, чтобы круг построился влево?
@-400,0
Это относительные (от последней точки) координаты x,y.
engngr вне форума  
 
Непрочитано 11.03.2024, 20:21
#999
Ingpro


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


Цитата:
Сообщение от engngr Посмотреть сообщение
@-400,0
Это относительные (от последней точки) координаты x,y.
engngr, спасибо большое, теперь понятно!
Код:
[Выделить все]
 *^C^C_.circle _2p \@-400,0
круг влево,
Код:
[Выделить все]
 *^C^C_.circle _2p \@400,0
круг вправо
Ingpro вне форума  
Ответ
Вернуться   Форум 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