Создание макропрограммы для параметрического фрезерованного фасада
Чтобы добавить макропрограмму параметрического фрезерованного фасада, нужно:
1. Создать сборочную единицу – рисунок фасада. В свойствах задать:
- MacroFile – doorsplos.mac
- Tracemac – путь до макропрограммы с рисунком от папки Proto
Можно использовать свойство milltype, чтобы задать тип фрезеровки (поэлементно, с вращением).
Можно добавить свойства — MillID1, MillID2… — номенклатурные единицы с фрезами
Можно задать любые числовые свойства, которые вы хотите использовать в макро.
2. Создать файл с макропрограммой рисунка. Может быть формат mac или py.
Макропрограмма должна:
- Получить из вызывающей макропрограммы 6 значений:
xn,yn,zn
— координаты правого нижнего дальнего угла фасадаdx,dz
— размеры фасада по ширине и высотеFasID
— ID сборочной единицы фасада
- Нарисовать средствами К3 нужное количество контуров
- Каждому контуру присвоить служебные атрибуты
- Собрать все контура в группу
В результате исполнения макро в сцене должен появиться один объект типа «группа». Даже если контур всего один, нужно создать группу из него.
Служебные атрибуты:
Имя атрибута | Тип значения | Назначение |
---|---|---|
FrezID | Число | ID фрезы из номенклатуры |
FrezDepth | Число | Глубина фрезеровки. На том же контуре обязательно должен быть FrezID |
CutDepth | Число | Глубина выреза;
0 — сквозной |
SideF | Строка | Всё, кроме Нет, заставит фрезеровать этот контур сзади (с пласти F) |
Test | Строка | Всё, кроме Нет, отменит назначение фрезеровки или выреза и оставит в сцене контур для проверки, как он построился. |
Insert | Число | Добавить вставку панелью по этому контуру. Значение — заглубление пласти вставки относительно пласти фасада.
Считается по умолчанию по передней пласти. Либо, если задан SideF, по задней. |
В макро можно использовать функцию priceinfo для доступа к другим свойствам сборочной единицы по её ID. Это могут быть геометрические параметры или ID фрез.
Особенности построения на python
- Не забудьте
import
k3
getpar
сделать немного сложнее:- gift = k3.getpar()
- xn = gift[0].value
- yn = gift[1].value
- zn = gift[2].value
- dx = gift[3].value
- dz = gift[4].value
- FasID = int(gift[5].value)
- Для python доступна библиотека FasUtils (
import
FasUtils)
Для использования функций оттуда, создаёте экземпляр класса Fasade оттуда, передав ему ID сборочной единицы и количество фрез:
freznum=1 #Количество фрез Fas=fasutils.Facade(FasID, freznum) #Инициализация списка фрез и набора служебных функций
Можно задать атрибут Fas.test_mode=1, чтобы все контура строились в «тестовом» режиме.
Функции доступны как методы этого класса:
- Fas.add_frez(n) — назначает последнему созданному контуру фрезу номер
n
из сборочной единицы. - Fas.add_depth(d) — назначает последнему созданному контуру глубину фрезеровки
d
- Fas.add_cut(d) — назначает последний созданный контур контуром выреза глубиной
d
- Fas.mill_from_back() — заставляет фрезеровать и вырезать последний созданный контур с пласти F
- Fas.add_insert(d) — Назначает по поcледнему созданному контуру вставку с заглублением
d
Все эти методы назначают нужные атрибуты на последний созданный объект, то есть их нужно вызывать сразу после создания контура.
В библиотеке fasutils есть варианты этих же методов, которые явно принимают ссылку на объект смотрите комментарии в файле библиотеки.