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

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

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

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

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

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

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

Как найти и распознать поверхность в 3D

Автор ZEvS031, 27.10.07, 18:37:05

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

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

ZEvS031

Пишу библиотеку для KV8+ на дельфи. Суть такая: открывается 3D модель, а дальше надо ее исследовать и распознать все поверхности и вывести результаты типа"поверхность вращения размеры такие-то"
Вопрос такой: как программно найти поверхности и их св-ва! Напишие хотя бы на примере простого цилиндра!
P.S: пишите доступно я программистКА!!!!

333

По очереди у Part-а нужно запрашивать EntityCollection c типом нужных поверхностей.

ZEvS031

Что значит по очереди, по какому принципу EntityCollection заполняется? Если не ошибаюсь по умолчанию он пустой. Есть ли для примера кусок исходника?

olden

Вот пример на VB6. Он неполный. Далее додумаешь.

Dim iPart As part
Set iPart = iDocument3D.GetPart(pTop_Part)
Dim entcoll As EntityCollection
Dim i As Integer
Dim j  As Integer
Dim x1 As Double, y1 As Double, z1 As Double
Dim x2 As Double, y2 As Double, z2 As Double
Set entcoll = iPart.EntityCollection(0)
i = entcoll.GetCount
Dim ent As entity
For i = 0 To i - 1
  Set ent = entcoll.GetByIndex(i)
  Dim feature As feature
  Set feature = ent.GetFeature
  Dim bodycoll As BodyCollection
  Set bodycoll = feature.BodyCollection
  Dim body As body
  j = bodycoll.GetCount
  For j = 0 To j - 1
    Set body = bodycoll.GetByIndex(j)
    body.GetGabarit x1, y1, z1, x2, y2, z2
' для более детального изучения поверхности используй функцию FaceCollection у Body
  Next j
Next i

333

Причем зесь тела
Вопрос был про коллекции

ksEntityCollection extussionSurfColl( part.EntityCollection( o3d_ExtrusionSurface ); // Поверхности выдавливания
ksEntityCollection EvolutionSurfColl( part.EntityCollection( o3d_EvolutionSurface ); // Кинематические поверхности
еще есть
Поверхность вращения o3d_RotatedSurface
Поверхность по сечениям o3d_LoftSurface
Импортирванная поверхность o3d_importedSurface

olden

Цитата: ZEvS031 от 27.10.07, 18:37:05
Вопрос такой: как программно найти поверхности и их св-ва!

Данный кусок примера сканирует все дерево на наличие поверхностей. Найдя, узнает ее габариты. Внимательно изучите пример. На VB6 можно трассируя просмотреть что вносится в ту или иную переменную. А далее действуешь по своей задумке.