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

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

Переопределение стандартной команды.

Ответ
Поиск в этой теме
Непрочитано 08.05.2013, 11:44 #1
Переопределение стандартной команды.
shartal
 
Регистрация: 12.08.2009
Сообщений: 464

Задумал я в стандартное сохранение добавить очистку.
Код:
[Выделить все]
 (Command "_undefine" "_qsave")
(defun c:qsave(/)
(command "_purge" "_all" "" "_n")
(command "._qsave" "~")
)
Возникла проблема, если файл уже был сохранен то все хорошо, если файл первый раз сохраняется, то предлагает не папку сохранения предыдущего файла, а в Programm Files программы. ~ в конце нужна, чтоб хотя бы окно выбора папки появилось.
Можно ли как то указать, папку сохранен. предыдущего файла, чтоб все происходило как при обычном сохранении?
Просмотров: 4333
 
Непрочитано 08.05.2013, 11:56
#2
bargool


 
Регистрация: 16.08.2006
Санкт-Петербург
Сообщений: 508
<phrase 1=


А почему бы просто не добавить очистку в макрос кнопки?
__________________
Алексей
bargool вне форума  
 
Непрочитано 08.05.2013, 11:59
#3
Кулик Алексей aka kpblc
Moderator

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


ИМХО лучше не переопределять команду, а использовать командные реакторы.
http://forum.dwg.ru/showthread.php?t=65265
http://forum.abok.ru/index.php?showt...dpost&p=155649
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.05.2013, 12:43
1 | #4
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


@shartal
А теперь представь, что твой пользователь создал новый чертёж, наполнил его слоями, стилями, определениями блоков и перед тем, как пойти на обед, на всякий случай сделал первое сохранение... Вернувшись с обеда, он с удивлением обнаружит, что всё то, что он сделал, почему-то вдруг исчезло, в виду того, что purge всё "вычистил". Я думаю, что он вряд ли тебе "спасибо" скажет. Команду purge лучше использовать в самом конце, перед тем, как конечный результат отдавать, но никак не при каждом сохранении...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 08.05.2013, 13:08
#5
Do$

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


Цитата:
Сообщение от hwd Посмотреть сообщение
А теперь представь, что твой пользователь создал новый чертёж, наполнил его слоями, стилями, определениями блоков
А и правильно, нефик самодеятельностью заниматься! На все это должен быть готовый шаблон!
По теме - можно вывести диалог типа "Йес-ноу" при сохранении: "Выполнить очистку?: Да/Нет".
Do$ вне форума  
 
Непрочитано 08.05.2013, 13:13
#6
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Do$ Посмотреть сообщение
А и правильно, нефик самодеятельностью заниматься! На все это должен быть готовый шаблон!
Скажи это пользователю, когда он в твоём шаблоне, облегчённо вздохнув, выполнит сохранение чертежа после того, как перед этим пару часов потратит на создание определения хитроумного динамического блока (если такой пример тебе более понятен). Закрыв\открыв чертёж, он будет несколько удивлён.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 08.05.2013, 14:15
#7
shartal


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


Я общий вариант с очисткой написал, в реальности удаляются только неспольз. блоки, незаг. прил и прочий мусор.
Макрос не пойдет- должно работать на нескольких машинах.
Реактор это круто, но функция (vla-purgeall) удаляет то что не надо, а то что надо не удаляет. Как это можно настроить?
shartal вне форума  
 
Непрочитано 08.05.2013, 17:16
#8
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от shartal Посмотреть сообщение
~ в конце нужна, чтоб хотя бы окно выбора папки появилось.
Попробуй добавить профиль в Опциях из затем
переопредели таким путём:
Код:
[Выделить все]
(command "_.undefine" "_.qsave")
(defun c:qsave(/)
(command "_purge" "_all" "" "_n")
(command "_.qsave" nil)
)
Потом проверь команду в этом профиле и
в первом который был до этого
Олег (jr.) вне форума  
 
Непрочитано 08.05.2013, 19:23
#9
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


проверяй значение переменной DWGTITLED
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 11.05.2013, 11:34
#10
Do$

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


Цитата:
Сообщение от hwd Посмотреть сообщение
Скажи это пользователю, когда он в твоём шаблоне, облегчённо вздохнув, выполнит сохранение чертежа после того, как перед этим пару часов потратит на создание определения хитроумного динамического блока (если такой пример тебе более понятен). Закрыв\открыв чертёж, он будет несколько удивлён.
Повезло тебе с пользователями Мои не то что создавать, использовать динблоки не умеют...
Когда я был еще пользователем и создавал динблоки разной хитроумности, то как минимум одна вставка блока в чертеже у меня была всегда. Создавал и редактировал блоки я в специальном файле-библиотеке блоков. Работать только с описаниями - это неудобно, как минимум.
А вот со слоями я "попадал" как-то. Делал шаблон, создал очень много полезных слоев с настройками типов линий-толщин-цветов (несколько десятков). Ну и по окончании этого, сработала привычка - пурж, аудит, сейв. Восстановить-то я смог потом, но испугаться успел
Поэтому, я хорошо понимаю о чем ты говоришь и полностью согласен с этим. Это нужно обязательно учитывать, но это не повод отказываться от автоматизации очистки чертежа. Т.к. замусоренный чертеж - это очень и очень большая проблема при совместной работе на больших чертежах. Один пурж проблемы не решает, конечно. А вот вместе с эксплоудпрокси и пуржа из комстроки может получается просто незаменимый инструмент!
Do$ вне форума  
 
Непрочитано 11.05.2013, 14:46
#11
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Do$ Посмотреть сообщение
Повезло тебе с пользователями Мои не то что создавать...
К сожалению, таких наберётся не более десятка из двухсот.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 11.05.2013, 19:09
#12
gomer

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


создавать элементы и настройки нужно по мере необходимости, команды переопределять не надо
gomer вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Переопределение стандартной команды.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение полей (fields) RomanM AutoCAD 20 24.08.2016 22:39
Как отключить повтор последней команды по Enter sibcat AutoCAD 11 01.05.2013 23:43
Варианты контекстного меню, вызываемого в процессе работы команды hwd Программирование 14 24.12.2012 11:02
запуск программы из AutoCADа kminas Программирование 19 15.06.2012 13:42
Прозрачные команды Vova AutoCAD 17 21.06.2006 05:33