mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2024-12-27 09:50:34 +05:00
7.5.6. Generation of the boundary particles for particulate boundary model
Add an option to create offset shapes with sharp edges
This commit is contained in:
parent
b014700d7c
commit
15ed55a71a
@ -11,13 +11,16 @@ gg = salome.ImportComponentGUI("GEOM")
|
|||||||
box = geompy.MakeBox(20, 20, 20, 200, 200, 200)
|
box = geompy.MakeBox(20, 20, 20, 200, 200, 200)
|
||||||
|
|
||||||
# create a new object as offset of the given object
|
# create a new object as offset of the given object
|
||||||
offset = geompy.MakeOffset(box, 70.)
|
offset = geompy.MakeOffset(box, 70.)
|
||||||
|
offset2 = geompy.MakeOffsetIntersectionJoin(box, 70.)
|
||||||
|
|
||||||
# add objects in the study
|
# add objects in the study
|
||||||
id_box = geompy.addToStudy(box, "Box")
|
id_box = geompy.addToStudy(box, "Box")
|
||||||
id_offset = geompy.addToStudy(offset, "Offset")
|
id_offset = geompy.addToStudy(offset, "Offset")
|
||||||
|
id_offset2 = geompy.addToStudy(offset2, "Offset_intersection_join")
|
||||||
|
|
||||||
# display the results
|
# display the results
|
||||||
gg.createAndDisplayGO(id_box)
|
gg.createAndDisplayGO(id_box)
|
||||||
gg.setDisplayMode(id_box,1)
|
gg.setDisplayMode(id_box,1)
|
||||||
gg.createAndDisplayGO(id_offset)
|
gg.createAndDisplayGO(id_offset)
|
||||||
|
gg.createAndDisplayGO(id_offset2)
|
||||||
|
0
doc/salome/gui/GEOM/images/transformation11.png
Executable file → Normal file
0
doc/salome/gui/GEOM/images/transformation11.png
Executable file → Normal file
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
@ -7,7 +7,12 @@
|
|||||||
|
|
||||||
\n This operation translates each point of an \b Object (a set of
|
\n This operation translates each point of an \b Object (a set of
|
||||||
Objects) along a local normal by a given \b Offset distance (signed
|
Objects) along a local normal by a given \b Offset distance (signed
|
||||||
number, negative value meaning inner offset).
|
number, negative value meaning inner offset). Gaps between translated
|
||||||
|
adjacent surfaces are filled in either of two ways:
|
||||||
|
- if <b>Join by pipes</b> is activated, they are filled with pipes;
|
||||||
|
- else the surfaces are extended and intersected, so that sharp edges
|
||||||
|
are preserved.
|
||||||
|
|
||||||
\n \b Offset operation is applicable to faces, shells and solids.
|
\n \b Offset operation is applicable to faces, shells and solids.
|
||||||
\n \ref restore_presentation_parameters_page "Advanced options".
|
\n \ref restore_presentation_parameters_page "Advanced options".
|
||||||
|
|
||||||
@ -16,9 +21,12 @@ number, negative value meaning inner offset).
|
|||||||
|
|
||||||
\n <b>Example:</b>
|
\n <b>Example:</b>
|
||||||
|
|
||||||
\image html offsetsn.png "The box and its offset surface"
|
\image html offsetsn.png "The box and its offset surface (Join by pipes activated)"
|
||||||
|
|
||||||
|
\n <b>TUI Command:</b>
|
||||||
|
- Gaps filled by pipes: <em>geompy.MakeOffset(Shape, Offset),</em>
|
||||||
|
- Gaps filled by intersection: <em>geompy.MakeOffsetIntersectionJoin(Shape, Offset),</em>
|
||||||
|
|
||||||
\n <b>TUI Command:</b> <em>geompy.MakeOffset(Shape, Offset),</em>
|
|
||||||
where Shape is a shape(s) which has to be an offset, Offset is a value of
|
where Shape is a shape(s) which has to be an offset, Offset is a value of
|
||||||
the offset.
|
the offset.
|
||||||
\n <b>Arguments:</b> Name + Object (face(s), shell(s), solid(s)) +
|
\n <b>Arguments:</b> Name + Object (face(s), shell(s), solid(s)) +
|
||||||
|
@ -1300,17 +1300,23 @@ module GEOM
|
|||||||
* \brief Replace the given object by its offset.
|
* \brief Replace the given object by its offset.
|
||||||
* \param theObject The base object for the offset.
|
* \param theObject The base object for the offset.
|
||||||
* \param theOffset Offset value.
|
* \param theOffset Offset value.
|
||||||
|
* \param theJoinByPipes To join offset surfaces by pipes or by intersection.
|
||||||
* \return theObject.
|
* \return theObject.
|
||||||
*/
|
*/
|
||||||
GEOM_Object OffsetShape (in GEOM_Object theObject, in double theOffset);
|
GEOM_Object OffsetShape (in GEOM_Object theObject,
|
||||||
|
in double theOffset,
|
||||||
|
in boolean theJoinByPipes);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Create new object as offset of the given one.
|
* \brief Create new object as offset of the given one.
|
||||||
* \param theObject The base object for the offset.
|
* \param theObject The base object for the offset.
|
||||||
* \param theOffset Offset value.
|
* \param theOffset Offset value.
|
||||||
|
* \param theJoinByPipes To join offset surfaces by pipes or by intersection.
|
||||||
* \return New GEOM_Object, containing the offset object.
|
* \return New GEOM_Object, containing the offset object.
|
||||||
*/
|
*/
|
||||||
GEOM_Object OffsetShapeCopy (in GEOM_Object theObject, in double theOffset);
|
GEOM_Object OffsetShapeCopy (in GEOM_Object theObject,
|
||||||
|
in double theOffset,
|
||||||
|
in boolean theJoinByPipes);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Create new object as projection of the given one on a 2D surface.
|
* \brief Create new object as projection of the given one on a 2D surface.
|
||||||
|
7
src/GEOMGUI/GEOM_msg_en.ts
Normal file → Executable file
7
src/GEOMGUI/GEOM_msg_en.ts
Normal file → Executable file
@ -7653,6 +7653,13 @@ Do you want to create new material?</translation>
|
|||||||
<translation>Rotation angle</translation>
|
<translation>Rotation angle</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>TransformationGUI_OffsetDlg</name>
|
||||||
|
<message>
|
||||||
|
<source>GEOM_JOIN_BY_PIPES</source>
|
||||||
|
<translation>Join by pipes</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>OperationGUI_ExtractionDlg</name>
|
<name>OperationGUI_ExtractionDlg</name>
|
||||||
<message>
|
<message>
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
#define OFF_ARG_VALUE 2
|
#define OFF_ARG_VALUE 2
|
||||||
#define OFF_ARG_IDS 3
|
#define OFF_ARG_IDS 3
|
||||||
#define OFF_ARG_PARAM 4
|
#define OFF_ARG_PARAM 4
|
||||||
|
#define OFF_ARG_JOIN 5
|
||||||
|
|
||||||
class GEOMImpl_IOffset
|
class GEOMImpl_IOffset
|
||||||
{
|
{
|
||||||
@ -48,6 +49,10 @@ class GEOMImpl_IOffset
|
|||||||
|
|
||||||
Standard_Boolean GetParam() { return _func->GetInteger(OFF_ARG_PARAM); }
|
Standard_Boolean GetParam() { return _func->GetInteger(OFF_ARG_PARAM); }
|
||||||
|
|
||||||
|
void SetJoinByPipes(Standard_Boolean theValue) { _func->SetInteger(OFF_ARG_JOIN, theValue); }
|
||||||
|
|
||||||
|
Standard_Boolean GetJoinByPipes() { return _func->GetInteger(OFF_ARG_JOIN); }
|
||||||
|
|
||||||
void SetFaceIDs(const Handle(TColStd_HArray1OfInteger)& theFaceIDs)
|
void SetFaceIDs(const Handle(TColStd_HArray1OfInteger)& theFaceIDs)
|
||||||
{ _func->SetIntegerArray(OFF_ARG_IDS, theFaceIDs); }
|
{ _func->SetIntegerArray(OFF_ARG_IDS, theFaceIDs); }
|
||||||
|
|
||||||
|
@ -1053,8 +1053,10 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::MirrorAxisCopy
|
|||||||
* OffsetShape
|
* OffsetShape
|
||||||
*/
|
*/
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
Handle(GEOM_Object) GEOMImpl_ITransformOperations::OffsetShape
|
Handle(GEOM_Object)
|
||||||
(Handle(GEOM_Object) theObject, double theOffset)
|
GEOMImpl_ITransformOperations::OffsetShape (Handle(GEOM_Object) theObject,
|
||||||
|
double theOffset,
|
||||||
|
bool theJoinByPipes)
|
||||||
{
|
{
|
||||||
SetErrorCode(KO);
|
SetErrorCode(KO);
|
||||||
|
|
||||||
@ -1072,8 +1074,9 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::OffsetShape
|
|||||||
if (aFunction->GetDriverGUID() != GEOMImpl_OffsetDriver::GetID()) return NULL;
|
if (aFunction->GetDriverGUID() != GEOMImpl_OffsetDriver::GetID()) return NULL;
|
||||||
|
|
||||||
GEOMImpl_IOffset aTI (aFunction);
|
GEOMImpl_IOffset aTI (aFunction);
|
||||||
aTI.SetShape(anOriginal);
|
aTI.SetShape( anOriginal );
|
||||||
aTI.SetValue(theOffset);
|
aTI.SetValue( theOffset );
|
||||||
|
aTI.SetJoinByPipes( theJoinByPipes );
|
||||||
|
|
||||||
//Compute the offset
|
//Compute the offset
|
||||||
try {
|
try {
|
||||||
@ -1102,8 +1105,10 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::OffsetShape
|
|||||||
* OffsetShapeCopy
|
* OffsetShapeCopy
|
||||||
*/
|
*/
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
Handle(GEOM_Object) GEOMImpl_ITransformOperations::OffsetShapeCopy
|
Handle(GEOM_Object)
|
||||||
(Handle(GEOM_Object) theObject, double theOffset)
|
GEOMImpl_ITransformOperations::OffsetShapeCopy( Handle(GEOM_Object) theObject,
|
||||||
|
double theOffset,
|
||||||
|
bool theJoinByPipes)
|
||||||
{
|
{
|
||||||
SetErrorCode(KO);
|
SetErrorCode(KO);
|
||||||
|
|
||||||
@ -1124,8 +1129,9 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::OffsetShapeCopy
|
|||||||
if (aFunction->GetDriverGUID() != GEOMImpl_OffsetDriver::GetID()) return NULL;
|
if (aFunction->GetDriverGUID() != GEOMImpl_OffsetDriver::GetID()) return NULL;
|
||||||
|
|
||||||
GEOMImpl_IOffset aTI (aFunction);
|
GEOMImpl_IOffset aTI (aFunction);
|
||||||
aTI.SetShape(anOriginal);
|
aTI.SetShape( anOriginal );
|
||||||
aTI.SetValue(theOffset);
|
aTI.SetValue( theOffset );
|
||||||
|
aTI.SetJoinByPipes( theJoinByPipes );
|
||||||
|
|
||||||
//Compute the offset
|
//Compute the offset
|
||||||
try {
|
try {
|
||||||
|
@ -105,10 +105,12 @@ class GEOMImpl_ITransformOperations : public GEOM_IOperations
|
|||||||
Handle(GEOM_Object) thePoint);
|
Handle(GEOM_Object) thePoint);
|
||||||
|
|
||||||
Standard_EXPORT Handle(GEOM_Object) OffsetShape (Handle(GEOM_Object) theObject,
|
Standard_EXPORT Handle(GEOM_Object) OffsetShape (Handle(GEOM_Object) theObject,
|
||||||
double theOffset);
|
double theOffset,
|
||||||
|
bool theJoinByPipes);
|
||||||
|
|
||||||
Standard_EXPORT Handle(GEOM_Object) OffsetShapeCopy (Handle(GEOM_Object) theObject,
|
Standard_EXPORT Handle(GEOM_Object) OffsetShapeCopy (Handle(GEOM_Object) theObject,
|
||||||
double theOffset);
|
double theOffset,
|
||||||
|
bool theJoinByPipes);
|
||||||
|
|
||||||
Standard_EXPORT Handle(GEOM_Object) ProjectShapeCopy (Handle(GEOM_Object) theSource,
|
Standard_EXPORT Handle(GEOM_Object) ProjectShapeCopy (Handle(GEOM_Object) theSource,
|
||||||
Handle(GEOM_Object) theTarget);
|
Handle(GEOM_Object) theTarget);
|
||||||
|
@ -86,11 +86,19 @@ Standard_Integer GEOMImpl_OffsetDriver::Execute(LOGBOOK& log) const
|
|||||||
StdFail_NotDone::Raise(aMsg.ToCString());
|
StdFail_NotDone::Raise(aMsg.ToCString());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (aType == OFFSET_SHAPE || aType == OFFSET_SHAPE_COPY) {
|
if ( aType == OFFSET_SHAPE || aType == OFFSET_SHAPE_COPY )
|
||||||
BRepOffsetAPI_MakeOffsetShape MO (aShapeBase,
|
{
|
||||||
|
BRepOffset_Mode aMode = BRepOffset_Skin;
|
||||||
|
Standard_Boolean anIntersection = Standard_False, aSelfInter = Standard_False;
|
||||||
|
BRepOffsetAPI_MakeOffsetShape MO( aShapeBase,
|
||||||
aCI.GetValue(),
|
aCI.GetValue(),
|
||||||
aTol);
|
aTol,
|
||||||
if (MO.IsDone()) {
|
aMode,
|
||||||
|
anIntersection,
|
||||||
|
aSelfInter,
|
||||||
|
aCI.GetJoinByPipes() ? GeomAbs_Arc : GeomAbs_Intersection );
|
||||||
|
|
||||||
|
if ( MO.IsDone() ) {
|
||||||
aShape = MO.Shape();
|
aShape = MO.Shape();
|
||||||
if ( !GEOMUtils::CheckShape(aShape, true) && !GEOMUtils::FixShapeTolerance(aShape) )
|
if ( !GEOMUtils::CheckShape(aShape, true) && !GEOMUtils::FixShapeTolerance(aShape) )
|
||||||
Standard_ConstructionError::Raise("Boolean operation aborted : non valid shape result");
|
Standard_ConstructionError::Raise("Boolean operation aborted : non valid shape result");
|
||||||
|
@ -313,6 +313,8 @@ SALOMEDS::SObject_ptr GEOM_Gen_i::PublishInStudy(SALOMEDS::Study_ptr theStudy,
|
|||||||
aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_GROUP_SOLID");
|
aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_GROUP_SOLID");
|
||||||
aNamePrefix = "Group_Of_Solids_";
|
aNamePrefix = "Group_Of_Solids_";
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
aNamePrefix = "Group_";
|
||||||
}
|
}
|
||||||
} else if ( mytype == GEOM_MARKER ) {
|
} else if ( mytype == GEOM_MARKER ) {
|
||||||
aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_LCS");
|
aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_LCS");
|
||||||
@ -2558,7 +2560,7 @@ GEOM::GEOM_Object_ptr GEOM_Gen_i::AddSubShape (GEOM::GEOM_Object_ptr theMainSh
|
|||||||
if (aMainShape.IsNull()) return GEOM::GEOM_Object::_nil();
|
if (aMainShape.IsNull()) return GEOM::GEOM_Object::_nil();
|
||||||
|
|
||||||
Handle(TColStd_HArray1OfInteger) anArray = new TColStd_HArray1OfInteger(1, theIndices.length());
|
Handle(TColStd_HArray1OfInteger) anArray = new TColStd_HArray1OfInteger(1, theIndices.length());
|
||||||
for(Standard_Integer i = 0; i<theIndices.length(); i++) anArray->SetValue(i+1, theIndices[i]);
|
for(CORBA::ULong i = 0; i<theIndices.length(); i++) anArray->SetValue(i+1, theIndices[i]);
|
||||||
|
|
||||||
HANDLE_NAMESPACE(GEOM_Object) anObject = _impl->AddSubShape(aMainShape, anArray, true);
|
HANDLE_NAMESPACE(GEOM_Object) anObject = _impl->AddSubShape(aMainShape, anArray, true);
|
||||||
if(anObject.IsNull()) return GEOM::GEOM_Object::_nil();
|
if(anObject.IsNull()) return GEOM::GEOM_Object::_nil();
|
||||||
@ -2943,7 +2945,7 @@ void GEOM_Gen_i::Move( const GEOM::object_list& what,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( int i = 0; i < what.length(); i++ ) {
|
for ( CORBA::ULong i = 0; i < what.length(); i++ ) {
|
||||||
SALOMEDS::SObject_var sobj = what[i];
|
SALOMEDS::SObject_var sobj = what[i];
|
||||||
if ( CORBA::is_nil( sobj ) ) continue; // skip bad object
|
if ( CORBA::is_nil( sobj ) ) continue; // skip bad object
|
||||||
// insert the object to the use case tree
|
// insert the object to the use case tree
|
||||||
@ -2964,7 +2966,7 @@ SALOMEDS::TMPFile* GEOM_Gen_i::GetDependencyTree( SALOMEDS::Study_ptr theStudy,
|
|||||||
GEOMUtils::TreeModel tree;
|
GEOMUtils::TreeModel tree;
|
||||||
|
|
||||||
std::string entry;
|
std::string entry;
|
||||||
for ( int i = 0; i < theObjectEntries.length(); i++ ) {
|
for ( CORBA::ULong i = 0; i < theObjectEntries.length(); i++ ) {
|
||||||
// process objects one-by-one
|
// process objects one-by-one
|
||||||
entry = theObjectEntries[i].in();
|
entry = theObjectEntries[i].in();
|
||||||
GEOM::GEOM_BaseObject_var anObj = GetObject( theStudy->StudyId(), entry.c_str() );
|
GEOM::GEOM_BaseObject_var anObj = GetObject( theStudy->StudyId(), entry.c_str() );
|
||||||
@ -3007,7 +3009,7 @@ void GEOM_Gen_i::getUpwardDependency( GEOM::GEOM_BaseObject_ptr gbo,
|
|||||||
GEOMUtils::NodeLinks anEntries;
|
GEOMUtils::NodeLinks anEntries;
|
||||||
GEOMUtils::LevelInfo aLevelMap;
|
GEOMUtils::LevelInfo aLevelMap;
|
||||||
if ( level > 0 ) {
|
if ( level > 0 ) {
|
||||||
if ( level-1 >= upLevelList.size() ) {
|
if ( level-1 >= (int)upLevelList.size() ) {
|
||||||
// create a new map
|
// create a new map
|
||||||
upLevelList.push_back( aLevelMap );
|
upLevelList.push_back( aLevelMap );
|
||||||
} else {
|
} else {
|
||||||
@ -3021,7 +3023,7 @@ void GEOM_Gen_i::getUpwardDependency( GEOM::GEOM_BaseObject_ptr gbo,
|
|||||||
// get objects on that the current one depends
|
// get objects on that the current one depends
|
||||||
GEOM::ListOfGBO_var depList = gbo->GetDependency();
|
GEOM::ListOfGBO_var depList = gbo->GetDependency();
|
||||||
std::string aDepEntry;
|
std::string aDepEntry;
|
||||||
for( int j = 0; j < depList->length(); j++ ) {
|
for( CORBA::ULong j = 0; j < depList->length(); j++ ) {
|
||||||
if ( depList[j]->_is_nil() )
|
if ( depList[j]->_is_nil() )
|
||||||
continue;
|
continue;
|
||||||
aDepEntry = depList[j]->GetEntry();
|
aDepEntry = depList[j]->GetEntry();
|
||||||
@ -3077,7 +3079,7 @@ void GEOM_Gen_i::getDownwardDependency( GEOM::GEOM_BaseObject_ptr gbo,
|
|||||||
continue;
|
continue;
|
||||||
std::string aGoEntry = geomObj->GetEntry();
|
std::string aGoEntry = geomObj->GetEntry();
|
||||||
// go through dependencies of current object to check whether it depends on the given object
|
// go through dependencies of current object to check whether it depends on the given object
|
||||||
for( int i = 0; i < depList->length(); i++ ) {
|
for( CORBA::ULong i = 0; i < depList->length(); i++ ) {
|
||||||
if ( depList[i]->_is_nil() )
|
if ( depList[i]->_is_nil() )
|
||||||
continue;
|
continue;
|
||||||
if ( depList[i]->_is_equivalent( gbo ) ) {
|
if ( depList[i]->_is_equivalent( gbo ) ) {
|
||||||
@ -3091,7 +3093,7 @@ void GEOM_Gen_i::getDownwardDependency( GEOM::GEOM_BaseObject_ptr gbo,
|
|||||||
GEOMUtils::NodeLinks anEntries;
|
GEOMUtils::NodeLinks anEntries;
|
||||||
GEOMUtils::LevelInfo aLevelMap;
|
GEOMUtils::LevelInfo aLevelMap;
|
||||||
anEntries.push_back( aGboEntry );
|
anEntries.push_back( aGboEntry );
|
||||||
if ( level >= downLevelList.size() ) {
|
if ( level >= (int)downLevelList.size() ) {
|
||||||
downLevelList.push_back( aLevelMap );
|
downLevelList.push_back( aLevelMap );
|
||||||
} else {
|
} else {
|
||||||
aLevelMap = downLevelList.at(level);
|
aLevelMap = downLevelList.at(level);
|
||||||
@ -3115,13 +3117,13 @@ void GEOM_Gen_i::getDownwardDependency( GEOM::GEOM_BaseObject_ptr gbo,
|
|||||||
// purpose : Fills 3 lists that is used to clean study of redundant objects
|
// purpose : Fills 3 lists that is used to clean study of redundant objects
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
void GEOM_Gen_i::GetEntriesToReduceStudy(SALOMEDS::Study_ptr theStudy,
|
void GEOM_Gen_i::GetEntriesToReduceStudy(SALOMEDS::Study_ptr theStudy,
|
||||||
GEOM::string_array& theSelectedEntries,
|
GEOM::string_array& theSelectedEntries,
|
||||||
GEOM::string_array& theParentEntries,
|
GEOM::string_array& theParentEntries,
|
||||||
GEOM::string_array& theSubEntries,
|
GEOM::string_array& theSubEntries,
|
||||||
GEOM::string_array& theOtherEntries)
|
GEOM::string_array& theOtherEntries)
|
||||||
{
|
{
|
||||||
std::set<std::string> aSelected, aParents, aChildren, anOthers;
|
std::set<std::string> aSelected, aParents, aChildren, anOthers;
|
||||||
for ( int i = 0; i < theSelectedEntries.length(); i++ ) {
|
for ( CORBA::ULong i = 0; i < theSelectedEntries.length(); i++ ) {
|
||||||
aSelected.insert( CORBA::string_dup( theSelectedEntries[i] ) );
|
aSelected.insert( CORBA::string_dup( theSelectedEntries[i] ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3247,7 +3249,7 @@ void GEOM_Gen_i::includeParentDependencies(GEOM::GEOM_BaseObject_ptr geomObj,
|
|||||||
return;
|
return;
|
||||||
// go through dependencies of current object to check whether it depends on the given object
|
// go through dependencies of current object to check whether it depends on the given object
|
||||||
std::string aDepEntry;
|
std::string aDepEntry;
|
||||||
for( int i = 0; i < depList->length(); i++ ) {
|
for( CORBA::ULong i = 0; i < depList->length(); i++ ) {
|
||||||
aDepEntry = depList[i]->GetEntry();
|
aDepEntry = depList[i]->GetEntry();
|
||||||
if ( depList[i]->_is_nil() ||
|
if ( depList[i]->_is_nil() ||
|
||||||
aDepEntry == anEntry || // skip self-depending
|
aDepEntry == anEntry || // skip self-depending
|
||||||
|
@ -68,7 +68,7 @@
|
|||||||
//=====================================================================
|
//=====================================================================
|
||||||
class GEOM_I_EXPORT GEOM_GenericOperationsCreator
|
class GEOM_I_EXPORT GEOM_GenericOperationsCreator
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// Create operations
|
// Create operations
|
||||||
virtual GEOM_IOperations_i* Create (PortableServer::POA_ptr thePOA,
|
virtual GEOM_IOperations_i* Create (PortableServer::POA_ptr thePOA,
|
||||||
int theStudyId,
|
int theStudyId,
|
||||||
@ -76,6 +76,7 @@ public:
|
|||||||
::GEOMImpl_Gen* theGenImpl) = 0;
|
::GEOMImpl_Gen* theGenImpl) = 0;
|
||||||
// return the name of IDL module
|
// return the name of IDL module
|
||||||
//virtual std::string GetModuleName() = 0;
|
//virtual std::string GetModuleName() = 0;
|
||||||
|
virtual ~GEOM_GenericOperationsCreator() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
//=====================================================================
|
//=====================================================================
|
||||||
|
@ -609,9 +609,10 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::MirrorPointCopy
|
|||||||
* OffsetShape
|
* OffsetShape
|
||||||
*/
|
*/
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::OffsetShape
|
GEOM::GEOM_Object_ptr
|
||||||
(GEOM::GEOM_Object_ptr theObject,
|
GEOM_ITransformOperations_i::OffsetShape (GEOM::GEOM_Object_ptr theObject,
|
||||||
CORBA::Double theOffset)
|
CORBA::Double theOffset,
|
||||||
|
CORBA::Boolean theJoinByPipes)
|
||||||
{
|
{
|
||||||
GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject);
|
GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_duplicate(theObject);
|
||||||
|
|
||||||
@ -631,7 +632,7 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::OffsetShape
|
|||||||
if (aBasicObject.IsNull()) return aGEOMObject._retn();
|
if (aBasicObject.IsNull()) return aGEOMObject._retn();
|
||||||
|
|
||||||
//Create the offset shape
|
//Create the offset shape
|
||||||
GetOperations()->OffsetShape(aBasicObject, theOffset);
|
GetOperations()->OffsetShape( aBasicObject, theOffset, theJoinByPipes );
|
||||||
|
|
||||||
// Update GUI.
|
// Update GUI.
|
||||||
UpdateGUIForObject(theObject);
|
UpdateGUIForObject(theObject);
|
||||||
@ -644,9 +645,10 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::OffsetShape
|
|||||||
* OffsetShapeCopy
|
* OffsetShapeCopy
|
||||||
*/
|
*/
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::OffsetShapeCopy
|
GEOM::GEOM_Object_ptr
|
||||||
(GEOM::GEOM_Object_ptr theObject,
|
GEOM_ITransformOperations_i::OffsetShapeCopy (GEOM::GEOM_Object_ptr theObject,
|
||||||
CORBA::Double theOffset)
|
CORBA::Double theOffset,
|
||||||
|
CORBA::Boolean theJoinByPipes)
|
||||||
{
|
{
|
||||||
GEOM::GEOM_Object_var aGEOMObject;
|
GEOM::GEOM_Object_var aGEOMObject;
|
||||||
|
|
||||||
@ -658,7 +660,8 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::OffsetShapeCopy
|
|||||||
if (aBasicObject.IsNull()) return aGEOMObject._retn();
|
if (aBasicObject.IsNull()) return aGEOMObject._retn();
|
||||||
|
|
||||||
//Create the offset shape
|
//Create the offset shape
|
||||||
HANDLE_NAMESPACE(GEOM_Object) anObject = GetOperations()->OffsetShapeCopy(aBasicObject, theOffset);
|
HANDLE_NAMESPACE(GEOM_Object) anObject =
|
||||||
|
GetOperations()->OffsetShapeCopy(aBasicObject, theOffset, theJoinByPipes);
|
||||||
if (!GetOperations()->IsDone() || anObject.IsNull())
|
if (!GetOperations()->IsDone() || anObject.IsNull())
|
||||||
return aGEOMObject._retn();
|
return aGEOMObject._retn();
|
||||||
|
|
||||||
|
@ -135,10 +135,12 @@ class GEOM_I_EXPORT GEOM_ITransformOperations_i :
|
|||||||
GEOM::GEOM_Object_ptr thePoint);
|
GEOM::GEOM_Object_ptr thePoint);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr OffsetShape (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr OffsetShape (GEOM::GEOM_Object_ptr theObject,
|
||||||
CORBA::Double theOffset);
|
CORBA::Double theOffset,
|
||||||
|
CORBA::Boolean theJoinByPipes);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr OffsetShapeCopy (GEOM::GEOM_Object_ptr theObject,
|
GEOM::GEOM_Object_ptr OffsetShapeCopy (GEOM::GEOM_Object_ptr theObject,
|
||||||
CORBA::Double theOffset);
|
CORBA::Double theOffset,
|
||||||
|
CORBA::Boolean theJoinByPipes);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr ProjectShapeCopy (GEOM::GEOM_Object_ptr theSource,
|
GEOM::GEOM_Object_ptr ProjectShapeCopy (GEOM::GEOM_Object_ptr theSource,
|
||||||
GEOM::GEOM_Object_ptr theTarget);
|
GEOM::GEOM_Object_ptr theTarget);
|
||||||
|
@ -9228,14 +9228,15 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen):
|
|||||||
"""
|
"""
|
||||||
theOffset, Parameters = ParseParameters(theOffset)
|
theOffset, Parameters = ParseParameters(theOffset)
|
||||||
if theCopy:
|
if theCopy:
|
||||||
anObj = self.TrsfOp.OffsetShapeCopy(theObject, theOffset)
|
anObj = self.TrsfOp.OffsetShapeCopy(theObject, theOffset, True)
|
||||||
else:
|
else:
|
||||||
anObj = self.TrsfOp.OffsetShape(theObject, theOffset)
|
anObj = self.TrsfOp.OffsetShape(theObject, theOffset, True)
|
||||||
RaiseIfFailed("Offset", self.TrsfOp)
|
RaiseIfFailed("Offset", self.TrsfOp)
|
||||||
anObj.SetParameters(Parameters)
|
anObj.SetParameters(Parameters)
|
||||||
return anObj
|
return anObj
|
||||||
|
|
||||||
## Create new object as offset of the given one.
|
## Create new object as offset of the given one. Gap between two adjacent
|
||||||
|
# offset surfaces is filled by a pipe.
|
||||||
# @param theObject The base object for the offset.
|
# @param theObject The base object for the offset.
|
||||||
# @param theOffset Offset value.
|
# @param theOffset Offset value.
|
||||||
# @param theName Object name; when specified, this parameter is used
|
# @param theName Object name; when specified, this parameter is used
|
||||||
@ -9244,11 +9245,13 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen):
|
|||||||
#
|
#
|
||||||
# @return New GEOM.GEOM_Object, containing the offset object.
|
# @return New GEOM.GEOM_Object, containing the offset object.
|
||||||
#
|
#
|
||||||
|
# @sa MakeOffsetIntersectionJoin
|
||||||
# @ref tui_offset "Example"
|
# @ref tui_offset "Example"
|
||||||
@ManageTransactions("TrsfOp")
|
@ManageTransactions("TrsfOp")
|
||||||
def MakeOffset(self, theObject, theOffset, theName=None):
|
def MakeOffset(self, theObject, theOffset, theName=None):
|
||||||
"""
|
"""
|
||||||
Create new object as offset of the given one.
|
Create new object as offset of the given one. Gap between adjacent
|
||||||
|
offset surfaces is filled by a pipe.
|
||||||
|
|
||||||
Parameters:
|
Parameters:
|
||||||
theObject The base object for the offset.
|
theObject The base object for the offset.
|
||||||
@ -9267,7 +9270,48 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen):
|
|||||||
"""
|
"""
|
||||||
# Example: see GEOM_TestAll.py
|
# Example: see GEOM_TestAll.py
|
||||||
theOffset, Parameters = ParseParameters(theOffset)
|
theOffset, Parameters = ParseParameters(theOffset)
|
||||||
anObj = self.TrsfOp.OffsetShapeCopy(theObject, theOffset)
|
anObj = self.TrsfOp.OffsetShapeCopy( theObject, theOffset, True )
|
||||||
|
RaiseIfFailed("OffsetShapeCopy", self.TrsfOp)
|
||||||
|
anObj.SetParameters(Parameters)
|
||||||
|
self._autoPublish(anObj, theName, "offset")
|
||||||
|
return anObj
|
||||||
|
|
||||||
|
## Create new object as offset of the given one. Gap between adjacent
|
||||||
|
# offset surfaces is filled by extending and intersecting them.
|
||||||
|
# @param theObject The base object for the offset.
|
||||||
|
# @param theOffset Offset value.
|
||||||
|
# @param theName Object name; when specified, this parameter is used
|
||||||
|
# for result publication in the study. Otherwise, if automatic
|
||||||
|
# publication is switched on, default value is used for result name.
|
||||||
|
#
|
||||||
|
# @return New GEOM.GEOM_Object, containing the offset object.
|
||||||
|
#
|
||||||
|
# @sa MakeOffset
|
||||||
|
# @ref tui_offset "Example"
|
||||||
|
@ManageTransactions("TrsfOp")
|
||||||
|
def MakeOffsetIntersectionJoin(self, theObject, theOffset, theName=None):
|
||||||
|
"""
|
||||||
|
Create new object as offset of the given one. Gap between adjacent
|
||||||
|
offset surfaces is filled by extending and intersecting them.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
theObject The base object for the offset.
|
||||||
|
theOffset Offset value.
|
||||||
|
theName Object name; when specified, this parameter is used
|
||||||
|
for result publication in the study. Otherwise, if automatic
|
||||||
|
publication is switched on, default value is used for result name.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
New GEOM.GEOM_Object, containing the offset object.
|
||||||
|
|
||||||
|
Example of usage:
|
||||||
|
box = geompy.MakeBox(20, 20, 20, 200, 200, 200)
|
||||||
|
# create a new box extended by 70
|
||||||
|
offset = geompy.MakeOffsetIntersectionJoin(box, 70.)
|
||||||
|
"""
|
||||||
|
# Example: see GEOM_TestAll.py
|
||||||
|
theOffset, Parameters = ParseParameters( theOffset )
|
||||||
|
anObj = self.TrsfOp.OffsetShapeCopy( theObject, theOffset, False )
|
||||||
RaiseIfFailed("OffsetShapeCopy", self.TrsfOp)
|
RaiseIfFailed("OffsetShapeCopy", self.TrsfOp)
|
||||||
anObj.SetParameters(Parameters)
|
anObj.SetParameters(Parameters)
|
||||||
self._autoPublish(anObj, theName, "offset")
|
self._autoPublish(anObj, theName, "offset")
|
||||||
|
@ -63,10 +63,8 @@ TransformationGUI_OffsetDlg::TransformationGUI_OffsetDlg( GeometryGUI* theGeomet
|
|||||||
GroupPoints->GroupBox1->setTitle( tr( "GEOM_ARGUMENTS" ) );
|
GroupPoints->GroupBox1->setTitle( tr( "GEOM_ARGUMENTS" ) );
|
||||||
GroupPoints->TextLabel1->setText( tr( "GEOM_OBJECTS" ) );
|
GroupPoints->TextLabel1->setText( tr( "GEOM_OBJECTS" ) );
|
||||||
GroupPoints->TextLabel2->setText( tr( "GEOM_OFFSET" ) );
|
GroupPoints->TextLabel2->setText( tr( "GEOM_OFFSET" ) );
|
||||||
GroupPoints->CheckButton1->setText( tr( "GEOM_CREATE_COPY" ) );
|
GroupPoints->CheckButton1->setText( tr( "GEOM_JOIN_BY_PIPES" ) );
|
||||||
|
GroupPoints->CheckButton1->setChecked( true );
|
||||||
// san -- modification of an exisitng object by offset is not allowed
|
|
||||||
GroupPoints->CheckButton1->hide();
|
|
||||||
|
|
||||||
GroupPoints->PushButton1->setIcon( image1 );
|
GroupPoints->PushButton1->setIcon( image1 );
|
||||||
|
|
||||||
@ -111,10 +109,6 @@ void TransformationGUI_OffsetDlg::Init()
|
|||||||
initSpinBox( GroupPoints->SpinBox_DX, COORD_MIN, COORD_MAX, step, "length_precision" );
|
initSpinBox( GroupPoints->SpinBox_DX, COORD_MIN, COORD_MAX, step, "length_precision" );
|
||||||
GroupPoints->SpinBox_DX->setValue( 1e-05 );
|
GroupPoints->SpinBox_DX->setValue( 1e-05 );
|
||||||
|
|
||||||
// Activate Create a Copy mode
|
|
||||||
GroupPoints->CheckButton1->setChecked( true );
|
|
||||||
CreateCopyModeChanged();
|
|
||||||
|
|
||||||
mainFrame()->GroupBoxPublish->show();
|
mainFrame()->GroupBoxPublish->show();
|
||||||
|
|
||||||
/* signals and slots connections */
|
/* signals and slots connections */
|
||||||
@ -126,7 +120,7 @@ void TransformationGUI_OffsetDlg::Init()
|
|||||||
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
|
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
|
||||||
|
|
||||||
connect( GroupPoints->SpinBox_DX, SIGNAL( valueChanged( double ) ), this, SLOT( ValueChangedInSpinBox() ) );
|
connect( GroupPoints->SpinBox_DX, SIGNAL( valueChanged( double ) ), this, SLOT( ValueChangedInSpinBox() ) );
|
||||||
connect( GroupPoints->CheckButton1, SIGNAL( toggled( bool ) ), this, SLOT( CreateCopyModeChanged() ) );
|
connect( GroupPoints->CheckButton1, SIGNAL( toggled( bool ) ), this, SLOT( JoinModeChanged() ) );
|
||||||
|
|
||||||
initName( tr( "GEOM_OFFSET" ) );
|
initName( tr( "GEOM_OFFSET" ) );
|
||||||
|
|
||||||
@ -271,10 +265,10 @@ bool TransformationGUI_OffsetDlg::execute( ObjectList& objects )
|
|||||||
|
|
||||||
GEOM::GEOM_ITransformOperations_var anOper = GEOM::GEOM_ITransformOperations::_narrow(getOperation());
|
GEOM::GEOM_ITransformOperations_var anOper = GEOM::GEOM_ITransformOperations::_narrow(getOperation());
|
||||||
|
|
||||||
if ( GroupPoints->CheckButton1->isChecked() || IsPreview() ) {
|
if ( true /*GroupPoints->CheckButton1->isChecked() || IsPreview()*/ ) {
|
||||||
for ( int i = 0; i < myObjects.count(); i++ ) {
|
for ( int i = 0; i < myObjects.count(); i++ ) {
|
||||||
|
|
||||||
anObj = anOper->OffsetShapeCopy( myObjects[i].get(), GetOffset() );
|
anObj = anOper->OffsetShapeCopy( myObjects[i].get(), GetOffset(), GetIsJoinByPipes() );
|
||||||
if ( !anObj->_is_nil() ) {
|
if ( !anObj->_is_nil() ) {
|
||||||
if(!IsPreview()) {
|
if(!IsPreview()) {
|
||||||
anObj->SetParameters(GroupPoints->SpinBox_DX->text().toLatin1().constData());
|
anObj->SetParameters(GroupPoints->SpinBox_DX->text().toLatin1().constData());
|
||||||
@ -285,7 +279,7 @@ bool TransformationGUI_OffsetDlg::execute( ObjectList& objects )
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for ( int i = 0; i < myObjects.count(); i++ ) {
|
for ( int i = 0; i < myObjects.count(); i++ ) {
|
||||||
anObj = anOper->OffsetShape( myObjects[i].get(), GetOffset() );
|
anObj = anOper->OffsetShape( myObjects[i].get(), GetOffset(), GetIsJoinByPipes() );
|
||||||
if ( !anObj->_is_nil() )
|
if ( !anObj->_is_nil() )
|
||||||
objects.push_back( anObj._retn() );
|
objects.push_back( anObj._retn() );
|
||||||
}
|
}
|
||||||
@ -320,13 +314,24 @@ double TransformationGUI_OffsetDlg::GetOffset() const
|
|||||||
return GroupPoints->SpinBox_DX->value();
|
return GroupPoints->SpinBox_DX->value();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : GetIsJoinByPipes
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
bool TransformationGUI_OffsetDlg::GetIsJoinByPipes() const
|
||||||
|
{
|
||||||
|
return GroupPoints->CheckButton1->isChecked();
|
||||||
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
// function : CreateCopyModeChanged()
|
// function : JoinModeChanged()
|
||||||
// purpose :
|
// purpose :
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
void TransformationGUI_OffsetDlg::CreateCopyModeChanged()
|
void TransformationGUI_OffsetDlg::JoinModeChanged()
|
||||||
{
|
{
|
||||||
mainFrame()->GroupBoxName->setEnabled( GroupPoints->CheckButton1->isChecked() );
|
processPreview();
|
||||||
|
//mainFrame()->GroupBoxName->setEnabled( GroupPoints->CheckButton1->isChecked() );
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
|
@ -57,6 +57,7 @@ private:
|
|||||||
void Init();
|
void Init();
|
||||||
void enterEvent( QEvent* );
|
void enterEvent( QEvent* );
|
||||||
double GetOffset() const;
|
double GetOffset() const;
|
||||||
|
bool GetIsJoinByPipes() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QList<GEOM::GeomObjPtr> myObjects;
|
QList<GEOM::GeomObjPtr> myObjects;
|
||||||
@ -70,7 +71,7 @@ private slots:
|
|||||||
void SelectionIntoArgument();
|
void SelectionIntoArgument();
|
||||||
void SetEditCurrentArgument();
|
void SetEditCurrentArgument();
|
||||||
void ValueChangedInSpinBox();
|
void ValueChangedInSpinBox();
|
||||||
void CreateCopyModeChanged();
|
void JoinModeChanged();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // TRANSFORMATIONGUI_OFFSETDLG_H
|
#endif // TRANSFORMATIONGUI_OFFSETDLG_H
|
||||||
|
@ -72,7 +72,7 @@ CORBA::Boolean XAOPlugin_IOperations_i::ExportXAO( GEOM::GEOM_Object_ptr shape,
|
|||||||
Handle(GEOM_Object) reference = GetObjectImpl( shape );
|
Handle(GEOM_Object) reference = GetObjectImpl( shape );
|
||||||
|
|
||||||
// Get the reference groups
|
// Get the reference groups
|
||||||
int ind = 0;
|
CORBA::ULong ind = 0;
|
||||||
std::list<Handle(GEOM_Object)> groupsObj;
|
std::list<Handle(GEOM_Object)> groupsObj;
|
||||||
for (; ind < groups.length(); ind++)
|
for (; ind < groups.length(); ind++)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user