Автокад не выполняются команды

Обновлено: 05.07.2024

получается что прерывание происходит после выполнения GetPoint?
как прервать действующую команду (_pline, _dtext и т.д.) прежде чем выполнить GetPoint?

Возможно помогут события. Старт выполнения команды. Может там ее можно и прервать.

получается что прерывание происходит после выполнения GetPoint?
как прервать действующую команду (_pline, _dtext и т.д.) прежде чем выполнить GetPoint?

Наверное до этого момента процесс акада занят выполнением этой команды, и только во время запросов к пользователю управление передается в редактор акада. Хотя это только мои размышления.

и именно по этому не срабатывает GetPoint
сразу вылетает как будто я нажал ESC

как прервать действующую команду (_pline, _dtext и т.д.) прежде чем выполнить GetPoint?

Может объяснишь зачем это вообще нужно? Ты прерываешь команду, которую сам и запустил?

да Александр вы правы, я запускаю команду _pline либо _dtext но пользователь может, не закончив команду вызвать какую либо из этих команд но уже с другими параметрами и я хочу оставить эту возможность пользователю

но вот проблема один из параметров задается через GetPoint :)

Ну для начала можно проанализировать результат Editor.GetPoint

вот такой пример

в результате
stPnt я пролетаю вообще как будто нажал ESC и ничего не указываю
stPnt2 я указываю как обычно все нормально

Проверь статус Editor.GetPoint

Не пойму а как это можно сделать?

аа кажется понял

Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor.GetPoint("[Укажите точку вставки]").Status

Дальше понятно? И кроме того, когда ты получаешь точку не проверяя статус - это мягко говоря не правильно. А если пользователь вместо указания точки нажмет ввод? И где ты видел чтобы запрос был в квадратных скобках? В квадратных скобках пишут ключевые слова, если их собираются обрабатывать. А у тебя на их обработку даже намека нет. :cry:

