+ fixes #0001874: Scripted constraints not evaluated correctly
This commit is contained in:
parent
c918ef7e40
commit
3fa8a1ed2b
|
@ -306,6 +306,11 @@ bool Part2DObject::seekTrimPoints(const std::vector<Geometry *> &geomlist,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Part2DObject::acceptGeometry()
|
||||||
|
{
|
||||||
|
// implemented in sub-classes
|
||||||
|
}
|
||||||
|
|
||||||
// Python Drawing feature ---------------------------------------------------------
|
// Python Drawing feature ---------------------------------------------------------
|
||||||
|
|
||||||
namespace App {
|
namespace App {
|
||||||
|
|
|
@ -77,6 +77,8 @@ public:
|
||||||
virtual int getAxisCount(void) const;
|
virtual int getAxisCount(void) const;
|
||||||
/// retrieves an axis iterating through the construction lines of the sketch (indices start at 0)
|
/// retrieves an axis iterating through the construction lines of the sketch (indices start at 0)
|
||||||
virtual Base::Axis getAxis(int axId) const;
|
virtual Base::Axis getAxis(int axId) const;
|
||||||
|
/// verify and accept the assigned geometry
|
||||||
|
virtual void acceptGeometry();
|
||||||
|
|
||||||
/** calculate the points where a curve with index GeoId should be trimmed
|
/** calculate the points where a curve with index GeoId should be trimmed
|
||||||
* with respect to the rest of the curves contained in the list geomlist
|
* with respect to the rest of the curves contained in the list geomlist
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
#include "GeometryPy.h"
|
#include "GeometryPy.h"
|
||||||
|
|
||||||
#include "PropertyGeometryList.h"
|
#include "PropertyGeometryList.h"
|
||||||
|
#include "Part2DObject.h"
|
||||||
|
|
||||||
using namespace App;
|
using namespace App;
|
||||||
using namespace Base;
|
using namespace Base;
|
||||||
|
@ -113,6 +114,9 @@ PyObject *PropertyGeometryList::getPyObject(void)
|
||||||
|
|
||||||
void PropertyGeometryList::setPyObject(PyObject *value)
|
void PropertyGeometryList::setPyObject(PyObject *value)
|
||||||
{
|
{
|
||||||
|
// check container of this property to notify about changes
|
||||||
|
Part2DObject* part2d = dynamic_cast<Part2DObject*>(this->getContainer());
|
||||||
|
|
||||||
if (PyList_Check(value)) {
|
if (PyList_Check(value)) {
|
||||||
Py_ssize_t nSize = PyList_Size(value);
|
Py_ssize_t nSize = PyList_Size(value);
|
||||||
std::vector<Geometry*> values;
|
std::vector<Geometry*> values;
|
||||||
|
@ -130,10 +134,14 @@ void PropertyGeometryList::setPyObject(PyObject *value)
|
||||||
}
|
}
|
||||||
|
|
||||||
setValues(values);
|
setValues(values);
|
||||||
|
if (part2d)
|
||||||
|
part2d->acceptGeometry();
|
||||||
}
|
}
|
||||||
else if (PyObject_TypeCheck(value, &(GeometryPy::Type))) {
|
else if (PyObject_TypeCheck(value, &(GeometryPy::Type))) {
|
||||||
GeometryPy *pcObject = static_cast<GeometryPy*>(value);
|
GeometryPy *pcObject = static_cast<GeometryPy*>(value);
|
||||||
setValue(pcObject->getGeometryPtr());
|
setValue(pcObject->getGeometryPtr());
|
||||||
|
if (part2d)
|
||||||
|
part2d->acceptGeometry();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
std::string error = std::string("type must be 'Geometry' or list of 'Geometry', not ");
|
std::string error = std::string("type must be 'Geometry' or list of 'Geometry', not ");
|
||||||
|
@ -182,7 +190,7 @@ void PropertyGeometryList::Restore(Base::XMLReader &reader)
|
||||||
setValues(values);
|
setValues(values);
|
||||||
}
|
}
|
||||||
|
|
||||||
Property *PropertyGeometryList::Copy(void) const
|
App::Property *PropertyGeometryList::Copy(void) const
|
||||||
{
|
{
|
||||||
PropertyGeometryList *p = new PropertyGeometryList();
|
PropertyGeometryList *p = new PropertyGeometryList();
|
||||||
p->setValues(_lValueList);
|
p->setValues(_lValueList);
|
||||||
|
|
|
@ -80,7 +80,7 @@ public:
|
||||||
virtual void Save(Base::Writer &writer) const;
|
virtual void Save(Base::Writer &writer) const;
|
||||||
virtual void Restore(Base::XMLReader &reader);
|
virtual void Restore(Base::XMLReader &reader);
|
||||||
|
|
||||||
virtual Property *Copy(void) const;
|
virtual App::Property *Copy(void) const;
|
||||||
virtual void Paste(const App::Property &from);
|
virtual void Paste(const App::Property &from);
|
||||||
|
|
||||||
virtual unsigned int getMemSize(void) const;
|
virtual unsigned int getMemSize(void) const;
|
||||||
|
|
|
@ -34,8 +34,6 @@
|
||||||
namespace Part
|
namespace Part
|
||||||
{
|
{
|
||||||
|
|
||||||
class Property;
|
|
||||||
|
|
||||||
/** The part shape property class.
|
/** The part shape property class.
|
||||||
* @author Werner Mayer
|
* @author Werner Mayer
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -321,6 +321,12 @@ Base::Axis SketchObject::getAxis(int axId) const
|
||||||
return Base::Axis();
|
return Base::Axis();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SketchObject::acceptGeometry()
|
||||||
|
{
|
||||||
|
Constraints.acceptGeometry(getCompleteGeometry());
|
||||||
|
rebuildVertexIndex();
|
||||||
|
}
|
||||||
|
|
||||||
int SketchObject::addGeometry(const std::vector<Part::Geometry *> &geoList)
|
int SketchObject::addGeometry(const std::vector<Part::Geometry *> &geoList)
|
||||||
{
|
{
|
||||||
const std::vector< Part::Geometry * > &vals = getInternalGeometry();
|
const std::vector< Part::Geometry * > &vals = getInternalGeometry();
|
||||||
|
|
|
@ -162,6 +162,8 @@ public:
|
||||||
virtual int getAxisCount(void) const;
|
virtual int getAxisCount(void) const;
|
||||||
/// retrieves an axis iterating through the construction lines of the sketch (indices start at 0)
|
/// retrieves an axis iterating through the construction lines of the sketch (indices start at 0)
|
||||||
virtual Base::Axis getAxis(int axId) const;
|
virtual Base::Axis getAxis(int axId) const;
|
||||||
|
/// verify and accept the assigned geometry
|
||||||
|
virtual void acceptGeometry();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/// get called by the container when a property has changed
|
/// get called by the container when a property has changed
|
||||||
|
|
Loading…
Reference in New Issue
Block a user