mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-23 06:12:38 +00:00
8dfe00cdf8
Rename short local variables and parameters in the viewer loading, sidecar, and BonsaiViewer command paths to make their responsibilities clearer.\n\nGenerated with the assistance of an AI coding tool.
73 lines
2.9 KiB
C++
73 lines
2.9 KiB
C++
// This file was generated with the assistance of an AI coding tool.
|
|
/********************************************************************************
|
|
* *
|
|
* This file is part of IfcOpenShell. *
|
|
* *
|
|
* IfcOpenShell is free software: you can redistribute it and/or modify *
|
|
* it under the terms of the Lesser GNU General Public License as published by *
|
|
* the Free Software Foundation, either version 3.0 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
* IfcOpenShell is distributed in the hope that it will be useful, *
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
* Lesser GNU General Public License for more details. *
|
|
* *
|
|
* You should have received a copy of the Lesser GNU General Public License *
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
|
* *
|
|
********************************************************************************/
|
|
|
|
#ifndef IFCINTERFACE_ELEMENTREGISTRY_H
|
|
#define IFCINTERFACE_ELEMENTREGISTRY_H
|
|
|
|
#include <QObject>
|
|
#include <QString>
|
|
#include "../ifcparse/express.h"
|
|
#include <optional>
|
|
#include <string>
|
|
#include <unordered_map>
|
|
#include <vector>
|
|
|
|
class SceneLoader;
|
|
struct PackedElementInfo;
|
|
struct ElementInfo;
|
|
|
|
namespace bonsaiviewer {
|
|
|
|
struct BasicElementInfo {
|
|
uint32_t object_id = 0;
|
|
uint32_t model_id = 0;
|
|
int ifc_id = 0;
|
|
int parent_id = 0;
|
|
QString guid;
|
|
QString name;
|
|
QString type;
|
|
};
|
|
|
|
class ElementRegistry : public QObject {
|
|
Q_OBJECT
|
|
public:
|
|
explicit ElementRegistry(QObject* parent = nullptr);
|
|
|
|
void bindLoader(SceneLoader* loader);
|
|
void clear();
|
|
void removeModel(uint32_t model_id);
|
|
std::vector<BasicElementInfo> basicElementInfoForModel(uint32_t model_id) const;
|
|
std::optional<BasicElementInfo> findBasicElementInfo(uint32_t object_id) const;
|
|
std::optional<express::Base> findEntity(uint32_t object_id) const;
|
|
|
|
private:
|
|
void onSidecarElementsReady(uint32_t model_id,
|
|
std::vector<PackedElementInfo> elements,
|
|
std::string string_table);
|
|
void onStreamedElementsReady(uint32_t model_id, std::vector<ElementInfo> elements);
|
|
|
|
SceneLoader* loader_ = nullptr;
|
|
std::unordered_map<uint32_t, BasicElementInfo> elements_;
|
|
};
|
|
|
|
} // namespace bonsaiviewer
|
|
|
|
#endif
|