SAC: несколько целевых поверхностей для откоса

Как и обещала, делаю отдельную публикацию по мотивам вчерашнего вебинара о Subassembly Composer. Речь шла о том, как создать такой откос, которому в качестве целевой поверхности можно было бы указывать не одну, а несколько поверхностей. Обычно, если нужно запроектировать откос таким образом, приходится создавать итоговую поверхность, включающую в себя красную и черную землю, и вот эту суммарную дневную поверхность делать целевой. Это усложняет чертеж, добавляя связей, и вообще не всегда удобно. Поэтому я и хотела показать, как эту задачу можно было бы решить с помощью SAC. 




Как всегда, перед началом работы надо продумать концепцию будущего элемента, может даже нарисовать его на листочке, решить, какие переменные (они же параметры) будут использоваться, и так далее. Итак, мне нужно, там, где нет запроектированной поверхности, строить откос до рельефа, а там, где есть, выходить откосом на нее. Другими словами, необходимо проверять наличие этой самой проектной поверхности. Для этого будем использовать вспомогательную геометрию (auxiliary geometry) и функционал API.

Начнем с создания параметра Откос. На вкладке Input/Output Parameters в правой нижней части рабочей области щелкаем на строке Create parameter и вводим имя. Не смотря на то, что интерфейс не русифицирован, SAC вполне разбирает кириллицу, поэтому имена параметрам можно давать на русском. Выбираем тип переменной Slope и определяем значение по умолчанию, например, 1:1. В соседнем столбце Display Name можно записать другое имя - для отображения, оно будет отображаться в палитре свойств в Civil 3D. Естественно, эти имена могут не совпадать, одно - для математики, другое - для пользователя. Комментарий тоже будет не лишним, особенно если задумка какая-то сложная, и разобраться в ней, бросив беглый взгляд, будет трудновато.


На вкладке Target Parameters создаем целевые объекты. В коридоре, как помним, бывает три типа целей - смещение по ширине, отметка и поверхность. Вот поверхности и создаем. Две: одна проектная, скажем, Проект, вторая существующая СЗ. Чтобы поверхности не сливались в окне предпросмотра, их можно или вручную растащить или разнести, задав разное смещение в колонке Default Value.

Переходим к построениям. Сначала захватываем с панели инструментов обычную точку (Point) и бросаем ее на Flowchart, с этой точки все и будет начинаться. Теперь берем вспомогательную точку (Auxiliary point) и тоже отправляем в блок-схему. Вспомогательная геометрия не будет видна в коридоре, она нужна как раз для каких-то вычислений, проверки условий и тому подобных вещей. Новая точка А1 должна получиться в точке пересечения откоса и поверхности, соответственно, выбираем подходящий метод построения: в списке Point Geometry Type устанавливаем Slope to Surface. Дальше задается значение уклона, а у нас для этого есть заранее определенный параметр Откос. Так как я планирую использовать свою конструкцию для насыпей, то откос у меня должен быть всегда отрицательным. Чтобы добиться этого, я использую следующее выражение:
-(math.Abs(откос))  - модуль параметра Откос со знаком минус, т.е. всегда насыпь

В качестве подсказки по синтаксису математических функций используйте справку Microsoft.  
Выбираем в выпадающем списке проектную поверхность и можем проверить в окне предварительного просмотра, как это все работает. Перемещаем уровень поверхости Проект и видим, как изменяется длина звена. Теперь проделываем все то же самое еще раз с той лишь разницей, что в качестве целевой поверхности выбираем СЗ. Готово.

Остается трюк с выбором поверхности. Для этого есть специальный инструмет - Decision, это такой блок, в котором ставится условие для проверки, и в зависимости от результата построение идет дальше либо по одной ветке, либо по другой. Подробнее - на wikihelp.

В нашем случае мы будем проверять наличие проектной поверхности или, что то же самое, точки АP1. Для такой проверки воспользуемся справочником по API и подсмотрим там функцию IsValid. 

В области параметров вводим выражение АP1.IsValid и бросаем на флоучарт точку со звеном, теперь уже не вспомогательную, а самую что ни на есть настоящую. Способ построения нам уже известен.

Теперь вытаскиваем из блока Decision две ветви - True (Истина) и False (Ложь) и прицепляем к соответствующим элементам на блок-схеме. В случае, если проверка доступности точки АP1 (т.е. проектной поверхности) дает положительный ответ, то строим откос до поверхности Проект. Если отрицательный, то до существующего рельефа. 



Вот на этом и все, сборка элемента конструкции закончена. Остается сохранить проект как файл .pkt и импортировать его в Civil 3D


В следующий раз попробуем что-нибудь еще! 

Комментарии