Тема: acedEntSel и acedGetString

Как организовать, что бы у пользователя был вопрос : либо выбери объект либо напиши строку, а по пику или нажатию на кнопку ввод уже обрабатывать программой ответ?

Re: acedEntSel и acedGetString

Пример не совсем как тебе нужно, но за основу взять можно

ads_point pSrc;
ACHAR userstring[512];
wcsncpy(userstring,_T("\0"),512);
acedInitGet(RSG_NONULL | RSG_NOZERO | RSG_NONEG | RSG_OTHER, "U D"); // это для контекстного меню.
// если оно не надо, то убери [b] | RSG_OTHER, "U D"[/b]
switch(acedGetPoint(NULL,_T("какой-то текст: "),pSrc))
{
  case RTERROR:
  case RTCAN:
  case RTNONE:
    break;                        
  case RTKWORD:
    acedGetInput(userstring); // тут получаем то, что ввел пользователь
    if (userstring[0] == _T('U'))
    {
     // ... тут пользовательский ввод
    }
  case RTNORM:
    // ... а тут нормальное действие. в данном случае указание точки.
}

Re: acedEntSel и acedGetString

для команды acedEntSel никак не удаётся выйти в режим RTKWORD. если ввожу буквы выдаёт ошибку ввода, а цифры, то default
int ret;
ads_name ename;
ads_point pt;
acedInitGet(RSG_NONULL | RSG_NOZERO | RSG_NONEG | RSG_OTHER, " ");
//  acedInitGet(0 ,NULL);
ret = acedEntSel( "\nproba:", ename, pt );
acutPrintf("\n%d",ret);
switch( ret )
{
   
    case RTNORM :
        acutPrintf( "\nnorm." );
        break;
    case RTCAN :
        acutPrintf( "\nrtcam." );
        break;
    case RTKWORD :
        acutPrintf( "\nword." );
        break;
    case RTSTR  :
        acutPrintf( "\nword." );
        break;
    default :
        acutPrintf( "\ndefauult." );
        break;
}
а мне нужен либо введённый текст либо выделенный объект :(

Re: acedEntSel и acedGetString

> wolka
Читаем внимательно документацию на предмет возможности использования флага RSG_OTHER для функции acedEntSel

Re: acedEntSel и acedGetString

а как же снять цифры которые вводятся в строку ????

Re: acedEntSel и acedGetString

Используй acedGetPoint с RSG_OTHER, и если указана точка, то воспользуйся acedNEntSelP с pickflag == TRUE и ptres == полученной из acedGetPoint точкой для получения выбранного примитива. Ну а если задано ключевое слово, то обрабатывай его.

Re: acedEntSel и acedGetString

Передаю точку, но всё равно ничего не селектирует
if ( acedNEntSelP(NULL,ent4,pt,TRUE,NULL,NULL) != RTNORM )   acutPrintf ("\nerror") ;
пытаюсь точно попасть на объект, но результат ошибка

Re: acedEntSel и acedGetString

> wolka
А должно работать. Поставь нормальные значения последних двух последних параметров.

Re: acedEntSel и acedGetString

Можешь еще попробовать:

acedSSGet(NULL,pt,NULL,NULL,ss); // ss - это набор

Re: acedEntSel и acedGetString

Спасибо! в конце концов что-то получается.