Вопрос про усечение поверхности

Автор Akew, 28.10.15, 19:31:18

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

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

Akew

Доброго времени суток!

Растолкуйте, пожалуйста, как указать направление усечения в операции ITrimmedSurface для того, чтобы получить отверстие в вырезаемой поверхности.
Насколько я смог понять, за это отвечает свойство Sense, его нужно установить в VARIANT_FALSE.
Однако, мне не удалось добиться устойчивой работы этой операции. В процессе разбирательства выявил два простейших примера вырезающих контуров (каждый из трех точек), когда в одном случае отверстие образуется, а в другом - нет.

Спасибо!

#1
Сначала определяете, что будете усекать, затем секущий объект, затем направление, причём нужно его установить в False или True, т.к. по умолчанию там каша.

Akew

Спасибо, но хочу уточнить свой вопрос.

С установкой усекаемой поверхности и усекающих контуров - у меня проблем нет.
Проблема - только в указании направления усечения.
В подавляющем большинстве случаев меня устраивало значение параметра Sense "VARIANT_FALSE". Однако встретился тут один контур, который при установленном направлении в VARIANT_FALSE режет поверхность наружу. Т.е., не делал дырку в ней, а наоборот удалял ее всю, оставляя только тот кусочек поверхности, который образовывал этот контур.
Вот я и думаю, правильно ли я задаю направление сечения (тот ли параметр использую). В мануале об этом - очень невнятно сказано.


Akew

К сожалению, показать свой код я не могу, это непросто, - его нужно адаптировать.

Нашел направление решения своей проблемы: нужно учитывать направление секущих контуров при их указании в операции.
Оказывается, для операции сечения имеет значение, как ориентированы контур усекаемой поверхности и секущий контур.

Усекаемый контур у меня реализован как заплатка контура-предка. Так вот. Я предполагаю, что если контур-предок имеет одно направление с усекающим контуром (т.е., при возрастании индексов контуров происходит обход контуров по часовой стрелке или против), то параметр Sense должен быть установлен в TRUE. Если же контуры разнонаправленные, то - в FALSE.

Во всяком случае, когда я изменил направление усекающего контура на противоположное, поверхность стала усекаться, как надо.

Так что вопрос можно считать закрытым.
Спасибо всем, кто откликнулся.

Akew

К сожалению, при более внимательном рассмотрении, когда было учтено предположение, описанное в предыдущем посте, не произошло требуемого усечения поверхности. В связи с этим, вопрос остается открытым.

Akew

При еще более внимательном рассмотрении первое предположение все-таки подтвердилось.

На настоящий момент окончательное решение вопроса следующее:

Если материнский и дочерний контуры имеют одно направление (одновременно оба ориентированы по часовой стрелке или против), то для получения отверстия параметр Sense нужно установить в VARIANT_TRUE;
иначе, если контуры имеют разные направления, то для получения отверстия параметр Sense нужно установить в VARIANT_FALSE.