Тема: acedEntSel и acedGetString
Как организовать, что бы у пользователя был вопрос : либо выбери объект либо напиши строку, а по пику или нажатию на кнопку ввод уже обрабатывать программой ответ?
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → ObjectARX → acedEntSel и acedGetString
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Как организовать, что бы у пользователя был вопрос : либо выбери объект либо напиши строку, а по пику или нажатию на кнопку ввод уже обрабатывать программой ответ?
Пример не совсем как тебе нужно, но за основу взять можно
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: // ... а тут нормальное действие. в данном случае указание точки. }
для команды 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;
}
а мне нужен либо введённый текст либо выделенный объект :(
> wolka
Читаем внимательно документацию на предмет возможности использования флага RSG_OTHER для функции acedEntSel
а как же снять цифры которые вводятся в строку ????
Используй acedGetPoint с RSG_OTHER, и если указана точка, то воспользуйся acedNEntSelP с pickflag == TRUE и ptres == полученной из acedGetPoint точкой для получения выбранного примитива. Ну а если задано ключевое слово, то обрабатывай его.
Передаю точку, но всё равно ничего не селектирует
if ( acedNEntSelP(NULL,ent4,pt,TRUE,NULL,NULL) != RTNORM ) acutPrintf ("\nerror") ;
пытаюсь точно попасть на объект, но результат ошибка
> wolka
А должно работать. Поставь нормальные значения последних двух последних параметров.
Можешь еще попробовать:
acedSSGet(NULL,pt,NULL,NULL,ss); // ss - это набор
Спасибо! в конце концов что-то получается.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → ObjectARX → acedEntSel и acedGetString
Форум работает на PunBB, при поддержке Informer Technologies, Inc