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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Продолжение макроса/лиспа после команды _qnew

Продолжение макроса/лиспа после команды _qnew

Ответ
Поиск в этой теме
Непрочитано 11.12.2009, 14:42
Продолжение макроса/лиспа после команды _qnew
Positron
 
Регистрация: 25.06.2009
Сообщений: 147

Есть необходимость чтобы макрос продолжался после создания нового файла, а именно:
соединить два макроса
^C^C_copybase;\\\;_qnew;
^C^C_pasteclip 0,0,0;

Или 2-е место где нужно, это исполнение команды PL-CSE в новом файле потом назад в файл (для ускорения)

Последний раз редактировалось Positron, 11.12.2009 в 14:56.
Просмотров: 10059
 
Непрочитано 15.12.2009, 13:12
#21
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,013


Цитата:
Сообщение от Krieger Посмотреть сообщение
А с mnl плохая идея, Profan по ходу прикалывается.
Совершенно нормальная идея. Для этого mnl и существует, ятд.
Nike вне форума  
 
Автор темы   Непрочитано 15.12.2009, 13:50
#22
Positron


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


Цитата:
Сообщение от Positron Посмотреть сообщение
Суть в том штоб макрос в новом файле продолжал работать...
Это было в самом начале, ответ для ытя
Я ж непротив, но ответ на "продолжение макроса в новом созданом листе" поможет сзодавть класные макросы... да и нетолько макросы (это своеобразный опыт в том числе)
А отвечать неуспеваю, бо на роботе щас клЁпаю раб. задания, и переодически как минутка появляется прыгаю на форум

kp+ да! пашет превосходно
Positron вне форума  
 
Непрочитано 15.12.2009, 13:53
#23
Profan


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


А где же ты нашел файл acad.mnl?
Да просто макрос нереально продолжить в новом чертеже.
Profan вне форума  
 
Непрочитано 15.12.2009, 14:14
#24
Profan


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


