Part: GeometryStringExtension to extend a geometry by a string
This commit is contained in:
@@ -59,8 +59,10 @@
|
||||
#include "Geometry.h"
|
||||
#include "GeometryExtension.h"
|
||||
#include "GeometryIntExtension.h"
|
||||
#include "GeometryStringExtension.h"
|
||||
#include "Geometry2d.h"
|
||||
#include "Mod/Part/App/GeometryIntExtensionPy.h"
|
||||
#include "Mod/Part/App/GeometryStringExtensionPy.h"
|
||||
#include "Mod/Part/App/TopoShapePy.h"
|
||||
#include "Mod/Part/App/TopoShapeVertexPy.h"
|
||||
#include "Mod/Part/App/TopoShapeFacePy.h"
|
||||
@@ -357,6 +359,7 @@ PyMOD_INIT_FUNC(Part)
|
||||
Base::Interpreter().addType(&Attacher::AttachEnginePy ::Type,partModule,"AttachEngine");
|
||||
|
||||
Base::Interpreter().addType(&Part::GeometryIntExtensionPy ::Type,partModule,"GeometryIntExtension");
|
||||
Base::Interpreter().addType(&Part::GeometryStringExtensionPy ::Type,partModule,"GeometryStringExtension");
|
||||
|
||||
#if PY_MAJOR_VERSION >= 3
|
||||
static struct PyModuleDef BRepOffsetAPIDef = {
|
||||
@@ -484,6 +487,7 @@ PyMOD_INIT_FUNC(Part)
|
||||
// Geometry types
|
||||
Part::GeometryExtension ::init();
|
||||
Part::GeometryIntExtension ::init();
|
||||
Part::GeometryStringExtension ::init();
|
||||
Part::Geometry ::init();
|
||||
Part::GeomPoint ::init();
|
||||
Part::GeomCurve ::init();
|
||||
|
||||
@@ -53,6 +53,7 @@ generate_from_xml(OffsetCurvePy)
|
||||
generate_from_xml(GeometryPy)
|
||||
generate_from_xml(GeometryExtensionPy)
|
||||
generate_from_xml(GeometryIntExtensionPy)
|
||||
generate_from_xml(GeometryStringExtensionPy)
|
||||
generate_from_xml(GeometryCurvePy)
|
||||
generate_from_xml(BoundedCurvePy)
|
||||
generate_from_xml(TrimmedCurvePy)
|
||||
@@ -217,6 +218,8 @@ SET(Python_SRCS
|
||||
GeometryExtensionPyImp.cpp
|
||||
GeometryIntExtensionPy.xml
|
||||
GeometryIntExtensionPyImp.cpp
|
||||
GeometryStringExtensionPy.xml
|
||||
GeometryStringExtensionPyImp.cpp
|
||||
GeometryCurvePy.xml
|
||||
GeometryCurvePyImp.cpp
|
||||
BoundedCurvePy.xml
|
||||
@@ -350,6 +353,8 @@ SET(Part_SRCS
|
||||
GeometryExtension.h
|
||||
GeometryIntExtension.cpp
|
||||
GeometryIntExtension.h
|
||||
GeometryStringExtension.cpp
|
||||
GeometryStringExtension.h
|
||||
Geometry.cpp
|
||||
Geometry.h
|
||||
Geometry2d.cpp
|
||||
|
||||
84
src/Mod/Part/App/GeometryStringExtension.cpp
Normal file
84
src/Mod/Part/App/GeometryStringExtension.cpp
Normal file
@@ -0,0 +1,84 @@
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2019 Abdullah Tahiri <abdullah.tahiri.yo@gmail.com> *
|
||||
* *
|
||||
* This file is part of the FreeCAD CAx development system. *
|
||||
* *
|
||||
* This library is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU Library General Public *
|
||||
* License as published by the Free Software Foundation; either *
|
||||
* version 2 of the License, or (at your option) any later version. *
|
||||
* *
|
||||
* This library 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 *
|
||||
* GNU Library General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU Library General Public *
|
||||
* License along with this library; see the file COPYING.LIB. If not, *
|
||||
* write to the Free Software Foundation, Inc., 59 Temple Place, *
|
||||
* Suite 330, Boston, MA 02111-1307, USA *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
#include "PreCompiled.h"
|
||||
|
||||
#include <Base/Writer.h>
|
||||
#include <Base/Reader.h>
|
||||
#include <Base/Tools.h>
|
||||
|
||||
#include "GeometryStringExtension.h"
|
||||
|
||||
#include "GeometryStringExtensionPy.h"
|
||||
|
||||
using namespace Part;
|
||||
|
||||
//---------- Geometry Extension
|
||||
|
||||
TYPESYSTEM_SOURCE(Part::GeometryStringExtension,Part::GeometryExtension)
|
||||
|
||||
GeometryStringExtension::GeometryStringExtension()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
GeometryStringExtension::GeometryStringExtension(std::string strp):str(strp)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
GeometryStringExtension::~GeometryStringExtension()
|
||||
{
|
||||
}
|
||||
|
||||
// Persistence implementer
|
||||
unsigned int GeometryStringExtension::getMemSize (void) const
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
void GeometryStringExtension::Save(Base::Writer &writer) const
|
||||
{
|
||||
|
||||
writer.Stream() << writer.ind() << "<GeoExtension type=\"" << this->getTypeId().getName()
|
||||
<< "\" value=\"" << str << "\"/>" << std::endl;
|
||||
}
|
||||
|
||||
void GeometryStringExtension::Restore(Base::XMLReader &reader)
|
||||
{
|
||||
str = reader.getAttribute("value");
|
||||
}
|
||||
|
||||
std::unique_ptr<Part::GeometryExtension> GeometryStringExtension::copy(void) const
|
||||
{
|
||||
std::unique_ptr<GeometryStringExtension> cpy = std::make_unique<GeometryStringExtension>();
|
||||
|
||||
cpy->str = this->str;
|
||||
|
||||
return std::move(cpy);
|
||||
}
|
||||
|
||||
PyObject * GeometryStringExtension::getPyObject(void)
|
||||
{
|
||||
return new GeometryStringExtensionPy(new GeometryStringExtension(this->str));
|
||||
}
|
||||
55
src/Mod/Part/App/GeometryStringExtension.h
Normal file
55
src/Mod/Part/App/GeometryStringExtension.h
Normal file
@@ -0,0 +1,55 @@
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2019 Abdullah Tahiri <abdullah.tahiri.yo@gmail.com> *
|
||||
* *
|
||||
* This file is part of the FreeCAD CAx development system. *
|
||||
* *
|
||||
* This library is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU Library General Public *
|
||||
* License as published by the Free Software Foundation; either *
|
||||
* version 2 of the License, or (at your option) any later version. *
|
||||
* *
|
||||
* This library 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 *
|
||||
* GNU Library General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU Library General Public *
|
||||
* License along with this library; see the file COPYING.LIB. If not, *
|
||||
* write to the Free Software Foundation, Inc., 59 Temple Place, *
|
||||
* Suite 330, Boston, MA 02111-1307, USA *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
#ifndef PART_GEOMETRYSTRINGEXTENSION_H
|
||||
#define PART_GEOMETRYSTRINGEXTENSION_H
|
||||
|
||||
#include <string>
|
||||
#include "GeometryExtension.h"
|
||||
|
||||
namespace Part {
|
||||
|
||||
class PartExport GeometryStringExtension: public Part::GeometryExtension
|
||||
{
|
||||
TYPESYSTEM_HEADER();
|
||||
public:
|
||||
GeometryStringExtension();
|
||||
GeometryStringExtension(std::string strp);
|
||||
virtual ~GeometryStringExtension();
|
||||
|
||||
// Persistence implementer ---------------------
|
||||
virtual unsigned int getMemSize(void) const;
|
||||
virtual void Save(Base::Writer &/*writer*/) const;
|
||||
virtual void Restore(Base::XMLReader &/*reader*/);
|
||||
|
||||
virtual std::unique_ptr<Part::GeometryExtension> copy(void) const;
|
||||
|
||||
virtual PyObject *getPyObject(void);
|
||||
|
||||
public:
|
||||
std::string str;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // PART_GEOMETRYSTRINGEXTENSION_H
|
||||
27
src/Mod/Part/App/GeometryStringExtensionPy.xml
Normal file
27
src/Mod/Part/App/GeometryStringExtensionPy.xml
Normal file
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd">
|
||||
<PythonExport
|
||||
Father="GeometryExtensionPy"
|
||||
Name="GeometryStringExtensionPy"
|
||||
PythonName="Part.GeometryStringExtension"
|
||||
Twin="GeometryStringExtension"
|
||||
TwinPointer="GeometryStringExtension"
|
||||
Include="Mod/Part/App/GeometryStringExtension.h"
|
||||
Namespace="Part"
|
||||
FatherInclude="Mod/Part/App/GeometryExtensionPy.h"
|
||||
FatherNamespace="Part"
|
||||
Constructor="true">
|
||||
<Documentation>
|
||||
<Author Licence="LGPL" Name="Abdullah Tahiri" EMail="abdullah.tahiri.yo@gmail.com" />
|
||||
<UserDocu>A GeometryExtension extending geometry objects with a string.</UserDocu>
|
||||
</Documentation>
|
||||
<Attribute Name="Value" ReadOnly="false">
|
||||
<Documentation>
|
||||
<UserDocu>
|
||||
returns the value of the GeometryStringExtension.
|
||||
</UserDocu>
|
||||
</Documentation>
|
||||
<Parameter Name="Value" Type="String"/>
|
||||
</Attribute>
|
||||
</PythonExport>
|
||||
</GenerateModel>
|
||||
93
src/Mod/Part/App/GeometryStringExtensionPyImp.cpp
Normal file
93
src/Mod/Part/App/GeometryStringExtensionPyImp.cpp
Normal file
@@ -0,0 +1,93 @@
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2019 Abdullah Tahiri <abdullah.tahiri.yo@gmail.com> *
|
||||
* *
|
||||
* This file is part of the FreeCAD CAx development system. *
|
||||
* *
|
||||
* This library is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU Library General Public *
|
||||
* License as published by the Free Software Foundation; either *
|
||||
* version 2 of the License, or (at your option) any later version. *
|
||||
* *
|
||||
* This library 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 *
|
||||
* GNU Library General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU Library General Public *
|
||||
* License along with this library; see the file COPYING.LIB. If not, *
|
||||
* write to the Free Software Foundation, Inc., 59 Temple Place, *
|
||||
* Suite 330, Boston, MA 02111-1307, USA *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
#include "PreCompiled.h"
|
||||
|
||||
#ifndef _PreComp_
|
||||
# include <sstream>
|
||||
#endif
|
||||
|
||||
#include "GeometryStringExtension.h"
|
||||
|
||||
#include "GeometryStringExtensionPy.h"
|
||||
#include "GeometryStringExtensionPy.cpp"
|
||||
|
||||
using namespace Part;
|
||||
|
||||
// returns a string which represents the object e.g. when printed in python
|
||||
std::string GeometryStringExtensionPy::representation(void) const
|
||||
{
|
||||
std::stringstream str;
|
||||
str << "<GeometryStringExtension (" << getGeometryStringExtensionPtr()->str << ") >";
|
||||
return str.str();
|
||||
}
|
||||
|
||||
PyObject *GeometryStringExtensionPy::PyMake(struct _typeobject *, PyObject *, PyObject *) // Python wrapper
|
||||
{
|
||||
// create a new instance of PointPy and the Twin object
|
||||
return new GeometryStringExtensionPy(new GeometryStringExtension);
|
||||
}
|
||||
|
||||
// constructor method
|
||||
int GeometryStringExtensionPy::PyInit(PyObject* args, PyObject* /*kwd*/)
|
||||
{
|
||||
|
||||
if (PyArg_ParseTuple(args, "")) {
|
||||
// default extension
|
||||
return 0;
|
||||
}
|
||||
|
||||
PyErr_Clear();
|
||||
char *pstr;
|
||||
if (PyArg_ParseTuple(args, "s", &pstr)) {
|
||||
this->getGeometryStringExtensionPtr()->str=pstr;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
PyErr_SetString(PyExc_TypeError, "GeometryStringExtension constructor accepts:\n"
|
||||
"-- empty parameter list\n"
|
||||
"-- string\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
Py::String GeometryStringExtensionPy::getValue(void) const
|
||||
{
|
||||
return Py::String(this->getGeometryStringExtensionPtr()->str);
|
||||
}
|
||||
|
||||
void GeometryStringExtensionPy::setValue(Py::String value)
|
||||
{
|
||||
this->getGeometryStringExtensionPtr()->str = value.as_std_string();
|
||||
}
|
||||
|
||||
PyObject *GeometryStringExtensionPy::getCustomAttributes(const char* /*attr*/) const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int GeometryStringExtensionPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user