mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2024-12-29 02:40:36 +05:00
0022758: [EDF] Creation of a face from a surface and limiting edges
This commit is contained in:
parent
121ed59dc2
commit
7933d72800
@ -36,11 +36,13 @@ face1 = geompy.MakeFace(wire, isPlanarFace)
|
|||||||
# create faces from two wires
|
# create faces from two wires
|
||||||
face2 = geompy.MakeFaceWires([wire, sketcher1],isPlanarFace)
|
face2 = geompy.MakeFaceWires([wire, sketcher1],isPlanarFace)
|
||||||
face3 = geompy.MakeFaces([sketcher2, sketcher3],isPlanarFace)
|
face3 = geompy.MakeFaces([sketcher2, sketcher3],isPlanarFace)
|
||||||
|
face4 = geompy.MakeFaceFromSurface(face1, sketcher1)
|
||||||
|
|
||||||
# add objects in the study
|
# add objects in the study
|
||||||
id_face1 = geompy.addToStudy(face1,"Face1")
|
id_face1 = geompy.addToStudy(face1,"Face1")
|
||||||
id_face2 = geompy.addToStudy(face2,"Face2")
|
id_face2 = geompy.addToStudy(face2,"Face2")
|
||||||
id_face3 = geompy.addToStudy(face3,"Face3")
|
id_face3 = geompy.addToStudy(face3,"Face3")
|
||||||
|
id_face4 = geompy.addToStudy(face4,"Face4")
|
||||||
|
|
||||||
# display the faces
|
# display the faces
|
||||||
gg.createAndDisplayGO(id_face1)
|
gg.createAndDisplayGO(id_face1)
|
||||||
@ -52,3 +54,6 @@ gg.setTransparency(id_face2,0.2)
|
|||||||
gg.createAndDisplayGO(id_face3)
|
gg.createAndDisplayGO(id_face3)
|
||||||
gg.setDisplayMode(id_face3,1)
|
gg.setDisplayMode(id_face3,1)
|
||||||
gg.setTransparency(id_face3,0.2)
|
gg.setTransparency(id_face3,0.2)
|
||||||
|
gg.createAndDisplayGO(id_face4)
|
||||||
|
gg.setDisplayMode(id_face4,1)
|
||||||
|
gg.setTransparency(id_face4,0.2)
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 18 KiB |
BIN
doc/salome/gui/GEOM/images/neo-obj4_2.png
Normal file
BIN
doc/salome/gui/GEOM/images/neo-obj4_2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
@ -5,10 +5,12 @@
|
|||||||
To create a \b Face in the <b>Main Menu</b> select <b>New Entity - >
|
To create a \b Face in the <b>Main Menu</b> select <b>New Entity - >
|
||||||
Build - > Face</b>
|
Build - > Face</b>
|
||||||
|
|
||||||
\n To create a \b Face you need to select input shape(s). The list of
|
\n There are two algorithms to create a \b Face.
|
||||||
input shapes can include shapes of any type; if the shapes are nor
|
\n Each time the \b Result of the operation will be a GEOM_Object
|
||||||
wires or edges, the algorithm extracts all edges from
|
(face).
|
||||||
the input shapes and works on the obtaineed edges.
|
|
||||||
|
\n Firstly, to create a \b Face you need to select input shape(s). The list of
|
||||||
|
input shapes can include shapes of type \b Edge or \b Wire.
|
||||||
\n The edges and wires do not necessarily have to be closed, the
|
\n The edges and wires do not necessarily have to be closed, the
|
||||||
algorithm automatically builds a wire of maximum length from all
|
algorithm automatically builds a wire of maximum length from all
|
||||||
given edges and wires. If it founds multiple closed wires, it can
|
given edges and wires. If it founds multiple closed wires, it can
|
||||||
@ -26,6 +28,15 @@ face or nothing if it is impossible.
|
|||||||
|
|
||||||
\image html neo-obj4.png
|
\image html neo-obj4.png
|
||||||
|
|
||||||
|
\n Secondly, it is possible to create a face based on another face's surface and bounded by a wire.
|
||||||
|
|
||||||
|
\n The \b Result will be a \b GEOM_Object (FACE).
|
||||||
|
|
||||||
|
\n <b>TUI Command:</b> <em>geompy.MakeFaceFromSurface(theFace, theWire)</em>
|
||||||
|
\n <b>Arguments:</b> Name + 1 face + 1 wire.
|
||||||
|
|
||||||
|
\image html neo-obj4_2.png
|
||||||
|
|
||||||
\n <b>Example:</b>
|
\n <b>Example:</b>
|
||||||
|
|
||||||
\image html facesn1.png
|
\image html facesn1.png
|
||||||
|
@ -1924,6 +1924,15 @@ module GEOM
|
|||||||
*/
|
*/
|
||||||
GEOM_Object MakeFaceWires (in ListOfGO theWires, in boolean isPlanarWanted);
|
GEOM_Object MakeFaceWires (in ListOfGO theWires, in boolean isPlanarWanted);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Create a face based on surface of theFace limited by theWire.
|
||||||
|
* \param theFace the face whose surface is used to create a new face.
|
||||||
|
* \param theWire closed Wire build the face.
|
||||||
|
* \return New GEOM_Object, containing the created face.
|
||||||
|
*/
|
||||||
|
GEOM_Object MakeFaceFromSurface(in GEOM_Object theFace,
|
||||||
|
in GEOM_Object theWire);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Create a shell from the set of faces and shells.
|
* \brief Create a shell from the set of faces and shells.
|
||||||
* \param theFacesAndShells List of faces and/or shells.
|
* \param theFacesAndShells List of faces and/or shells.
|
||||||
|
@ -54,6 +54,7 @@ SET( _res_files
|
|||||||
build_edge_wire.png
|
build_edge_wire.png
|
||||||
build_edge_curve.png
|
build_edge_curve.png
|
||||||
build_face.png
|
build_face.png
|
||||||
|
build_face_surface.png
|
||||||
build_shell.png
|
build_shell.png
|
||||||
build_solid.png
|
build_solid.png
|
||||||
build_wire.png
|
build_wire.png
|
||||||
|
BIN
resources/build_face_surface.png
Normal file
BIN
resources/build_face_surface.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 818 B |
@ -49,18 +49,20 @@
|
|||||||
// TRUE to construct a modal dialog.
|
// TRUE to construct a modal dialog.
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
BuildGUI_FaceDlg::BuildGUI_FaceDlg( GeometryGUI* theGeometryGUI, QWidget* parent )
|
BuildGUI_FaceDlg::BuildGUI_FaceDlg( GeometryGUI* theGeometryGUI, QWidget* parent )
|
||||||
: GEOMBase_Skeleton( theGeometryGUI, parent )
|
: GEOMBase_Skeleton( theGeometryGUI, parent ),
|
||||||
|
GroupWire (0),
|
||||||
|
myGroupSurf (0)
|
||||||
{
|
{
|
||||||
QPixmap image0( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_BUILD_FACE" ) ) );
|
QPixmap image0( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) );
|
||||||
QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) );
|
QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_BUILD_FACE" ) ) );
|
||||||
|
QPixmap image2( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_BUILD_FACE_SURFACE" ) ) );
|
||||||
|
|
||||||
setWindowTitle( tr( "GEOM_FACE_TITLE" ) );
|
setWindowTitle( tr( "GEOM_FACE_TITLE" ) );
|
||||||
|
|
||||||
/***************************************************************/
|
/***************************************************************/
|
||||||
mainFrame()->GroupConstructors->setTitle( tr( "GEOM_FACE" ) );
|
mainFrame()->GroupConstructors->setTitle( tr( "GEOM_FACE" ) );
|
||||||
mainFrame()->RadioButton1->setIcon( image0 );
|
mainFrame()->RadioButton1->setIcon( image1 );
|
||||||
mainFrame()->RadioButton2->setAttribute( Qt::WA_DeleteOnClose );
|
mainFrame()->RadioButton2->setIcon( image2 );
|
||||||
mainFrame()->RadioButton2->close();
|
|
||||||
mainFrame()->RadioButton3->setAttribute( Qt::WA_DeleteOnClose );
|
mainFrame()->RadioButton3->setAttribute( Qt::WA_DeleteOnClose );
|
||||||
mainFrame()->RadioButton3->close();
|
mainFrame()->RadioButton3->close();
|
||||||
|
|
||||||
@ -69,11 +71,20 @@ BuildGUI_FaceDlg::BuildGUI_FaceDlg( GeometryGUI* theGeometryGUI, QWidget* parent
|
|||||||
GroupWire->GroupBox1->setTitle( tr( "GEOM_FACE_FFW" ) );
|
GroupWire->GroupBox1->setTitle( tr( "GEOM_FACE_FFW" ) );
|
||||||
GroupWire->TextLabel1->setText( tr( "GEOM_OBJECTS" ) );
|
GroupWire->TextLabel1->setText( tr( "GEOM_OBJECTS" ) );
|
||||||
GroupWire->CheckButton1->setText( tr( "GEOM_FACE_OPT" ) );
|
GroupWire->CheckButton1->setText( tr( "GEOM_FACE_OPT" ) );
|
||||||
GroupWire->PushButton1->setIcon( image1 );
|
GroupWire->PushButton1->setIcon( image0 );
|
||||||
|
|
||||||
|
myGroupSurf = new DlgRef_2Sel(centralWidget());
|
||||||
|
|
||||||
|
myGroupSurf->GroupBox1->setTitle(tr("GEOM_FACE_FROM_SURFACE" ) );
|
||||||
|
myGroupSurf->TextLabel1->setText(tr("GEOM_FACE"));
|
||||||
|
myGroupSurf->TextLabel2->setText(tr("GEOM_WIRE"));
|
||||||
|
myGroupSurf->PushButton1->setIcon(image0);
|
||||||
|
myGroupSurf->PushButton2->setIcon(image0);
|
||||||
|
|
||||||
QVBoxLayout* layout = new QVBoxLayout( centralWidget() );
|
QVBoxLayout* layout = new QVBoxLayout( centralWidget() );
|
||||||
layout->setMargin( 0 ); layout->setSpacing( 6 );
|
layout->setMargin( 0 ); layout->setSpacing( 6 );
|
||||||
layout->addWidget( GroupWire );
|
layout->addWidget( GroupWire );
|
||||||
|
layout->addWidget(myGroupSurf);
|
||||||
/***************************************************************/
|
/***************************************************************/
|
||||||
|
|
||||||
setHelpFileName("create_face_page.html");
|
setHelpFileName("create_face_page.html");
|
||||||
@ -102,27 +113,79 @@ void BuildGUI_FaceDlg::Init()
|
|||||||
/* init variables */
|
/* init variables */
|
||||||
myEditCurrentArgument = GroupWire->LineEdit1;
|
myEditCurrentArgument = GroupWire->LineEdit1;
|
||||||
GroupWire->LineEdit1->setReadOnly( true );
|
GroupWire->LineEdit1->setReadOnly( true );
|
||||||
|
myGroupSurf->LineEdit1->setReadOnly( true );
|
||||||
|
myGroupSurf->LineEdit2->setReadOnly( true );
|
||||||
|
|
||||||
GroupWire->CheckButton1->setChecked( true );
|
GroupWire->CheckButton1->setChecked( true );
|
||||||
myWires.clear();
|
myWires.clear();
|
||||||
|
myFace.nullify();
|
||||||
TColStd_MapOfInteger aMap;
|
myWire.nullify();
|
||||||
aMap.Add( GEOM_EDGE );
|
|
||||||
aMap.Add( GEOM_WIRE );
|
|
||||||
globalSelection( aMap );
|
|
||||||
|
|
||||||
/* signals and slots connections */
|
/* signals and slots connections */
|
||||||
|
connect(myGeomGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog()));
|
||||||
|
connect(myGeomGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel()));
|
||||||
|
|
||||||
|
connect(this, SIGNAL(constructorsClicked(int)), this, SLOT(ConstructorsClicked(int)));
|
||||||
|
|
||||||
connect( buttonOk(), SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) );
|
connect( buttonOk(), SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) );
|
||||||
connect( buttonApply(), SIGNAL( clicked() ), this, SLOT( ClickOnApply() ) );
|
connect( buttonApply(), SIGNAL( clicked() ), this, SLOT( ClickOnApply() ) );
|
||||||
connect( GroupWire->LineEdit1, SIGNAL( returnPressed()), this, SLOT( LineEditReturnPressed() ) );
|
connect( GroupWire->LineEdit1, SIGNAL( returnPressed()), this, SLOT( LineEditReturnPressed() ) );
|
||||||
connect( GroupWire->PushButton1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
|
connect( GroupWire->PushButton1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
|
||||||
|
connect( myGroupSurf->LineEdit1, SIGNAL( returnPressed()), this, SLOT( LineEditReturnPressed() ) );
|
||||||
|
connect( myGroupSurf->PushButton1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
|
||||||
|
connect( myGroupSurf->LineEdit2, SIGNAL( returnPressed()), this, SLOT( LineEditReturnPressed() ) );
|
||||||
|
connect( myGroupSurf->PushButton2, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
|
||||||
connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
|
connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
|
||||||
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
|
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
|
||||||
|
|
||||||
initName( tr( "GEOM_FACE" ) );
|
initName( tr( "GEOM_FACE" ) );
|
||||||
SelectionIntoArgument();
|
|
||||||
|
ConstructorsClicked(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : ConstructorsClicked()
|
||||||
|
// purpose : Radio button management
|
||||||
|
//=================================================================================
|
||||||
|
void BuildGUI_FaceDlg::ConstructorsClicked(int constructorId)
|
||||||
|
{
|
||||||
|
switch (constructorId) {
|
||||||
|
case 0:
|
||||||
|
{
|
||||||
|
TColStd_MapOfInteger aMap;
|
||||||
|
|
||||||
|
aMap.Add(GEOM_EDGE);
|
||||||
|
aMap.Add(GEOM_WIRE);
|
||||||
|
globalSelection(aMap);
|
||||||
|
|
||||||
|
myEditCurrentArgument = GroupWire->LineEdit1;
|
||||||
|
GroupWire->LineEdit1->setText("");
|
||||||
|
GroupWire->show();
|
||||||
|
myGroupSurf->hide();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
globalSelection(GEOM_FACE); // For the first element.
|
||||||
|
|
||||||
|
myEditCurrentArgument = myGroupSurf->LineEdit1;
|
||||||
|
myGroupSurf->LineEdit1->setText("");
|
||||||
|
myGroupSurf->PushButton1->setDown(true);
|
||||||
|
myGroupSurf->PushButton2->setDown(false);
|
||||||
|
GroupWire->hide();
|
||||||
|
myGroupSurf->show();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
myWires.clear();
|
||||||
|
myFace.nullify();
|
||||||
|
myWire.nullify();
|
||||||
|
qApp->processEvents();
|
||||||
|
updateGeometry();
|
||||||
|
resize(minimumSizeHint());
|
||||||
|
SelectionIntoArgument();
|
||||||
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
// function : ClickOnOk()
|
// function : ClickOnOk()
|
||||||
@ -156,16 +219,44 @@ bool BuildGUI_FaceDlg::ClickOnApply()
|
|||||||
//=================================================================================
|
//=================================================================================
|
||||||
void BuildGUI_FaceDlg::SelectionIntoArgument()
|
void BuildGUI_FaceDlg::SelectionIntoArgument()
|
||||||
{
|
{
|
||||||
myEditCurrentArgument->setText( "" );
|
if (myEditCurrentArgument == GroupWire->LineEdit1) {
|
||||||
|
myEditCurrentArgument->setText( "" );
|
||||||
|
|
||||||
QList<TopAbs_ShapeEnum> types;
|
QList<TopAbs_ShapeEnum> types;
|
||||||
types << TopAbs_EDGE << TopAbs_WIRE;
|
types << TopAbs_EDGE << TopAbs_WIRE;
|
||||||
myWires = getSelected( types, -1 );
|
myWires = getSelected( types, -1 );
|
||||||
|
|
||||||
if ( !myWires.isEmpty() ) {
|
if ( !myWires.isEmpty() ) {
|
||||||
QString aName = myWires.count() > 1 ? QString( "%1_objects").arg( myWires.count() ) : GEOMBase::GetName( myWires[0].get() );
|
QString aName = myWires.count() > 1 ? QString( "%1_objects").arg( myWires.count() ) : GEOMBase::GetName( myWires[0].get() );
|
||||||
myEditCurrentArgument->setText( aName );
|
myEditCurrentArgument->setText( aName );
|
||||||
|
}
|
||||||
|
} else if (myEditCurrentArgument == myGroupSurf->LineEdit1 ||
|
||||||
|
myEditCurrentArgument == myGroupSurf->LineEdit2) {
|
||||||
|
const bool isEditFace = myEditCurrentArgument == myGroupSurf->LineEdit1;
|
||||||
|
const TopAbs_ShapeEnum aType = isEditFace ? TopAbs_FACE : TopAbs_WIRE;
|
||||||
|
GEOM::GeomObjPtr aSelectedObject = getSelected(aType);
|
||||||
|
GEOM::GeomObjPtr &anObj = isEditFace ? myFace : myWire;
|
||||||
|
|
||||||
|
if (aSelectedObject) {
|
||||||
|
myEditCurrentArgument->setText(GEOMBase::GetName(aSelectedObject.get()));
|
||||||
|
anObj = aSelectedObject;
|
||||||
|
} else {
|
||||||
|
myEditCurrentArgument->setText("");
|
||||||
|
anObj.nullify();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isEditFace) {
|
||||||
|
if (myFace && !myWire) {
|
||||||
|
myGroupSurf->PushButton2->click();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!myFace && myWire) {
|
||||||
|
myGroupSurf->PushButton1->click();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
displayPreview(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -176,18 +267,33 @@ void BuildGUI_FaceDlg::SelectionIntoArgument()
|
|||||||
void BuildGUI_FaceDlg::SetEditCurrentArgument()
|
void BuildGUI_FaceDlg::SetEditCurrentArgument()
|
||||||
{
|
{
|
||||||
QPushButton* send = (QPushButton*)sender();
|
QPushButton* send = (QPushButton*)sender();
|
||||||
if ( send != GroupWire->PushButton1 )
|
|
||||||
return;
|
if (send == GroupWire->PushButton1) {
|
||||||
|
TColStd_MapOfInteger aMap;
|
||||||
|
|
||||||
TColStd_MapOfInteger aMap;
|
aMap.Add(GEOM_EDGE);
|
||||||
aMap.Add( GEOM_EDGE );
|
aMap.Add(GEOM_WIRE);
|
||||||
aMap.Add( GEOM_WIRE );
|
globalSelection(aMap);
|
||||||
globalSelection( aMap );
|
myEditCurrentArgument = GroupWire->LineEdit1;
|
||||||
|
}
|
||||||
myEditCurrentArgument = GroupWire->LineEdit1;
|
else if (send == myGroupSurf->PushButton1) {
|
||||||
|
globalSelection(GEOM_FACE);
|
||||||
|
myEditCurrentArgument = myGroupSurf->LineEdit1;
|
||||||
|
myGroupSurf->PushButton2->setDown(false);
|
||||||
|
myGroupSurf->LineEdit2->setEnabled(false);
|
||||||
|
}
|
||||||
|
else if (send == myGroupSurf->PushButton2) {
|
||||||
|
globalSelection(GEOM_WIRE);
|
||||||
|
myEditCurrentArgument = myGroupSurf->LineEdit2;
|
||||||
|
myGroupSurf->PushButton1->setDown(false);
|
||||||
|
myGroupSurf->LineEdit1->setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// enable line edit
|
||||||
|
myEditCurrentArgument->setEnabled(true);
|
||||||
myEditCurrentArgument->setFocus();
|
myEditCurrentArgument->setFocus();
|
||||||
SelectionIntoArgument();
|
send->setDown(true);
|
||||||
|
displayPreview(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -198,12 +304,11 @@ void BuildGUI_FaceDlg::SetEditCurrentArgument()
|
|||||||
void BuildGUI_FaceDlg::ActivateThisDialog()
|
void BuildGUI_FaceDlg::ActivateThisDialog()
|
||||||
{
|
{
|
||||||
GEOMBase_Skeleton::ActivateThisDialog();
|
GEOMBase_Skeleton::ActivateThisDialog();
|
||||||
connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(),
|
|
||||||
SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
|
connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
|
||||||
TColStd_MapOfInteger aMap;
|
this, SLOT(SelectionIntoArgument()));
|
||||||
aMap.Add( GEOM_EDGE );
|
|
||||||
aMap.Add( GEOM_WIRE );
|
ConstructorsClicked(getConstructorId());
|
||||||
globalSelection( aMap );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -232,7 +337,20 @@ GEOM::GEOM_IOperations_ptr BuildGUI_FaceDlg::createOperation()
|
|||||||
//=================================================================================
|
//=================================================================================
|
||||||
bool BuildGUI_FaceDlg::isValid( QString& )
|
bool BuildGUI_FaceDlg::isValid( QString& )
|
||||||
{
|
{
|
||||||
return !myWires.isEmpty();
|
bool ok = false;
|
||||||
|
|
||||||
|
switch (getConstructorId()) {
|
||||||
|
case 0:
|
||||||
|
ok = !myWires.isEmpty();
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
ok = myFace && myWire;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
@ -241,14 +359,32 @@ bool BuildGUI_FaceDlg::isValid( QString& )
|
|||||||
//=================================================================================
|
//=================================================================================
|
||||||
bool BuildGUI_FaceDlg::execute( ObjectList& objects )
|
bool BuildGUI_FaceDlg::execute( ObjectList& objects )
|
||||||
{
|
{
|
||||||
|
bool res = false;
|
||||||
GEOM::GEOM_IShapesOperations_var anOper = GEOM::GEOM_IShapesOperations::_narrow( getOperation() );
|
GEOM::GEOM_IShapesOperations_var anOper = GEOM::GEOM_IShapesOperations::_narrow( getOperation() );
|
||||||
|
GEOM::GEOM_Object_var anObj;
|
||||||
|
|
||||||
GEOM::ListOfGO_var objlist = new GEOM::ListOfGO();
|
switch (getConstructorId()) {
|
||||||
objlist->length( myWires.count() );
|
case 0:
|
||||||
for ( int i = 0; i < myWires.count(); i++ )
|
{
|
||||||
objlist[i] = myWires[i].copy();
|
GEOM::ListOfGO_var objlist = new GEOM::ListOfGO();
|
||||||
|
|
||||||
|
objlist->length( myWires.count() );
|
||||||
|
|
||||||
GEOM::GEOM_Object_var anObj = anOper->MakeFaceWires( objlist.in(), GroupWire->CheckButton1->isChecked() );
|
for ( int i = 0; i < myWires.count(); i++ ) {
|
||||||
|
objlist[i] = myWires[i].copy();
|
||||||
|
}
|
||||||
|
|
||||||
|
anObj = anOper->MakeFaceWires( objlist.in(), GroupWire->CheckButton1->isChecked() );
|
||||||
|
res = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
anObj = anOper->MakeFaceFromSurface(myFace.get(), myWire.get());
|
||||||
|
res = true;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (!anObj->_is_nil()) {
|
if (!anObj->_is_nil()) {
|
||||||
objects.push_back(anObj._retn());
|
objects.push_back(anObj._retn());
|
||||||
@ -262,5 +398,5 @@ bool BuildGUI_FaceDlg::execute( ObjectList& objects )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return res;
|
||||||
}
|
}
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
#include "GEOM_GenericObjPtr.h"
|
#include "GEOM_GenericObjPtr.h"
|
||||||
|
|
||||||
class DlgRef_1Sel1Check;
|
class DlgRef_1Sel1Check;
|
||||||
|
class DlgRef_2Sel;
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
// class : BuildGUI_FaceDlg
|
// class : BuildGUI_FaceDlg
|
||||||
@ -56,10 +57,14 @@ private:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
QList<GEOM::GeomObjPtr> myWires;
|
QList<GEOM::GeomObjPtr> myWires;
|
||||||
|
GEOM::GeomObjPtr myFace;
|
||||||
|
GEOM::GeomObjPtr myWire;
|
||||||
|
|
||||||
DlgRef_1Sel1Check* GroupWire;
|
DlgRef_1Sel1Check* GroupWire;
|
||||||
|
DlgRef_2Sel *myGroupSurf;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
void ConstructorsClicked (int);
|
||||||
void ClickOnOk();
|
void ClickOnOk();
|
||||||
bool ClickOnApply();
|
bool ClickOnApply();
|
||||||
void ActivateThisDialog();
|
void ActivateThisDialog();
|
||||||
|
@ -159,6 +159,10 @@
|
|||||||
<source>ICON_DLG_BUILD_FACE</source>
|
<source>ICON_DLG_BUILD_FACE</source>
|
||||||
<translation>build_face.png</translation>
|
<translation>build_face.png</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>ICON_DLG_BUILD_FACE_SURFACE</source>
|
||||||
|
<translation>build_face_surface.png</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>ICON_DLG_FACE_HW</source>
|
<source>ICON_DLG_FACE_HW</source>
|
||||||
<translation>face_hw.png</translation>
|
<translation>face_hw.png</translation>
|
||||||
|
@ -691,6 +691,10 @@ Please, select face, shell or solid and try again</translation>
|
|||||||
<source>GEOM_FACE_FFW</source>
|
<source>GEOM_FACE_FFW</source>
|
||||||
<translation>Face creation from wires and/or edges</translation>
|
<translation>Face creation from wires and/or edges</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GEOM_FACE_FROM_SURFACE</source>
|
||||||
|
<translation>Face creation from surface bounded by wire</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>GEOM_FACE_OPT</source>
|
<source>GEOM_FACE_OPT</source>
|
||||||
<translation>Try to create a planar face</translation>
|
<translation>Try to create a planar face</translation>
|
||||||
|
@ -548,6 +548,77 @@ Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeFaceWires
|
|||||||
return aShape;
|
return aShape;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* MakeFaceFromSurface
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
Handle(GEOM_Object) GEOMImpl_IShapesOperations::MakeFaceFromSurface
|
||||||
|
(Handle(GEOM_Object) theFace,
|
||||||
|
Handle(GEOM_Object) theWire)
|
||||||
|
{
|
||||||
|
SetErrorCode(KO);
|
||||||
|
|
||||||
|
//Add a new object
|
||||||
|
Handle(GEOM_Object) aShape = GetEngine()->AddObject(GetDocID(), GEOM_FACE);
|
||||||
|
|
||||||
|
//Add a new function
|
||||||
|
Handle(GEOM_Function) aFunction =
|
||||||
|
aShape->AddFunction(GEOMImpl_ShapeDriver::GetID(), FACE_FROM_SURFACE);
|
||||||
|
|
||||||
|
if (aFunction.IsNull()) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Check if the function is set correctly
|
||||||
|
if (aFunction->GetDriverGUID() != GEOMImpl_ShapeDriver::GetID()) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
GEOMImpl_IShapes aCI (aFunction);
|
||||||
|
Handle(TColStd_HSequenceOfTransient) aShapesSeq =
|
||||||
|
new TColStd_HSequenceOfTransient;
|
||||||
|
Handle(GEOM_Function) aRefFace = theFace->GetLastFunction();
|
||||||
|
Handle(GEOM_Function) aRefWire = theWire->GetLastFunction();
|
||||||
|
|
||||||
|
if (aRefFace.IsNull()) {
|
||||||
|
SetErrorCode("NULL argument face for the face construction");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (aRefWire.IsNull()) {
|
||||||
|
SetErrorCode("NULL argument wire for the face construction");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
aShapesSeq->Append(aRefFace);
|
||||||
|
aShapesSeq->Append(aRefWire);
|
||||||
|
|
||||||
|
aCI.SetShapes(aShapesSeq);
|
||||||
|
|
||||||
|
//Compute the face
|
||||||
|
try {
|
||||||
|
OCC_CATCH_SIGNALS;
|
||||||
|
if (!GetSolver()->ComputeFunction(aFunction)) {
|
||||||
|
SetErrorCode("Shape driver failed");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Standard_Failure) {
|
||||||
|
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
|
||||||
|
SetErrorCode(aFail->GetMessageString());
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Make a Python command
|
||||||
|
GEOM::TPythonDump (aFunction) << aShape
|
||||||
|
<< " = geompy.MakeFaceFromSurface(" << theFace << ", " << theWire << ")";
|
||||||
|
|
||||||
|
SetErrorCode(OK);
|
||||||
|
|
||||||
|
return aShape;
|
||||||
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
* MakeShell
|
* MakeShell
|
||||||
|
@ -85,6 +85,10 @@ class GEOMImpl_IShapesOperations : public GEOM_IOperations
|
|||||||
Standard_EXPORT Handle(GEOM_Object) MakeFaceWires (std::list<Handle(GEOM_Object)> theWires,
|
Standard_EXPORT Handle(GEOM_Object) MakeFaceWires (std::list<Handle(GEOM_Object)> theWires,
|
||||||
const bool isPlanarWanted);
|
const bool isPlanarWanted);
|
||||||
|
|
||||||
|
Standard_EXPORT Handle(GEOM_Object) MakeFaceFromSurface
|
||||||
|
(Handle(GEOM_Object) theFace,
|
||||||
|
Handle(GEOM_Object) theWire);
|
||||||
|
|
||||||
Standard_EXPORT Handle(GEOM_Object) MakeShell (std::list<Handle(GEOM_Object)> theShapes);
|
Standard_EXPORT Handle(GEOM_Object) MakeShell (std::list<Handle(GEOM_Object)> theShapes);
|
||||||
|
|
||||||
Standard_EXPORT Handle(GEOM_Object) MakeSolidShells (std::list<Handle(GEOM_Object)> theShells);
|
Standard_EXPORT Handle(GEOM_Object) MakeSolidShells (std::list<Handle(GEOM_Object)> theShells);
|
||||||
|
@ -42,6 +42,7 @@
|
|||||||
#include <BRepAlgo_FaceRestrictor.hxx>
|
#include <BRepAlgo_FaceRestrictor.hxx>
|
||||||
#include <BRepBuilderAPI_Copy.hxx>
|
#include <BRepBuilderAPI_Copy.hxx>
|
||||||
#include <BRepBuilderAPI_Sewing.hxx>
|
#include <BRepBuilderAPI_Sewing.hxx>
|
||||||
|
#include <BRepBuilderAPI_MakeFace.hxx>
|
||||||
#include <BRepBuilderAPI_MakeWire.hxx>
|
#include <BRepBuilderAPI_MakeWire.hxx>
|
||||||
#include <BRepBuilderAPI_MakeEdge.hxx>
|
#include <BRepBuilderAPI_MakeEdge.hxx>
|
||||||
#include <BRepBuilderAPI_MakeSolid.hxx>
|
#include <BRepBuilderAPI_MakeSolid.hxx>
|
||||||
@ -315,6 +316,44 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const
|
|||||||
aShape = C;
|
aShape = C;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (aType == FACE_FROM_SURFACE) {
|
||||||
|
#ifdef RESULT_TYPE_CHECK
|
||||||
|
anExpectedType = TopAbs_FACE;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Handle(TColStd_HSequenceOfTransient) aShapes = aCI.GetShapes();
|
||||||
|
|
||||||
|
if (aShapes.IsNull() == Standard_False) {
|
||||||
|
Standard_Integer aNbShapes = aShapes->Length();
|
||||||
|
|
||||||
|
if (aNbShapes == 2) {
|
||||||
|
Handle(GEOM_Function) aRefFace =
|
||||||
|
Handle(GEOM_Function)::DownCast(aShapes->Value(1));
|
||||||
|
Handle(GEOM_Function) aRefWire =
|
||||||
|
Handle(GEOM_Function)::DownCast(aShapes->Value(2));
|
||||||
|
|
||||||
|
if (aRefFace.IsNull() == Standard_False &&
|
||||||
|
aRefWire.IsNull() == Standard_False) {
|
||||||
|
TopoDS_Shape aShFace = aRefFace->GetValue();
|
||||||
|
TopoDS_Shape aShWire = aRefWire->GetValue();
|
||||||
|
|
||||||
|
if (aShFace.IsNull() == Standard_False &&
|
||||||
|
aShFace.ShapeType() == TopAbs_FACE &&
|
||||||
|
aShWire.IsNull() == Standard_False &&
|
||||||
|
aShWire.ShapeType() == TopAbs_WIRE) {
|
||||||
|
TopoDS_Face aFace = TopoDS::Face(aShFace);
|
||||||
|
TopoDS_Wire aWire = TopoDS::Wire(aShWire);
|
||||||
|
Handle(Geom_Surface) aSurf = BRep_Tool::Surface(aFace);
|
||||||
|
BRepBuilderAPI_MakeFace aMkFace(aSurf, aWire);
|
||||||
|
|
||||||
|
if (aMkFace.IsDone()) {
|
||||||
|
aShape = aMkFace.Shape();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (aType == SHELL_FACES) {
|
else if (aType == SHELL_FACES) {
|
||||||
#ifdef RESULT_TYPE_CHECK
|
#ifdef RESULT_TYPE_CHECK
|
||||||
anExpectedType = TopAbs_SHELL;
|
anExpectedType = TopAbs_SHELL;
|
||||||
@ -1268,6 +1307,25 @@ GetCreationInformation(std::string& theOperationName,
|
|||||||
AddParam( theParams, "Wires/edges", aCI.GetShapes() );
|
AddParam( theParams, "Wires/edges", aCI.GetShapes() );
|
||||||
AddParam( theParams, "Is planar wanted", aCI.GetIsPlanar() );
|
AddParam( theParams, "Is planar wanted", aCI.GetIsPlanar() );
|
||||||
break;
|
break;
|
||||||
|
case FACE_FROM_SURFACE:
|
||||||
|
{
|
||||||
|
theOperationName = "FACE";
|
||||||
|
|
||||||
|
Handle(TColStd_HSequenceOfTransient) shapes = aCI.GetShapes();
|
||||||
|
|
||||||
|
if (shapes.IsNull() == Standard_False) {
|
||||||
|
Standard_Integer aNbShapes = shapes->Length();
|
||||||
|
|
||||||
|
if (aNbShapes > 0) {
|
||||||
|
AddParam(theParams, "Face", shapes->Value(1));
|
||||||
|
|
||||||
|
if (aNbShapes > 1) {
|
||||||
|
AddParam(theParams, "Wire", shapes->Value(2));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case SHELL_FACES:
|
case SHELL_FACES:
|
||||||
theOperationName = "SHELL";
|
theOperationName = "SHELL";
|
||||||
AddParam( theParams, "Objects", aCI.GetShapes() );
|
AddParam( theParams, "Objects", aCI.GetShapes() );
|
||||||
|
1
src/GEOMImpl/GEOMImpl_Types.hxx
Executable file → Normal file
1
src/GEOMImpl/GEOMImpl_Types.hxx
Executable file → Normal file
@ -299,6 +299,7 @@
|
|||||||
#define EDGE_CURVE_LENGTH 12
|
#define EDGE_CURVE_LENGTH 12
|
||||||
#define SHAPES_ON_SHAPE 13
|
#define SHAPES_ON_SHAPE 13
|
||||||
#define SHAPE_ISOLINE 14
|
#define SHAPE_ISOLINE 14
|
||||||
|
#define FACE_FROM_SURFACE 15
|
||||||
|
|
||||||
|
|
||||||
#define ARCHIMEDE_TYPE 1
|
#define ARCHIMEDE_TYPE 1
|
||||||
|
@ -246,6 +246,39 @@ GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeFaceWires
|
|||||||
return GetObject(anObject);
|
return GetObject(anObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
* MakeFaceFromSurface
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
GEOM::GEOM_Object_ptr GEOM_IShapesOperations_i::MakeFaceFromSurface
|
||||||
|
(GEOM::GEOM_Object_ptr theFace,
|
||||||
|
GEOM::GEOM_Object_ptr theWire)
|
||||||
|
{
|
||||||
|
GEOM::GEOM_Object_var aGEOMObject;
|
||||||
|
|
||||||
|
//Set a not done flag
|
||||||
|
GetOperations()->SetNotDone();
|
||||||
|
|
||||||
|
//Get the reference face and wire
|
||||||
|
Handle(GEOM_Object) aFace = GetObjectImpl(theFace);
|
||||||
|
Handle(GEOM_Object) aWire = GetObjectImpl(theWire);
|
||||||
|
|
||||||
|
if (aFace.IsNull() || aWire.IsNull()) {
|
||||||
|
return aGEOMObject._retn();
|
||||||
|
}
|
||||||
|
|
||||||
|
//Create the Face
|
||||||
|
Handle(GEOM_Object) anObject =
|
||||||
|
GetOperations()->MakeFaceFromSurface(aFace, aWire);
|
||||||
|
|
||||||
|
if (anObject.IsNull()) {
|
||||||
|
return aGEOMObject._retn();
|
||||||
|
}
|
||||||
|
|
||||||
|
return GetObject(anObject);
|
||||||
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
* MakeShell
|
* MakeShell
|
||||||
|
@ -64,6 +64,9 @@ class GEOM_I_EXPORT GEOM_IShapesOperations_i :
|
|||||||
GEOM::GEOM_Object_ptr MakeFaceWires (const GEOM::ListOfGO& theWires,
|
GEOM::GEOM_Object_ptr MakeFaceWires (const GEOM::ListOfGO& theWires,
|
||||||
CORBA::Boolean isPlanarWanted);
|
CORBA::Boolean isPlanarWanted);
|
||||||
|
|
||||||
|
GEOM::GEOM_Object_ptr MakeFaceFromSurface(GEOM::GEOM_Object_ptr theFace,
|
||||||
|
GEOM::GEOM_Object_ptr theWire);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr MakeShell (const GEOM::ListOfGO& theFacesAndShells);
|
GEOM::GEOM_Object_ptr MakeShell (const GEOM::ListOfGO& theFacesAndShells);
|
||||||
|
|
||||||
GEOM::GEOM_Object_ptr MakeSolidShell (GEOM::GEOM_Object_ptr theShell);
|
GEOM::GEOM_Object_ptr MakeSolidShell (GEOM::GEOM_Object_ptr theShell);
|
||||||
|
@ -178,6 +178,7 @@ def TestAll (geompy, math):
|
|||||||
Face2 = geompy.MakeFace(Sketcher, WantPlanarFace)
|
Face2 = geompy.MakeFace(Sketcher, WantPlanarFace)
|
||||||
Face3 = geompy.MakeFaceHW (100., 200., 1) #(2 Doubles, 1 Int)->GEOM_Object
|
Face3 = geompy.MakeFaceHW (100., 200., 1) #(2 Doubles, 1 Int)->GEOM_Object
|
||||||
Face4 = geompy.MakeFaceObjHW (vz, 200., 100.) #(1 GEOM_Object, 2 Doubles)->GEOM_Object
|
Face4 = geompy.MakeFaceObjHW (vz, 200., 100.) #(1 GEOM_Object, 2 Doubles)->GEOM_Object
|
||||||
|
Face5 = geompy.MakeFaceFromSurface(Face, Sketcher) #(2 GEOM_Objects)->GEOM_Object
|
||||||
Disk = geompy.MakeDiskPntVecR (p0, vz, radius) #(2 GEOM_Object, 1 Double)->GEOM_Object
|
Disk = geompy.MakeDiskPntVecR (p0, vz, radius) #(2 GEOM_Object, 1 Double)->GEOM_Object
|
||||||
Disk2 = geompy.MakeDiskThreePnt(p0, p200, pz) #(3 GEOM_Object)->GEOM_Object
|
Disk2 = geompy.MakeDiskThreePnt(p0, p200, pz) #(3 GEOM_Object)->GEOM_Object
|
||||||
Disk3 = geompy.MakeDiskR(100., 1) #(1 Doubles, 1 Int)->GEOM_Object
|
Disk3 = geompy.MakeDiskR(100., 1) #(1 Doubles, 1 Int)->GEOM_Object
|
||||||
@ -397,6 +398,7 @@ def TestAll (geompy, math):
|
|||||||
id_Face2 = geompy.addToStudy(Face2, "Face from Sketcher")
|
id_Face2 = geompy.addToStudy(Face2, "Face from Sketcher")
|
||||||
id_Face3 = geompy.addToStudy(Face3, "Face Height Width")
|
id_Face3 = geompy.addToStudy(Face3, "Face Height Width")
|
||||||
id_Face4 = geompy.addToStudy(Face4, "Face Plane_HW")
|
id_Face4 = geompy.addToStudy(Face4, "Face Plane_HW")
|
||||||
|
id_Face5 = geompy.addToStudy(Face5, "Face from surface and wire")
|
||||||
id_Disk = geompy.addToStudy(Disk, "Disk PntVecR")
|
id_Disk = geompy.addToStudy(Disk, "Disk PntVecR")
|
||||||
id_Disk2 = geompy.addToStudy(Disk2, "Disk Three Points")
|
id_Disk2 = geompy.addToStudy(Disk2, "Disk Three Points")
|
||||||
id_Disk3 = geompy.addToStudy(Disk3, "Disk OXY Radius")
|
id_Disk3 = geompy.addToStudy(Disk3, "Disk OXY Radius")
|
||||||
|
@ -4504,6 +4504,39 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen):
|
|||||||
anObj = self.MakeFaceWires(theWires, isPlanarWanted, theName)
|
anObj = self.MakeFaceWires(theWires, isPlanarWanted, theName)
|
||||||
return anObj
|
return anObj
|
||||||
|
|
||||||
|
## Create a face based on a surface from given face bounded
|
||||||
|
# by given wire.
|
||||||
|
# @param theFace the face whose surface is used to create a new face.
|
||||||
|
# @param theWire the wire that will bound a new face.
|
||||||
|
# @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 created face.
|
||||||
|
#
|
||||||
|
# @ref tui_creation_face "Example"
|
||||||
|
@ManageTransactions("ShapesOp")
|
||||||
|
def MakeFaceFromSurface(self, theFace, theWire, theName=None):
|
||||||
|
"""
|
||||||
|
Create a face based on a surface from given face bounded
|
||||||
|
by given wire.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
theFace the face whose surface is used to create a new face.
|
||||||
|
theWire the wire that will bound a new face.
|
||||||
|
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 created face.
|
||||||
|
"""
|
||||||
|
# Example: see GEOM_TestAll.py
|
||||||
|
anObj = self.ShapesOp.MakeFaceFromSurface(theFace, theWire)
|
||||||
|
RaiseIfFailed("MakeFaceFromSurface", self.ShapesOp)
|
||||||
|
self._autoPublish(anObj, theName, "face")
|
||||||
|
return anObj
|
||||||
|
|
||||||
## Create a shell from the set of faces and shells.
|
## Create a shell from the set of faces and shells.
|
||||||
# @param theFacesAndShells List of faces and/or shells.
|
# @param theFacesAndShells List of faces and/or shells.
|
||||||
# @param theName Object name; when specified, this parameter is used
|
# @param theName Object name; when specified, this parameter is used
|
||||||
|
Loading…
Reference in New Issue
Block a user