Обновление и расчет параметров в динамических блоках |
Как известно, для VetCAD++ можно создавать свои динамические блоки. При этом расчет параметров (их значения хранятся в атрибутах блока и используются для формирования спецификации), таких как длина элемента и их количество, можно возложить как на сам AutoCAD, так и на VetCAD++. В первом случае используются поля (fields) AutoCAD. В каждом из способов есть как свои преимущества, так и недостатки. В случае использования полей AutoCAD пользователь случайно или по незнанию может повредить формулу расчета. В случае же расчета с помощью VetCAD++ такой проблемы нет, но этот способ работает только при наличии VetCAD++. В этой статье будет описано, как VetCAD++ работает с динамическими блоками при их обновлении и как обновляются атрибуты в блоках. При редактировании пользователем любой инстанции блока VetCAD++ проверяет: 1. Является ли динамическим 2. Является ли блок, подлежащим обновлению: название блока должно начинаться на «vcBlockPos» или «vcBP» Если оба условия выполнены, программа пытается запустить процедуру обновления атрибутов блока. Если у блока присутствуют атрибуты «ДЛИНА» и «КОЛИЧЕСТВО», а также любой из этих атрибутов представлен полем (формула AutoCAD), запускается стандартная процедура обновления полей в блоке, подобная той, что можно запустить стандартной акадовской командой _UPDATEFIELD. Если же в атрибутах «ДЛИНА» и «КОЛИЧЕСТВО» нет формулы, VetCAD++ запускает собственную процедуру расчета значений этих атрибутов и заполняет их. Алгоритм её работы опишем ниже. Длина стержня высчитывается по динамическому параметру блока «Ширина». К длине стержня также могут прибавляться значения следующих динамических параметров (если они присутствуют): «Анкер1», «Отгиб1», «Анкер2», «Отгиб2». Если этих динамических параметров нет в блоке, проверяется наличие атрибутов «АНКЕР1», «ОТГИБ1», «АНКЕР2», «ОТГИБ2». Если данные атрибуты присутствуют в блоке, их значения прибавляются к длине стержня. Из длины стержня вычитается значение динамического параметра «Смещение» или значение атрибута «СМЕЩЕНИЕ» (если таковые присутствуют). Длина зоны распределения арматуры определяется по динамическому параметру «Длина». Шаг стержней определяется по атрибуту «ШАГ». Если этого атрибута нет либо не задано его значение, тогда значение шага арматуры будет высчитываться либо по верхнему тексту позиционной выноски, либо по нижнему тексту. Сначала проверяется верхний текст (где номер позиции): если после номера позиции стоит пробел и далее идет открывающаяся скобка «(» или косая черта «/», то всё, что в скобках или после косой черты, и будет шагом. Например, в ниже приведенных примерах для позиции «1» задан шаг 200: 1 (200) 1 /200 Если по верхнему тексту шаг определить не удалось, проверяется нижний текст. В нижнем тексте шагом считается всё, что стоит после последнего! пробела, например, если в нижнем тексте прописан текст «здесь шаг 200» или «см. чертеж (шаг 200)», то за шаг будет принято значение 200 (во втором варианте закрывающая скобка отсекается). Если же шаг определить не удалось, считается, что шаг равен 100 мм. По длине зоны распределения и шагу высчитывается количество по формуле: КОЛИЧЕСТВО = ДЛИНА_ЗОНЫ / ШАГ + 1 И наконец, в блоке можно задать формулы для корректировки количества стержней и их длины. Для этого в блок можно добавить атрибуты «ФОРМУЛА» и «ФОРМУЛАДЛ» соответственно. Например, если вы хотите умножить количество на 2 (2 слоя арматуры), можно задать формулу: =X*2 Вместо X программа подставит значение, высчитанное по выше описанному алгоритму. Формулы могут быть любыми, но начинаться должны со знака «=». Если этот знак отсутствует, то к высчитанному значению будет прибавлено значение из атрибута формулы. Т.е. если в атрибут «ФОРМУЛАДЛ» записать значение равное 300, то это означает, что программа прибавит к рассчитанной длине стержня еще 300. Если расчет производится в погонных метрах, то должен присутствовать атрибут «ВСЕГО». Его значение получается перемножением количества на длину стержней, рассчитанных по ранее описанному алгоритму.
|