/
Team8
/
kittycad
Обзор
Документация
Войти
/
Team8
/
kittycad
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/data/document.h
99 строк
2 KB
levovix
add: drawing linear dimensions for parameters
11 янв 2026, 03:08
11 янв 2026, 03:08
c09faff
Код
Авторство
О чём код?
#pragma once #include "typedefs.h" #include "serialization.h" class QWidget; class DocumentView; class ModelTree; namespace VSN { class SceneContent; } namespace VSN { class SceneSegment; } namespace data { struct C3dObject; SERGEN_INCLUDE("data/c3dobject.h") struct Sketch; SERGEN_INCLUDE("data/sketch/sketch.h") struct Assembly; SERGEN_INCLUDE("data/assembly/assembly.h") SERGEN_INCLUDE("mb_matrix3d.h") // todo: сохранять положение камеры // todo: наследовать от C3dObject struct Camera : ISerializable { IMPLEMENTS_ISerializable(auto) Camera() {} ~Camera() {} Point3 position{0, 0, 1}; Vec3 viewDir{0, 0, -1}; Vec3 viewUp{0, 1, 0}; Vec3 viewRight{1, 0, 0}; Point3 activePlaneOrigin{0, 0, 0}; Vec3 activePlaneNormal{0, 0, 1}; void transform(MbMatrix3D const& mat) AUTO(); }; struct Document : ISerializable { IMPLEMENTS_ISerializable(auto) Document() {} ~Document() {} std::vector<ref<C3dObject>> objects{}; ptr<Sketch> activeSketch{}; ptr<Assembly> activeAssembly{}; ref<Camera> camera{}; // todo std::vector<ptr<C3dObject>> temporaryObjects{} DONT_SERIALIZE TRACE_AS_TEMPORARY; bool updateRequested{true} DONT_SERIALIZE; ref<VSN::SceneContent> sceneContent{} DONT_SERIALIZE; std::map<VSN::SceneSegment const*, ptr<ISerializable>> sceneToData DONT_SERIALIZE; DocumentView* documentView{} DONT_SERIALIZE; ModelTree* modelTree{} DONT_SERIALIZE; QWidget* activeToolPalette{} DONT_SERIALIZE; QWidget* toolForSelectedObjectPalette{} DONT_SERIALIZE; public: ref<Sketch> getOrCreateActiveSketch(); void setActiveSketch(ptr<Sketch> v); ref<Assembly> getOrCreateActiveAssembly(); void setActiveAssembly(ptr<Assembly> v); void addTemporary(ref<C3dObject> child); void removeTemporary(ref<C3dObject> child); void addChild(ref<C3dObject> child); void removeChild(ref<C3dObject> child); void update(); static bool update( ISerializable* start, bool exceptSelf, int maxCycles, bool onlyTracedObjects, std::vector<std::vector<C3dObject*>>* outUpdateGraph ); static std::vector<std::vector<data::C3dObject*>> buildUpdateGraph( std::set<ISerializable*>& allObjects, ISerializable* start, bool exceptSelf, bool onlyTracedObjects, bool readonly ); static void printUpdateGraph(ISerializable* start); }; }