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

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

Нужно подправить макрос (разрыв линии с заменой)

Закрытая тема
Поиск в этой теме
Непрочитано 12.07.2007, 21:24 #1
Нужно подправить макрос (разрыв линии с заменой)
dextron3
 
проектировшик
 
СССР
Регистрация: 01.01.2007
Сообщений: 5,149

Разрывает линию между двумя точками и чертит там отрезок в текущем слое:

Код:
[Выделить все]
^C^C(setq A (ssget));_single;\(setq pt1 (getpoint));\(setq pt2 (getpoint pt1));\_break;!A;!pt1;!pt2;_line;!pt1;!pt2;;
Нашел баг:

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

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

Что в даном макросе не работает
__________________
инженер проектировшик с опттом программа авто гад образование высшие
Просмотров: 6759
 
Непрочитано 12.07.2007, 21:43
#2
Profan


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


Возможны 2 варианта.
1. Настроить правую кнопку мыши на отображение контекстного меню.
2. Написать программу на AutoLisp c применением определения функции в виде (defun C:Имя_команды...).
Profan вне форума  
 
Автор темы   Непрочитано 12.07.2007, 21:59
#3
dextron3

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


Цитата:
Сообщение от Profan
Возможны 2 варианта.
..).
а в макросе нельзя пару букв дописать?

ну чтобы макрос был зацыклен и выход из него осуществлялся посредством нажатие любимой кнопки ESC
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 12.07.2007, 22:12
#4
Profan


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


По Enter или при стандартной настройке правой кнопки мыши (повторение последней команды без контекстного меню) AutoCAD "вспоминает" только последнюю команду макроса.
Profan вне форума  
 
Непрочитано 12.07.2007, 22:21
#5
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


Код:
[Выделить все]
*^C^C(setq A (ssget));_single;\(setq pt1 (getpoint));\(setq pt2 (getpoint pt1));\_break;!A;!pt1;!pt2;_line;!pt1;!pt2;;
подправил
Sleekka вне форума  
 
Автор темы   Непрочитано 12.07.2007, 22:22
#6
dextron3

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


А можно этот макрос в лисп загнать?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Автор темы   Непрочитано 12.07.2007, 22:25
#7
dextron3

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


Цитата:
Сообщение от Sleekka
Код:
[Выделить все]
*^C^C(setq A (ssget));_single;\(setq pt1 (getpoint));\(setq pt2 (getpoint pt1));\_break;!A;!pt1;!pt2;_line;!pt1;!pt2;;
подправил
тоже самое только звездочку впереди поставил
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 12.07.2007, 23:08
#8
Кулик Алексей aka kpblc
Moderator

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


> dextron3 : оффтоп сплошняком, прошу без обид.
Слушай, а тебе не надоело на каждую свою необходимость напрягать других? Это VVA такой добрый, но он, похоже, остался один такой, а с него его работу никто не снимал.
Замены ProjectStudio ты вряд ли получишь.
Вот ты пишешь, "то же самое, только звездочку впереди поставил". Ну так разберись, что значит эта звездочка. Заодно и остальное изучишь.
Ведь посмотри - тебе ж все время чего-то "требуется". Лисп на то, лисп на се... Не, я понимаю, что некоторые вещи лучше делать лиспом, но ИМХО ты слишком вошел во вкус.
P.S. Еще раз говорю - это сугубо мое личное мнение, если что - мой ПМ открыт.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.07.2007, 23:12
#9
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


сорри за оффтоп но топ у меня не получился. Крыс, просто ты не такой добрый как Perezzz, помнишь butiflet был на форуме. мне тут надо было одну темку найти поделу, дак ниодного сообщения от butifleta я найти не смог, и его акаунта тожа. 8)
Sleekka вне форума  
 
Непрочитано 13.07.2007, 05:16
#10
Vova

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


Если команду с макросом вложить в Tool pallete, то по правой кнопке будет повтор всего макроса
Vova вне форума  
 
Непрочитано 13.07.2007, 07:11
#11
Krieger

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


В Tool pallete запихай код и там же выставь слой в котором будет чертится отрезок. И тогда необязательно чтоб слой был текущий.
Krieger вне форума  
 
Автор темы   Непрочитано 13.07.2007, 07:31
#12
dextron3

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


Цитата:
Сообщение от Кулик Алексей aka kpblc
> dextron3 : оффтоп сплошняком, прошу без обид.
Слушай, а тебе не надоело на каждую свою необходимость напрягать других? Это VVA такой добрый, но он, похоже, остался один такой, а с него его работу никто не снимал.
Замены ProjectStudio ты вряд ли получишь.
Вот ты пишешь, "то же самое, только звездочку впереди поставил". Ну так разберись, что значит эта звездочка. Заодно и остальное изучишь.
Ведь посмотри - тебе ж все время чего-то "требуется". Лисп на то, лисп на се... Не, я понимаю, что некоторые вещи лучше делать лиспом, но ИМХО ты слишком вошел во вкус.
P.S. Еще раз говорю - это сугубо мое личное мнение, если что - мой ПМ открыт.
Интересно а для чего тогда форум вообще, если тут считают что задовать вопросы не прилично?

