ElementIDList moved to SpeckleLib, added setSelection method to BIMElementDatabase
This commit is contained in:
@@ -1,16 +1,8 @@
|
||||
#ifndef CONNECTOR_DATABASE_ID
|
||||
#define CONNECTOR_DATABASE_ID
|
||||
|
||||
#include "Speckle/Utility/Guid.h"
|
||||
|
||||
namespace connector::database {
|
||||
|
||||
//BIM element record identifier
|
||||
using ElementID = speckle::utility::Guid;
|
||||
|
||||
//A list of element IDs
|
||||
using ElementIDList = std::vector<ElementID>;
|
||||
|
||||
}
|
||||
|
||||
#endif //CONNECTOR_DATABASE_ID
|
||||
|
||||
@@ -41,7 +41,7 @@ void HighlightModel::run(const String& modelCardID) const {
|
||||
std::make_unique<SendError>(connector()->getLocalString(errorString, modelCardNotFoundID), modelCardID));
|
||||
return;
|
||||
}
|
||||
String className = typeid(*modelCard).name();
|
||||
|
||||
if (auto senderCard = dynamic_cast<SenderModelCard*>(modelCard.get())) {
|
||||
auto modelCardSelection = senderCard->getFilter().getElementIDs();
|
||||
#ifdef ARCHICAD
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef CONNECTOR_RECORD_ARCHICAD_EVERYTHING_FILTER
|
||||
#define CONNECTOR_RECORD_ARCHICAD_EVERYTHING_FILTER
|
||||
|
||||
#include "Connector/Database/Identity/RecordID.h"
|
||||
#include "Speckle/Database/Identity/RecordID.h"
|
||||
#include "Connector/Record/Model/Filter/EverythingSendFilter.h"
|
||||
|
||||
namespace connector::record {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef CONNECTOR_RECORD_ARCHICAD_SELECTION_FILTER
|
||||
#define CONNECTOR_RECORD_ARCHICAD_SELECTION_FILTER
|
||||
|
||||
#include "Connector/Database/Identity/RecordID.h"
|
||||
#include "Speckle/Database/Identity/RecordID.h"
|
||||
#include "Connector/Record/Model/Filter/DirectSelectionSendFilter.h"
|
||||
|
||||
namespace connector::record {
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#include <array>
|
||||
|
||||
using namespace active::serialise;
|
||||
using namespace connector::database;
|
||||
using namespace speckle::database;
|
||||
using namespace connector::record;
|
||||
using namespace speckle::utility;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef CONNECTOR_RECORD_DIRECT_SELECT_SEND_FILTER
|
||||
#define CONNECTOR_RECORD_DIRECT_SELECT_SEND_FILTER
|
||||
|
||||
#include "Connector/Database/Identity/RecordID.h"
|
||||
#include "Speckle/Database/Identity/RecordID.h"
|
||||
#include "Connector/Record/Model/Filter/SendFilter.h"
|
||||
|
||||
namespace connector::record {
|
||||
@@ -36,7 +36,7 @@ namespace connector::record {
|
||||
Get the filtered element IDs
|
||||
@return The filter elements
|
||||
*/
|
||||
const database::ElementIDList& getElementIDs() const override { return m_selectedElements; }
|
||||
const speckle::database::ElementIDList& getElementIDs() const override { return m_selectedElements; }
|
||||
|
||||
// MARK: - Serialisation
|
||||
|
||||
@@ -59,7 +59,7 @@ namespace connector::record {
|
||||
|
||||
private:
|
||||
///A list of selected element IDs
|
||||
database::ElementIDList m_selectedElements;
|
||||
speckle::database::ElementIDList m_selectedElements;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#include <array>
|
||||
|
||||
using namespace active::serialise;
|
||||
using namespace connector::database;
|
||||
using namespace speckle::database;
|
||||
using namespace connector::record;
|
||||
using namespace speckle::utility;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef CONNECTOR_RECORD_EVERYTHING_SEND_FILTER
|
||||
#define CONNECTOR_RECORD_EVERYTHING_SEND_FILTER
|
||||
|
||||
#include "Connector/Database/Identity/RecordID.h"
|
||||
#include "Speckle/Database/Identity/RecordID.h"
|
||||
#include "Connector/Record/Model/Filter/SendFilter.h"
|
||||
|
||||
namespace connector::record {
|
||||
@@ -36,13 +36,13 @@ namespace connector::record {
|
||||
Get the filtered element IDs
|
||||
@return The filter elements
|
||||
*/
|
||||
const database::ElementIDList& getElementIDs() const override { return m_emptyList; }
|
||||
const speckle::database::ElementIDList& getElementIDs() const override { return m_emptyList; }
|
||||
/*!
|
||||
Determine if the filter has expired because an element in the selection has changed
|
||||
@param changed The list of changed element IDs
|
||||
@return True if the one of the changed elements is in the selection
|
||||
*/
|
||||
virtual bool checkExpiry(const database::ElementIDList& changed) const override { return true; }
|
||||
virtual bool checkExpiry(const speckle::database::ElementIDList& changed) const override { return true; }
|
||||
|
||||
// MARK: - Serialisation
|
||||
|
||||
@@ -65,7 +65,7 @@ namespace connector::record {
|
||||
|
||||
private:
|
||||
///Enables a const empty list to be returned
|
||||
database::ElementIDList m_emptyList;
|
||||
speckle::database::ElementIDList m_emptyList;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#include <array>
|
||||
|
||||
using namespace active::serialise;
|
||||
using namespace connector::database;
|
||||
using namespace speckle::database;
|
||||
using namespace connector::record;
|
||||
using namespace speckle::utility;
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#include "Active/Serialise/Package/Package.h"
|
||||
#include "Active/Utility/Cloner.h"
|
||||
#include "Connector/Database/Identity/RecordID.h"
|
||||
#include "Speckle/Database/Identity/RecordID.h"
|
||||
#include "Speckle/Utility/String.h"
|
||||
|
||||
namespace connector::record {
|
||||
@@ -59,13 +59,13 @@ namespace connector::record {
|
||||
Get the filtered element IDs
|
||||
@return The filter elements
|
||||
*/
|
||||
virtual const database::ElementIDList& getElementIDs() const = 0;
|
||||
virtual const speckle::database::ElementIDList& getElementIDs() const = 0;
|
||||
/*!
|
||||
Determine if the filter has expired because an element in the selection has changed
|
||||
@param changed The list of changed element IDs
|
||||
@return True if the one of the changed elements is in the selection
|
||||
*/
|
||||
virtual bool checkExpiry(const database::ElementIDList& changed) const;
|
||||
virtual bool checkExpiry(const speckle::database::ElementIDList& changed) const;
|
||||
|
||||
// MARK: - Serialisation
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#include <array>
|
||||
|
||||
using namespace active::serialise;
|
||||
using namespace connector::database;
|
||||
using namespace speckle::database;
|
||||
using namespace connector::record;
|
||||
using namespace speckle::database;
|
||||
using namespace speckle::utility;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef CONNECTOR_RECORD_RECEIVER_MODEL_CARD
|
||||
#define CONNECTOR_RECORD_RECEIVER_MODEL_CARD
|
||||
|
||||
#include "Connector/Database/Identity/RecordID.h"
|
||||
#include "Speckle/Database/Identity/RecordID.h"
|
||||
#include "Connector/Record/Model/ModelCard.h"
|
||||
|
||||
namespace connector::record {
|
||||
@@ -37,7 +37,7 @@ namespace connector::record {
|
||||
const speckle::database::RecordID& modelID, const speckle::utility::String& modelName,
|
||||
const speckle::database::RecordID& selectedVersion, const speckle::database::RecordID& latestVersion,
|
||||
const speckle::database::RecordID& accountID, const speckle::utility::String& serverURL,
|
||||
bool hasDimissedWarning, database::ElementIDList&& bakedObjects, const SettingList& settings) :
|
||||
bool hasDimissedWarning, speckle::database::ElementIDList&& bakedObjects, const SettingList& settings) :
|
||||
ModelCard{modelID, projectID, accountID, serverURL, settings},
|
||||
m_projectName{projectName}, m_modelName{modelName}, m_selectedVersionID{selectedVersion}, m_latestVersionID{latestVersion},
|
||||
m_hasDismissedUpdateWarning{hasDimissedWarning}, m_bakedObjectIDs{bakedObjects} {}
|
||||
@@ -78,7 +78,7 @@ namespace connector::record {
|
||||
Get the IDs of objects accepted in the receive
|
||||
@return The accepted object IDs
|
||||
*/
|
||||
const database::ElementIDList& getBakedObjectIDs() const { return m_bakedObjectIDs; }
|
||||
const speckle::database::ElementIDList& getBakedObjectIDs() const { return m_bakedObjectIDs; }
|
||||
|
||||
// MARK: - Serialisation
|
||||
|
||||
@@ -111,7 +111,7 @@ namespace connector::record {
|
||||
///True if the user has already dismissed an alert to update
|
||||
bool m_hasDismissedUpdateWarning = false;
|
||||
///IDs of objects accepted in the receive
|
||||
database::ElementIDList m_bakedObjectIDs;
|
||||
speckle::database::ElementIDList m_bakedObjectIDs;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -85,6 +85,16 @@ BIMLinkList BIMElementDatabase::getSelection() const {
|
||||
} //BIMElementDatabase::getSelection
|
||||
|
||||
|
||||
/*--------------------------------------------------------------------
|
||||
Set the element selection
|
||||
|
||||
return: A list of selected element IDs
|
||||
--------------------------------------------------------------------*/
|
||||
void BIMElementDatabase::setSelection(const BIMLinkList& elementIDs) const {
|
||||
m_engine->setSelection(elementIDs);
|
||||
} //BIMElementDatabase::setSelection
|
||||
|
||||
|
||||
/*--------------------------------------------------------------------
|
||||
Get a specified element
|
||||
|
||||
|
||||
@@ -41,6 +41,11 @@ namespace speckle::database {
|
||||
@return A list of selected element IDs
|
||||
*/
|
||||
BIMLinkList getSelection() const;
|
||||
/*!
|
||||
Set the element selection
|
||||
@return A list of selected element IDs
|
||||
*/
|
||||
void setSelection(const BIMLinkList& elementIDs) const;
|
||||
/*!
|
||||
Get a specified element
|
||||
@param elementID The ID of the target element
|
||||
|
||||
@@ -42,6 +42,11 @@ namespace speckle::database {
|
||||
|
||||
//A list of links to BIM records
|
||||
using BIMLinkList = std::vector<BIMLink>;
|
||||
/*class BIMLinkList {
|
||||
public:
|
||||
BIMLinkList() = default;
|
||||
BIMLinkList(database::ElementIDList&)
|
||||
};*/
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define SPECKLE_DATABASE_ID
|
||||
|
||||
#include "Speckle/Utility/String.h"
|
||||
#include "Speckle/Utility/Guid.h"
|
||||
|
||||
namespace speckle::database {
|
||||
|
||||
@@ -14,6 +15,12 @@ namespace speckle::database {
|
||||
|
||||
//A list of record IDs
|
||||
using RecordIDList = std::vector<RecordID>;
|
||||
|
||||
//BIM element record identifier
|
||||
using ElementID = speckle::utility::Guid;
|
||||
|
||||
//A list of element IDs
|
||||
using ElementIDList = std::vector<ElementID>;
|
||||
|
||||
}
|
||||
|
||||
|
||||
+16
@@ -123,6 +123,22 @@ BIMLinkList ArchicadElementDBaseEngine::getSelection() const {
|
||||
} //ArchicadElementDBaseEngine::getSelection
|
||||
|
||||
|
||||
/*--------------------------------------------------------------------
|
||||
Set the element selection
|
||||
|
||||
return: A list of selected element IDs
|
||||
--------------------------------------------------------------------*/
|
||||
void ArchicadElementDBaseEngine::setSelection(const BIMLinkList& elementIDs) const {
|
||||
ACAPI_Selection_DeselectAll();
|
||||
GS::Array<API_Neig> selNeigs;
|
||||
for (const auto elemID : elementIDs) {
|
||||
API_Neig neig(elemID);
|
||||
selNeigs.Push(neig);
|
||||
}
|
||||
ACAPI_Selection_Select(selNeigs, true);
|
||||
} //ArchicadElementDBaseEngine::setSelection
|
||||
|
||||
|
||||
/*--------------------------------------------------------------------
|
||||
Get an object by index
|
||||
|
||||
|
||||
@@ -58,6 +58,11 @@ namespace speckle::database {
|
||||
@return A list of selected element IDs
|
||||
*/
|
||||
BIMLinkList getSelection() const;
|
||||
/*!
|
||||
Set the element selection
|
||||
@return A list of selected element IDs
|
||||
*/
|
||||
void setSelection(const BIMLinkList& elementIDs) const;
|
||||
/*!
|
||||
Get an object by index
|
||||
@param objID The object ID
|
||||
|
||||
Reference in New Issue
Block a user