• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Выделение(подсветка) "тела" в процессе

Автор andykl, 26.12.22, 17:45:03

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

andykl

В качестве примера того что требуется получить показываю на скринах:


Необходимо выделить тело, использую для этого IChooseManager. Объект или объекты какого типа надо скормить методу Choose? Как отфильтровать то что находится под курсором мыши для "тела"?

Vi2

Вот есть часть кода приложения
virtual BOOL WINAPI filterProc(IEntity* entity)
{
if (entity == NULL)
return TRUE; // пусть разбирается selectProc
...

virtual BOOL WINAPI selectProc(IEntity* entity, IRequestInfo* info)
{
if (entity == NULL)
{
IUnknownPtr obj(::ksGetCallBackObject(), NOADDREF);
IFeaturePtr feature(obj); // также или IPart, или IBody

if (feature == NULL)
return FALSE;

IEntityCollectionPtr ec(feature->EntityCollection(o3d_face), NOADDREF);
for (long i = 0, imax = ec ? ec->GetCount() : 0; i < imax; i++)
{
IEntityPtr face(ec->GetByIndex(i), NOADDREF);
IChooseManager.Choose(face);
}
return TRUE;
}
else
...
Возможно, можно скормить IChooseManager и само feature как IFeature, как и потребовать IPart или IBody, но я не пробовал - нам всё одно нужны грани.

filterProc отвечает за перебор объектов, нужных процессу, selectProc отвечает за выбор и подсветку.

PS
У IEntity есть метод BodyCollection(), который возвращает коллекцию тел, куда это энтити входит. Т.е. в filterProc приходит IEntity, у которого есть не нулевая коллекция тел, которую можно скормить selectProc, которая в свою очередь выделит все тела. Тоже вариант.
+ Благодарностей: 1