честно говоря непонятно :(

можно ли изменить статус?

почему то через отладчик он становится ОК если погонять туда сюда.

Статус изменить нельзя. Но ты можешь снова спросить точку, если не хочешь завершать свою функцию, или (что правильно) завершить ее если статус равен Cancel.

Но ты можешь снова спросить точку, если не хочешь завершать свою функцию, или (что правильно) завершить ее если статус равен Cancel.

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

Возможно, в этой версии ACAD-a у блоков появилось новое свойство (типа "защита от копирования")? Впрочем, возможно, такое свойство было и раньше, просто я не встречал его.

Если знаете, в чем тут дело - помогите, пожалуйста. Спасибо.

Последний раз редактировалось Кулик Алексей aka kpblc, 05.09.2014 в 09:38 . __________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

2 kpblc: к сожалению, ничто из предложенного не помогло.

Придется возвращаться к 2007-му АКАДу, сейчас нет времени разбираться.

Gamer777, а выложить пример с блоком, который не копируется?

программист, рыцарь ObjectARX

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

Александр Ривилис: Спасибо, скачал. Пробую обработать этой утилитой, хотя в этом файле вроде бы прокси-объектов у меня нет (я думал, что СПДС-примочка после установки оставляет во всех файлах какие-то стили линий, масштабы и т.п., которые и удаляет эта утилита).

Хм. Пишет, что не может загрузить ARX-файл. Для 2009го АСАДА какой модуль нужно загружать, ExplodeProxy2010x32.arx?

__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Александр Ривилис: Загрузилась утилита для 2007-го АКАДа.

Таки были какие-то прокси-объекты. Но какие.

Первая метка объекта: <1>, последняя метка объекта: <35124>
Всего найдено proxy-объектов: 12. Из них proxy-примитивов: 0.

Видимых прокси-объектов не было (обычно в Quick Select можно увидеть объекты типа Proxy). А какие могут быть невидимые прокси-объекты?

Короче, после удаления всех прокси из чертежа возможность копировать блоки появилась. Большое спасибо.

программист, рыцарь ObjectARX

Александр Ривилис: Загрузилась утилита для 2007-го АКАДа.

Таки были какие-то прокси-объекты. Но какие.

Первая метка объекта: <1>, последняя метка объекта: <35124>
Всего найдено proxy-объектов: 12. Из них proxy-примитивов: 0.

Видимых прокси-объектов не было (обычно в Quick Select можно увидеть объекты типа Proxy). А какие могут быть невидимые прокси-объекты?

Короче, после удаления всех прокси из чертежа возможность копировать блоки появилась. Большое спасибо.

Ну какие точно были я сказать не могу, но в двух словах есть прокси-примитивы ("видимые") и прокси-объекты (типа словарей, таблиц и т.д.), которые не имеют видимого представления. Так вот они не могут копироваться между чертежами, а если на них есть ссылка, то и то, что на них ссылается копироваться не может. Ну какие точно были я сказать не могу, но в двух словах есть прокси-примитивы ("видимые") и прокси-объекты (типа словарей, таблиц и т.д.), которые не имеют видимого представления. Так вот они не могут копироваться между чертежами, а если на них есть ссылка, то и то, что на них ссылается копироваться не может. Не могут копироваться, наверное, только в 2009м АКАДе. В 2007м я все прекрасно копировал и даже и не догадывался о существовании в чертеже каких-то прокси-объектов.
А можно сделать доп.функцию у этой ОЧЕНЬ ПОЛЕЗНОЙ ПРОГРАММКИ? Чтобы перед тем, как удалить все прокси-объекты, можно было получить удобоваримый список этих объектов.
Потому что меня лично беспокоит, что за объекты я там удаляю и не будут ли у меня потом противоположные проблемы, связанные с отсутствием этих самых объектов. Наилучший выход из положения в случае с СПДС - разбивать объекты СПДС средствами самой СПДС. В случае с вертикальными решениями AutoCAD - делать импорт чертежа в AutoCAD средствами этих вертикальных решений.

программист, рыцарь ObjectARX

Не могут копироваться, наверное, только в 2009м АКАДе. В 2007м я все прекрасно копировал и даже и не догадывался о существовании в чертеже каких-то прокси-объектов. А в 2007-ом возможно прокси-объектов и не было. Если был установлен СПДС или его энейблер.
А можно сделать доп.функцию у этой ОЧЕНЬ ПОЛЕЗНОЙ ПРОГРАММКИ? Чтобы перед тем, как удалить все прокси-объекты, можно было получить удобоваримый список этих объектов.
Потому что меня лично беспокоит, что за объекты я там удаляю и не будут ли у меня потом противоположные проблемы, связанные с отсутствием этих самых объектов. Я делал когда-то, только информация там такая, что только опытный программист может понять что это такое. А если этих прокси-объектов тысячи или десятки тысяч (бывает достаточно часто), то все равно не уследишь. А в 2007-ом возможно прокси-объектов и не было. Если был установлен СПДС или его энейблер.

Были. И в 2007-м, и даже в 2004-м мне встречались прокси-объекты. Если файл был создан в Mechanical, например, или в СПДС. Просто если соответствующий энейблер не установлен - при открытии файла предлагаются способы отображения этих прокси-объектов (как рамка или не отображать). Если энейблер установлен - при открытии файла ничего не выдается, но в чертеже можно пощупать эти объекты (если они видимые, конечно) и даже тупо взорвать их.

Я делал когда-то, только информация там такая, что только опытный программист может понять что это такое. А если этих прокси-объектов тысячи или десятки тысяч (бывает достаточно часто), то все равно не уследишь.

Ну, я это понимаю. Только если припрет - можно хоть будет разобраться (особенно если у объектов есть какой-нибудь признак типа (например, 1- таблица, 2 - стиль и т.п.)), а если не нужно - просто проигнорировать этот список. Ну, и выводить ведь его не обязательно на экран, а в файл листинга, и добавить вопросик во время отработки утилиты "Хотите сохранить список удаляемых объектов в файл?".

Ну ладно, это я уже вредничаю Нельзя, так нельзя. И так доволен, что хоть понял, в чем дело.

программист, рыцарь ObjectARX

Были. И в 2007-м, и даже в 2004-м мне встречались прокси-объекты. Если файл был создан в Mechanical, например, или в СПДС. Просто если соответствующий энейблер не установлен - при открытии файла предлагаются способы отображения этих прокси-объектов (как рамка или не отображать). Если энейблер установлен - при открытии файла ничего не выдается, но в чертеже можно пощупать эти объекты (если они видимые, конечно) и даже тупо взорвать их.

Ну, я это понимаю. Только если припрет - можно хоть будет разобраться (особенно если у объектов есть какой-нибудь признак типа (например, 1- таблица, 2 - стиль и т.п.)), а если не нужно - просто проигнорировать этот список. Ну, и выводить ведь его не обязательно на экран, а в файл листинга, и добавить вопросик во время отработки утилиты "Хотите сохранить список удаляемых объектов в файл?".

Ну ладно, это я уже вредничаю Нельзя, так нельзя. И так доволен, что хоть понял, в чем дело.

При наличии прокси-объектов копирование может быть успешным если нет ссылки на эти прокси-объекты. Если стоят все необъодимые энаблеры или сами приложения, то прокси-объектов нет. Признака что это за прокси-объект не существует. В лучшем случае имя родительского класса и его DXF группа 0.

Сегодня читал эту тему. Много думал. Потом поэкспериментировал, вот результаты:

1. Согласен, что при установленных энейблерах прокси-объектов нет. Потому что прокси-объект по определению объект-заместитель. Если стоят энейблеры - АКАД видит оригинальные объекты приложений.

2. Взял чертеж, в котором заведомо были объекты СПДС, открыл в 2009м АКАДе (энейблеры для него не были установлены) - вместо объектов СПДС отображаются прокси-объекты(квадратики). Выделил все, вместе с прокси, скопировал в буфер, открыл новый файл, вставил из буфера - копирование произошло успешно, но прокси-объекты не скопировались. Вывод: прокси-объекты не копируются, но копированию других объектов не мешают.

3. Загрузил модуль ExplodeProxy, команда EXPLODEALLPROXY ничего не взорвала (тут я удивился! Если прокси видны в чертеже, их нужно разорвать и оставить в чертеже как обычные объекты, а не удалить). Команда REMOVEALLPROXY аккуратно вычистила все прокси-объекты. Хотя в данном случае это было бесполезно, видимые объекты мне были нужны.

4. Взял чертеж, с которого началась эта тема, открыл в 2009м АКАДе. Некоторые (не все) блоки в чертеже не копируются. Причем они именно не копируются в буфер, потому что если после Ctrl-C жмем Ctrl-V, то вставляется то, что было помещено в буфер раньше! Видимых прокси нет. Команда EXPLODEALLPROXY ничего не взорвала, команда REMOVEALLPROXY аккуратно вычистила все прокси-объекты. После этого копирование всех объектов восстановилось. Но осадок остался - что это я там удалил-то?

5. Скачал [FONT=Verdana] Object Enabler для СПДС GraphiCS 5.0 под AutoCAD 2007-2009 [/FONT], установил. После этого ВСЕ проблемы исчезли: объекты СПДС в первом файле, естественно, видны, копируются, вставляются, взрываются обычной командой EXPLODE (они ж родные для СПДС). Во втором файле все по-прежнему, никакие новые объекты видны не стали, но копирование всех объектов через буфер восстановилось!

[FONT=Verdana]6. Чтобы совсем уж проверить все варианты, после установки энейблера вызвал команду EXPLODEALLPROXY - ничего не взорвалось ни в первом, ни во втором файлах. Команда REMOVEALLPROXY ничего не удалила ни в первом, ни во втором файле. Это еще раз подтверждает тезис, высказанный в посте 14: при установленном энейблере прокси-объектов в чертеже нет. Из этого вытекают:[/FONT]
[FONT=Verdana] Следствие 1: в моем исходном проблемном файле сидят какие-то приблуды именно от СПДС и проблемы с копированием были именно из-за них.[/FONT]
[FONT=Verdana] Следствие 2: поскольку я сам СПДС не пользуюсь, значит, эти приблуды могут мигрировать из чертежа в чертеж неявным образом (при копировании других объектов из чертежей, созданных с применением СПДС).[/FONT]

Автор:

Проблема

  • В других случаях при вводе команды, которая должна вызвать диалоговое окно, ничего не происходит. В результате файлы не могут быть открыты.
  • Примечание. Если новый файл никогда не сохранялся, его невозможно сохранить, если не отображается диалоговое окно и в командной строке отсутствует информация о пути/имени.

Причины:

  • Системной переменной FILEDIA присваивается значение 0.
  • Системной переменной CMDDIA присваивается значение 0.
  • Системной переменной ATTDIA присваивается значение 0.
  • Координаты XY диалогового окна таковы, что оно не может быть отображено ни на одном из текущих экранов.
  • Специально для AutoCAD Electrical. Это может произойти, если не завершена какая-либо задача, предусматривающая обновления в рамках всего проекта с открытием и закрытием чертежей.
    • Отмена действия посредством клавиши ESC в процессе отрисовки чертежа в проекте.
    • Отмена действия посредством клавиши ESC в процессе изменения нумерации листов с использованием команды AEPROJUPDATE.
    • Непредвиденная отмена выполнения пользовательского сценария при запуске для каждого чертежа с помощью утилит в рамках проекта.

    Решение

    Сброс переменной диалогового окна «Файл»

    • В командной строке AutoCAD введите FILEDIA и задайте значение 1.

    Примечание. При задании значения переменной необходимо, чтобы был запущен только один экземпляр AutoCAD.


    Сброс переменной диалогового окна «Команда»

    • В командной строке AutoCAD введите CMDDIA и задайте значение 1.

    Примечание. При задании значения переменной необходимо, чтобы был запущен только один экземпляр AutoCAD.


    Сброс переменной диалогового окна "Атрибут"

    • В командной строке AutoCAD введите ATTDIA и задайте значение 1.

    Примечание. При задании значения переменной необходимо, чтобы был запущен только один экземпляр AutoCAD.

    Для систем с несколькими мониторами

    1. В Windows вместо параметра «Расширить» используйте параметр «Дублировать».
    2. Убедитесь, что отсутствующие диалоговые окна открыты.
    3. Переместите их на основной монитор.
    4. Обратно задайте параметр «Расширить».


    Диалоговое окно находится за пределами экрана

    • Воспользуйтесь решениями для перемещения диалоговых окон обратно в вид (см. раздел В приложении Autodesk не отображаются диалоговые окна).


    Восстановление настроек AutoCAD по умолчанию


    Использование отслеживания системных переменных

    В некоторых программах сторонних разработчиков и процедурах LISP для переменной FILEDIA может быть задано нулевое значение. В окне "Отслеживание системных переменных" можно настроить список системных переменных, изменение которых приводит к появлению предупреждения. Добавьте в список FILEDIA (и CMDDIA). Настройка отслеживания системных переменных

    Конечно трудно представить ситуацию по описанию. Могу только предположить, что такая ситуация похожа на то что файл открыт, и в такой ситуации сохранение не возможно. При работе в сети к примеру, кто то открыл файл на сервере. Но могу и не угадать.

    Конечно трудно представить ситуацию по описанию.

    Почему трудно. просто сохраняешся,а автокад не даёт сохраниться выдавая

    "Для документа Е:\. .\.. выполняется команда.Нажмите ENTER для отмены или. Повторить".

    . Правда какое-никакое решения я уже нашёл. Нужно закрыть этот файл, и тогда он уже сам предложит сохранить документ и сохранит его нормально. А потом откываешь файл и работаешь дальше.

    Если мне не изменяет память, в автокаде есть команды _undefine и _redefine, которые позволяют "отключать" команды автокада и обратно "включать". Это позволяет, при необходимости, под именами стандартных команд автокада вызывать другие, назначенные вами. Т.е. вы вызываете команду сохранения, а по факту вызывается что-то другое. Возможно некий плагин выполнил эту операцию. Когда-то давно я пользовался этой возможностью в определённых целях.
    Но "отмененную" команду всё равно можно вызвать, поставив перед её именем точку т.е.попробуйте так: ._save

    П.С. не факт, что поможет в вашем случае - это всего лишь предположение.

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

    Бывало и у меня такое.Правда выходил из положения закрывая программу.Просто закрыть файл не получалось.

    Задолбало ещё в 2002.
    Думал, прекратится в новых версиях.
    Ничего подобного. В 2008 та же песня.

    Всегда спасался WBLOCKом.

    Не знаю причин появления.
    :(

    К сожалению не могу поддержать Вас. У меня такого не было. Исключение это когда не заметил что открыл файл, а он уже открыт с другого компьютера. Тогда не сохраняется, сохраняю под другим именем без проблем. :)

    Спасибо всем за ответы. А если кому интересно,то я на одной из веток форума услишал про команду _audit, и что вы думаете - при её выполнении происходит

    "Для документа Е:\. .\.. выполняется команда.Нажмите ENTER для отмены или. Повторить".

    Правда особой нужды в этой команде я не вижу,так что проблема это или нет,нужно ещё подумать.

    Читайте также: