KOMPAS-tools 0.3
This library contains tools for KOMPAS 3D automation
Requires Python: >=3.6
Keywords: cad drawing kompas kompas3d automation engineering

# KOMPAS_tools
Инструменты для автоматизации КОМПАС 3D v20 на python3

*!!!Библиотека на раннем этапе разработки!!!*

`This library contents only russian descriptions here and inside the code.
If someone need english description - let me know.`

### Используемое ПО
***
- Python 3.11.6
- КОМПАС 3D v20
- PyCharm 2023.2.4 (Community Edition)

### Установка
***
Вы можете установить библиотеку, используя следующую команду в терминале:
```
pip install kompas-tools
```

### Использование
***
Для импорта библиотеки используйте следующую конструкцию:
```
from KOMPAS_tools import Kompas
```
Для работы с методами необходимо создать объект класса Kompas:
```
kompas = Kompas()  # Запуск или подключение к Компас
```
При инициализации объекта программа получает доступ к открытой программе КОМПАС 3D, либо запускает КОМПАС 3D\
\
Вызов методов класса выгладит следующим образом:
```
kompas.название_метода(аргумент1, аргумент2, ...)
```

### Описание методов
***
Далее приведён список методов с описаниями по категориям

#### Вывод информации (info_)
```
kompas.info_general()
```
Вывод версии КОМПАС и количества открытых документов
```
kompas.info_active()
```
Вывод информации об открытом документе

#### Получение объектов и параметров (get_)
```
kompas_document, kompas_document_2d, idocument_2d = kompas.get_active_docs()
```
Получение объектов активного документа (необходимо для работы прочих методов)

#### Создание файлов (newfile_)
```
kompas.newfile_drawing()
```
Создание нового чертежа
#### Создание рабочих пространств (new_)
```
kompas.new_view(x: float, y: float, name: str, scale: float, angle=0, color=0xFF0000)
```
Создание нового вида
- x, y - координаты СК вида относительно глобальной СК
- name - название вида
- scale - масштаб *(десятичная дробь)*
- angle - угол поворота вида относительно СК
- color - цвет вида (шестнадцатеричное число, BGR [BBGGRR])

#### Создание геометрии (draw_)
```
kompas.draw_rectangle(x: float, y: float, height: float, width: float, style=1, ang=0)
```
Создание прямоугольника
- x, y - координаты нижней левой точки прямоугольника
- height - высота прямоугольника
- width - ширина прямоугольника
- style - стиль линии (1, 2, 3, ...)
- ang - угол поворота относительно левой нижней точки (в градусах)
- Возвращает: id прямоугольника
```
kompas.draw_circle(x: float, y: float, radius: float, style=1)
```
Создание окружности
- x, y - координаты центра окружности
- radius - радиус окружности
- style - стиль линии (1, 2, 3, ...)
- Возвращает: id окружности
```
kompas.draw_line(x1: float, y1: float, x2: float, y2: float, style=1)
```
Создание линии
- x1, y1 - координаты первой точки
- x2, y2 - координаты второй точки
- style - стиль линии (1, 2, 3, ...)
- Возвращает: id линии
```
kompas.draw_point(x: float, y: float, style=1)
```
Создание точки
- x, y - координаты точки
- style - стиль точки (1, 2, 3, ...)
- Возвращает: id точки

#### Копирование (copy_)
```
kompas.copy_object(obj_ref: int, x0: float, y0: float, x1: float, y1:float, scale=1, angle=0, hyperlinks_copy=True, spcobj_copy=True, storages_copy=True, dimline_scale=True, attr_copy=True)
```
Копирование объекта
- obj_ref - id копируемого объекта
- x0, y0 - координаты начальной точки
- x1, y1 - координаты конечной точки
- scale - масштаб копии
- angle - угол поворота копии относительно базовой точки
- hyperlinks_copy - копировать гиперссылки?
- spcobj_copy - копировать объекты спецификации?
- storages_copy - копировать польз. данные и свойства?
- dimline_scale - масштабировать выносные линии?
- attr_copy - копировать атрибуты?
- Возвращает: id копии

#### Задание свойств объектов и параметров (set_)
```
kompas.set_developer_name(name: str)
```
Задаёт имя в строке "Разраб." в основной надписи
```
kompas.set_inspector_name(name: str)
```
Задаёт имя в строке "Пров." в основной надписи
```
kompas.set_tech_control_name(name: str)
```
Задаёт имя в строке "Т.Контр." в основной надписи
```
kompas.set_empty_field_name(name: str)
```
Задаёт имя в пустой строке в основной надписи
```
kompas.set_reg_control_name(name: str)
```
Задаёт имя в строке "Н.Контр." в основной надписи
```
kompas.set_approver_name(name: str)
```
Задаёт имя в строке "Утв." в основной надписи
```
kompas.set_drawing_name(name: str)
```
Задаёт наименование в основной надписи
```
kompas.set_drawing_designation(designation: str)
```
Задаёт обозначение в основной надписи
```
kompas.set_material_name(name: str)
```
Задаёт название материала в основной надписи
```
kompas.set_company_name(name: str)
```
Задаёт название предприятия в основной надписи
```
kompas.set_mass_val(mass: float)
```
Задание значения массы в основной надписи
```
kompas.set_scale_text(scale: str)
```
Задание текста в поле "Масштаб" в основной надписи
```
kompas.set_developer_date(date_text="")
```
Задаёт дату в строке "Разраб." в основной надписи\
Если оставить без аргумента, устанавливает текущую дату
```
kompas.set_inspector_date(date_text="")
```
Задаёт дату в строке "Пров." в основной надписи\
Если оставить без аргумента, устанавливает текущую дату
```
kompas.set_tech_control_date(date_text="")
```
Задаёт дату в строке "Т.контр." в основной надписи\
Если оставить без аргумента, устанавливает текущую дату
```
kompas.set_empty_field_date(date_text="")
```
Задаёт дату в пустой строке в основной надписи\
Если оставить без аргумента, устанавливает текущую дату
```
kompas.set_reg_control_date(date_text="")
```
Задаёт дату в строке "Н.контр." в основной надписи\
Если оставить без аргумента, устанавливает текущую дату
```
kompas.set_approver_date(date_text="")
```
Задаёт дату в строке "Утв." в основной надписи\
Если оставить без аргумента, устанавливает текущую дату

### Используемые библиотеки
***
- pywin32 *(устанавливается вместе с библиотекой)*
- numpy *(устанавливается вместе с библиотекой)*
- datetime *(есть по умолчанию)*

### Файлы библиотеки
***
- KompasClass.py - содержит класс Kompas для работы с САПР КОМПАС 3D
- Test.py - сейчас это "черновик", файл для проверки работы методов класса Kompas
- Serpinsky.py - демонстрационный скрипт, строит треугольник Серпинского из точек на новом фрагменте
***

## Ссылки

- [библиотека на PYPI](https://pypi.org/project/KOMPAS-tools/)