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

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

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

Ответ
Поиск в этой теме
Непрочитано 11.12.2009, 14:42 #1
Продолжение макроса/лиспа после команды _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.
Просмотров: 10055
 
Непрочитано 11.12.2009, 14:57
#2
ытя


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


Вместо
Цитата:
Сообщение от Positron Посмотреть сообщение
^C^C_copybase;\\\;_qnew;
^C^C_pasteclip 0,0,0;
используй ^C^C_filedia;0;_wblock;...._open;...
ытя вне форума  
 
Автор темы   Непрочитано 11.12.2009, 15:04
#3
Positron


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


Цитата:
Сообщение от ытя Посмотреть сообщение
Вместо

используй -_wblock;...._open;...
непонял? а как юзать шоб 1-й кнопкой в макросе?
Суть в том штоб макрос в новом файле продолжал работать...

Последний раз редактировалось Positron, 11.12.2009 в 15:20. Причина: Суть в том штоб макрос в новом файле продолжал работать...
Positron вне форума  
 
Непрочитано 11.12.2009, 16:20
#4
ытя


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


Цитата:
Сообщение от Positron Посмотреть сообщение
Суть в том штоб макрос в новом файле продолжал работать...
По-моему, это невозможно. Я предложил способ для
Цитата:
Сообщение от Positron Посмотреть сообщение
соединить два макроса
^C^C_copybase;\\\;_qnew;
^C^C_pasteclip 0,0,0;
Например так:
^C^C_select;_filedia;0;_wblock;"имя_файла.dwg";;\_p;;_u;_open;"имя_файла.dwg";
Выбор объектов перед применением макроса.

Последний раз редактировалось ытя, 11.12.2009 в 16:33.
ытя вне форума  
 
Автор темы   Непрочитано 11.12.2009, 17:06
#5
Positron


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


Хорошо, возможно альтернативы?:
1. Есть другие варианты создания файлов,а не _qnew ? или переменные которые пригодились бы?
2. Возможно ли привязать к при создании нового файла выполнение какой-то команды, типа макроса, лиспа ,дизеля и т.п.?
3. А использования буфера обмена через Автокад как вариант? (сам не представляю как)
4. Возможно и не надо макрос продолжать в новом файле... может просто очистить этот файл сделать все манипуляции сохранить как другой файл и потом восстановить всё как было, так и получится новый файл...
(типа если гора не идёт к Магомеду то Магомед идёт к горе )
5. Другие идеи...
__________________________________________________________________

4 вариант на данный момент самый реальный как я понимаю.

Последний раз редактировалось Positron, 14.12.2009 в 13:02. Причина: Другие идеи...
Positron вне форума  
 
Непрочитано 14.12.2009, 13:03
#6
Profan


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


Да вручную сделать. Долго что ли?
Profan вне форума  
 
Непрочитано 14.12.2009, 13:03
#7
Nike

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


Цитата:
Сообщение от Positron Посмотреть сообщение
Люди добрые помогите советом, может у кого есть идеи по теме?
Щас тему за ап прихлопнут.
Расскажи, что конкретно нужно делать, в какой последовательности

Цитата:
Сообщение от Positron Посмотреть сообщение
2. Возможно ли привязать к при создании нового файла выполнение какой-то команды, типа макроса, лиспа ,дизеля и т.п.?
Это сделать можно
Nike вне форума  
 
Автор темы   Непрочитано 14.12.2009, 14:22
#8
Positron


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


Цитата:
Сообщение от Profan Посмотреть сообщение
Да вручную сделать. Долго что ли?
да.. если 50 программ за 1 сеанс... типа 50 чертежей создать и часто так...
Цитата:
Расскажи, что конкретно нужно делать, в какой последовательности
Вот что в работе:
в архиве кусок раб.задания (формат стандартный 2007-2009) и файлы в формате 2004 для программы посредника, и родные конвертированные в PGM (программа Xilog3)

Последовательность такая:
1. имея как в чертеже оформленный отрывок, выделить его
2. указать базовую точку или автоматически выщитать, например определив крайнюю точку до оси ох и оу прямоугольника, а он в в спец слое или иные методы для лиспа(нужно край заготовки вбить в координаты 0,0,0 для станка)
3. сохранить в формате 2004
4. названия файла выдернуть из описания (как выделить текст для лиспа шоб проще, цветом или курсив или предлагайте шо легче для лиспа, буду делать...)
или просто вписывать каждый файл в ручную ... недолго ето если мало программ

пример во вложении...
Вложения
Тип файла: rar Частично из работы.rar (306.7 Кб, 66 просмотров)

Последний раз редактировалось Positron, 14.12.2009 в 15:04.
Positron вне форума  
 
