Категория:Выгрузка информации в мебельную базу

Материал из K3-Macro

Для создания отчетов и стыковки K3-Мебель с различными внешними приложениями существует возможность выгрузки различной информации из геометрического ядра K3 Мебель в базу данных. Строго говоря, для выгрузки можно пользоваться инструментами работы с базами данных, описанными в настоящем руководстве, но в большинстве случаев достаточно стандартных средств выгрузки, которая осуществляется при помощи специальных функций K3-Мебель. В данном случае нет необходимости прибегать к макропрограммированию.

MebelBase <FileName>

Команда mebelbase создает мебельную базу с полным именем (включая расширение) <FileName>.

Выгрузка информации в мебельную базу осуществляется по наличию атрибута FurnType. В зависимости от значений этого атрибута мебельные элементы делятся на основные типы, представленные в таблице и, в зависимости от типа имеют разные основные таблицы выгрузки данных. Общая информация о мебельных элементах содержится в таблице TElems.

FurnType
Таблица выгрузки
Описание
01****
TPanels
Панель
02****
TProfiles
Профиль
03****
TLongs
Длинномер
04****
TAccessories
Комплектующий
05****
TBands
Кромка
08****
TAddMaterials
Дополнительные материалы
1*****
TObjects
Изделие
остальные
TElems
Мебельные элементы всех типов

Дополнительно выгружаются обработки, участвующие в создании мебельных элементов (в основном, панелей). Основная таблица выгрузки обработок – TWorks.

K3.png

Пример на макроязыке к3:

BaseName=ProjPath+getfiletitle(sysvar(2))-3+".mdb"; //-- Имя будущей базы
... // здесь какой то код
//-- Выгружаем базу данных
res=fileexist(BaseName); // проверить наличие файла
if (res==1) // если файл с таким именем существует
{
  res=removefile(BaseName); // удалить его. иначе, выгрузка невозможна
  if (res==0) // не смогли удалить. возможно файл занят. например, открыт для просмотра
  {
     putmsg("Не удалось удалить существующую мебельную базу с таким же именем как в задании ",0); // вывести сообщение об ошибке
     goto endlab; // завершить работу
  }
}
#res mebelbase BaseName; // проверки пройдены. выгрузить базу с заданным именем
if (res=0) // проверка. удалось ли выгрузить базу.
{
  putmsg("Не удалось выгрузить мебельную базу ",0); // вывести сообщение об ошибке 
  goto endlab; // завершить работу
}
... // Выгрузка закончена. Здесь может быть какой то код работы с базой.
endlab:
... // Выгрузка не получилась. Здесь может быть какой то код обработки ошибки.
exit;

Аналогичный функционал

Button2 py processed.png

Пример на языке python:


import os
import k3 # type: ignore


def getProjPath() -> str:
    '''Получить путь папке проекта'''
    return k3.getfilepath(k3.sysvar(2))


def getBaseName() -> str:
    '''Получить полный путь к базе'''
    return (
        os.path.join(getProjPath(), k3.getfiletitle(k3.sysvar(2)))[:-3] + ".mdb"
    )  # -- Имя будущей базы


def getPref() -> str:
    """Получить Номер заказа"""
    return k3.getorderinfo("Number")


def create_base_order() -> bool:
    """Выгружает базу данных текущего заказа.

    Перед выгрузкой проверяет, существует ли файл базы с таким именем. 
    Если файл существует, удаляет его. Затем выгружает мебельную базу в указанный файл. 
    Возвращает значение True.
    Если во время выгрузки возникает ошибка, возбуждается исключение.

    Args: None
    Returns: bool

    Raises:
        Exception: если не удалось выгрузить мебельную базу или удалить существующий файл базы.
    """
    _basename = getBaseName()
    res = k3.fileexist(_basename)
    if res == 1:
        res1 = k3.removefile(_basename)
        if res1 == 0:
            raise Exception("Не удалось выгрузить мебельную базу ")

    res = k3.mebelbase(_basename)
    if res == 0:
        k3.mbcarcase(k3.k_set, k3.k_yes)
        raise Exception("Не удалось выгрузить мебельную базу ")
    return True

Макро | Мебельные команды и функции | Выгрузка информации в мебельную базу | Обработки | Информация о мебельных элементах | Панели | Профили | Балюстрады | Длинномеры | Комплектующие | Кромки | Дополнительные материалы | Мебельные изделия | Общие параметры сцены | Информация о заказе | Материалы и сборочные единицы | Примеры задач, решаемые выгрузкой