FeaturesAPI_Fillet.h
FeaturesAPI_Intersection.h
FeaturesAPI_Measurement.h
- FeaturesAPI_GeometryCalculation.h
- FeaturesAPI_BoundingBox.h
FeaturesAPI_MultiRotation.h
FeaturesAPI_MultiTranslation.h
FeaturesAPI_Partition.h
FeaturesAPI_Copy.h
FeaturesAPI_ImportResult.h
FeaturesAPI_Defeaturing.h
+ FeaturesAPI_GeometryCalculation.h
+ FeaturesAPI_BoundingBox.h
)
SET(PROJECT_SOURCES
FeaturesAPI_Fillet.cpp
FeaturesAPI_Intersection.cpp
FeaturesAPI_Measurement.cpp
- FeaturesAPI_BoundingBox.cpp
- FeaturesAPI_GeometryCalculation.cpp
FeaturesAPI_MultiRotation.cpp
FeaturesAPI_MultiTranslation.cpp
FeaturesAPI_Partition.cpp
FeaturesAPI_Copy.cpp
FeaturesAPI_ImportResult.cpp
FeaturesAPI_Defeaturing.cpp
+ FeaturesAPI_GeometryCalculation.cpp
+ FeaturesAPI_BoundingBox.cpp
)
SET(PROJECT_LIBRARIES
%shared_ptr(FeaturesAPI_BooleanSmash)
%shared_ptr(FeaturesAPI_BooleanFill)
%shared_ptr(FeaturesAPI_Chamfer)
-%shared_ptr(FeaturesAPI_BoundingBox)
%shared_ptr(FeaturesAPI_Extrusion)
%shared_ptr(FeaturesAPI_ExtrusionBoolean)
%shared_ptr(FeaturesAPI_ExtrusionCut)
%shared_ptr(FeaturesAPI_Copy)
%shared_ptr(FeaturesAPI_ImportResult)
%shared_ptr(FeaturesAPI_Defeaturing)
+%shared_ptr(FeaturesAPI_BoundingBox)
%typecheck(SWIG_TYPECHECK_POINTER) std::pair<std::list<ModelHighAPI_Selection>, bool>, const std::pair<std::list<ModelHighAPI_Selection>, bool> & {
%include "FeaturesAPI_Fillet.h"
%include "FeaturesAPI_Intersection.h"
%include "FeaturesAPI_Measurement.h"
-%include "FeaturesAPI_GeometryCalculation.h"
-%include "FeaturesAPI_BoundingBox.h"
%include "FeaturesAPI_MultiRotation.h"
%include "FeaturesAPI_MultiTranslation.h"
%include "FeaturesAPI_Partition.h"
%include "FeaturesAPI_RemoveResults.h"
%include "FeaturesAPI_Copy.h"
%include "FeaturesAPI_ImportResult.h"
+%include "FeaturesAPI_GeometryCalculation.h"
+%include "FeaturesAPI_BoundingBox.h"
#include <ModelHighAPI_Tools.h>
//=================================================================================================
-FeaturesAPI_BoundingBox::
- FeaturesAPI_BoundingBox(const std::shared_ptr<ModelAPI_Feature>& theFeature)
+FeaturesAPI_BoundingBox::FeaturesAPI_BoundingBox(
+ const std::shared_ptr<ModelAPI_Feature>& theFeature)
: ModelHighAPI_Interface(theFeature)
{
initialize();
//=================================================================================================
FeaturesAPI_BoundingBox::FeaturesAPI_BoundingBox(
const std::shared_ptr<ModelAPI_Feature>& theFeature,
- const ModelHighAPI_Selection& theobject)
+ const ModelHighAPI_Selection& theObject)
:ModelHighAPI_Interface(theFeature)
{
if (initialize()) {
- fillAttribute(theobject, myobjectselected);
+ fillAttribute(theObject, myobjectSelected);
execute();
}
}
const std::string& aDocName = theDumper.name(aBase->document());
AttributeSelectionPtr anAttrObject;
- anAttrObject = aBase->selection(FeaturesPlugin_CreateBoundingBox::OBJECTS_LIST_ID());
+ anAttrObject = aBase->selection(FeaturesPlugin_CreateBoundingBox::OBJECT_ID());
theDumper << aBase << " = model.getBoundingBox(" << aDocName << ", " << anAttrObject;
//=================================================================================================
BoundingBoxPtr getBoundingBox(const std::shared_ptr<ModelAPI_Document>& thePart,
- const ModelHighAPI_Selection& theobject)
+ const ModelHighAPI_Selection& theObject)
{
FeaturePtr aFeature =
BoundingBoxPtr aBoundingBox;
- aBoundingBox.reset(new FeaturesAPI_BoundingBox(aFeature, theobject));
+ aBoundingBox.reset(new FeaturesAPI_BoundingBox(aFeature, theObject));
return aBoundingBox;
}
FEATURESAPI_EXPORT
explicit FeaturesAPI_BoundingBox(const std::shared_ptr<ModelAPI_Feature>& theFeature,
- const ModelHighAPI_Selection& theobject);
+ const ModelHighAPI_Selection& theObject);
/// Destructor.
FEATURESAPI_EXPORT
virtual ~FeaturesAPI_BoundingBox();
- INTERFACE_1(FeaturesPlugin_CreateBoundingBox::ID(),
- objectselected, FeaturesPlugin_CreateBoundingBox::OBJECTS_LIST_ID(),
- ModelAPI_AttributeSelection,
- /** object selected*/)
+ INTERFACE_1(FeaturesPlugin_CreateBoundingBox::ID(),
+ objectSelected, FeaturesPlugin_CreateBoundingBox::OBJECT_ID(),
+ ModelAPI_AttributeSelection, /** object selected*/)
/// Dump wrapped feature
FEATURESAPI_EXPORT
/// \param theobject the object selected
FEATURESAPI_EXPORT
BoundingBoxPtr getBoundingBox(const std::shared_ptr<ModelAPI_Document>& thePart,
- const ModelHighAPI_Selection& theobject);
+ const ModelHighAPI_Selection& theObject);
#endif // FeaturesAPI_BoundingBox_H_
#include "FeaturesAPI_Fillet.h"
#include "FeaturesAPI_Intersection.h"
#include "FeaturesAPI_Measurement.h"
- #include "FeaturesAPI_GeometryCalculation.h"
- #include "FeaturesAPI_BoundingBox.h"
#include "FeaturesAPI_MultiRotation.h"
#include "FeaturesAPI_MultiTranslation.h"
#include "FeaturesAPI_Partition.h"
#include "FeaturesAPI_RemoveResults.h"
#include "FeaturesAPI_Copy.h"
#include "FeaturesAPI_ImportResult.h"
+ #include "FeaturesAPI_GeometryCalculation.h"
+ #include "FeaturesAPI_BoundingBox.h"
#endif // FeaturesAPI_swig_H_
INCLUDE(Common)
INCLUDE(UnitTest)
-INCLUDE(UseQtExt)
-
-# additional include directories
-INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/src/GeomDataAPI
- ${PROJECT_SOURCE_DIR}/src/Locale
- ${QT_INCLUDES})
-
-# additional preprocessor / compiler flags
-ADD_DEFINITIONS(${QT_DEFINITIONS})
SET(PROJECT_HEADERS
FeaturesPlugin_Fillet.h
FeaturesPlugin_Fillet1D.h
FeaturesPlugin_Measurement.h
- FeaturesPlugin_GeometryCalculation.h
- FeaturesPlugin_BoundingBox.h
- FeaturesPlugin_CreateBoundingBox.h
- FeaturesPlugin_CommonBoundingBox.h
FeaturesPlugin_FusionFaces.h
FeaturesPlugin_RemoveResults.h
FeaturesPlugin_Chamfer.h
FeaturesPlugin_ImportResult.h
FeaturesPlugin_Defeaturing.h
FeaturesPlugin_VersionedChFi.h
+ FeaturesPlugin_GeometryCalculation.h
+ FeaturesPlugin_BoundingBox.h
+ FeaturesPlugin_CommonBoundingBox.h
+ FeaturesPlugin_CreateBoundingBox.h
)
SET(PROJECT_SOURCES
FeaturesPlugin_Fillet.cpp
FeaturesPlugin_Fillet1D.cpp
FeaturesPlugin_Measurement.cpp
- FeaturesPlugin_GeometryCalculation.cpp
- FeaturesPlugin_BoundingBox.cpp
- FeaturesPlugin_CreateBoundingBox.cpp
- FeaturesPlugin_CommonBoundingBox.cpp
FeaturesPlugin_FusionFaces.cpp
FeaturesPlugin_RemoveResults.cpp
FeaturesPlugin_Chamfer.cpp
FeaturesPlugin_ImportResult.cpp
FeaturesPlugin_Defeaturing.cpp
FeaturesPlugin_VersionedChFi.cpp
+ FeaturesPlugin_GeometryCalculation.cpp
+ FeaturesPlugin_BoundingBox.cpp
+ FeaturesPlugin_CommonBoundingBox.cpp
+ FeaturesPlugin_CreateBoundingBox.cpp
)
SET(XML_RESOURCES
fillet_widget.xml
fillet1d_widget.xml
measurement_widget.xml
- geometry_calculation_widget.xml
- Bounding_Box_widget.xml
- Create_Bounding_Box_widget.xml
fusion_faces_widget.xml
chamfer_widget.xml
copy_widget.xml
import_result_widget.xml
defeaturing_widget.xml
+ geometry_calculation_widget.xml
+ bounding_box_widget.xml
+ create_bounding_box_widget.xml
)
SET(TEXT_RESOURCES
)
ADD_DEFINITIONS(-DFEATURESPLUGIN_EXPORTS)
-ADD_LIBRARY(FeaturesPlugin MODULE
- ${PROJECT_SOURCES}
- ${PROJECT_HEADERS}
- ${XML_RESOURCES}
- ${TEXT_RESOURCES})
+ADD_LIBRARY(FeaturesPlugin MODULE ${PROJECT_SOURCES} ${PROJECT_HEADERS} ${XML_RESOURCES} ${TEXT_RESOURCES})
TARGET_LINK_LIBRARIES(FeaturesPlugin ${PROJECT_LIBRARIES})
INSTALL(TARGETS FeaturesPlugin DESTINATION ${SHAPER_INSTALL_PLUGIN_FILES})
TestFillet1D_Wire_3.py
TestFillet1D_Wire_4.py
TestFillet1D_Wire_5.py
+ Test19931.py
+ Test20027.py
+ Test20245_1.py
+ Test20245_2.py
+ Test20245_3.py
+ Test20247.py
TestGeometryCalculation.py
TestBoundingBox.py
)
void FeaturesPlugin_BoundingBox::initAttributes()
{
// attribute for object selected
- data()->addAttribute(OBJECTS_LIST_ID(), ModelAPI_AttributeSelection::typeId());
+ data()->addAttribute(OBJECT_ID(), ModelAPI_AttributeSelection::typeId());
+
// attributes for result message and values
- data()->addAttribute(X_MIN_COOD_ID(), ModelAPI_AttributeString::typeId());
- data()->addAttribute(Y_MIN_COOD_ID(), ModelAPI_AttributeString::typeId());
- data()->addAttribute(Z_MIN_COOD_ID(), ModelAPI_AttributeString::typeId());
- data()->addAttribute(X_MAX_COOD_ID(), ModelAPI_AttributeString::typeId());
- data()->addAttribute(Y_MAX_COOD_ID(), ModelAPI_AttributeString::typeId());
- data()->addAttribute(Z_MAX_COOD_ID(), ModelAPI_AttributeString::typeId());
+ data()->addAttribute(X_MIN_COORD_ID(), ModelAPI_AttributeString::typeId());
+ data()->addAttribute(Y_MIN_COORD_ID(), ModelAPI_AttributeString::typeId());
+ data()->addAttribute(Z_MIN_COORD_ID(), ModelAPI_AttributeString::typeId());
+ data()->addAttribute(X_MAX_COORD_ID(), ModelAPI_AttributeString::typeId());
+ data()->addAttribute(Y_MAX_COORD_ID(), ModelAPI_AttributeString::typeId());
+ data()->addAttribute(Z_MAX_COORD_ID(), ModelAPI_AttributeString::typeId());
data()->addAttribute(CREATEBOX_ID(), ModelAPI_AttributeBoolean::typeId());
- ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), X_MIN_COOD_ID());
- ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), Y_MIN_COOD_ID());
- ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), Z_MIN_COOD_ID());
- ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), X_MAX_COOD_ID());
- ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), Y_MAX_COOD_ID());
- ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), Z_MAX_COOD_ID());
+ ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), X_MIN_COORD_ID());
+ ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), Y_MIN_COORD_ID());
+ ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), Z_MIN_COORD_ID());
+ ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), X_MAX_COORD_ID());
+ ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), Y_MAX_COORD_ID());
+ ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), Z_MAX_COORD_ID());
ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), CREATEBOX_ID());
ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), RESULT_VALUES_ID());
//=================================================================================================
void FeaturesPlugin_BoundingBox::attributeChanged(const std::string& theID)
{
- if (theID == OBJECTS_LIST_ID()) {
+ if (theID == OBJECT_ID()) {
if (myCreateFeature.get())
updateBox();
}
//=================================================================================================
void FeaturesPlugin_BoundingBox::updateValues()
{
- AttributeSelectionPtr aSelection = selection(OBJECTS_LIST_ID());
+ AttributeSelectionPtr aSelection = selection(OBJECT_ID());
if (aSelection->isInitialized()) {
AttributeDoubleArrayPtr aValues =
std::dynamic_pointer_cast<ModelAPI_AttributeDoubleArray>(attribute(RESULT_VALUES_ID()));
std::stringstream streamxmax;
std::stringstream streamymax;
std::stringstream streamzmax;
+
GeomShapePtr aShape;
if (aSelection && aSelection->isInitialized()) {
aShape = aSelection->value();
if (!aShape && aSelection->context())
aShape = aSelection->context()->shape();
}
+
if (aShape && !aShape->isEqual(myShape)) {
double aXmin, aXmax, aYmin,aYmax,aZmin,aZmax;
std::string aError;
aZmin,aZmax,
aError))
setError("Error in bounding box calculation :" + aError);
+
myShape = aShape;
streamxmin << std::setprecision(14) << aXmin;
aValues->setValue(0, aXmin);
aValues->setValue(4, aZmin);
streamzmax << std::setprecision(14) << aZmax;
aValues->setValue(5, aZmax);
- string(X_MIN_COOD_ID() )->setValue( "X = " + streamxmin.str() );
- string(Y_MIN_COOD_ID() )->setValue( "Y = " + streamymin.str() );
- string(Z_MIN_COOD_ID() )->setValue( "Z = " + streamzmin.str() );
- string(X_MAX_COOD_ID() )->setValue( "X = " + streamxmax.str() );
- string(Y_MAX_COOD_ID() )->setValue( "Y = " + streamymax.str() );
- string(Z_MAX_COOD_ID() )->setValue( "Z = " + streamzmax.str() );
+ string(X_MIN_COORD_ID() )->setValue( "X = " + streamxmin.str() );
+ string(Y_MIN_COORD_ID() )->setValue( "Y = " + streamymin.str() );
+ string(Z_MIN_COORD_ID() )->setValue( "Z = " + streamzmin.str() );
+ string(X_MAX_COORD_ID() )->setValue( "X = " + streamxmax.str() );
+ string(Y_MAX_COORD_ID() )->setValue( "Y = " + streamymax.str() );
+ string(Z_MAX_COORD_ID() )->setValue( "Z = " + streamzmax.str() );
}
}
}
//=================================================================================================
void FeaturesPlugin_BoundingBox::updateBox()
{
- myCreateFeature->boolean(FeaturesPlugin_CreateBoundingBox::COMPUTE_ID())->setValue(false);
- myCreateFeature->selection(FeaturesPlugin_CreateBoundingBox::OBJECTS_LIST_ID())
- ->setValue( selection(OBJECTS_LIST_ID())->context(),
- selection(OBJECTS_LIST_ID())->value() );
-
- AttributeDoubleArrayPtr aValuesFeatures =
- std::dynamic_pointer_cast<ModelAPI_AttributeDoubleArray>
- (myCreateFeature->attribute(RESULT_VALUES_ID()));
- AttributeDoubleArrayPtr aValues =
- std::dynamic_pointer_cast<ModelAPI_AttributeDoubleArray>(attribute(RESULT_VALUES_ID()));
- for (int anI=0; anI < 6; anI++)
- aValuesFeatures->setValue(anI,aValues->value(anI));
-
- myCreateFeature->execute();
- myCreateFeature->boolean(FeaturesPlugin_CreateBoundingBox::COMPUTE_ID())->setValue(true);
+ myCreateFeature->boolean(FeaturesPlugin_CreateBoundingBox::COMPUTE_ID())->setValue(false);
+ myCreateFeature->selection(FeaturesPlugin_CreateBoundingBox::OBJECT_ID())
+ ->setValue(selection(OBJECT_ID())->context(),
+ selection(OBJECT_ID())->value());
+
+ AttributeDoubleArrayPtr aValuesFeatures =
+ std::dynamic_pointer_cast<ModelAPI_AttributeDoubleArray>
+ (myCreateFeature->attribute(RESULT_VALUES_ID()));
+ AttributeDoubleArrayPtr aValues =
+ std::dynamic_pointer_cast<ModelAPI_AttributeDoubleArray>(attribute(RESULT_VALUES_ID()));
+ for (int anI=0; anI < 6; anI++)
+ aValuesFeatures->setValue(anI,aValues->value(anI));
+
+ myCreateFeature->execute();
+ myCreateFeature->boolean(FeaturesPlugin_CreateBoundingBox::COMPUTE_ID())->setValue(true);
}
class FeaturesPlugin_BoundingBox : public FeaturesPlugin_CommonBoundingBox
{
public:
- inline static const std::string& ID()
+ /// Bounding box macro kind.
+ inline static const std::string& ID()
{
static const std::string MY_ID("BoundingBoxMacro");
return MY_ID;
}
- /// \return the kind of a feature.
- virtual const std::string& getKind()
- {
- return ID();
- }
-
/// Attribute name for object selected.
- inline static const std::string& OBJECTS_LIST_ID()
+ inline static const std::string& OBJECT_ID()
{
- static const std::string MY_OBJECTS_LIST_ID("main_object");
- return MY_OBJECTS_LIST_ID;
+ static const std::string MY_OBJECT_ID("main_object");
+ return MY_OBJECT_ID;
}
/// Attribute name for x coodinate.
- inline static const std::string& X_MIN_COOD_ID()
+ inline static const std::string& X_MIN_COORD_ID()
{
- static const std::string MY_X_MIN_COOD_ID("xmincoordinate");
- return MY_X_MIN_COOD_ID;
+ static const std::string MY_X_MIN_COORD_ID("xmincoordinate");
+ return MY_X_MIN_COORD_ID;
}
/// Attribute name for y coodinate.
- inline static const std::string& Y_MIN_COOD_ID()
+ inline static const std::string& Y_MIN_COORD_ID()
{
- static const std::string MY_Y_MIN_COOD_ID("ymincoordinate");
- return MY_Y_MIN_COOD_ID;
+ static const std::string MY_Y_MIN_COORD_ID("ymincoordinate");
+ return MY_Y_MIN_COORD_ID;
}
/// Attribute name for z coodinate.
- inline static const std::string& Z_MIN_COOD_ID()
+ inline static const std::string& Z_MIN_COORD_ID()
{
- static const std::string MY_Z_MIN_COOD_ID("zmincoordinate");
- return MY_Z_MIN_COOD_ID;
+ static const std::string MY_Z_MIN_COORD_ID("zmincoordinate");
+ return MY_Z_MIN_COORD_ID;
}
/// Attribute name for x max coodinate.
- inline static const std::string& X_MAX_COOD_ID()
+ inline static const std::string& X_MAX_COORD_ID()
{
- static const std::string MY_X_MAX_COOD_ID("xmaxcoordinate");
- return MY_X_MAX_COOD_ID;
+ static const std::string MY_X_MAX_COORD_ID("xmaxcoordinate");
+ return MY_X_MAX_COORD_ID;
}
/// Attribute name for y max coodinate.
- inline static const std::string& Y_MAX_COOD_ID()
+ inline static const std::string& Y_MAX_COORD_ID()
{
- static const std::string MY_Y_MAX_COOOD_ID("ymaxcoordinate");
- return MY_Y_MAX_COOOD_ID;
+ static const std::string MY_Y_MAX_COORD_ID("ymaxcoordinate");
+ return MY_Y_MAX_COORD_ID;
}
/// Attribute name for z max coodinate.
- inline static const std::string& Z_MAX_COOD_ID()
+ inline static const std::string& Z_MAX_COORD_ID()
{
- static const std::string MY_Z_MAX_COOD_ID("zmaxcoordinate");
- return MY_Z_MAX_COOD_ID;
+ static const std::string MY_Z_MAX_COORD_ID("zmaxcoordinate");
+ return MY_Z_MAX_COORD_ID;
}
- /// Attribute name for checkbox create box.
+ /// Attribute name for checkbox create box.
inline static const std::string& CREATEBOX_ID()
{
static const std::string MY_CREATEBOX_ID("createbox");
return MY_CREATEBOX_ID;
}
- /// Attribute name for values of result.
+ /// Attribute name for values of result.
inline static const std::string& RESULT_VALUES_ID()
{
static const std::string MY_RESULT_VALUES_ID("result_values");
return MY_RESULT_VALUES_ID;
}
+ /// \return the kind of a feature.
+ virtual const std::string& getKind()
+ {
+ return ID();
+ }
+
/// Performs the algorithm and stores results it in the data structure.
FEATURESPLUGIN_EXPORT virtual void execute();
/// Use plugin manager for features creation
FeaturesPlugin_BoundingBox();
- private:
+private:
/// Return Attribut values of result.
virtual AttributePtr attributResultValues();
theResultBox->generated((*it).second, (*it).first);
}
}
-
class FeaturesPlugin_CommonBoundingBox : public ModelAPI_Feature
{
public:
-
/// Performs the algorithm and stores results it in the data structure.
FEATURESPLUGIN_EXPORT virtual void execute(){};
/// Return Attribut values of result.
virtual AttributePtr attributResultValues() = 0;
- protected:
+protected:
FeaturesPlugin_CommonBoundingBox() {}
/// Create box with two points
void FeaturesPlugin_CreateBoundingBox::initAttributes()
{
// attribute for object selected
- data()->addAttribute(OBJECTS_LIST_ID(), ModelAPI_AttributeSelection::typeId());
+ data()->addAttribute(OBJECT_ID(), ModelAPI_AttributeSelection::typeId());
+
// attributes for result message and values
- data()->addAttribute(X_MIN_COOD_ID(), ModelAPI_AttributeString::typeId());
- data()->addAttribute(Y_MIN_COOD_ID(), ModelAPI_AttributeString::typeId());
- data()->addAttribute(Z_MIN_COOD_ID(), ModelAPI_AttributeString::typeId());
- data()->addAttribute(X_MAX_COOD_ID(), ModelAPI_AttributeString::typeId());
- data()->addAttribute(Y_MAX_COOD_ID(), ModelAPI_AttributeString::typeId());
- data()->addAttribute(Z_MAX_COOD_ID(), ModelAPI_AttributeString::typeId());
+ data()->addAttribute(X_MIN_COORD_ID(), ModelAPI_AttributeString::typeId());
+ data()->addAttribute(Y_MIN_COORD_ID(), ModelAPI_AttributeString::typeId());
+ data()->addAttribute(Z_MIN_COORD_ID(), ModelAPI_AttributeString::typeId());
+ data()->addAttribute(X_MAX_COORD_ID(), ModelAPI_AttributeString::typeId());
+ data()->addAttribute(Y_MAX_COORD_ID(), ModelAPI_AttributeString::typeId());
+ data()->addAttribute(Z_MAX_COORD_ID(), ModelAPI_AttributeString::typeId());
data()->addAttribute(COMPUTE_ID(), ModelAPI_AttributeBoolean::typeId());
- ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), X_MIN_COOD_ID());
- ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), Y_MIN_COOD_ID());
- ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), Z_MIN_COOD_ID());
- ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), X_MAX_COOD_ID());
- ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), Y_MAX_COOD_ID());
- ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), Z_MAX_COOD_ID());
+ ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), X_MIN_COORD_ID());
+ ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), Y_MIN_COORD_ID());
+ ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), Z_MIN_COORD_ID());
+ ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), X_MAX_COORD_ID());
+ ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), Y_MAX_COORD_ID());
+ ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), Z_MAX_COORD_ID());
ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), COMPUTE_ID());
- ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), OBJECTS_LIST_ID());
+ ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), OBJECT_ID());
data()->addAttribute(RESULT_VALUES_ID(), ModelAPI_AttributeDoubleArray::typeId());
data()->realArray(RESULT_VALUES_ID())->setSize(6);
data()->boolean(COMPUTE_ID())->setValue(true);
-
}
//=================================================================================================
void FeaturesPlugin_CreateBoundingBox::execute()
{
- updateValues();
- createBoxByTwoPoints();
+ updateValues();
+ createBoxByTwoPoints();
}
//=================================================================================================
//=================================================================================================
void FeaturesPlugin_CreateBoundingBox::updateValues()
{
- AttributeSelectionPtr aSelection = selection(OBJECTS_LIST_ID());
+ AttributeSelectionPtr aSelection = selection(OBJECT_ID());
AttributeDoubleArrayPtr aValues =
std::dynamic_pointer_cast<ModelAPI_AttributeDoubleArray>(attribute(RESULT_VALUES_ID()));
std::stringstream streamxmax;
std::stringstream streamymax;
std::stringstream streamzmax;
+
GeomShapePtr aShape;
if (aSelection && aSelection->isInitialized()) {
aShape = aSelection->value();
if (!aShape && aSelection->context())
aShape = aSelection->context()->shape();
}
+
AttributeBooleanPtr anIsCompute = boolean(COMPUTE_ID());
if (!anIsCompute->value()) {
myShape = aShape;
streamzmin << std::setprecision(14) << aValues->value(4);
streamzmax << std::setprecision(14) << aValues->value(5);
}
- string(X_MIN_COOD_ID() )->setValue( "X = " + streamxmin.str() );
- string(Y_MIN_COOD_ID() )->setValue( "Y = " + streamymin.str() );
- string(Z_MIN_COOD_ID() )->setValue( "Z = " + streamzmin.str() );
- string(X_MAX_COOD_ID() )->setValue( "X = " + streamxmax.str() );
- string(Y_MAX_COOD_ID() )->setValue( "Y = " + streamymax.str() );
- string(Z_MAX_COOD_ID() )->setValue( "Z = " + streamzmax.str() );
+
+ string(X_MIN_COORD_ID() )->setValue( "X = " + streamxmin.str() );
+ string(Y_MIN_COORD_ID() )->setValue( "Y = " + streamymin.str() );
+ string(Z_MIN_COORD_ID() )->setValue( "Z = " + streamzmin.str() );
+ string(X_MAX_COORD_ID() )->setValue( "X = " + streamxmax.str() );
+ string(Y_MAX_COORD_ID() )->setValue( "Y = " + streamymax.str() );
+ string(Z_MAX_COORD_ID() )->setValue( "Z = " + streamzmax.str() );
}
}
class FeaturesPlugin_CreateBoundingBox : public FeaturesPlugin_CommonBoundingBox
{
public:
- inline static const std::string& ID()
+ /// Bounding box kind.
+ inline static const std::string& ID()
{
static const std::string MY_ID("BoundingBox");
return MY_ID;
}
- /// \return the kind of a feature.
- virtual const std::string& getKind()
- {
- return ID();
- }
-
/// Attribute name for object selected.
- inline static const std::string& OBJECTS_LIST_ID()
+ inline static const std::string& OBJECT_ID()
{
- static const std::string MY_OBJECTS_LIST_ID("main_object");
- return MY_OBJECTS_LIST_ID;
+ static const std::string MY_OBJECT_ID("main_object");
+ return MY_OBJECT_ID;
}
/// Attribute name for x coodinate.
- inline static const std::string& X_MIN_COOD_ID()
+ inline static const std::string& X_MIN_COORD_ID()
{
- static const std::string MY_X_MIN_COOD_ID("xmincoordinate");
- return MY_X_MIN_COOD_ID;
+ static const std::string MY_X_MIN_COORD_ID("xmincoordinate");
+ return MY_X_MIN_COORD_ID;
}
/// Attribute name for y coodinate.
- inline static const std::string& Y_MIN_COOD_ID()
+ inline static const std::string& Y_MIN_COORD_ID()
{
- static const std::string MY_Y_MIN_COOD_ID("ymincoordinate");
- return MY_Y_MIN_COOD_ID;
+ static const std::string MY_Y_MIN_COORD_ID("ymincoordinate");
+ return MY_Y_MIN_COORD_ID;
}
/// Attribute name for z coodinate.
- inline static const std::string& Z_MIN_COOD_ID()
+ inline static const std::string& Z_MIN_COORD_ID()
{
- static const std::string MY_Z_MIN_COOD_ID("zmincoordinate");
- return MY_Z_MIN_COOD_ID;
+ static const std::string MY_Z_MIN_COORD_ID("zmincoordinate");
+ return MY_Z_MIN_COORD_ID;
}
- /// Attribute name for x max coodinate.
- inline static const std::string& X_MAX_COOD_ID()
+ /// Attribute name for x max coodinate.
+ inline static const std::string& X_MAX_COORD_ID()
{
- static const std::string MY_X_MAX_COOD_ID("xmaxcoordinate");
- return MY_X_MAX_COOD_ID;
+ static const std::string MY_X_MAX_COORD_ID("xmaxcoordinate");
+ return MY_X_MAX_COORD_ID;
}
/// Attribute name for y max coodinate.
- inline static const std::string& Y_MAX_COOD_ID()
+ inline static const std::string& Y_MAX_COORD_ID()
{
- static const std::string MY_Y_MAX_COOOD_ID("ymaxcoordinate");
- return MY_Y_MAX_COOOD_ID;
+ static const std::string MY_Y_MAX_COORD_ID("ymaxcoordinate");
+ return MY_Y_MAX_COORD_ID;
}
/// Attribute name for z max coodinate.
- inline static const std::string& Z_MAX_COOD_ID()
+ inline static const std::string& Z_MAX_COORD_ID()
{
- static const std::string MY_Z_MAX_COOD_ID("zmaxcoordinate");
- return MY_Z_MAX_COOD_ID;
+ static const std::string MY_Z_MAX_COORD_ID("zmaxcoordinate");
+ return MY_Z_MAX_COORD_ID;
}
/// Attribute name for values of result.
return MY_COMPUTE_ID;
}
+ /// \return the kind of a feature.
+ virtual const std::string& getKind()
+ {
+ return ID();
+ }
+
/// Performs the algorithm and stores results it in the data structure.
FEATURESPLUGIN_EXPORT virtual void execute();
/// Use plugin manager for features creation
FeaturesPlugin_CreateBoundingBox();
- private:
+private:
/// Update values displayed.
void updateValues();
#include <FeaturesPlugin_BooleanCommon.h>
#include <FeaturesPlugin_BooleanSmash.h>
#include <FeaturesPlugin_BooleanFill.h>
+#include <FeaturesPlugin_BoundingBox.h>
#include <FeaturesPlugin_Chamfer.h>
+#include <FeaturesPlugin_CreateBoundingBox.h>
#include <FeaturesPlugin_Defeaturing.h>
#include <FeaturesPlugin_Extrusion.h>
#include <FeaturesPlugin_ExtrusionCut.h>
#include <FeaturesPlugin_ExtrusionFuse.h>
#include <FeaturesPlugin_Fillet.h>
#include <FeaturesPlugin_Fillet1D.h>
+#include <FeaturesPlugin_GeometryCalculation.h>
#include <FeaturesPlugin_Intersection.h>
#include <FeaturesPlugin_Measurement.h>
-#include <FeaturesPlugin_GeometryCalculation.h>
-#include <FeaturesPlugin_BoundingBox.h>
-#include <FeaturesPlugin_CreateBoundingBox.h>
#include <FeaturesPlugin_MultiRotation.h>
#include <FeaturesPlugin_MultiTranslation.h>
#include <FeaturesPlugin_Partition.h>
} else if (theFeatureID == FeaturesPlugin_Fillet1D::ID()) {
return FeaturePtr(new FeaturesPlugin_Fillet1D);
} else if (theFeatureID == FeaturesPlugin_Measurement::ID()) {
- } else if (theFeatureID == FeaturesPlugin_GeometryCalculation::ID()) {
- return FeaturePtr(new FeaturesPlugin_GeometryCalculation);
- } else if (theFeatureID == FeaturesPlugin_BoundingBox::ID()) {
- return FeaturePtr(new FeaturesPlugin_BoundingBox);
- } else if (theFeatureID == FeaturesPlugin_CreateBoundingBox::ID()) {
- return FeaturePtr(new FeaturesPlugin_CreateBoundingBox);
+ return FeaturePtr(new FeaturesPlugin_Measurement);
} else if (theFeatureID == FeaturesPlugin_RemoveResults::ID()) {
return FeaturePtr(new FeaturesPlugin_RemoveResults);
} else if (theFeatureID == FeaturesPlugin_Chamfer::ID()) {
return FeaturePtr(new FeaturesPlugin_ImportResult);
} else if (theFeatureID == FeaturesPlugin_Defeaturing::ID()) {
return FeaturePtr(new FeaturesPlugin_Defeaturing);
+ } else if (theFeatureID == FeaturesPlugin_GeometryCalculation::ID()) {
+ return FeaturePtr(new FeaturesPlugin_GeometryCalculation);
+ } else if (theFeatureID == FeaturesPlugin_BoundingBox::ID()) {
+ return FeaturePtr(new FeaturesPlugin_BoundingBox);
+ } else if (theFeatureID == FeaturesPlugin_CreateBoundingBox::ID()) {
+ return FeaturePtr(new FeaturesPlugin_CreateBoundingBox);
}
<source>Angular Copy</source>
<translation>Copie angulaire</translation>
</message>
- <message>
- <source>Bounding box</source>
- <translation>Boite englobante</translation>
- </message>
- <message>
- <source>Geometry calculation</source>
- <translation>Calcul de la géométrie</translation>
- </message>
<message>
<source>Linear copy</source>
<translation>Copie linéaire</translation>
<source>Measurement</source>
<translation>Mesure</translation>
</message>
+ <message>
+ <source>Geometry calculation</source>
+ <translation>Calcul de la géométrie</translation>
+ </message>
+ <message>
+ <source>Bounding box</source>
+ <translation>Boîte englobante</translation>
+ </message>
<message>
<source>Placement</source>
<translation>Placement</translation>
<translation>Translation</translation>
</message>
</context>
-
+
<!-- Bounding Box -->
<context>
<name>BoundingBox</name>
<message>
<source>BoundingBox</source>
- <translation>Boite englobante</translation>
+ <translation>Boîte englobante</translation>
</message>
<message>
<source>Create box</source>
- <translation>Créer la boite</translation>
+ <translation>Créer la boîte</translation>
</message>
</context>
<context>
<name>BoundingBoxMacro</name>
<message>
<source>BoundingBox</source>
- <translation>Boite englobante</translation>
+ <translation>Boîte englobante</translation>
</message>
<message>
<source>Create box</source>
- <translation>Créer la boite</translation>
+ <translation>Créer la boîte</translation>
</message>
</context>
+
<!-- Chamfer -->
<context>
<name>Chamfer</name>
<context>
<name>Extrusion:sketch</name>
<message>
- <source>Select:<br /> 1. Planar face of non-sketch object or a plane. Sketch creation will be started.<br /> 2. An existing sketch face or contour. Extrusion will be filled by it.<br /> 3. An existing result shape of kind: wires/edge/vertices. Extrusion will be filled by it.</source>
- <translation>Sélectionnez : <br /> 1. Face plane d'un objet non esquissé ou d'un plan. La création de l'esquisse sera lancée. <br /> 2. Une face ou un contour d'esquisse existant. L'extrusion sera remplie par elle. <br /> 3. Une forme de résultat existante de type: contours / arête / sommets. L'extrusion sera remplie par elle.</translation>
+ <source>Select:<br /> 1. Planar face of non-sketch object or a plane. Sketch creation will be started.<br /> 2. An existing sketch face or contour. Extrusion will be filled by it.<br /> 3. An existing result shape of kind: wires/edges/vertices. Extrusion will be filled by it.</source>
+ <translation>Sélectionnez : <br /> 1. Face plane d'un objet non esquissé ou d'un plan. La création de l'esquisse sera lancée. <br /> 2. Une face ou un contour d'esquisse existant. L'extrusion sera remplie par elle. <br /> 3. Une forme de résultat existante de type: contours / arêtes / sommets. L'extrusion sera remplie par elle.</translation>
</message>
</context>
<context>
<name>ExtrusionCut:sketch</name>
<message>
- <source>Select:<br /> 1. Planar face of non-sketch object or a plane. Sketch creation will be started.<br /> 2. An existing sketch face or contour. Extrusion will be filled by it.<br /> 3. An existing result shape of kind: wires/edge/vertices. Extrusion will be filled by it.</source>
- <translation>Sélectionnez : <br /> 1. Face plane d'un objet non esquissé ou d'un plan. La création de l'esquisse sera lancée. <br /> 2. Une face ou un contour d'esquisse existant. L'extrusion sera remplie par elle. <br /> 3. Une forme de résultat existante de type: contours / arête / sommets. L'extrusion sera remplie par elle.</translation>
+ <source>Select:<br /> 1. Planar face of non-sketch object or a plane. Sketch creation will be started.<br /> 2. An existing sketch face or contour. Extrusion will be filled by it.<br /> 3. An existing result shape of kind: wires/edges/vertices. Extrusion will be filled by it.</source>
+ <translation>Sélectionnez : <br /> 1. Face plane d'un objet non esquissé ou d'un plan. La création de l'esquisse sera lancée. <br /> 2. Une face ou un contour d'esquisse existant. L'extrusion sera remplie par elle. <br /> 3. Une forme de résultat existante de type: contours / arêtes / sommets. L'extrusion sera remplie par elle.</translation>
</message>
</context>
<context>
<context>
<name>ExtrusionFuse:sketch</name>
<message>
- <source>Select:<br /> 1. Planar face of non-sketch object or a plane. Sketch creation will be started.<br /> 2. An existing sketch face or contour. Extrusion will be filled by it.<br /> 3. An existing result shape of kind: wires/edge/vertices. Extrusion will be filled by it.</source>
- <translation>Sélectionnez : <br /> 1. Face plane d'un objet non esquissé ou d'un plan. La création de l'esquisse sera lancée. <br /> 2. Une face ou un contour d'esquisse existant. L'extrusion sera remplie par elle. <br /> 3. Une forme de résultat existante de type: contours / arête / sommets. L'extrusion sera remplie par elle.</translation>
+ <source>Select:<br /> 1. Planar face of non-sketch object or a plane. Sketch creation will be started.<br /> 2. An existing sketch face or contour. Extrusion will be filled by it.<br /> 3. An existing result shape of kind: wires/edges/vertices. Extrusion will be filled by it.</source>
+ <translation>Sélectionnez : <br /> 1. Face plane d'un objet non esquissé ou d'un plan. La création de l'esquisse sera lancée. <br /> 2. Une face ou un contour d'esquisse existant. L'extrusion sera remplie par elle. <br /> 3. Une forme de résultat existante de type: contours / arêtes / sommets. L'extrusion sera remplie par elle.</translation>
</message>
</context>
<context>
<context>
<name>Revolution:sketch</name>
<message>
- <source>Select:<br /> 1. Planar face of non-sketch object or a plane. Sketch creation will be started.<br /> 2. An existing sketch face or contour. Extrusion will be filled by it.<br /> 3. An existing result shape of kind: wires/edge/vertices. Extrusion will be filled by it.</source>
- <translation>Sélectionnez : <br /> 1. Face plane d'un objet non esquissé ou d'un plan. La création de l'esquisse sera lancée. <br /> 2. Une face ou un contour d'esquisse existant. L'extrusion sera remplie par elle. <br /> 3. Une forme de résultat existante de type: contours / arête / sommets. L'extrusion sera remplie par elle.</translation>
+ <source>Select:<br /> 1. Planar face of non-sketch object or a plane. Sketch creation will be started.<br /> 2. An existing sketch face or contour. Extrusion will be filled by it.<br /> 3. An existing result shape of kind: wires/edges/vertices. Extrusion will be filled by it.</source>
+ <translation>Sélectionnez : <br /> 1. Face plane d'un objet non esquissé ou d'un plan. La création de l'esquisse sera lancée. <br /> 2. Une face ou un contour d'esquisse existant. L'extrusion sera remplie par elle. <br /> 3. Une forme de résultat existante de type: contours / arêtes / sommets. L'extrusion sera remplie par elle.</translation>
</message>
</context>
<context>
<context>
<name>RevolutionCut:sketch</name>
<message>
- <source>Select:<br /> 1. Planar face of non-sketch object or a plane. Sketch creation will be started.<br /> 2. An existing sketch face or contour. Extrusion will be filled by it.<br /> 3. An existing result shape of kind: wires/edge/vertices. Extrusion will be filled by it.</source>
- <translation>Sélectionnez : <br /> 1. Face plane d'un objet non esquissé ou d'un plan. La création de l'esquisse sera lancée. <br /> 2. Une face ou un contour d'esquisse existant. L'extrusion sera remplie par elle. <br /> 3. Une forme de résultat existante de type: contours / arête / sommets. L'extrusion sera remplie par elle.</translation>
+ <source>Select:<br /> 1. Planar face of non-sketch object or a plane. Sketch creation will be started.<br /> 2. An existing sketch face or contour. Extrusion will be filled by it.<br /> 3. An existing result shape of kind: wires/edges/vertices. Extrusion will be filled by it.</source>
+ <translation>Sélectionnez : <br /> 1. Face plane d'un objet non esquissé ou d'un plan. La création de l'esquisse sera lancée. <br /> 2. Une face ou un contour d'esquisse existant. L'extrusion sera remplie par elle. <br /> 3. Une forme de résultat existante de type: contours / arêtes / sommets. L'extrusion sera remplie par elle.</translation>
</message>
</context>
<context>
<name>RevolutionFuse:sketch</name>
<message>
- <source>Select:<br /> 1. Planar face of non-sketch object or a plane. Sketch creation will be started.<br /> 2. An existing sketch face or contour. Extrusion will be filled by it.<br /> 3. An existing result shape of kind: wires/edge/vertices. Extrusion will be filled by it.</source>
- <translation>Sélectionnez : <br /> 1. Face plane d'un objet non esquissé ou d'un plan. La création de l'esquisse sera lancée. <br /> 2. Une face ou un contour d'esquisse existant. L'extrusion sera remplie par elle. <br /> 3. Une forme de résultat existante de type: contours / arête / sommets. L'extrusion sera remplie par elle.</translation>
+ <source>Select:<br /> 1. Planar face of non-sketch object or a plane. Sketch creation will be started.<br /> 2. An existing sketch face or contour. Extrusion will be filled by it.<br /> 3. An existing result shape of kind: wires/edges/vertices. Extrusion will be filled by it.</source>
+ <translation>Sélectionnez : <br /> 1. Face plane d'un objet non esquissé ou d'un plan. La création de l'esquisse sera lancée. <br /> 2. Une face ou un contour d'esquisse existant. L'extrusion sera remplie par elle. <br /> 3. Une forme de résultat existante de type: contours / arêtes / sommets. L'extrusion sera remplie par elle.</translation>
</message>
</context>
<translation>Pas pour la direction angulaire</translation>
</message>
</context>
- <!--Bounding box-->
- <context>
- <name>BoundingBoxMacro</name>
- <message>
- <source>Bounding box</source>
- <translation>Boîte englobante</translation>
- </message>
- </context>
- <context>
- <name>BoundingBoxMacro:main_object</name>
- <message>
- <source>Object</source>
- <translation>Objet</translation>
- </message>
- </context>
- <context>
- <name>BoundingBoxMacro:createbox</name>
- <message>
- <source>Create box</source>
- <translation>Créer la boite</translation>
- </message>
- </context>
- <context>
- <name>BoundingBox</name>
- <message>
- <source>Bounding box</source>
- <translation>Boîte englobante</translation>
- </message>
- </context>
- <context>
- <name>BoundingBox:main_object</name>
- <message>
- <source>Object</source>
- <translation>Objet</translation>
- </message>
- </context>
- <!--Geometry calculation-->
- <context>
- <name>GeometryCalculation</name>
- <message>
- <source>Geometry calculation</source>
- <translation>Calcul de la géometrie</translation>
- </message>
- </context>
- <context>
- <name>GeometryCalculation:main_object</name>
- <message>
- <source>Object</source>
- <translation>Objet</translation>
- </message>
- </context>
- <context>
- <name>GeometryCalculation</name>
- <message>
- <source>Length = </source>
- <translation>Longueur = </translation>
- </message>
- <message>
- <source>Area = </source>
- <translation>Surface = </translation>
- </message>
- <message>
- <source>Volume = </source>
- <translation>Volume = </translation>
- </message>
- </context>
<!-- LinearCopy -->
<context>
<name>LinearCopy</name>
</message>
</context>
+ <!--Bounding box-->
+ <context>
+ <name>BoundingBoxMacro</name>
+ <message>
+ <source>Bounding box</source>
+ <translation>Boîte englobante</translation>
+ </message>
+ </context>
+ <context>
+ <name>BoundingBoxMacro:main_object</name>
+ <message>
+ <source>Object</source>
+ <translation>Objet</translation>
+ </message>
+ </context>
+ <context>
+ <name>BoundingBoxMacro:createbox</name>
+ <message>
+ <source>Create box</source>
+ <translation>Créer la boîte</translation>
+ </message>
+ </context>
+ <context>
+ <name>BoundingBox</name>
+ <message>
+ <source>Bounding box</source>
+ <translation>Boîte englobante</translation>
+ </message>
+ </context>
+ <context>
+ <name>BoundingBox:main_object</name>
+ <message>
+ <source>Object</source>
+ <translation>Objet</translation>
+ </message>
+ </context>
+
+ <!--Geometry calculation-->
+ <context>
+ <name>GeometryCalculation</name>
+ <message>
+ <source>Geometry calculation</source>
+ <translation>Calcul de la géometrie</translation>
+ </message>
+ </context>
+ <context>
+ <name>GeometryCalculation:main_object</name>
+ <message>
+ <source>Object</source>
+ <translation>Objet</translation>
+ </message>
+ </context>
+ <context>
+ <name>GeometryCalculation</name>
+ <message>
+ <source>Length = </source>
+ <translation>Longueur = </translation>
+ </message>
+ <message>
+ <source>Area = </source>
+ <translation>Surface = </translation>
+ </message>
+ <message>
+ <source>Volume = </source>
+ <translation>Volume = </translation>
+ </message>
+ </context>
+
<!-- Measurement -->
<context>
<name>Measurement</name>
--- /dev/null
+<source>
+ <shape_selector id="main_object"
+ label="Object"
+ tooltip="Select a object"
+ shape_types="vertex edge face solid compsolid compound object"
+ default=""
+ geometrical_selection="true">
+ <validator id="GeomValidators_ConstructionComposite"/>
+ <validator id="GeomValidators_ShapeType" parameters="vertex,line,edge,wire,face,shell,solid,compsolid,compound"/>
+ </shape_selector>
+ <groupbox title="Min">
+ <label id="xmincoordinate" isSelectable = "true"/>
+ <label id="ymincoordinate" isSelectable = "true"/>
+ <label id="zmincoordinate" isSelectable = "true"/>
+ </groupbox>
+ <groupbox title="Max">
+ <label id="xmaxcoordinate" isSelectable = "true"/>
+ <label id="ymaxcoordinate" isSelectable = "true"/>
+ <label id="zmaxcoordinate" isSelectable = "true"/>
+ </groupbox>
+ <boolvalue id="createbox" label="Create box" default="false"/>
+</source>
--- /dev/null
+<source>
+ <shape_selector id="main_object"
+ label="Object"
+ tooltip="Select a object"
+ shape_types="vertex edge face solid compsolid compound object"
+ default=""
+ geometrical_selection="true">
+ <validator id="GeomValidators_ConstructionComposite"/>
+ <validator id="GeomValidators_ShapeType" parameters="vertex,line,edge,wire,face,shell,solid,compsolid,compound"/>
+ </shape_selector>
+ <groupbox title="Min">
+ <label id="xmincoordinate" isSelectable = "true"/>
+ <label id="ymincoordinate" isSelectable = "true"/>
+ <label id="zmincoordinate" isSelectable = "true"/>
+ </groupbox>
+ <groupbox title="Max">
+ <label id="xmaxcoordinate" isSelectable = "true"/>
+ <label id="ymaxcoordinate" isSelectable = "true"/>
+ <label id="zmaxcoordinate" isSelectable = "true"/>
+ </groupbox>
+</source>
booleanOperations.rst
angularCopyFeature.rst
+ boundingBoxFeature.rst
chamferFeature.rst
copyFeature.rst
defeaturingFeature.rst
fillet1dFeature.rst
filletFeature.rst
fuseFeatureFaces.rst
+ geometryCalculationFeature.rst
importResultFeature.rst
linearCopyFeature.rst
measurementFeature.rst
- geometryCalculationFeature.rst
- boundingBoxFeature.rst
pipeFeature.rst
placementFeature.rst
recoverFeature.rst
+++ /dev/null
-
- .. _tui_create_Bounding_Box:
-
-Create bounding box
-===================
-
-.. literalinclude:: examples/createBoundingBox.py
- :linenos:
- :language: python
-
-:download:`Download this script <examples/createBoundingBox.py>`
--- /dev/null
+
+ .. _tui_create_Bounding_Box:
+
+Create bounding box
+===================
+
+.. literalinclude:: examples/create_bounding_box.py
+ :linenos:
+ :language: python
+
+:download:`Download this script <examples/create_bounding_box.py>`
Result of **Bounding box** where **Create box** is checked.
-.. figure:: images/BoundinBoxResult.png
+.. figure:: images/BoundingBoxResult.png
:align: center
Object selected
-**See Also** a sample TUI Script of :ref:`tui_create_Bounding_Box` operation.
\ No newline at end of file
+**See Also** a sample TUI Script of :ref:`tui_create_Bounding_Box` operation.
+++ /dev/null
-from salome.shaper import model
-import os
-
-model.begin()
-file_path = os.path.join(os.getenv("DATA_DIR"),"Shapes","Step","screw.step")
-partSet = model.moduleDocument()
-Part_1 = model.addPart(partSet)
-Part_1_doc = Part_1.document()
-Import_1 = model.addImport(Part_1_doc,file_path)
-### Create BoundingBox
-BoundingBox_1 = model.getBoundingBox(Part_1_doc, model.selection("SOLID", "screw_1"))
-model.do()
-model.end()
--- /dev/null
+from salome.shaper import model
+import os
+
+model.begin()
+file_path = os.path.join(os.getenv("DATA_DIR"),"Shapes","Step","screw.step")
+partSet = model.moduleDocument()
+Part_1 = model.addPart(partSet)
+Part_1_doc = Part_1.document()
+Import_1 = model.addImport(Part_1_doc,file_path)
+model.do()
+### Create BoundingBox
+BoundingBox_1 = model.getBoundingBox(Part_1_doc, model.selection("SOLID", "screw_1"))
+model.end()
<source path="chamfer_widget.xml"/>
</feature>
<feature id="FusionFaces" title="Fuse Faces" tooltip="Performs fusion of connected faces"
- icon="icons/Features/fusion_faces.png" auto_preview="true" helpfile="FeaturesPlugin/fusionFacesFeature.html">
+ icon="icons/Features/fusion_faces.png" auto_preview="true" helpfile="fuseFeatureFaces.html">
<source path="fusion_faces_widget.xml"/>
</feature>
<feature id="Defeaturing" title="Defeaturing" tooltip="Perform removing faces from solid"
</workbench>
<workbench id="Inspection">
<group id="Calculation">
- <feature id="GeometryCalculation" title="Geometry calculation" tooltip="Calculate properties of objects"
+ <feature id="GeometryCalculation" title="Geometry calculation" tooltip="Calculate properties of objects"
icon="icons/Features/geometryCalculation.png" helpfile="geometryCalculationFeature.html" abort_confirmation="false">
<source path="geometry_calculation_widget.xml"/>
</feature>
<feature id="BoundingBoxMacro" title="Bounding box" tooltip="Calculate the bounding box" auto_preview="true"
- icon="icons/Features/bounding.png" helpfile="boundingBoxFeature.html">
- <source path="Bounding_Box_widget.xml"/>
+ icon="icons/Features/bounding.png" helpfile="boundingBoxFeature.html">
+ <source path="bounding_box_widget.xml"/>
</feature>
<feature id="BoundingBox" title="Bounding box" tooltip="Calculate the bounding box" auto_preview="true"
- icon="icons/Features/bounding.png" helpfile="boundingBoxFeature.html" internal="1">
- <source path="Create_Bounding_Box_widget.xml"/>
+ icon="icons/Features/bounding.png" helpfile="boundingBoxFeature.html" internal="1">
+ <source path="create_bounding_box_widget.xml"/>
</feature>
<feature id="Measurement" title="Measurement" tooltip="Calculate properties of objects"
icon="icons/Features/measurement.png" helpfile="measurementFeature.html" abort_confirmation="false">
GeomAlgoAPI_Prism.h
GeomAlgoAPI_Revolution.h
GeomAlgoAPI_Boolean.h
- GeomAlgoAPI_GeometryCalculation.h
- GeomAlgoAPI_BoundingBox.h
GeomAlgoAPI_ThroughAll.h
GeomAlgoAPI_Rotation.h
GeomAlgoAPI_Translation.h
GeomAlgoAPI_Projection.h
GeomAlgoAPI_Chamfer.h
GeomAlgoAPI_Defeaturing.h
+ GeomAlgoAPI_GeometryCalculation.h
+ GeomAlgoAPI_BoundingBox.h
)
SET(PROJECT_SOURCES
GeomAlgoAPI_Prism.cpp
GeomAlgoAPI_Revolution.cpp
GeomAlgoAPI_Boolean.cpp
- GeomAlgoAPI_GeometryCalculation.cpp
- GeomAlgoAPI_BoundingBox.cpp
GeomAlgoAPI_ThroughAll.cpp
GeomAlgoAPI_Rotation.cpp
GeomAlgoAPI_Translation.cpp
GeomAlgoAPI_Projection.cpp
GeomAlgoAPI_Chamfer.cpp
GeomAlgoAPI_Defeaturing.cpp
+ GeomAlgoAPI_GeometryCalculation.cpp
+ GeomAlgoAPI_BoundingBox.cpp
)
SET(PROJECT_LIBRARIES
#include <Geom_ToroidalSurface.hxx>
/**
- * This function constructs and returns modified shape from the original one
- * for singular cases. It is used for the method GetMinDistanceSingular.
- *
- * \param theShape the original shape
- * \param theModifiedShape output parameter. The modified shape.
- * \param theAddDist output parameter. The added distance for modified shape.
- * \retval true if the shape is modified; false otherwise.
- *
- * \internal
- */
- Standard_Boolean ModifyShape(const TopoDS_Shape &theShape,
- TopoDS_Shape &theModifiedShape,
- Standard_Real &theAddDist)
- {
- TopExp_Explorer anExp;
- int nbf = 0;
-
- theAddDist = 0.;
- theModifiedShape.Nullify();
-
- for ( anExp.Init( theShape, TopAbs_FACE ); anExp.More(); anExp.Next() ) {
- nbf++;
- theModifiedShape = anExp.Current();
+* This function constructs and returns modified shape from the original one
+* for singular cases. It is used for the method GetMinDistanceSingular.
+*
+* \param theShape the original shape
+* \param theModifiedShape output parameter. The modified shape.
+* \param theAddDist output parameter. The added distance for modified shape.
+* \retval true if the shape is modified; false otherwise.
+*
+* \internal
+*/
+Standard_Boolean ModifyShape(const TopoDS_Shape &theShape,
+ TopoDS_Shape &theModifiedShape,
+ Standard_Real &theAddDist)
+{
+ TopExp_Explorer anExp;
+ int nbf = 0;
+
+ theAddDist = 0.;
+ theModifiedShape.Nullify();
+
+ for ( anExp.Init( theShape, TopAbs_FACE ); anExp.More(); anExp.Next() ) {
+ nbf++;
+ theModifiedShape = anExp.Current();
+ }
+ if(nbf==1) {
+ TopoDS_Shape sh = theShape;
+ while(sh.ShapeType()==TopAbs_COMPOUND) {
+ TopoDS_Iterator it(sh);
+ sh = it.Value();
}
- if(nbf==1) {
- TopoDS_Shape sh = theShape;
- while(sh.ShapeType()==TopAbs_COMPOUND) {
- TopoDS_Iterator it(sh);
- sh = it.Value();
- }
- Handle(Geom_Surface) S = BRep_Tool::Surface(TopoDS::Face(theModifiedShape));
- if( S->IsKind(STANDARD_TYPE(Geom_SphericalSurface)) ||
- S->IsKind(STANDARD_TYPE(Geom_ToroidalSurface)) ||
- S->IsUPeriodic()) {
- const Standard_Boolean isShell =
- (sh.ShapeType()==TopAbs_SHELL || sh.ShapeType()==TopAbs_FACE);
-
- if ( !isShell && S->IsKind(STANDARD_TYPE(Geom_SphericalSurface)) ) {
- Handle(Geom_SphericalSurface) SS = Handle(Geom_SphericalSurface)::DownCast(S);
- gp_Pnt PC = SS->Location();
+ Handle(Geom_Surface) S = BRep_Tool::Surface(TopoDS::Face(theModifiedShape));
+ if(S->IsKind(STANDARD_TYPE(Geom_SphericalSurface)) ||
+ S->IsKind(STANDARD_TYPE(Geom_ToroidalSurface)) ||
+ S->IsUPeriodic()) {
+ const Standard_Boolean isShell =
+ (sh.ShapeType()==TopAbs_SHELL || sh.ShapeType()==TopAbs_FACE);
+
+ if (!isShell && S->IsKind(STANDARD_TYPE(Geom_SphericalSurface))) {
+ Handle(Geom_SphericalSurface) SS = Handle(Geom_SphericalSurface)::DownCast(S);
+ gp_Pnt PC = SS->Location();
BRep_Builder B;
TopoDS_Vertex V;
B.MakeVertex(V,PC,1.e-7);
theAddDist = SS->Radius();
return Standard_True;
}
- if ( !isShell && S->IsKind(STANDARD_TYPE(Geom_ToroidalSurface)) ) {
+ if (!isShell && S->IsKind(STANDARD_TYPE(Geom_ToroidalSurface))) {
Handle(Geom_ToroidalSurface) TS = Handle(Geom_ToroidalSurface)::DownCast(S);
gp_Ax3 ax3 = TS->Position();
Handle(Geom_Circle) C = new Geom_Circle(ax3.Ax2(),TS->MajorRadius());
}
//=======================================================================
-//function : GetMinDistanceSingular
+// function : GetMinDistanceSingular
//=======================================================================
double GetMinDistanceSingular(const TopoDS_Shape& aSh1,
const TopoDS_Shape& aSh2,
- gp_Pnt& Ptmp1, gp_Pnt& Ptmp2)
+ gp_Pnt& Ptmp1, gp_Pnt& Ptmp2)
{
TopoDS_Shape tmpSh1;
TopoDS_Shape tmpSh2;
else {
gp_Dir aDir(gp_Vec(PMin1,PMin2));
if( MinDist > (AddDist1+AddDist2) ) {
- Ptmp1 = gp_Pnt( PMin1.X() + aDir.X()*AddDist1,
- PMin1.Y() + aDir.Y()*AddDist1,
- PMin1.Z() + aDir.Z()*AddDist1 );
- Ptmp2 = gp_Pnt( PMin2.X() - aDir.X()*AddDist2,
- PMin2.Y() - aDir.Y()*AddDist2,
- PMin2.Z() - aDir.Z()*AddDist2 );
+ Ptmp1 = gp_Pnt(PMin1.X() + aDir.X()*AddDist1,
+ PMin1.Y() + aDir.Y()*AddDist1,
+ PMin1.Z() + aDir.Z()*AddDist1);
+ Ptmp2 = gp_Pnt(PMin2.X() - aDir.X()*AddDist2,
+ PMin2.Y() - aDir.Y()*AddDist2,
+ PMin2.Z() - aDir.Z()*AddDist2);
return (MinDist - AddDist1 - AddDist2);
}
else {
if( AddDist1 > 0 ) {
- Ptmp1 = gp_Pnt( PMin1.X() + aDir.X()*AddDist1,
- PMin1.Y() + aDir.Y()*AddDist1,
- PMin1.Z() + aDir.Z()*AddDist1 );
+ Ptmp1 = gp_Pnt(PMin1.X() + aDir.X()*AddDist1,
+ PMin1.Y() + aDir.Y()*AddDist1,
+ PMin1.Z() + aDir.Z()*AddDist1);
Ptmp2 = Ptmp1;
}
else {
- Ptmp2 = gp_Pnt( PMin2.X() - aDir.X()*AddDist2,
- PMin2.Y() - aDir.Y()*AddDist2,
- PMin2.Z() - aDir.Z()*AddDist2 );
+ Ptmp2 = gp_Pnt(PMin2.X() - aDir.X()*AddDist2,
+ PMin2.Y() - aDir.Y()*AddDist2,
+ PMin2.Z() - aDir.Z()*AddDist2);
Ptmp1 = Ptmp2;
}
}
return -2.0;
}
-//function : GetMinDistance
-//purpose :
+//=======================================================================
+// function : GetMinDistance
//=======================================================================
Standard_Real GetMinDistance(const TopoDS_Shape& theShape1,
const TopoDS_Shape& theShape2,
}
//=======================================================================
-//PreciseBoundingBox
+// function : PreciseBoundingBox
//=======================================================================
Standard_Boolean PreciseBoundingBox
(const TopoDS_Shape &theShape, Bnd_Box &theBox)
{
- if ( theBox.IsVoid() ) BRepBndLib::Add( theShape, theBox );
- if ( theBox.IsVoid() ) return Standard_False;
+ if (theBox.IsVoid()) BRepBndLib::Add( theShape, theBox );
+ if (theBox.IsVoid()) return Standard_False;
Standard_Real aBound[6];
theBox.Get(aBound[0], aBound[2], aBound[4], aBound[1], aBound[3], aBound[5]);
}
//=================================================================================================
-bool GetBoundingBox( const std::shared_ptr<GeomAPI_Shape>& theShape,
- const bool thePrecise,
- Standard_Real& theXmin,Standard_Real& theXmax,
- Standard_Real& theYmin,Standard_Real& theYmax,
- Standard_Real& theZmin,Standard_Real& theZmax,
- std::string& theError)
+bool GetBoundingBox(const std::shared_ptr<GeomAPI_Shape>& theShape,
+ const bool thePrecise,
+ Standard_Real& theXmin,Standard_Real& theXmax,
+ Standard_Real& theYmin,Standard_Real& theYmax,
+ Standard_Real& theZmin,Standard_Real& theZmax,
+ std::string& theError)
{
-
#ifdef _DEBUG
std::cout << "GetBoundingBox " << std::endl;
#endif
}
TopoDS_Shape aShape = theShape->impl<TopoDS_Shape>();
+
//Compute the parameters
Bnd_Box B;
-
try {
OCC_CATCH_SIGNALS;
BRepBuilderAPI_Copy aCopyTool (aShape);
/// \param theZmax Z max of the box
/// \param theError error
GEOMALGOAPI_EXPORT
-bool GetBoundingBox( const std::shared_ptr<GeomAPI_Shape>& theShape,
- const bool thePrecise,
- Standard_Real& theXmin,Standard_Real& theXmax,
- Standard_Real& theYmin,Standard_Real& theYmax,
- Standard_Real& theZmin,Standard_Real& theZmax,
- std::string& theError);
+bool GetBoundingBox(const std::shared_ptr<GeomAPI_Shape>& theShape,
+ const bool thePrecise,
+ Standard_Real& theXmin,Standard_Real& theXmax,
+ Standard_Real& theYmin,Standard_Real& theYmax,
+ Standard_Real& theZmin,Standard_Real& theZmax,
+ std::string& theError);
#endif