mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-01-28 06:00:32 +05:00
Bug PAL7334 - DEVELOPMENT : Control Improvement
Bug PAL7613: Needless submenu in the 3D Viewer popup for meshes groups
This commit is contained in:
parent
078f309423
commit
a88e2af2a6
@ -54,6 +54,7 @@ module SMESH
|
|||||||
FT_FreeBorders,
|
FT_FreeBorders,
|
||||||
FT_FreeEdges,
|
FT_FreeEdges,
|
||||||
FT_MultiConnection,
|
FT_MultiConnection,
|
||||||
|
FT_MultiConnection2D,
|
||||||
FT_Length,
|
FT_Length,
|
||||||
FT_Length2D,
|
FT_Length2D,
|
||||||
FT_BelongToGeom,
|
FT_BelongToGeom,
|
||||||
@ -108,13 +109,23 @@ module SMESH
|
|||||||
struct Value
|
struct Value
|
||||||
{
|
{
|
||||||
double myLength;
|
double myLength;
|
||||||
long myElemId;
|
|
||||||
long myPnt1, myPnt2;
|
long myPnt1, myPnt2;
|
||||||
};
|
};
|
||||||
typedef sequence<Value> Values;
|
typedef sequence<Value> Values;
|
||||||
Values GetValues();
|
Values GetValues();
|
||||||
};
|
};
|
||||||
interface MultiConnection : NumericalFunctor{};
|
interface MultiConnection : NumericalFunctor{};
|
||||||
|
interface MultiConnection2D : NumericalFunctor
|
||||||
|
{
|
||||||
|
struct Value
|
||||||
|
{
|
||||||
|
long myNbConnects;
|
||||||
|
long myPnt1, myPnt2;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef sequence<Value> Values;
|
||||||
|
Values GetValues();
|
||||||
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Predicates are intended for verification of criteria,
|
* Predicates are intended for verification of criteria,
|
||||||
@ -342,6 +353,7 @@ module SMESH
|
|||||||
Length CreateLength();
|
Length CreateLength();
|
||||||
Length2D CreateLength2D();
|
Length2D CreateLength2D();
|
||||||
MultiConnection CreateMultiConnection();
|
MultiConnection CreateMultiConnection();
|
||||||
|
MultiConnection2D CreateMultiConnection2D();
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Create logical functors ( predicates )
|
* Create logical functors ( predicates )
|
||||||
|
@ -79,6 +79,7 @@
|
|||||||
<separator pos-id=""/>
|
<separator pos-id=""/>
|
||||||
<popup-item item-id="6002" pos-id="" label-id="Free Edges" icon-id="mesh_free_edges_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6002" pos-id="" label-id="Free Edges" icon-id="mesh_free_edges_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="6018" pos-id="" label-id="Length 2D" icon-id="mesh_length_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6018" pos-id="" label-id="Length 2D" icon-id="mesh_length_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="6019" pos-id="" label-id="Borders at Multi-Connection 2D" icon-id="mesh_multi_edges_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="6011" pos-id="" label-id="Area" icon-id="mesh_area.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6011" pos-id="" label-id="Area" icon-id="mesh_area.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="6012" pos-id="" label-id="Taper" icon-id="mesh_taper.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6012" pos-id="" label-id="Taper" icon-id="mesh_taper.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="6013" pos-id="" label-id="Aspect Ratio" icon-id="mesh_aspect.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6013" pos-id="" label-id="Aspect Ratio" icon-id="mesh_aspect.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
@ -259,6 +260,7 @@
|
|||||||
<separator pos-id=""/>
|
<separator pos-id=""/>
|
||||||
<popup-item item-id="6002" pos-id="" label-id="Free Edges" icon-id="mesh_free_edges_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6002" pos-id="" label-id="Free Edges" icon-id="mesh_free_edges_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="6018" pos-id="" label-id="Length 2D" icon-id="mesh_length_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6018" pos-id="" label-id="Length 2D" icon-id="mesh_length_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="6019" pos-id="" label-id="Borders at Multi-Connection 2D" icon-id="mesh_multi_edges_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="6011" pos-id="" label-id="Area" icon-id="mesh_area.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6011" pos-id="" label-id="Area" icon-id="mesh_area.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="6012" pos-id="" label-id="Taper" icon-id="mesh_taper.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6012" pos-id="" label-id="Taper" icon-id="mesh_taper.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="6013" pos-id="" label-id="Aspect Ratio" icon-id="mesh_aspect.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6013" pos-id="" label-id="Aspect Ratio" icon-id="mesh_aspect.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
@ -313,6 +315,7 @@
|
|||||||
<separator pos-id=""/>
|
<separator pos-id=""/>
|
||||||
<popup-item item-id="6002" pos-id="" label-id="Free Edges" icon-id="mesh_free_edges_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6002" pos-id="" label-id="Free Edges" icon-id="mesh_free_edges_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="6018" pos-id="" label-id="Length 2D" icon-id="mesh_length_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6018" pos-id="" label-id="Length 2D" icon-id="mesh_length_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="6019" pos-id="" label-id="Borders at Multi-Connection 2D" icon-id="mesh_multi_edges_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="6011" pos-id="" label-id="Area" icon-id="mesh_area.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6011" pos-id="" label-id="Area" icon-id="mesh_area.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="6012" pos-id="" label-id="Taper" icon-id="mesh_taper.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6012" pos-id="" label-id="Taper" icon-id="mesh_taper.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="6013" pos-id="" label-id="Aspect Ratio" icon-id="mesh_aspect.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6013" pos-id="" label-id="Aspect Ratio" icon-id="mesh_aspect.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
@ -369,6 +372,7 @@
|
|||||||
<separator pos-id=""/>
|
<separator pos-id=""/>
|
||||||
<popup-item item-id="6002" pos-id="" label-id="Free Edges" icon-id="mesh_free_edges_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6002" pos-id="" label-id="Free Edges" icon-id="mesh_free_edges_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="6018" pos-id="" label-id="Length 2D" icon-id="mesh_length_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6018" pos-id="" label-id="Length 2D" icon-id="mesh_length_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<popup-item item-id="6019" pos-id="" label-id="Borders at Multi-Connection 2D" icon-id="mesh_multi_edges_2d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="6011" pos-id="" label-id="Area" icon-id="mesh_area.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6011" pos-id="" label-id="Area" icon-id="mesh_area.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="6012" pos-id="" label-id="Taper" icon-id="mesh_taper.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6012" pos-id="" label-id="Taper" icon-id="mesh_taper.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<popup-item item-id="6013" pos-id="" label-id="Aspect Ratio" icon-id="mesh_aspect.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
<popup-item item-id="6013" pos-id="" label-id="Aspect Ratio" icon-id="mesh_aspect.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
|
||||||
@ -419,6 +423,7 @@
|
|||||||
<separatorTB/>
|
<separatorTB/>
|
||||||
<toolbutton-item item-id="6002" label-id="Free Edges" icon-id="mesh_free_edges_2d.png" tooltip-id="Free edges" accel-id="" toggle-id="" execute-action=""/>
|
<toolbutton-item item-id="6002" label-id="Free Edges" icon-id="mesh_free_edges_2d.png" tooltip-id="Free edges" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<toolbutton-item item-id="6018" label-id="Length 2D" icon-id="mesh_length_2d.png" tooltip-id="Length2D" accel-id="" toggle-id="" execute-action=""/>
|
<toolbutton-item item-id="6018" label-id="Length 2D" icon-id="mesh_length_2d.png" tooltip-id="Length2D" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
<toolbutton-item item-id="6019" label-id="Borders at Multi-Connection 2D" icon-id="mesh_multi_edges_2d.png" tooltip-id="Multiconnection 2D" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<toolbutton-item item-id="6011" label-id="Area" icon-id="mesh_area.png" tooltip-id="Area" accel-id="" toggle-id="" execute-action=""/>
|
<toolbutton-item item-id="6011" label-id="Area" icon-id="mesh_area.png" tooltip-id="Area" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<toolbutton-item item-id="6012" label-id="Taper" icon-id="mesh_taper.png" tooltip-id="Taper" accel-id="" toggle-id="" execute-action=""/>
|
<toolbutton-item item-id="6012" label-id="Taper" icon-id="mesh_taper.png" tooltip-id="Taper" accel-id="" toggle-id="" execute-action=""/>
|
||||||
<toolbutton-item item-id="6013" label-id="Aspect Ratio" icon-id="mesh_aspect.png" tooltip-id="Aspect Ratio" accel-id="" toggle-id="" execute-action=""/>
|
<toolbutton-item item-id="6013" label-id="Aspect Ratio" icon-id="mesh_aspect.png" tooltip-id="Aspect Ratio" accel-id="" toggle-id="" execute-action=""/>
|
||||||
|
@ -29,7 +29,9 @@ int main(int argc, char** argv)
|
|||||||
new Skew();
|
new Skew();
|
||||||
new Area();
|
new Area();
|
||||||
new Length();
|
new Length();
|
||||||
|
// new Length2D();
|
||||||
new MultiConnection();
|
new MultiConnection();
|
||||||
|
// new MultiConnection2D();
|
||||||
new FreeBorders();
|
new FreeBorders();
|
||||||
new LessThan();
|
new LessThan();
|
||||||
new MoreThan();
|
new MoreThan();
|
||||||
|
@ -1020,6 +1020,148 @@ SMDSAbs_ElementType MultiConnection::GetType() const
|
|||||||
return SMDSAbs_Edge;
|
return SMDSAbs_Edge;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : MultiConnection2D
|
||||||
|
Description : Functor for calculating number of faces conneted to the edge
|
||||||
|
*/
|
||||||
|
double MultiConnection2D::GetValue( const TSequenceOfXYZ& P )
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
double MultiConnection2D::GetValue( long theElementId )
|
||||||
|
{
|
||||||
|
TSequenceOfXYZ P;
|
||||||
|
int aResult = 0;
|
||||||
|
|
||||||
|
if (GetPoints(theElementId,P)){
|
||||||
|
double aVal;
|
||||||
|
const SMDS_MeshElement* anFaceElem = myMesh->FindElement( theElementId );
|
||||||
|
SMDSAbs_ElementType aType = anFaceElem->GetType();
|
||||||
|
|
||||||
|
int len = P.size();
|
||||||
|
|
||||||
|
TColStd_MapOfInteger aMap;
|
||||||
|
int aResult = 0;
|
||||||
|
|
||||||
|
switch (aType){
|
||||||
|
case SMDSAbs_All:
|
||||||
|
case SMDSAbs_Node:
|
||||||
|
case SMDSAbs_Edge:
|
||||||
|
case SMDSAbs_Face:
|
||||||
|
if (len == 3){ // triangles
|
||||||
|
int Nb[3] = {0,0,0};
|
||||||
|
|
||||||
|
int i=0;
|
||||||
|
SMDS_ElemIteratorPtr anIter = anFaceElem->nodesIterator();
|
||||||
|
if ( anIter != 0 ) {
|
||||||
|
while( anIter->more() ) {
|
||||||
|
const SMDS_MeshNode* aNode = (SMDS_MeshNode*)anIter->next();
|
||||||
|
if ( aNode == 0 ){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
SMDS_ElemIteratorPtr anElemIter = aNode->GetInverseElementIterator();
|
||||||
|
while( anElemIter->more() ) {
|
||||||
|
const SMDS_MeshElement* anElem = anElemIter->next();
|
||||||
|
if ( anElem != 0 && anElem->GetType() != SMDSAbs_Edge ) {
|
||||||
|
int anId = anElem->GetID();
|
||||||
|
|
||||||
|
if ( anIter->more() ) // i.e. first node
|
||||||
|
aMap.Add( anId );
|
||||||
|
else if ( aMap.Contains( anId ) ){
|
||||||
|
Nb[i]++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ( anElem != 0 && anElem->GetType() == SMDSAbs_Edge ) i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
aResult = Max(Max(Nb[0],Nb[1]),Nb[2]);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SMDSAbs_Volume:
|
||||||
|
default: aResult=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return aResult;//getNbMultiConnection( myMesh, theId );
|
||||||
|
}
|
||||||
|
|
||||||
|
double MultiConnection2D::GetBadRate( double Value, int /*nbNodes*/ ) const
|
||||||
|
{
|
||||||
|
return Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
SMDSAbs_ElementType MultiConnection2D::GetType() const
|
||||||
|
{
|
||||||
|
return SMDSAbs_Face;
|
||||||
|
}
|
||||||
|
|
||||||
|
MultiConnection2D::Value::Value(long thePntId1, long thePntId2)
|
||||||
|
{
|
||||||
|
myPntId[0] = thePntId1; myPntId[1] = thePntId2;
|
||||||
|
if(thePntId1 > thePntId2){
|
||||||
|
myPntId[1] = thePntId1; myPntId[0] = thePntId2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MultiConnection2D::Value::operator<(const MultiConnection2D::Value& x) const{
|
||||||
|
if(myPntId[0] < x.myPntId[0]) return true;
|
||||||
|
if(myPntId[0] == x.myPntId[0])
|
||||||
|
if(myPntId[1] < x.myPntId[1]) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MultiConnection2D::GetValues(MValues& theValues){
|
||||||
|
SMDS_FaceIteratorPtr anIter = myMesh->facesIterator();
|
||||||
|
for(; anIter->more(); ){
|
||||||
|
const SMDS_MeshFace* anElem = anIter->next();
|
||||||
|
long anElemId = anElem->GetID();
|
||||||
|
SMDS_ElemIteratorPtr aNodesIter = anElem->nodesIterator();
|
||||||
|
long aNodeId[3];
|
||||||
|
|
||||||
|
//int aNbConnects=0;
|
||||||
|
const SMDS_MeshNode* aNode0;
|
||||||
|
const SMDS_MeshNode* aNode1;
|
||||||
|
const SMDS_MeshNode* aNode2;
|
||||||
|
if(aNodesIter->more()){
|
||||||
|
aNode0 = (SMDS_MeshNode*) aNodesIter->next();
|
||||||
|
aNode1 = aNode0;
|
||||||
|
const SMDS_MeshNode* aNodes = (SMDS_MeshNode*) aNode1;
|
||||||
|
aNodeId[0] = aNodeId[1] = aNodes->GetID();
|
||||||
|
}
|
||||||
|
for(; aNodesIter->more(); ){
|
||||||
|
aNode2 = (SMDS_MeshNode*) aNodesIter->next();
|
||||||
|
long anId = aNode2->GetID();
|
||||||
|
aNodeId[2] = anId;
|
||||||
|
|
||||||
|
Value aValue(aNodeId[1],aNodeId[2]);
|
||||||
|
MValues::iterator aItr = theValues.find(aValue);
|
||||||
|
if (aItr != theValues.end()){
|
||||||
|
aItr->second += 1;
|
||||||
|
//aNbConnects = nb;
|
||||||
|
} else {
|
||||||
|
theValues[aValue] = 1;
|
||||||
|
//aNbConnects = 1;
|
||||||
|
}
|
||||||
|
//cout << "NodeIds: "<<aNodeId[1]<<","<<aNodeId[2]<<" nbconn="<<aNbConnects<<endl;
|
||||||
|
aNodeId[1] = aNodeId[2];
|
||||||
|
aNode1 = aNode2;
|
||||||
|
}
|
||||||
|
Value aValue(aNodeId[0],aNodeId[2]);
|
||||||
|
MValues::iterator aItr = theValues.find(aValue);
|
||||||
|
if (aItr != theValues.end()){
|
||||||
|
aItr->second += 1;
|
||||||
|
//aNbConnects = nb;
|
||||||
|
} else {
|
||||||
|
theValues[aValue] = 1;
|
||||||
|
//aNbConnects = 1;
|
||||||
|
}
|
||||||
|
//cout << "NodeIds: "<<aNodeId[0]<<","<<aNodeId[2]<<" nbconn="<<aNbConnects<<endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
PREDICATES
|
PREDICATES
|
||||||
|
@ -253,6 +253,26 @@ namespace SMESH{
|
|||||||
virtual SMDSAbs_ElementType GetType() const;
|
virtual SMDSAbs_ElementType GetType() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : MultiConnection2D
|
||||||
|
Description : Functor for calculating number of faces conneted to the edge
|
||||||
|
*/
|
||||||
|
class MultiConnection2D: public virtual NumericalFunctor{
|
||||||
|
public:
|
||||||
|
virtual double GetValue( long theElementId );
|
||||||
|
virtual double GetValue( const TSequenceOfXYZ& thePoints );
|
||||||
|
virtual double GetBadRate( double Value, int nbNodes ) const;
|
||||||
|
virtual SMDSAbs_ElementType GetType() const;
|
||||||
|
struct Value{
|
||||||
|
long myPntId[2];
|
||||||
|
Value(long thePntId1, long thePntId2);
|
||||||
|
bool operator<(const Value& x) const;
|
||||||
|
};
|
||||||
|
typedef std::map<Value,int> MValues;
|
||||||
|
|
||||||
|
void GetValues(MValues& theValues);
|
||||||
|
};
|
||||||
|
typedef boost::shared_ptr<MultiConnection2D> MultiConnection2DPtr;
|
||||||
/*
|
/*
|
||||||
PREDICATES
|
PREDICATES
|
||||||
*/
|
*/
|
||||||
|
@ -660,6 +660,10 @@ void SMESH_ActorDef::SetControlMode(eControl theMode){
|
|||||||
aFunctor.reset(new SMESH::Controls::MultiConnection());
|
aFunctor.reset(new SMESH::Controls::MultiConnection());
|
||||||
myControlActor = my1DActor;
|
myControlActor = my1DActor;
|
||||||
break;
|
break;
|
||||||
|
case eMultiConnection2D:
|
||||||
|
aFunctor.reset(new SMESH::Controls::MultiConnection2D());
|
||||||
|
myControlActor = my2DActor;
|
||||||
|
break;
|
||||||
case eArea:
|
case eArea:
|
||||||
{
|
{
|
||||||
SMESH::Controls::Area* aControl = new SMESH::Controls::Area();
|
SMESH::Controls::Area* aControl = new SMESH::Controls::Area();
|
||||||
@ -732,6 +736,9 @@ void SMESH_ActorDef::SetControlMode(eControl theMode){
|
|||||||
case eLength2D:
|
case eLength2D:
|
||||||
my1DExtActor->SetExtControlMode(aFunctor,myControlActor,myScalarBarActor,myLookupTable);
|
my1DExtActor->SetExtControlMode(aFunctor,myControlActor,myScalarBarActor,myLookupTable);
|
||||||
break;
|
break;
|
||||||
|
case eMultiConnection2D:
|
||||||
|
my1DExtActor->SetExtControlMode(aFunctor,myControlActor,myScalarBarActor,myLookupTable);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
myControlActor->SetControlMode(aFunctor,myScalarBarActor,myLookupTable);
|
myControlActor->SetControlMode(aFunctor,myScalarBarActor,myLookupTable);
|
||||||
}
|
}
|
||||||
@ -1032,6 +1039,8 @@ void SMESH_ActorDef::SetVisibility(int theMode, bool theIsUpdateRepersentation){
|
|||||||
break;
|
break;
|
||||||
case eLength2D:
|
case eLength2D:
|
||||||
my1DExtActor->VisibilityOn();
|
my1DExtActor->VisibilityOn();
|
||||||
|
case eMultiConnection2D:
|
||||||
|
my1DExtActor->VisibilityOn();
|
||||||
default:
|
default:
|
||||||
if(myControlActor->GetUnstructuredGrid()->GetNumberOfCells())
|
if(myControlActor->GetUnstructuredGrid()->GetNumberOfCells())
|
||||||
myScalarBarActor->VisibilityOn();
|
myScalarBarActor->VisibilityOn();
|
||||||
|
@ -95,7 +95,7 @@ class SMESH_Actor: public SALOME_Actor
|
|||||||
|
|
||||||
enum eControl{eNone, eLength, eLength2D, eFreeBorders, eFreeEdges, eMultiConnection,
|
enum eControl{eNone, eLength, eLength2D, eFreeBorders, eFreeEdges, eMultiConnection,
|
||||||
eArea, eTaper, eAspectRatio, eMinimumAngle, eWarping, eSkew,
|
eArea, eTaper, eAspectRatio, eMinimumAngle, eWarping, eSkew,
|
||||||
eAspectRatio3D};
|
eAspectRatio3D, eMultiConnection2D};
|
||||||
virtual void SetControlMode(eControl theMode) = 0;
|
virtual void SetControlMode(eControl theMode) = 0;
|
||||||
virtual eControl GetControlMode() = 0;
|
virtual eControl GetControlMode() = 0;
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
// File : SMESH_Actor.cxx
|
// File : SMESH_Actor.cxx
|
||||||
// Author : Nicolas REJNERI
|
// Author : Nicolas REJNERI
|
||||||
// Module : SMESH
|
// Module : SMESH
|
||||||
// $Header$Header$
|
// $Header$Header: /home/server/cvs/SMESH/SMESH_SRC/src/OBJECT/SMESH_DeviceActor.cxx,v 1.5.2.4 2004/12/27 12:49:55 apo Exp $
|
||||||
|
|
||||||
|
|
||||||
#include "SMESH_DeviceActor.h"
|
#include "SMESH_DeviceActor.h"
|
||||||
@ -332,6 +332,69 @@ void SMESH_DeviceActor::SetExtControlMode(SMESH::Controls::FunctorPtr theFunctor
|
|||||||
theLookupTable->SetRange(aScalars->GetRange());
|
theLookupTable->SetRange(aScalars->GetRange());
|
||||||
theLookupTable->Build();
|
theLookupTable->Build();
|
||||||
|
|
||||||
|
myMergeFilter->SetScalars(aDataSet);
|
||||||
|
aDataSet->Delete();
|
||||||
|
}
|
||||||
|
else if (MultiConnection2D* aMultiConnection2D = dynamic_cast<MultiConnection2D*>(theFunctor.get())){
|
||||||
|
SMESH::Controls::MultiConnection2D::MValues aValues;
|
||||||
|
|
||||||
|
myVisualObj->UpdateFunctor(theFunctor);
|
||||||
|
|
||||||
|
aMultiConnection2D->GetValues(aValues);
|
||||||
|
vtkUnstructuredGrid* aDataSet = vtkUnstructuredGrid::New();
|
||||||
|
vtkUnstructuredGrid* aGrid = myVisualObj->GetUnstructuredGrid();
|
||||||
|
aDataSet->SetPoints(aGrid->GetPoints());
|
||||||
|
|
||||||
|
vtkIdType aNbCells = aValues.size();
|
||||||
|
vtkDoubleArray *aScalars = vtkDoubleArray::New();
|
||||||
|
aScalars->SetNumberOfComponents(1);
|
||||||
|
aScalars->SetNumberOfTuples(aNbCells);
|
||||||
|
|
||||||
|
vtkIdType aCellsSize = 3*aNbCells;
|
||||||
|
vtkCellArray* aConnectivity = vtkCellArray::New();
|
||||||
|
aConnectivity->Allocate( aCellsSize, 0 );
|
||||||
|
|
||||||
|
vtkUnsignedCharArray* aCellTypesArray = vtkUnsignedCharArray::New();
|
||||||
|
aCellTypesArray->SetNumberOfComponents( 1 );
|
||||||
|
aCellTypesArray->Allocate( aNbCells * aCellTypesArray->GetNumberOfComponents() );
|
||||||
|
|
||||||
|
vtkIdList *anIdList = vtkIdList::New();
|
||||||
|
anIdList->SetNumberOfIds(2);
|
||||||
|
|
||||||
|
MultiConnection2D::MValues::const_iterator anIter = aValues.begin();
|
||||||
|
int i = 0;
|
||||||
|
for(vtkIdType aVtkId; anIter != aValues.end(); anIter++,i++){
|
||||||
|
const MultiConnection2D::Value& aValue = (*anIter).first;
|
||||||
|
int aNode[2] = {
|
||||||
|
myVisualObj->GetNodeVTKId(aValue.myPntId[0]),
|
||||||
|
myVisualObj->GetNodeVTKId(aValue.myPntId[1])
|
||||||
|
};
|
||||||
|
if(aNode[0] >= 0 && aNode[1] >= 0){
|
||||||
|
anIdList->SetId( 0, aNode[0] );
|
||||||
|
anIdList->SetId( 1, aNode[1] );
|
||||||
|
aConnectivity->InsertNextCell( anIdList );
|
||||||
|
aCellTypesArray->InsertNextValue( VTK_LINE );
|
||||||
|
aScalars->SetValue(i,(*anIter).second);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
vtkIntArray* aCellLocationsArray = vtkIntArray::New();
|
||||||
|
aCellLocationsArray->SetNumberOfComponents( 1 );
|
||||||
|
aCellLocationsArray->SetNumberOfTuples( aNbCells );
|
||||||
|
|
||||||
|
aConnectivity->InitTraversal();
|
||||||
|
for( vtkIdType idType = 0, *pts, npts; aConnectivity->GetNextCell( npts, pts ); idType++ )
|
||||||
|
aCellLocationsArray->SetValue( idType, aConnectivity->GetTraversalLocation( npts ) );
|
||||||
|
|
||||||
|
aDataSet->SetCells( aCellTypesArray, aCellLocationsArray,aConnectivity );
|
||||||
|
SetUnstructuredGrid(aDataSet);
|
||||||
|
|
||||||
|
aDataSet->GetCellData()->SetScalars(aScalars);
|
||||||
|
aScalars->Delete();
|
||||||
|
|
||||||
|
theLookupTable->SetRange(aScalars->GetRange());
|
||||||
|
theLookupTable->Build();
|
||||||
|
|
||||||
myMergeFilter->SetScalars(aDataSet);
|
myMergeFilter->SetScalars(aDataSet);
|
||||||
aDataSet->Delete();
|
aDataSet->Delete();
|
||||||
}
|
}
|
||||||
|
@ -563,6 +563,10 @@ namespace{
|
|||||||
aTitle = QObject::tr( "MULTI_BORDERS" );
|
aTitle = QObject::tr( "MULTI_BORDERS" );
|
||||||
aControl = SMESH_Actor::eMultiConnection;
|
aControl = SMESH_Actor::eMultiConnection;
|
||||||
break;
|
break;
|
||||||
|
case 6019:
|
||||||
|
aTitle = QObject::tr( "MULTI2D_BORDERS" );
|
||||||
|
aControl = SMESH_Actor::eMultiConnection2D;
|
||||||
|
break;
|
||||||
case 6011:
|
case 6011:
|
||||||
aTitle = QObject::tr( "AREA_ELEMENTS" );
|
aTitle = QObject::tr( "AREA_ELEMENTS" );
|
||||||
aControl = SMESH_Actor::eArea;
|
aControl = SMESH_Actor::eArea;
|
||||||
@ -2081,6 +2085,7 @@ bool SMESHGUI::OnGUIEvent(int theCommandID, QAD_Desktop * parent)
|
|||||||
case 6011:
|
case 6011:
|
||||||
case 6001:
|
case 6001:
|
||||||
case 6018:
|
case 6018:
|
||||||
|
case 6019:
|
||||||
case 6002:
|
case 6002:
|
||||||
case 6003:
|
case 6003:
|
||||||
case 6004:
|
case 6004:
|
||||||
@ -2428,30 +2433,40 @@ bool SMESHGUI::CustomPopup(QAD_Desktop* parent, QPopupMenu* popup, const QString
|
|||||||
|
|
||||||
// Display Entity
|
// Display Entity
|
||||||
mi = popup->findItem( 1135 );
|
mi = popup->findItem( 1135 );
|
||||||
if ( mi && mi->popup() ) {
|
int aIsSomething=0;
|
||||||
|
if (aNbVolumes>0) aIsSomething++;
|
||||||
|
if (aNbFaces>0) aIsSomething++;
|
||||||
|
if (aNbEdges>0) aIsSomething++;
|
||||||
|
if ( mi && (aIsSomething <= 1)){
|
||||||
|
popup->removeItem(1135);
|
||||||
|
}else if ( mi && mi->popup() ) {
|
||||||
QPopupMenu* aPopup = mi->popup();
|
QPopupMenu* aPopup = mi->popup();
|
||||||
unsigned int aMode = anActor->GetEntityMode();
|
unsigned int aMode = anActor->GetEntityMode();
|
||||||
|
|
||||||
|
bool aIsVolumesMode = aMode & SMESH_Actor::eVolumes;
|
||||||
|
bool aIsFacesMode = aMode & SMESH_Actor::eFaces;
|
||||||
|
bool aIsEdgesMode = aMode & SMESH_Actor::eEdges;
|
||||||
|
|
||||||
if(aNbVolumes == 0)
|
if(aNbVolumes == 0)
|
||||||
aPopup->removeItem( 219 );
|
aPopup->removeItem( 219 );
|
||||||
else
|
else
|
||||||
aPopup->setItemChecked( 219, aMode & SMESH_Actor::eVolumes );
|
aPopup->setItemChecked( 219, aIsVolumesMode );
|
||||||
|
|
||||||
if(aNbFaces == 0)
|
if(aNbFaces == 0)
|
||||||
aPopup->removeItem( 218 );
|
aPopup->removeItem( 218 );
|
||||||
else
|
else
|
||||||
aPopup->setItemChecked( 218, aMode & SMESH_Actor::eFaces );
|
aPopup->setItemChecked( 218, aIsFacesMode );
|
||||||
|
|
||||||
|
|
||||||
if(aNbEdges == 0)
|
if(aNbEdges == 0)
|
||||||
aPopup->removeItem( 217 );
|
aPopup->removeItem( 217 );
|
||||||
else
|
else
|
||||||
aPopup->setItemChecked( 217, aMode & SMESH_Actor::eEdges );
|
aPopup->setItemChecked( 217, aIsEdgesMode );
|
||||||
|
|
||||||
|
|
||||||
bool aIsRemove = (aNbVolumes == 0 || aMode & SMESH_Actor::eVolumes);
|
bool aIsRemove = (aNbVolumes == 0 || aIsVolumesMode);
|
||||||
aIsRemove &= (aNbFaces == 0 || aMode & SMESH_Actor::eFaces);
|
aIsRemove &= (aNbFaces == 0 || aIsFacesMode);
|
||||||
aIsRemove &= (aNbEdges == 0 || aMode & SMESH_Actor::eEdges);
|
aIsRemove &= (aNbEdges == 0 || aIsEdgesMode);
|
||||||
|
|
||||||
if(aIsRemove)
|
if(aIsRemove)
|
||||||
aPopup->removeItem( 220 );
|
aPopup->removeItem( 220 );
|
||||||
@ -2476,6 +2491,8 @@ bool SMESHGUI::CustomPopup(QAD_Desktop* parent, QPopupMenu* popup, const QString
|
|||||||
break;
|
break;
|
||||||
case SMESH_Actor::eMultiConnection:
|
case SMESH_Actor::eMultiConnection:
|
||||||
mi->popup()->setItemChecked( 6004, true ); break;
|
mi->popup()->setItemChecked( 6004, true ); break;
|
||||||
|
case SMESH_Actor::eMultiConnection2D:
|
||||||
|
mi->popup()->setItemChecked( 6019, true ); break;
|
||||||
case SMESH_Actor::eArea:
|
case SMESH_Actor::eArea:
|
||||||
mi->popup()->setItemChecked( 6011, true ); break;
|
mi->popup()->setItemChecked( 6011, true ); break;
|
||||||
case SMESH_Actor::eTaper:
|
case SMESH_Actor::eTaper:
|
||||||
@ -2511,6 +2528,7 @@ bool SMESHGUI::CustomPopup(QAD_Desktop* parent, QPopupMenu* popup, const QString
|
|||||||
mi->popup()->removeItem( 6014 );
|
mi->popup()->removeItem( 6014 );
|
||||||
mi->popup()->removeItem( 6015 );
|
mi->popup()->removeItem( 6015 );
|
||||||
mi->popup()->removeItem( 6016 );
|
mi->popup()->removeItem( 6016 );
|
||||||
|
mi->popup()->removeItem( 6019 );
|
||||||
}
|
}
|
||||||
if(aNbVolumes == 0){
|
if(aNbVolumes == 0){
|
||||||
mi->popup()->removeItem( 6017 );
|
mi->popup()->removeItem( 6017 );
|
||||||
|
@ -1278,6 +1278,7 @@ const QMap<int, QString>& SMESHGUI_FilterTable::getCriteria( const int theType )
|
|||||||
aCriteria[ SMESH::FT_BelongToPlane ] = tr( "BELONG_TO_PLANE" );
|
aCriteria[ SMESH::FT_BelongToPlane ] = tr( "BELONG_TO_PLANE" );
|
||||||
aCriteria[ SMESH::FT_BelongToCylinder ] = tr( "BELONG_TO_CYLINDER" );
|
aCriteria[ SMESH::FT_BelongToCylinder ] = tr( "BELONG_TO_CYLINDER" );
|
||||||
aCriteria[ SMESH::FT_Length2D ] = tr( "LENGTH2D" );
|
aCriteria[ SMESH::FT_Length2D ] = tr( "LENGTH2D" );
|
||||||
|
aCriteria[ SMESH::FT_MultiConnection2D] = tr( "MULTI2D_BORDERS" );
|
||||||
}
|
}
|
||||||
return aCriteria;
|
return aCriteria;
|
||||||
}
|
}
|
||||||
|
@ -961,9 +961,15 @@ msgstr "Free borders"
|
|||||||
msgid "SMESHGUI_FilterTable::MULTI_BORDERS"
|
msgid "SMESHGUI_FilterTable::MULTI_BORDERS"
|
||||||
msgstr "Borders at multi-connections"
|
msgstr "Borders at multi-connections"
|
||||||
|
|
||||||
|
#msgid "SMESHGUI_FilterTable::MULTI2D_BORDERS"
|
||||||
|
#msgstr "Borders at multi-connections 2D"
|
||||||
|
|
||||||
msgid "SMESHGUI_FilterTable::LENGTH"
|
msgid "SMESHGUI_FilterTable::LENGTH"
|
||||||
msgstr "Length"
|
msgstr "Length"
|
||||||
|
|
||||||
|
#msgid "SMESHGUI_FilterTable::LENGTH2D"
|
||||||
|
#msgstr "Length2D"
|
||||||
|
|
||||||
msgid "SMESHGUI_FilterTable::ASPECT_RATIO"
|
msgid "SMESHGUI_FilterTable::ASPECT_RATIO"
|
||||||
msgstr "Aspect ratio"
|
msgstr "Aspect ratio"
|
||||||
|
|
||||||
@ -1096,13 +1102,16 @@ msgid "LENGTH_EDGES"
|
|||||||
msgstr "Length"
|
msgstr "Length"
|
||||||
|
|
||||||
msgid "LENGTH2D_EDGES"
|
msgid "LENGTH2D_EDGES"
|
||||||
msgstr "Length2D"
|
msgstr "Length 2D"
|
||||||
|
|
||||||
msgid "FREE_BORDERS"
|
msgid "FREE_BORDERS"
|
||||||
msgstr "Free borders"
|
msgstr "Free Borders"
|
||||||
|
|
||||||
msgid "MULTI_BORDERS"
|
msgid "MULTI_BORDERS"
|
||||||
msgstr "Borders at multi-connections"
|
msgstr "Borders at Multi-Connections"
|
||||||
|
|
||||||
|
msgid "MULTI2D_BORDERS"
|
||||||
|
msgstr "Borders at Multi-Connections 2D"
|
||||||
|
|
||||||
msgid "AREA_ELEMENTS"
|
msgid "AREA_ELEMENTS"
|
||||||
msgstr "Area"
|
msgstr "Area"
|
||||||
|
@ -483,6 +483,46 @@ FunctorType MultiConnection_i::GetFunctorType()
|
|||||||
return SMESH::FT_MultiConnection;
|
return SMESH::FT_MultiConnection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : MultiConnection2D_i
|
||||||
|
Description : Functor for calculating number of faces conneted to the edge
|
||||||
|
*/
|
||||||
|
MultiConnection2D_i::MultiConnection2D_i()
|
||||||
|
{
|
||||||
|
myNumericalFunctorPtr.reset( new Controls::MultiConnection2D() );
|
||||||
|
myFunctorPtr = myNumericalFunctorPtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
FunctorType MultiConnection2D_i::GetFunctorType()
|
||||||
|
{
|
||||||
|
return SMESH::FT_MultiConnection2D;
|
||||||
|
}
|
||||||
|
|
||||||
|
SMESH::MultiConnection2D::Values* MultiConnection2D_i::GetValues()
|
||||||
|
{
|
||||||
|
INFOS("MultiConnection2D_i::GetValues");
|
||||||
|
SMESH::Controls::MultiConnection2D::MValues aValues;
|
||||||
|
myMulticonnection2DPtr->GetValues( aValues );
|
||||||
|
|
||||||
|
long i = 0, iEnd = aValues.size();
|
||||||
|
|
||||||
|
SMESH::MultiConnection2D::Values_var aResult = new SMESH::MultiConnection2D::Values(iEnd);
|
||||||
|
|
||||||
|
SMESH::Controls::MultiConnection2D::MValues::const_iterator anIter;
|
||||||
|
for ( anIter = aValues.begin() ; anIter != aValues.end(); anIter++, i++ )
|
||||||
|
{
|
||||||
|
const SMESH::Controls::MultiConnection2D::Value& aVal = (*anIter).first;
|
||||||
|
SMESH::MultiConnection2D::Value &aValue = aResult[ i ];
|
||||||
|
|
||||||
|
aValue.myPnt1 = aVal.myPntId[ 0 ];
|
||||||
|
aValue.myPnt2 = aVal.myPntId[ 1 ];
|
||||||
|
aValue.myNbConnects = (*anIter).second;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
INFOS("Multiconnection2D_i::GetValuess~");
|
||||||
|
return aResult._retn();
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
PREDICATES
|
PREDICATES
|
||||||
@ -1092,6 +1132,12 @@ MultiConnection_ptr FilterManager_i::CreateMultiConnection()
|
|||||||
return anObj._retn();
|
return anObj._retn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MultiConnection2D_ptr FilterManager_i::CreateMultiConnection2D()
|
||||||
|
{
|
||||||
|
SMESH::MultiConnection2D_i* aServant = new SMESH::MultiConnection2D_i();
|
||||||
|
SMESH::MultiConnection2D_var anObj = aServant->_this();
|
||||||
|
return anObj._retn();
|
||||||
|
}
|
||||||
|
|
||||||
BelongToGeom_ptr FilterManager_i::CreateBelongToGeom()
|
BelongToGeom_ptr FilterManager_i::CreateBelongToGeom()
|
||||||
{
|
{
|
||||||
@ -1470,6 +1516,9 @@ CORBA::Boolean Filter_i::SetCriteria( const SMESH::Filter::Criteria& theCriteria
|
|||||||
case SMESH::FT_MultiConnection:
|
case SMESH::FT_MultiConnection:
|
||||||
aFunctor = aFilterMgr->CreateMultiConnection();
|
aFunctor = aFilterMgr->CreateMultiConnection();
|
||||||
break;
|
break;
|
||||||
|
case SMESH::FT_MultiConnection2D:
|
||||||
|
aFunctor = aFilterMgr->CreateMultiConnection2D();
|
||||||
|
break;
|
||||||
case SMESH::FT_Length:
|
case SMESH::FT_Length:
|
||||||
aFunctor = aFilterMgr->CreateLength();
|
aFunctor = aFilterMgr->CreateLength();
|
||||||
break;
|
break;
|
||||||
@ -1741,6 +1790,7 @@ static inline LDOMString toString( const long theType )
|
|||||||
case FT_FreeBorders : return "Free borders";
|
case FT_FreeBorders : return "Free borders";
|
||||||
case FT_FreeEdges : return "Free edges";
|
case FT_FreeEdges : return "Free edges";
|
||||||
case FT_MultiConnection : return "Borders at multi-connections";
|
case FT_MultiConnection : return "Borders at multi-connections";
|
||||||
|
case FT_MultiConnection2D: return "Borders at multi-connections 2D";
|
||||||
case FT_Length : return "Length";
|
case FT_Length : return "Length";
|
||||||
case FT_Length2D : return "Length2D";
|
case FT_Length2D : return "Length2D";
|
||||||
case FT_LessThan : return "Less than";
|
case FT_LessThan : return "Less than";
|
||||||
@ -1772,7 +1822,9 @@ static inline SMESH::FunctorType toFunctorType( const LDOMString& theStr )
|
|||||||
else if ( theStr.equals( "Free borders" ) ) return FT_FreeBorders;
|
else if ( theStr.equals( "Free borders" ) ) return FT_FreeBorders;
|
||||||
else if ( theStr.equals( "Free edges" ) ) return FT_FreeEdges;
|
else if ( theStr.equals( "Free edges" ) ) return FT_FreeEdges;
|
||||||
else if ( theStr.equals( "Borders at multi-connections" ) ) return FT_MultiConnection;
|
else if ( theStr.equals( "Borders at multi-connections" ) ) return FT_MultiConnection;
|
||||||
|
// else if ( theStr.equals( "Borders at multi-connections 2D" ) ) return FT_MultiConnection2D;
|
||||||
else if ( theStr.equals( "Length" ) ) return FT_Length;
|
else if ( theStr.equals( "Length" ) ) return FT_Length;
|
||||||
|
// else if ( theStr.equals( "Length2D" ) ) return FT_Length2D;
|
||||||
else if ( theStr.equals( "Range of IDs" ) ) return FT_RangeOfIds;
|
else if ( theStr.equals( "Range of IDs" ) ) return FT_RangeOfIds;
|
||||||
else if ( theStr.equals( "Less than" ) ) return FT_LessThan;
|
else if ( theStr.equals( "Less than" ) ) return FT_LessThan;
|
||||||
else if ( theStr.equals( "More than" ) ) return FT_MoreThan;
|
else if ( theStr.equals( "More than" ) ) return FT_MoreThan;
|
||||||
|
@ -247,6 +247,22 @@ public:
|
|||||||
FunctorType GetFunctorType();
|
FunctorType GetFunctorType();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : MultiConnection2D_i
|
||||||
|
Description : Functor for calculating number of faces conneted to the edge
|
||||||
|
*/
|
||||||
|
class MultiConnection2D_i: public virtual POA_SMESH::MultiConnection2D,
|
||||||
|
public virtual NumericalFunctor_i
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MultiConnection2D_i();
|
||||||
|
SMESH::MultiConnection2D::Values* GetValues();
|
||||||
|
FunctorType GetFunctorType();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
Controls::MultiConnection2DPtr myMulticonnection2DPtr;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
PREDICATES
|
PREDICATES
|
||||||
@ -620,6 +636,7 @@ public:
|
|||||||
Length_ptr CreateLength();
|
Length_ptr CreateLength();
|
||||||
Length2D_ptr CreateLength2D();
|
Length2D_ptr CreateLength2D();
|
||||||
MultiConnection_ptr CreateMultiConnection();
|
MultiConnection_ptr CreateMultiConnection();
|
||||||
|
MultiConnection2D_ptr CreateMultiConnection2D();
|
||||||
|
|
||||||
BelongToGeom_ptr CreateBelongToGeom();
|
BelongToGeom_ptr CreateBelongToGeom();
|
||||||
BelongToPlane_ptr CreateBelongToPlane();
|
BelongToPlane_ptr CreateBelongToPlane();
|
||||||
|
Loading…
Reference in New Issue
Block a user