Тема: acedSSel acedGetXX

В цикле делаю выделение объектов или ввод точек , проблема в том что если в течении выполнения моей процедуры выбирается автокадовский Pan б то либо пан не работает , либо к моей процедуре не возвращается. Как сделать так что бы всё работало?
Спасибо!

Re: acedSSel acedGetXX

Код приведи. И пиши грамотнее. Например, такой функции acedSSel в ObjectARX нет и никогда не было.

Re: acedSSel acedGetXX

Извеняюсь
имелось в виду
acedSSGet и т.п.
код
  while (stat= acedEntSel("\n point from:",ent1,pt1)==RTNORM)
    {   
        acedInitGet(1,NULL);
        if (acdbGetObjectId(entId1,ent1)!=Acad::eOk){
                acutPrintf("\nerror selection");
                return;}
            if (acdbOpenAcDbEntity(pEnt1,entId1,AcDb::kForRead)!=Acad::eOk){
                acutPrintf("\nerror open");
                return;}
             if( acdbOpenAcDbObject(obj, entId1, AcDb::kForRead)!=Acad::eOk) {
                acutPrintf("\nerror selection");
                return;}
            // обработка
           
    }

Re: acedSSel acedGetXX

Это странное выражение:

while (stat= acedEntSel("\n point from:",ent1,pt1)==RTNORM)

Должно быть:

while ((stat= acedEntSel("\n point from:",ent1,pt1))==RTNORM)

В любом случае '_PAN и '_ZOOM работает. А без ' - будет непрозрачная команда и работать не будет.

Re: acedSSel acedGetXX

Исправила , но результат _Zoom колёсиком работает , а _Pan игнорирует .

Re: acedSSel acedGetXX

С апострофом? Возможно ты выбираешься за облать "виртуального" экрана. Попробуй _REGEN перед запуском своей команды.

Re: acedSSel acedGetXX

Жаль :( , но не получается. Во время выполнения своей команды мне нужно передвинуть экран , то есть я нажимаю на кнопку автокада PAN ( как при черчении полилинии , что-то в этом роде -потом выход из PAN  и продолжаю линию) , но в моём случае это не срабатывает.

Re: acedSSel acedGetXX

Во время работы своей программы с командной строки введи '_PAN и скажи что происходит, есть ли какие-то сообщения...

Re: acedSSel acedGetXX

*Invalid selection*
Expects a point or Last

Re: acedSSel acedGetXX

> wolka1
Апостроф перед именем команды поставила!!!? Если не ввести апостроф, то будет именно так как ты написала.

Re: acedSSel acedGetXX

И апостроф ставила . Всё равно такое сообщение.
Может перед циклом нужно поставить какую-то команду , которая реагирует на событие вызова pan и zoom ?

Re: acedSSel acedGetXX

> wolka1
Таких команд не существует. А какая версия AutoCAD?

Re: acedSSel acedGetXX

acad 2004 vs 2002

Re: acedSSel acedGetXX

> wolka1
И в обеих версиях не работает? Крайне странно. Попробуй такое. В командной строке AutoCAD введи:

(while (entsel))

и попробуй выполнить '_PAN. Если все будет нормально, то ищи ошибку у себя в программе.
P.S.: Проверил у себя в AutoCAD 2002 и AutoCAD 2004 - все в порядке.

Re: acedSSel acedGetXX

так всё работает. Но и в других примерах которые были предложены здесь на форуме не работает так же как и у меня. не переходит в пан и обратно

Re: acedSSel acedGetXX

> wolka1
Если "так все работает", то я вижу только два варианта:
1) Ошибка в программе (возможно использование не в том контексте) - без текста программы понять нельзя. Так что если нужна помощь - предоставь текст программы.
2) Глюк в установленном AutoCAD - возможно следует переустановить.
P.S.: Кстати попробуй еще вариант: '_.PAN (может быть команда PAN "подмененена")

Re: acedSSel acedGetXX

Что-то в программе. Испытала в чистом виде, без блока обработки выделения - всё работает. Будем искать. Спасибо

Re: acedSSel acedGetXX

Кажется нашла проблему. Если применяю в acrxEntryPoint классе аппликации ,то всё чудесно,но если это же применяю в созданном классе диалога то сбивается на *Invalid selection*
Expects a point or Last

Re: acedSSel acedGetXX

> wolka1
Проверь переключение ресурсов на AutoCAD перез вызовом acedEntSel и возврат их обратно после вызова.

Re: acedSSel acedGetXX

попробывала BeginEditorCommand() , но эффект тот же , а как переключать ресурсы правильно ?

Re: acedSSel acedGetXX

До вызова acedEntSel:

    HINSTANCE hAcad = acedGetAcadResourceInstance();
    HINSTANCE hCur  = AfxGetResourceHandle();
    AfxSetResourceHandle(hAcad);

После вызова acedEntSel:

    AfxSetResourceHandle(hCur);