Непрочитано 14.12.2009, 14:45
#9
Profan


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


Припиши в конце файла acad.mnl строку
Код:
[Выделить все]
(command "_pasteclip" '(0 0 0))
и можешь вообще работать без новых кнопок и макросов.
Profan вне форума  
 
Автор темы   Непрочитано 14.12.2009, 15:23
#10
Positron


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


Цитата:
Сообщение от Nike Посмотреть сообщение
Цитата:




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


2. Возможно ли привязать к при создании нового файла выполнение какой-то команды, типа макроса, лиспа ,дизеля и т.п.?


Это сделать можно
токлько как выделить отделной командой/лиспом, шоб забить в 1 макрос?
тогда можно заложыть:
1. вставку в координаты 0,0,0
2. сохранить в формате 2004
3. названия файла выдернуть из описания (как выделить текст для лиспа шоб проще, цветом или курсив или предлагайте шо легче для лиспа, буду делать...)
или просто вписывать каждый файл в ручную ... недолго ето если мало программ

Цитата:
Припиши в конце файла acad.mnl строку
Код:
(command "_pasteclip" '(0 0 0))
и можешь вообще работать без новых кнопок и макросов.
странно... непашет (мож у меня руки кривые... 8} )

Последний раз редактировалось Positron, 14.12.2009 в 16:12. Причина: Кривые руки ли? или небыть? вот в чом вопрос... (Шекспир 8-])
Positron вне форума  
 
Непрочитано 14.12.2009, 17:54
#11
Krieger

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


А чем тебя wblock не устраивает?
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 14.12.2009, 18:24
#12
Profan


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


Для Positron
Суть вот в чем. Копируешь объекты с указанием базовой точки обычным способом, после этого создаешь новый чертеж и в него автоматически вставляется содержимое буфера обмена. Это содержимое вставится и в сохраненный ранее чертеж, если его открыть. Более того, в любой открываемый файл немедленно вставится любое содержимое буфера обмена, что при определенных обстоятельствах можно считать преимуществом. Записывать строку надо в файл acad.mnl, который находится в папке (например, для AutoCAD 2008):
C:\Documents and Settings\USER\Application Data\Autodesk\AutoCAD 2008\R17.1\rus\Support
Profan вне форума  
 
Автор темы   Непрочитано 14.12.2009, 19:33
#13
Positron


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


Цитата:
Сообщение от Profan Посмотреть сообщение
Для Positron
Суть вот в чем. Копируешь объекты с указанием базовой точки обычным способом, после этого создаешь новый чертеж и в него автоматически вставляется содержимое буфера обмена. Это содержимое вставится и в сохраненный ранее чертеж, если его открыть. Более того, в любой открываемый файл немедленно вставится любое содержимое буфера обмена, что при определенных обстоятельствах можно считать преимуществом. Записывать строку надо в файл acad.mnl, который находится в папке (например, для AutoCAD 2008):
C:\Documents and Settings\USER\Application Data\Autodesk\AutoCAD 2008\R17.1\rus\Support
найти получилось через поиск, 5 мин и готово ворос вот в чом- всавляю как надо, а оно непашет , я думал мож не там вставил...
менял местами(в конце в начале и так как тут), автокад перезапускал... нечо недаёт...