В том-то и дело, что файл acad.mnl загружается автоматически, если загрузилось меню acad.cui. Так что должно быть без разницы, куда мы записали строку (command "_pasteclip" '(0 0 0)) - в файл acad.mnl или в отдельный файл, который поместили в автозагрузку.
Да сделай две кнопки - одну для копирования, другую для вставки.
Profan вне форума  
 
Автор темы   Непрочитано 15.12.2009, 14:17
#25
Positron


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


Цитата:
Сообщение от Profan Посмотреть сообщение
Да сделай две кнопки - одну для копирования, другую для вставки.
Так до поднятия темы так работал...
щас 2 кнопки:
*^C^C_copybase;\\\;_qnew;
^C^C_pasteclip 0,0,0;'_.zoom _e;_filedia;0;_saveas;2004;\\y;^C_filedia;1;_close;
Positron вне форума  
 
Непрочитано 15.12.2009, 14:30
#26
Profan


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


А зачем звездочка * в первом макросе? Ведь каждая последующая копия в буфере обмена затирает предыдущую.
Profan вне форума  
 
Автор темы   Непрочитано 15.12.2009, 14:45
#27
Positron


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


Цитата:
Сообщение от Profan Посмотреть сообщение
А зачем звездочка * в первом макросе? Ведь каждая последующая копия в буфере обмена затирает предыдущую.
вот почему...
Цитата:
Сообщение от Positron Посмотреть сообщение
Цитата:




Сообщение от Profan


Да вручную сделать. Долго что ли?


да.. если 50 программ за 1 сеанс... типа 50 чертежей создать и часто так...
на каждую прогу надо новый файл создавать...
Поетому та и тему поднял сею...
Positron вне форума  
 
Непрочитано 15.12.2009, 14:56
#28
Krieger

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


Цитата:
Сообщение от nike
Совершенно нормальная идея. Для этого mnl и существует, ятд.
Проблема в том что, код будет выполнятся всегда, даже когда не надо.
Цитата:
Сообщение от Positron Посмотреть сообщение
Это было в самом начале, ответ для ытя
Я ж непротив, но ответ на "продолжение макроса в новом созданом листе" поможет сзодавть класные макросы... да и нетолько макросы (это своеобразный опыт в том числе)
Для твоего случая wblock подходит как нильзя лучше. Ты можешь сначала в файле что-то сделать (что угодно) и результат сохранить в отдельный файл. Что такого нужно делать потом, что нельзя сделать сначала?
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 15.12.2009, 14:58
#29
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,013


Цитата:
Сообщение от Krieger Посмотреть сообщение
Проблема в том что, код будет выполнятся всегда, даже когда не надо.
ну, когда не надо (если надо не часто, конечно) - можно закомментировать или параметр в реестре завести и его устанавливать и проверять
Nike вне форума  
 
Непрочитано 15.12.2009, 15:03
#30
Profan


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


Сам-то я и предполагал, что Positron будет коментарить строку, но ведь он очень торопится. Да еще надо ведь не только создать новый чертеж, но и сохранить его с новым именем после вставки из буфера обмена.
Profan вне форума  
 
Непрочитано 15.12.2009, 15:18
#31
Кулик Алексей aka kpblc
Moderator

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


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


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



правда виноват, спешу непонятно куда просто щас какраз потоки програм делаю и испытутю варианты...

Глубоко извиняюсь шо не прокоментировал, тут я 100% виноват перед Kriegerом...
^C^C_select;_filedia;0;_wblock;"имя_файла.dwg";;\_ p;;_u;_open;"имя_файла.dwg";
тут я неразобрался как "имя_файла.dwg" задавать(автоматически)
вписывать каждый раз?... или
короче невехал я до конца, извини.
Positron вне форума  
 
Непрочитано 15.12.2009, 15:30
#33
zenon

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


Может немного в сторону.
Нужно выполнить команду после загрузки всех меню. Вариант с acad.mnl и автозагрузкой не срабатывает.
Дело в том, что команда не стандартная, а одной из навесок. Получается, что вызов команды происходит до загрузки требуемого меню.
в итоге
Цитата:
Unknown command "XCV". Press F1 for help.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon на форуме  
 
Автор темы   Непрочитано 15.12.2009, 16:07
#34
Positron


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



да тут писали
Цитата:
Сообщение от Nike Посмотреть сообщение
Щас тему за ап прихлопнут.
...
я на форуме недавно поетому могу токо предпологать...
И сделал вывод, с англиского ап это вверх, топик это тема, типа я пишу специально шоб все видили тему в начале...
признаюсь 1 раз написал в начале темы штоб тема не утанула в массе(бо некто даже неотвечал),
но после как написал Nike я почти понял шо так незя делать(ранше и не предпологал)..
щас вроде незамечал за собой такого, просто отвечаю и задаю вопросы...
Positron вне форума  
 
Непрочитано 15.12.2009, 17:49
#35
Krieger

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


Цитата:
тут я неразобрался как "имя_файла.dwg" задавать(автоматически)
вписывать каждый раз?... или
короче невехал я до конца, извин
Просто малость нужно отшлифовать напильником:
Код:
[Выделить все]
(defun Kr_Wblock (/ ss n key pr filename)
  (setq ss (ssget) n 0 key t)
  (while (and (ssname ss n) key (setq pr (entget (ssname ss n))))
    (if (and (eq (cdr (assoc 0 pr)) "TEXT")
         (eq (strcase (cdr (assoc 8 pr))) "NAME_FRAGMENT"))
      (setq key nil
        filename (strcat (vla-get-path (vla-get-activedocument (vlax-get-acad-object))) "\\" (cdr (assoc 1 pr))))
     )
    (setq n (1+ n))
    );while
  (if filename
    (progn
      (vl-file-delete (strcat filename ".dwg"))
      (setvar "filedia" 0)
      (vl-cmdf "-wblock" filename "" "0,0,0" ss "")
      (vl-cmdf "oops")
      (setvar "filedia" 1)
    );progn
    (princ "\nНе найдена метка")
   );if
  (princ)
);defun
В чертеже с каждым фрагментом должна быть метка с названием файла. Метка должна быть из однострочного текста и находится в слое "Name_fragment". После запуска кода выделяем фрагмент вместе с меткой и подтверждаем выбор. Все. Будет создан новый файл в той папке где находится рабочий, с названием метки и содержащий выделенный фрагмент.
Пример файла и полученных с помощью кода фрагментов:
Вложения
Тип файла: rar Новая папка.rar (180.3 Кб, 50 просмотров)
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Автор темы   Непрочитано 15.12.2009, 19:54
#36
Positron


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


Command: _Kr_Wblock
Unknown command "KR_WBLOCK". Press F1 for help.

...токо злюсь на себя чо я так медленно читаю книгу по праграмированию...
что б это могло быть? может какя переменная не так или другие варианты?
Positron вне форума  
 
Непрочитано 15.12.2009, 20:12
#37
Profan


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


Введи в командной строке
(Kr_Wblock)
именно в скобках.
Profan вне форума  
 
Автор темы   Непрочитано 15.12.2009, 23:07
#38
Positron


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


Цитата:
Сообщение от Profan Посмотреть сообщение
Введи в командной строке
(Kr_Wblock)
именно в скобках.
работает, а вчом загвоздка была?
токо выдаёт щас такое(дома руская версия, на работе англ. AutoCAD):

Команда: (Kr_Wblock)
Выберите объекты: Противоположный угол: найдено: 8
Выберите объекты:
; ошибка: no function definition: VLAX-GET-ACAD-OBJECT
Positron вне форума  
 
Непрочитано 15.12.2009, 23:14
#39
Кулик Алексей aka kpblc
Moderator

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


В начале лиспа поставить (vl-load-com). Именно так, со скобками.
P.S. Похоже, пора в FAQ вносить этот ответ
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 16.12.2009, 00:21
#40
Positron


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
В начале лиспа поставить (vl-load-com). Именно так, со скобками.
P.S. Похоже, пора в FAQ вносить этот ответ
теперь такое пишет:


Команда: (vl-load-com)(Kr_Wblock)
Выберите объекты: Противоположный угол: найдено: 26
Выберите объекты:
-wblock Неизвестная команда "-WBLOCK". Для вызова справки нажмите F1.
Команда: C:\Documents and Settings\ADMIN\Рабочий стол\1111\vos_1kz1 Неизвестная
команда "C:\DOCUMENTS AND SETTINGS\ADMIN\РАБОЧИЙ СТОЛ\1111\VOS_1KZ1". Для
вызова справки нажмите F1.
Команда: КОМСТР
Команда: 0,0,0 Неизвестная команда "0,0,0". Для вызова справки нажмите F1.
Команда: <набор объектов: 4>
КОМСТР
Команда: КОМСТР
Команда: oops Неизвестная команда "OOPS". Для вызова справки нажмите F1.
Positron вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Продолжение макроса/лиспа после команды _qnew



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запуск программы из AutoCADа kminas Программирование 19 15.06.2012 13:42
Проблема с текстами после програмной вставки TABLE Gogi Программирование 4 16.11.2007 10:02
Проблемма после команды MOVE *LUCKY* AutoCAD 6 12.07.2007 10:25
Прозрачные команды Vova AutoCAD 17 21.06.2006 05:33