Если есть добрый человек то он же не только мне пишет, это всем нужно.
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Автор темы   Непрочитано 13.07.2007, 07:40
#13
dextron3

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


Цитата:
Сообщение от Krieger
В Tool pallete запихай код и там же выставь слой в котором будет чертится отрезок. И тогда необязательно чтоб слой был текущий.
Tool pallete грузит автокад
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 13.07.2007, 07:45
#14
shnn

Инженер
 
Регистрация: 18.02.2005
Самара
Сообщений: 747


Поддерживаю модератора. dextron3 Вы просите готовые решения Ваших проблем, а вовсе не задаете вопросы. Вы почему-то не задаете вопросы "как сделать?" Вы пишите "сделайте, напишите на Lisp, исправьте". Один два раза это не сложно, но вы за 2 дня создали пяток тем с просьбой что либо Вам сделать, а это уже напрягает.
shnn вне форума  
 
Непрочитано 13.07.2007, 08:17
#15
Krieger

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


Цитата:
Сообщение от dextron3
Tool pallete грузит автокад
:shock:
Krieger вне форума  
 
Непрочитано 13.07.2007, 08:28
#16
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от dextron3
<...>Интересно а для чего тогда форум вообще, если тут считают что задовать вопросы не прилично?
Ох-ох-ох... А ты не боишься напороться на примерно следующее (полный текст можно посмотреть на http://my.opera.com/kpblc/blog/show.dml/245772):
Цитата:
Задавая вопрос, предоставляйте максимум информации, относящейся к теме. Покажите, что Вы нашли по теме, что - нет. Признание, что Вы, возможно, искали не то или не так, не страшно. Страшно показать, что Вы вообще ничего не искали. После 2-3 попыток получить все "на блюдечке с голубой каемочкой" Вас станут игнорировать.
Я в свое время испугался такому положению дел (кроме того, я четко понимал, что рано или поздно мне понадобится что-то поменять, а у автора исходного кода просто может не оказаться времени), отчего и начал изучать lisp. Ну ты мужик умный, до остального сам додумаешься
Цитата:
Сообщение от dextron3
Если есть добрый человек то он же не только мне пишет, это всем нужно.
Пишет на самом деле он тебе, у других - другие (как правило) задачи и условия, в которых эти задачи надо решать.
---
Добавлено:
Цитата:
Сообщение от dextron3
Tool pallete грузит автокад
"Бездоказательно, дорогой профессор, бездоказательно" (с) "Шерлок Холмс"
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.07.2007, 09:00
#17
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


Цитата:
Интересно а для чего тогда форум вообще, если тут считают что задовать вопросы не прилично?

Если есть добрый человек то он же не только мне пишет, это всем нужно.
бреееееед, это нужно только тебе!!!
например у меня арматура вообще не раскладывается line только дин блоки, тем более задачи которые ты ставишь - вообще не нужны по причине того что не надо охотится на муху с гранатометом, все что ты просишь чертится ручками, автоматизация нужна для другого.
Sleekka вне форума  
 
Автор темы   Непрочитано 13.07.2007, 09:09
#18
dextron3

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


Да, а темы сколько стоит проект или как готовить пельмени наверное здесь самые ходовые.

Не могу понять почему когда допустим человек заходит в тему, вопрос сложный и он не знает на него ответа но все равно комментарий пишет, и еще с такой недоброжелательностью, ну не читай ты тогда, тут могут в теме участвовать только заинтересованные люди, и зачем нам 3 копейки

непонимаю...
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 13.07.2007, 09:12
#19
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


[sm2200]
Sleekka вне форума  
 
Непрочитано 13.07.2007, 09:14
#20
Геннадий aka PG

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


В сборнике "cadhlp" давно есть программка переноса части линии на другой слой (слой выбирается из текущих) при аттачил.
[ATTACH]1184303675.zip[/ATTACH]
__________________
С уважением,
Геннадий aka PG
Геннадий aka PG вне форума  
 
Непрочитано 13.07.2007, 09:24
#21
Profan


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


dextron3, Алексей Кулик правильно говорит, полный пакет программ, способный заменить Project Studio, ты здесь не получишь. Хотя я тебя понимю. Подобные вопросы и проблемы занимали меня лет 8 назад, когда я еще работал в ОАПР и достаточно много программировал. Но конструкторы не сумели толково изложить свои пожелания и дело заглохло. Потом заглох я сам. Мне кажется, что ты вполне представляешь, что тебе нужно и достаточно четко формулируешь задачи. Лучший выход из положения - самому изучить AutoLisp и тогда ты сможешь сам создавать нужные программы. А уж какое ты получишь при этом удовлетворение - и описать трудно.
Profan вне форума  
 
Автор темы   Непрочитано 13.07.2007, 09:39
#22
dextron3

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


Геннадий aka PG
СПАСИБО РЕАЛЬНАЯ ПОМОЩЬ!!!
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 13.07.2007, 09:43
#23
Геннадий aka PG

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


Цитата:
Сообщение от dextron3
Геннадий aka PG
СПАСИБО РЕАЛЬНАЯ ПОМОЩЬ!!!
Спасибо очень много!
Посмотри весь сборник http://cadhlp.kulichki.com, там много полезного, правда уклон машиностроительный.
__________________
С уважением,
Геннадий aka PG
Геннадий aka PG вне форума  
 
Автор темы   Непрочитано 13.07.2007, 10:31
#24
dextron3

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


Нашел баги в посте 20 в лиспе:

1) Выделение для переноса исключительно точечное, если промахиваешься попасть в линию команда завершается (нельзя ли подкорректировать и сделать прямоугольное выделение)
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 13.07.2007, 11:21
#25
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,834
<phrase 1=