;;; ACAD.MNL
;;; Copyright (C) 1992 - 1997 by Autodesk, Inc.
;;;
;;; Permission to use, copy, modify, and distribute this software
;;; for any purpose and without fee is hereby granted, provided
;;; that the above copyright notice appears in all copies and
;;; that both that copyright notice and the limited warranty and
;;; restricted rights notice below appear in all supporting
;;; documentation.
;;;
;;; AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
;;; AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
;;; MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. AUTODESK, INC.
;;; DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
;;; UNINTERRUPTED OR ERROR FREE.
;;;
;;; Use, duplication, or disclosure by the U.S. Government is subject to
;;; restrictions set forth in FAR 52.227-19 (Commercial Computer
;;; Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
;;; (Rights in Technical Data and Computer Software), as applicable.
;;;
;;; Changes to this file will be migrated to future installations of
;;; AutoCAD during migration.
;;;
;;; This file is loaded automatically following the menu ACAD.



;; Silent load.
(command "_pasteclip" '(0 0 0))
(princ)

Последний раз редактировалось Positron, 14.12.2009 в 19:39.
Positron вне форума  
 
Непрочитано 15.12.2009, 06:54
#14
Krieger

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


Positron
Почему так неуважительно относишься к участникам форума?
А с mnl плохая идея, Profan по ходу прикалывается.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 15.12.2009, 08:18
#15
Profan


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


Все-таки, какое/никакое решение. У меня работает...
Profan вне форума  
 
Непрочитано 15.12.2009, 08:23
#16
Krieger

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


Так он с word так работать будет.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 15.12.2009, 12:34
#17
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,187


Positron, как вариант, запиши строку
Код:
[Выделить все]
(command "_pasteclip" '(0 0 0))
в отдельный файл с расширением lsp (например, auto_pasteclip.lsp) и поставь его в автозагрузку
kp+ вне форума  
 
Автор темы   Непрочитано 15.12.2009, 13:00
#18
Positron


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


Цитата:
Сообщение от Krieger Посмотреть сообщение
Positron
Почему так неуважительно относишься к участникам форума?
А с mnl плохая идея, Profan по ходу прикалывается.
А в чом проявилось неуважение?
Positron вне форума  
 
Непрочитано 15.12.2009, 13:08
#19
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,187


Positron, не начинай полемику о хороших манерах, а то тему забанят
лучше скажи, помог ли мой вариант?

Последний раз редактировалось kp+, 15.12.2009 в 13:16.
kp+ вне форума  
 
Непрочитано 15.12.2009, 13:10
#20
Krieger

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


Игнорируешь и не отвечаешь на вопросы. Так диалог не получится. ытя тебе готовый вариант выложил в самом начале, так вместо того чтобы проанализировать этот вариант тебе лиспы подавай. На мой вопрос ты не ответил. Я считаю это неуважением, относительно тех людей которые тебе действительно хотели помочь.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 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 вне форума  
 
Непрочитано 16.12.2009, 02:51
#41
Кулик Алексей aka kpblc
Moderator

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


Исправленный вариант кода:
Код:
[Выделить все]
(vl-load-com)

(defun kr_wblock (/ ss n key pr filename)
  (setq ss  (ssget)
        n   0
        key t
        ) ;_ end of setq
  (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")
             ) ;_ end of and
      (setq key      nil
            filename (strcat (vla-get-path (vla-get-activedocument (vlax-get-acad-object))) "\\" (cdr (assoc 1 pr)))
            ) ;_ end of setq
      ) ;_ end of if
    (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
Вроде так... Работу не проверял.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 16.12.2009, 05:46
#42
Krieger

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


Да, подчеркнуть забыл... На коленке делал...
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 16.12.2009, 08:14
#43
Profan


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


Как же это забыл? Не в России, что ли, живешь?
Profan вне форума  
 
Непрочитано 16.12.2009, 08:49
#44
Krieger

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


А то не знаешь...
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Автор темы   Непрочитано 16.12.2009, 11:08
#45
Positron


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Вроде так... Работу не проверял.
Пашет, только про базовую точку не спрашывет...(кидает в теже координаты)
А возможно сделать шобы само определяло точку по крайней точки выделенного, та шо к осям ох и оу ближе (исключая размеры и текст)?
Positron вне форума  
 
Непрочитано 16.12.2009, 11:12
#46
Krieger

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


надо подумать, пока некогда..., наверное можно
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 16.12.2009, 11:16
#47
zenon

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


Извините что отвлекаю, но на мой вопрос есть ответ?

Цитата:
Нужно выполнить команду после загрузки всех меню. Вариант с acad.mnl и автозагрузкой не срабатывает.
Дело в том, что команда не стандартная, а одной из навесок. Получается, что вызов команды происходит до загрузки требуемого меню.
в итоге
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 16.12.2009, 11:32
#48
Krieger

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


Сделай свое меню и загружай свой mnl. Он будет грузится последним. Когда уже все остальное будет определено.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 16.12.2009, 12:06
#49
zenon

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


Krieger, фокус не удался.
ps еще есть предложения
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 16.12.2009, 12:10
#50
Krieger

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


А что за навеска?
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 16.12.2009, 12:11
#51
Profan


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


В acad.lsp запихни S::STARTUP
Profan вне форума  
 
Непрочитано 16.12.2009, 12:13
#52
zenon

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


Цитата:
Сообщение от Krieger Посмотреть сообщение
А что за навеска?
Shucad


Цитата:
В acad.lsp запихни S::STARTUP
Profan не понял
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 16.12.2009, 12:24
#53
Nike

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


Цитата:
Сообщение от zenon Посмотреть сообщение
Krieger, фокус не удался. ps еще есть предложения
ну так ты своей менюхой довеску загружай, а потом ее запускай
Nike вне форума  
 
Непрочитано 16.12.2009, 12:34
#54
zenon

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


Nike, говорю же фокус не удался
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Автор темы   Непрочитано 21.12.2009, 12:29
#55
Positron


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


Кстате я использую не постояно эти 2 макроса:
*^C^C_copybase;\\\;_qnew;
^C^C_pasteclip 0,0,0;'_.zoom _e;_filedia;0;_saveas;2004;\\y;^C_filedia;1;_close ;

А востовном эти 3 :
*^C^C_copybase;\\\;_qnew;
^C^C_pasteclip 0,0,0;'_.zoom _e;_saveas;
^C^C'_.zoom _e;_.saveas;2004;;y;_close;

потому что надо указывать путь, он збивается...
шоб незбивался нашол неплохую прогу , советую другим - Direct Folders
у неё много ещо полезных есть функций...
И у производителя ещо много полезных прог
http://www.codesector.com/directfolders.php

_______________________________________________________________________________________________

для Kriegerа
Цитата:
надо подумать, пока некогда..., наверное можно
есть решение, его только впаять надо в сей лисп:
http://forum.dwg.ru/showthread.php?t=43089
в этой теме по сути ответ, только точку надо 1-дну, самую ближнюю выдернуть и без рисования прямоугольника...
_______________________________________________________________________________________________



Благодарен всем за помощь что уже оказана!


И отдельно Kriegerру благодарность за то что указал на мою ошибку в повиденни на форуме, это помогло мне вырасти над собой

(P.S. не думайте, я не подлизуюсь, просто во многих вопросах уже помогли за это и благодарю )

Последний раз редактировалось Positron, 21.12.2009 в 18:27. Причина: Благодарнось свою высказал, учасникам форума, от душы!
Positron вне форума  
 
Автор темы   Непрочитано 12.02.2010, 13:05
#56
Positron


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


Порошу помощи у програмистов.

Мне Krieger зделал лисп, он работает хорошо, только сохраняет в формате 2007, как зделать чтоб сохранение файла было в 2004 формате?

(возможно так? в лиспе:
перед началом лиспа поменять формат сохранения файла по умолчанию в 2004, а потом , в конце лиспа поменять обратно в 2007 формат по умолчанию)
(defun Kr_Wblock (/ ss n key pr filename)
(vl-load-com)
(setq ss (ssget) n 0 key t cmd (getvar "cmdecho"))
(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

(setq lstpt (apply 'append (mapcar '(lambda (obj / minpt maxpt)
(vla-getboundingbox obj 'minpt 'maxpt)
(mapcar 'vlax-safearray->list (list minpt maxpt))
);end of lambda
(mapcar 'vlax-ename->vla-object
(vl-remove-if '(lambda (a) (wcmatch (cdr (assoc 0 (entget a))) "MTEXT,DIMENSION,*TABLE")) (sstolist ss)))
))
);end of setq

(vl-file-delete (strcat filename ".dwg"))
(vla-StartUndoMark (vla-get-activedocument (vlax-get-acad-object)))
(setvar "cmdecho" 0)
(vl-cmdf "_ucs" "_m" (list (apply 'min (mapcar 'car lstpt)) (apply 'min (mapcar 'cadr lstpt))))
(vl-cmdf "_-wblock" filename "" "0,0,0" ss "")
(vl-cmdf "_oops")
(vl-cmdf "_ucs" "_p")
(setvar "cmdecho" cmd)
(vla-EndUndoMark (vla-get-activedocument (vlax-get-acad-object)))
);progn
(princ "\nНе найдена метка")
);if
(princ)
);defun

;---------------------------------------

(defun sstolist (ss / i lst); конвертирует набор в список
(setq i 0)
(if ss
(repeat (sslength ss)
(setq lst (append lst (list (ssname ss i))) i (1+ i))
));end of repeat & if
lst
);end of sstolist
Positron вне форума  
 
Автор темы   Непрочитано 04.03.2010, 15:58
#57
Positron


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


Аномалия в файле, неработает перемищение выделенных объектов в координату 0,0,0 командой Kr_Wblock
Возможно есть какие условия, а я их нарушил?
Если есть таковые...

Во вложенни файл.
Посмотрите пожалуста, кто знает.
Вложения
Тип файла: rar Не кидает в координату 0,0,0.rar (107.8 Кб, 33 просмотров)
Positron вне форума  
 
Непрочитано 04.03.2010, 17:42
#58
Krieger

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


Цитата:
Сообщение от Positron Посмотреть сообщение
Аномалия в файле, неработает перемищение выделенных объектов в координату 0,0,0 командой Kr_Wblock
Возможно есть какие условия, а я их нарушил?
Если есть таковые...

Во вложенни файл.
Посмотрите пожалуста, кто знает.
В исходном файле восстанови систему координат на мировую.
_ucs -> _world
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
Ответ
Вернуться   Форум 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