| |
|
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| |
|
| | #include <Mod/Measure/MeasureGlobal.h>
|
| |
|
| | #include <App/MeasureManager.h>
|
| | #include <Base/Console.h>
|
| | #include <Base/Interpreter.h>
|
| |
|
| | #include <Mod/Part/App/MeasureInfo.h>
|
| | #include <Mod/Part/App/MeasureClient.h>
|
| |
|
| | #include "Measurement.h"
|
| | #include "MeasurementPy.h"
|
| |
|
| |
|
| | #include "MeasureBase.h"
|
| | #include "MeasureBasePy.h"
|
| |
|
| | #include "MeasureAngle.h"
|
| | #include "MeasureDistance.h"
|
| | #include "MeasurePosition.h"
|
| | #include "MeasureLength.h"
|
| | #include "MeasureArea.h"
|
| | #include "MeasureDiameter.h"
|
| | #include "MeasureRadius.h"
|
| |
|
| | namespace Measure
|
| | {
|
| |
|
| |
|
| | template class MeasureExport MeasureBaseExtendable<Part::MeasureAngleInfo>;
|
| | template class MeasureExport MeasureBaseExtendable<Part::MeasureAreaInfo>;
|
| | template class MeasureExport MeasureBaseExtendable<Part::MeasureDistanceInfo>;
|
| | template class MeasureExport MeasureBaseExtendable<Part::MeasureLengthInfo>;
|
| | template class MeasureExport MeasureBaseExtendable<Part::MeasurePositionInfo>;
|
| | template class MeasureExport MeasureBaseExtendable<Part::MeasureRadiusInfo>;
|
| |
|
| |
|
| | class Module: public Py::ExtensionModule<Module>
|
| | {
|
| | public:
|
| | Module()
|
| | : Py::ExtensionModule<Module>("Measure")
|
| | {
|
| | initialize("This module is the Measure module.");
|
| | }
|
| |
|
| | private:
|
| | };
|
| |
|
| | PyObject* initModule()
|
| | {
|
| | return Base::Interpreter().addModule(new Module);
|
| | }
|
| |
|
| | }
|
| |
|
| | using namespace Measure;
|
| |
|
| |
|
| | PyMOD_INIT_FUNC(Measure)
|
| | {
|
| |
|
| | try {
|
| | Base::Interpreter().runString("import Part");
|
| | }
|
| | catch (const Base::Exception& e) {
|
| | PyErr_SetString(PyExc_ImportError, e.what());
|
| | PyMOD_Return(nullptr);
|
| | }
|
| | PyObject* mod = Measure::initModule();
|
| |
|
| | Base::Interpreter().addType(&Measure::MeasurementPy::Type, mod, "Measurement");
|
| | Base::Interpreter().addType(&Measure::MeasureBasePy::Type, mod, "MeasureBase");
|
| |
|
| | Measure::Measurement ::init();
|
| |
|
| |
|
| | Measure::MeasureDistanceType ::init();
|
| | Measure::MeasureBase ::init();
|
| | Measure::MeasurePython ::init();
|
| | Measure::MeasureAngle ::init();
|
| | Measure::MeasureDistance ::init();
|
| | Measure::MeasureDistanceDetached::init();
|
| | Measure::MeasurePosition ::init();
|
| | Measure::MeasureLength ::init();
|
| | Measure::MeasureArea ::init();
|
| | Measure::MeasureDiameter ::init();
|
| | Measure::MeasureRadius ::init();
|
| |
|
| |
|
| |
|
| | App::MeasureManager::addMeasureType(
|
| | "DISTANCE",
|
| | QT_TRANSLATE_NOOP("TaskMeasure", "Distance"),
|
| | "Measure::MeasureDistance",
|
| | MeasureDistance::isValidSelection,
|
| | MeasureDistance::isPrioritizedSelection
|
| | );
|
| |
|
| | App::MeasureManager::addMeasureType(
|
| | "DISTANCEFREE",
|
| | QT_TRANSLATE_NOOP("TaskMeasure", "Distance Free"),
|
| | "Measure::MeasureDistanceDetached",
|
| | MeasureDistanceDetached::isValidSelection,
|
| | nullptr
|
| | );
|
| |
|
| | App::MeasureManager::addMeasureType(
|
| | "ANGLE",
|
| | QT_TRANSLATE_NOOP("TaskMeasure", "Angle"),
|
| | "Measure::MeasureAngle",
|
| | MeasureAngle::isValidSelection,
|
| | MeasureAngle::isPrioritizedSelection
|
| | );
|
| |
|
| | App::MeasureManager::addMeasureType(
|
| | "LENGTH",
|
| | QT_TRANSLATE_NOOP("TaskMeasure", "Length"),
|
| | "Measure::MeasureLength",
|
| | MeasureLength::isValidSelection,
|
| | nullptr
|
| | );
|
| |
|
| | App::MeasureManager::addMeasureType(
|
| | "POSITION",
|
| | QT_TRANSLATE_NOOP("TaskMeasure", "Position"),
|
| | "Measure::MeasurePosition",
|
| | MeasurePosition::isValidSelection,
|
| | nullptr
|
| | );
|
| |
|
| | App::MeasureManager::addMeasureType(
|
| | "AREA",
|
| | QT_TRANSLATE_NOOP("TaskMeasure", "Area"),
|
| | "Measure::MeasureArea",
|
| | MeasureArea::isValidSelection,
|
| | nullptr
|
| | );
|
| |
|
| | App::MeasureManager::addMeasureType(
|
| | "DIAMETER",
|
| | "Diameter",
|
| | "Measure::MeasureDiameter",
|
| | MeasureDiameter::isValidSelection,
|
| | MeasureDiameter::isPrioritizedSelection
|
| | );
|
| |
|
| | App::MeasureManager::addMeasureType(
|
| | "RADIUS",
|
| | QT_TRANSLATE_NOOP("TaskMeasure", "Radius"),
|
| | "Measure::MeasureRadius",
|
| | MeasureRadius::isValidSelection,
|
| | MeasureRadius::isPrioritizedSelection
|
| | );
|
| |
|
| |
|
| | auto lengthList = Part::MeasureClient::reportLengthCB();
|
| | for (auto& entry : lengthList) {
|
| | MeasureBaseExtendable<Part::MeasureLengthInfo>::addGeometryHandler(
|
| | entry.m_module,
|
| | entry.m_callback
|
| | );
|
| | }
|
| | auto angleList = Part::MeasureClient::reportAngleCB();
|
| | for (auto& entry : angleList) {
|
| | MeasureBaseExtendable<Part::MeasureAngleInfo>::addGeometryHandler(
|
| | entry.m_module,
|
| | entry.m_callback
|
| | );
|
| | }
|
| | auto areaList = Part::MeasureClient::reportAreaCB();
|
| | for (auto& entry : areaList) {
|
| | MeasureBaseExtendable<Part::MeasureAreaInfo>::addGeometryHandler(
|
| | entry.m_module,
|
| | entry.m_callback
|
| | );
|
| | }
|
| | auto distanceList = Part::MeasureClient::reportDistanceCB();
|
| | for (auto& entry : distanceList) {
|
| | MeasureBaseExtendable<Part::MeasureDistanceInfo>::addGeometryHandler(
|
| | entry.m_module,
|
| | entry.m_callback
|
| | );
|
| | }
|
| | auto positionList = Part::MeasureClient::reportPositionCB();
|
| | for (auto& entry : positionList) {
|
| | MeasureBaseExtendable<Part::MeasurePositionInfo>::addGeometryHandler(
|
| | entry.m_module,
|
| | entry.m_callback
|
| | );
|
| | }
|
| | auto radiusList = Part::MeasureClient::reportRadiusCB();
|
| | for (auto& entry : radiusList) {
|
| | MeasureBaseExtendable<Part::MeasureRadiusInfo>::addGeometryHandler(
|
| | entry.m_module,
|
| | entry.m_callback
|
| | );
|
| | }
|
| |
|
| |
|
| | Base::Console().log("Loading Measure module… done\n");
|
| | PyMOD_Return(mod);
|
| | }
|
| |
|
| |
|
| | void debugprint(const std::string& text)
|
| | {
|
| | Base::Console().log("%s", text.c_str());
|
| | }
|
| |
|