/
kuvbur
/
AddOn_SomeStuff
Обзор
Документация
Войти
/
kuvbur
/
AddOn_SomeStuff
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Sources/AddOn/AutomateFunction.hpp
72 строки
5 KB
Dmitry Rogozhin
Совместимость с АС_29 ч.2
16 авг 2025, 15:09
16 авг 2025, 15:09
a7d69dc
Код
Авторство
О чём код?
//------------ kuvbur 2022 ------------ #pragma once #if !defined (AUTOMATE_HPP) #define AUTOMATE_HPP #include "Helpers.hpp" #include "Sector2DData.h" namespace AutoFunc { // Структура с отрезками для создания 3д документов struct SSectLine { double angz = 0; // Угол отрезка double angz_1 = 0; // Угол подрезки начала отрезка double angz_2 = 0; // Угол подрезки конца отрезка Sector s; // Отрезок для построения 3д сечения API_Guid elemguid = APINULLGuid; API_DatabaseUnId databaseUnId; // UnId базы данных созданного или найденного 3д документа API_Tranmat tm; // Матрица преобразования координат, получена из API_3DProjectionInfo }; // ----------------------------------------------------------------------------- // Ищет в массиве отрезок, начало или конец которого находятся возле точки start // Возвращает индекс inx элемента в массиве, если точка была концом отрезка - поднимает флаг isend // ----------------------------------------------------------------------------- bool GetNear (const GS::Array<Sector>& k, const Point2D& start, UInt32& inx, bool& isend); // ----------------------------------------------------------------------------- // Устанавливает подрезку по отрезку, возвращает API_3DCutPlanesInfo cutInfo // ----------------------------------------------------------------------------- GSErrCode GetCuplane (const SSectLine sline, API_3DCutPlanesInfo& cutInfo, const double& depth); // ----------------------------------------------------------------------------- // Устанавливает камеру перпендикулярно направлению angz, задаёт масштаб по осям x y // ----------------------------------------------------------------------------- GSErrCode Get3DProjectionInfo (API_3DProjectionInfo& proj3DInfo, const double& angz, const double& koeff); // ----------------------------------------------------------------------------- // Ищет 3д документ с именем и id. Если не находит - создаёт // Возвращает информацию о БД API_DatabaseInfo& dbInfo // ----------------------------------------------------------------------------- GSErrCode Get3DDocument (API_DatabaseInfo& dbInfo, const GS::UniString& name, const GS::UniString& id); // ----------------------------------------------------------------------------- // Извлекает из морфа отрезки, сортирует их по удалению от startpos // Возвращает массив отрезков и ID морфа // ----------------------------------------------------------------------------- GSErrCode GetSectLine (API_Guid& elemguid, GS::Array<SSectLine>& lines, GS::UniString& id, const Point2D& startpos); // ----------------------------------------------------------------------------- // Создание 3д документа для одного отрезка // ----------------------------------------------------------------------------- GSErrCode DoSect (SSectLine& sline, const GS::UniString& name, const GS::UniString& id, const double& koeff, const double& depth); // ----------------------------------------------------------------------------- // Размещение на созданном отрезке элементов оформления // По краям отрезка устанавливаются hotspot // ----------------------------------------------------------------------------- GSErrCode PlaceDocSect (SSectLine& sline, API_Element& elemline); // ----------------------------------------------------------------------------- // Построение 3д документов вдоль морфа // ----------------------------------------------------------------------------- void ProfileByLine (); // ----------------------------------------------------------------------------- // Возвращает список API_Guid чертежей, отсортированных по именам // ----------------------------------------------------------------------------- GS::Array<API_Guid> GetDrawingsSort (const GS::Array<API_Guid>& elems); // ----------------------------------------------------------------------------- // Выравнивание одного чертежа // Возвращает сдвинутую на ширину чертежа координату // ----------------------------------------------------------------------------- GSErrCode AlignOneDrawingsByPoints (const API_Guid& elemguid, API_DatabaseInfo& databasestart, API_WindowInfo& windowstart, const API_Coord& zeropos, API_Coord& startpos, API_Coord& drawingpos); // ----------------------------------------------------------------------------- // Выравнивание чертежей по расположенным в них hotspot // ----------------------------------------------------------------------------- void AlignDrawingsByPoints (); } #endif