Цитата:
Сообщение от dextron3
Нашел баги в посте 20 в лиспе:

1) Выделение для переноса исключительно точечное, если промахиваешься попасть в линию команда завершается (нельзя ли подкорректировать и сделать прямоугольное выделение)
:shock: Это не баг, так задумано/сделано!
Вам дали полную халяву, Вы сказали спасибо. Здесь можно остановиться.
Хотите лучше:
1. заказывайте/покупайте за деньги
2. последуйте совету Profan'a, см.п.21 и крЫс, см.п.16
PS. Если Вас не устраивает это, наберитесь терпения и ждите.
М.б. кто-то, ради собственного удовольствия (только ради возможности еще раз его получить ), подправит Вам этот текст.
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Непрочитано 13.07.2007, 11:23
#26
Profan


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


Программный аналог макроса из сообщения 1.
Код:
[Выделить все]
(defun C:BR_LINE ( / osm obj ent pt1 pt2)
(setq osm (getvar "OSMODE"))
(setvar "OSMODE" 512)
(setq obj (entsel "\n Укажите первую точку на объекте (Enter-Отказ): "))
(if obj
    (progn
    (setq pt1 (nth 1 obj) ent (nth 0 obj))
    (initget 7)
    (setq pt2 (getpoint pt1 "\n Укажите вторую точку: "))
    (command "_break" ent pt1 pt2)
    (command "_line" pt1 pt2 "")
    )
    (princ "\n Объект не выбран.")
)
(setvar "OSMODE" osm)
(princ)
)
Profan вне форума  
 
Автор темы   Непрочитано 13.07.2007, 15:43
#27
dextron3

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


Цитата:
Сообщение от Profan
Программный аналог макроса из сообщения 1.
Код:
[Выделить все]
(defun C:BR_LINE ( / osm obj ent pt1 pt2)
(setq osm (getvar "OSMODE"))
(setvar "OSMODE" 512)
(setq obj (entsel "\n Укажите первую точку на объекте (Enter-Отказ): "))
(if obj
    (progn
    (setq pt1 (nth 1 obj) ent (nth 0 obj))
    (initget 7)
    (setq pt2 (getpoint pt1 "\n Укажите вторую точку: "))
    (command "_break" ent pt1 pt2)
    (command "_line" pt1 pt2 "")
    )
    (princ "\n Объект не выбран.")
)
(setvar "OSMODE" osm)
(princ)
)
Нашел 2 бага:

1) Сбрасывается привязка после выполнения команды
2) Первую точку путем выделения невозможно установить (т.е. получается тыкаешь наугад)
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 13.07.2007, 20:11
#28
Krieger

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


>dextron3
Насколько я понял, это мой макрос, где-то я его выкладывал. Он у меня весит на палетке уже, наверно года 2... Ну ни каких проблем... Зачем усложнять простые вещи? Ведь возможно что, и СПДС-графикс бы все любили, если б его разработчики не били пушкой по воробьям.
Krieger вне форума  
 
Автор темы   Непрочитано 15.07.2007, 07:51
#29
dextron3

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


Для поректировщиков ПГС этот макрос просто не заменим, поэтому хотел чтобы его заменили лиспом чтобы была возможность повторять через правую кнопку
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 15.07.2007, 20:16
#30
Profan


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


Для dextron3.
Ну, вот полный аналог макроса, причем с циклом:
Код:
[Выделить все]
(defun C:BR_LINE ( / obj ent pt1 pt2)
(setq obj T) 
(while obj
(setq obj (entsel "\n Выберите объект (Enter-Отказ): ")) 
(if obj 
    (progn 
    (setq ent (nth 0 obj))
    (initget 7) 
    (setq pt1 (getpoint "\n Укажите первую точку: ")) 
    (initget 7) 
    (setq pt2 (getpoint pt1 "\n Укажите вторую точку: ")) 
    (command "_break" ent pt1 pt2) 
    (command "_line" pt1 pt2 "") 
    ) 
    (princ "\n Объект не выбран.") 
)
)
(princ) 
)
Привязки должны выбираться во время работы команды. Команда повторно вызывается при нажатии на Enter, пробел или правую кнопку мыши.
А насчкт багов - это слишком сильно сказано для такой примитивной программы. Как задумано и как записано - так и работает.
Profan вне форума  
 
Автор темы   Непрочитано 15.07.2007, 21:01
#31
dextron3

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


Profan спасибо
Однозначно в коллекцию золотых лиспов
[sm166]
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
Закрытая тема
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Нужно подправить макрос (разрыв линии с заменой)