mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-09-08 14:17:06 +03:00
Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
be7d96c7fa | ||
|
0fef9c4085 | ||
|
2a278ae90b | ||
|
92d3c2487f | ||
|
c0676d7442 | ||
|
6be3c72e8f | ||
|
a71d5ed391 |
@@ -3,5 +3,5 @@ ModelingData TKG2d TKG3d TKGeomBase TKBRep
|
||||
ModelingAlgorithms TKGeomAlgo TKTopAlgo TKPrim TKBO TKBool TKHLR TKFillet TKOffset TKFeat TKMesh TKXMesh TKShHealing
|
||||
Visualization TKService TKV3d TKOpenGl TKMeshVS TKIVtk TKD3DHost
|
||||
ApplicationFramework TKCDF TKLCAF TKCAF TKBinL TKXmlL TKBin TKXml TKStdL TKStd TKTObj TKBinTObj TKXmlTObj TKVCAF
|
||||
DataExchange TKXSBase TKSTEPBase TKSTEPAttr TKSTEP209 TKSTEP TKIGES TKXCAF TKXDEIGES TKXDESTEP TKSTL TKVRML TKXmlXCAF TKBinXCAF
|
||||
DataExchange TKXSBase TKXSSelect TKSTEPBase TKSTEPAttr TKSTEP209 TKSTEP TKIGES TKXCAF TKXDEIGES TKXDESTEP TKSTL TKVRML TKXmlXCAF TKBinXCAF
|
||||
Draw TKDraw TKTopTest TKViewerTest TKXSDRAW TKDCAF TKXDEDRAW TKTObjDRAW TKQADraw TKIVtkDraw DRAWEXE
|
||||
|
@@ -380,6 +380,7 @@ t TKXCAF
|
||||
t TKXDEIGES
|
||||
t TKXDESTEP
|
||||
t TKXSBase
|
||||
t TKXSSelect
|
||||
t TKXmlXCAF
|
||||
n BOPTest
|
||||
n BRepTest
|
||||
|
@@ -8050,7 +8050,6 @@ brepiges aa /disk1/tmp/aaa.igs
|
||||
== mode write : Faces
|
||||
== To modifiy : command param
|
||||
== 1 Shapes written, giving 345 Entities
|
||||
== Now, to write a file, command : writeall filename
|
||||
== Output on file : /disk1/tmp/aaa.igs
|
||||
== Write OK
|
||||
~~~~~
|
||||
|
@@ -62,7 +62,7 @@ Administrative data, in the Global Section of the IGES file (such as the file n
|
||||
Before performing any other operation, you have to load the file using the syntax below.
|
||||
~~~~~
|
||||
IGESControl_Reader reader;
|
||||
IFSelect_ReturnStatus stat = reader.ReadFile(“filename.igs”);
|
||||
Interface_ReturnStatus stat = reader.ReadFile(“filename.igs”);
|
||||
~~~~~
|
||||
The loading operation only loads the IGES file into computer memory; it does not translate it.
|
||||
|
||||
@@ -1111,11 +1111,6 @@ Draw> brepiges <shape_name_1> [<filename.igs>]
|
||||
~~~~~
|
||||
Converts the specified shapes into IGES entities and puts them into the *InterfaceModel*.
|
||||
|
||||
~~~~~
|
||||
Draw> writeall <filename.igs>
|
||||
~~~~~
|
||||
Allows writing the prepared model to a file with name *filename.igs*.
|
||||
|
||||
@section occt_iges_5 Reading from and writing to IGES
|
||||
|
||||
@subsection occt_iges_5_1 Reading from IGES
|
||||
@@ -1125,7 +1120,7 @@ Allows writing the prepared model to a file with name *filename.igs*.
|
||||
Before performing any other operation, you must load an IGES file with:
|
||||
~~~~~
|
||||
IGESCAFControl_Reader reader(XSDRAW::Session(), Standard_False);
|
||||
IFSelect_ReturnStatus stat = reader.ReadFile(“filename.igs”);
|
||||
Interface_ReturnStatus stat = reader.ReadFile(“filename.igs”);
|
||||
~~~~~
|
||||
Loading the file only memorizes, but does not translate the data.
|
||||
|
||||
@@ -1183,7 +1178,7 @@ aWriter.SetNameMode(mode);
|
||||
|
||||
You can perform the translation of a document by calling the function:
|
||||
~~~~~
|
||||
IFSelect_ReturnStatus aRetSt = aWriter.Transfer(doc);
|
||||
Interface_ReturnStatus aRetSt = aWriter.Transfer(doc);
|
||||
~~~~~
|
||||
where "doc" is a variable which contains a handle to the input document for transferring and should have a type *Handle(TDocStd_Document)*.
|
||||
|
||||
@@ -1191,11 +1186,11 @@ where "doc" is a variable which contains a handle to the input document for tran
|
||||
|
||||
Write an IGES file with:
|
||||
~~~~~
|
||||
IFSelect_ReturnStatus statw = aWriter.WriteFile("filename.igs");
|
||||
Interface_ReturnStatus statw = aWriter.WriteFile("filename.igs");
|
||||
~~~~~
|
||||
or
|
||||
~~~~~
|
||||
IFSelect_ReturnStatus statw = writer.WriteFile (S);
|
||||
Interface_ReturnStatus statw = writer.WriteFile (S);
|
||||
~~~~~
|
||||
where S is OStream.
|
||||
|
||||
|
@@ -123,7 +123,7 @@ For further information see 2.4 Mapping STEP entities to Open CASCADE Technology
|
||||
Before performing any other operation you have to load the file with:
|
||||
~~~~~
|
||||
STEPControl_Reader reader;
|
||||
IFSelect_ReturnStatus stat = reader.ReadFile(;filename.stp;);
|
||||
Interface_ReturnStatus stat = reader.ReadFile(;filename.stp;);
|
||||
~~~~~
|
||||
Loading the file only memorizes the data, it does not translate it.
|
||||
|
||||
@@ -958,13 +958,13 @@ If *TopoDS_Compound* contains any other types besides the ones mentioned in the
|
||||
In case if an OCCT shape cannot be translated according to its mode the result of translation is void.
|
||||
~~~~~
|
||||
STEP214Control_StepModelTope mode = STEP214Control_ManifoldSolidBrep;
|
||||
IFSelect_ReturnStatus stat = writer.Transfer(shape,mode);
|
||||
Interface_ReturnStatus stat = writer.Transfer(shape,mode);
|
||||
~~~~~
|
||||
|
||||
@subsubsection occt_step_3_3_4 Writing the STEP file
|
||||
Write the STEP file with:
|
||||
~~~~~
|
||||
IFSelect_ReturnStatus stat = writer.Write("filename.stp");
|
||||
Interface_ReturnStatus stat = writer.Write("filename.stp");
|
||||
~~~~~
|
||||
to give the file name.
|
||||
|
||||
@@ -1402,7 +1402,7 @@ In addition to the translation of shapes implemented in basic translator, it pro
|
||||
Before performing any other operation, you must load a STEP file with:
|
||||
~~~~~
|
||||
STEPCAFControl_Reader reader(XSDRAW::Session(), Standard_False);
|
||||
IFSelect_ReturnStatus stat = reader.ReadFile("filename.stp");
|
||||
Interface_ReturnStatus stat = reader.ReadFile("filename.stp");
|
||||
~~~~~
|
||||
Loading the file only memorizes the data, it does not translate it.
|
||||
|
||||
@@ -1458,7 +1458,7 @@ aWriter.SetNameMode(mode);
|
||||
|
||||
You can perform the translation of document by calling the function:
|
||||
~~~~~
|
||||
IFSelect_ReturnStatus aRetSt = aWriter.Transfer(doc);
|
||||
Interface_ReturnStatus aRetSt = aWriter.Transfer(doc);
|
||||
~~~~~
|
||||
where *doc* is a variable, which contains a handle to the input document for transferring and should have a type *Handle(TDocStd_Document)*.
|
||||
|
||||
@@ -1466,11 +1466,11 @@ where *doc* is a variable, which contains a handle to the input document for tr
|
||||
|
||||
Write a STEP file with:
|
||||
~~~~~
|
||||
IFSelect_ReturnStatus statw = aWriter.WriteFile("filename.stp");
|
||||
Interface_ReturnStatus statw = aWriter.WriteFile("filename.stp");
|
||||
~~~~~
|
||||
or
|
||||
~~~~~
|
||||
IFSelect_ReturnStatus statw = writer.WriteFile (S);
|
||||
Interface_ReturnStatus statw = writer.WriteFile (S);
|
||||
~~~~~
|
||||
where *S* is *OStream*.
|
||||
|
||||
|
@@ -625,7 +625,7 @@ To read a STEP file by itself, use:
|
||||
|
||||
~~~~~
|
||||
STEPCAFControl_Reader reader;
|
||||
IFSelect_ReturnStatus readstat = reader.ReadFile(filename);
|
||||
Interface_ReturnStatus readstat = reader.ReadFile(filename);
|
||||
// The various ways of reading a file are available here too :
|
||||
// to read it by the reader, to take it from a WorkSession ...
|
||||
Handle(TDocStd_Document) doc...
|
||||
@@ -659,7 +659,7 @@ if ( ! writer.Transfer ( Doc, mode ) ) {
|
||||
// abandon ..
|
||||
}
|
||||
// Writing the File
|
||||
IFSelect_ReturnStatus stat = writer.Write(file-name);
|
||||
Interface_ReturnStatus stat = writer.Write(file-name);
|
||||
~~~~~
|
||||
|
||||
@subsubsection occt_xde_2_8_3 Reading an IGES File
|
||||
|
@@ -20,7 +20,7 @@
|
||||
#include <IGESControl_Reader.hxx>
|
||||
#include <IGESControl_Controller.hxx>
|
||||
#include <IGESControl_Writer.hxx>
|
||||
#include <IFSelect_ReturnStatus.hxx>
|
||||
#include <Interface_ReturnStatus.hxx>
|
||||
#include <Interface_Static.hxx>
|
||||
//step I/E
|
||||
#include <STEPControl_Reader.hxx>
|
||||
@@ -774,8 +774,8 @@ public:
|
||||
{
|
||||
Standard_CString aFileName = (Standard_CString) theFileName;
|
||||
STEPControl_Reader aReader;
|
||||
IFSelect_ReturnStatus aStatus = aReader.ReadFile(aFileName);
|
||||
if ( aStatus == IFSelect_RetDone )
|
||||
Interface_ReturnStatus aStatus = aReader.ReadFile(aFileName);
|
||||
if ( aStatus == Interface_RetDone )
|
||||
{
|
||||
bool isFailsonly = false;
|
||||
aReader.PrintCheckLoad( isFailsonly, IFSelect_ItemsByEntity );
|
||||
@@ -814,7 +814,7 @@ public:
|
||||
IGESControl_Reader aReader;
|
||||
int aStatus = aReader.ReadFile( aFileName );
|
||||
|
||||
if ( aStatus == IFSelect_RetDone )
|
||||
if ( aStatus == Interface_RetDone )
|
||||
{
|
||||
aReader.TransferRoots();
|
||||
TopoDS_Shape aShape = aReader.OneShape();
|
||||
@@ -853,7 +853,7 @@ public:
|
||||
bool ExportStep(char* theFileName)
|
||||
{
|
||||
STEPControl_StepModelType aType = STEPControl_AsIs;
|
||||
IFSelect_ReturnStatus aStatus;
|
||||
Interface_ReturnStatus aStatus;
|
||||
STEPControl_Writer aWriter;
|
||||
for ( myAISContext()->InitCurrent(); myAISContext()->MoreCurrent(); myAISContext()->NextCurrent() )
|
||||
{
|
||||
@@ -861,14 +861,14 @@ public:
|
||||
Handle(AIS_Shape) anIS=Handle(AIS_Shape)::DownCast(anIO);
|
||||
TopoDS_Shape aShape = anIS->Shape();
|
||||
aStatus = aWriter.Transfer( aShape , aType );
|
||||
if ( aStatus != IFSelect_RetDone )
|
||||
if ( aStatus != Interface_RetDone )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
aStatus = aWriter.Write( (Standard_CString)theFileName );
|
||||
if ( aStatus != IFSelect_RetDone )
|
||||
if ( aStatus != Interface_RetDone )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@@ -26,7 +26,7 @@
|
||||
#include <IGESControl_Reader.hxx>
|
||||
#include <IGESControl_Controller.hxx>
|
||||
#include <IGESControl_Writer.hxx>
|
||||
#include <IFSelect_ReturnStatus.hxx>
|
||||
#include <Interface_ReturnStatus.hxx>
|
||||
#include <Interface_Static.hxx>
|
||||
//step I/E
|
||||
#include <STEPControl_Reader.hxx>
|
||||
@@ -752,7 +752,7 @@ public:
|
||||
bool ImportStep (char* theFileName)
|
||||
{
|
||||
STEPControl_Reader aReader;
|
||||
if (aReader.ReadFile (theFileName) != IFSelect_RetDone)
|
||||
if (aReader.ReadFile (theFileName) != Interface_RetDone)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -784,7 +784,7 @@ public:
|
||||
bool ImportIges (char* theFileName)
|
||||
{
|
||||
IGESControl_Reader aReader;
|
||||
if (aReader.ReadFile (theFileName) != IFSelect_RetDone)
|
||||
if (aReader.ReadFile (theFileName) != Interface_RetDone)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -830,12 +830,12 @@ public:
|
||||
}
|
||||
|
||||
TopoDS_Shape aShape = anIS->Shape();
|
||||
if (aWriter.Transfer (aShape, aType) != IFSelect_RetDone)
|
||||
if (aWriter.Transfer (aShape, aType) != Interface_RetDone)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return aWriter.Write (theFileName) == IFSelect_RetDone;
|
||||
return aWriter.Write (theFileName) == Interface_RetDone;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@@ -280,9 +280,9 @@ void OcctJni_Viewer::initContent()
|
||||
//! Load shape from IGES file
|
||||
static TopoDS_Shape loadIGES (const TCollection_AsciiString& thePath)
|
||||
{
|
||||
TopoDS_Shape aShape;
|
||||
IGESControl_Reader aReader;
|
||||
IFSelect_ReturnStatus aReadStatus = IFSelect_RetFail;
|
||||
TopoDS_Shape aShape;
|
||||
IGESControl_Reader aReader;
|
||||
Interface_ReturnStatus aReadStatus = Interface_RetFail;
|
||||
try
|
||||
{
|
||||
aReadStatus = aReader.ReadFile (thePath.ToCString());
|
||||
@@ -293,7 +293,7 @@ static TopoDS_Shape loadIGES (const TCollection_AsciiString& thePath)
|
||||
return aShape;
|
||||
}
|
||||
|
||||
if (aReadStatus != IFSelect_RetDone)
|
||||
if (aReadStatus != Interface_RetDone)
|
||||
{
|
||||
Message::DefaultMessenger()->Send ("Error: IGES reader, bad file format", Message_Fail);
|
||||
return aShape;
|
||||
@@ -352,8 +352,8 @@ static TopoDS_Shape loadIGES (const TCollection_AsciiString& thePath)
|
||||
//! Load shape from STEP file
|
||||
static TopoDS_Shape loadSTEP (const TCollection_AsciiString& thePath)
|
||||
{
|
||||
STEPControl_Reader aReader;
|
||||
IFSelect_ReturnStatus aReadStatus = IFSelect_RetFail;
|
||||
STEPControl_Reader aReader;
|
||||
Interface_ReturnStatus aReadStatus = Interface_RetFail;
|
||||
try
|
||||
{
|
||||
aReadStatus = aReader.ReadFile (thePath.ToCString());
|
||||
@@ -364,7 +364,7 @@ static TopoDS_Shape loadSTEP (const TCollection_AsciiString& thePath)
|
||||
return TopoDS_Shape();
|
||||
}
|
||||
|
||||
if (aReadStatus != IFSelect_RetDone)
|
||||
if (aReadStatus != Interface_RetDone)
|
||||
{
|
||||
Message::DefaultMessenger()->Send ("Error: STEP reader, bad file format", Message_Fail);
|
||||
return TopoDS_Shape();
|
||||
|
@@ -276,7 +276,7 @@ dlg.m_ofn.lpstrInitialDir = initdir;
|
||||
TCollection_ExtendedString aFileNameW ((Standard_ExtString )(const wchar_t* )dlg.GetPathName());
|
||||
TCollection_AsciiString aFileName (aFileNameW, '?');
|
||||
Standard_Integer status = ReadIGES (aFileName.ToCString(), aSequence);
|
||||
if (status != IFSelect_RetDone)
|
||||
if (status != Interface_RetDone)
|
||||
{
|
||||
MessageBoxW (AfxGetApp()->m_pMainWnd->m_hWnd, L"Error : The file is not read", L"CasCade Error", MB_ICONERROR);
|
||||
}
|
||||
@@ -295,7 +295,7 @@ Standard_Integer CImportExport::ReadIGES(const Standard_CString& aFileName,
|
||||
|
||||
Standard_Integer status = Reader.ReadFile(aFileName);
|
||||
|
||||
if (status != IFSelect_RetDone) return status;
|
||||
if (status != Interface_RetDone) return status;
|
||||
Reader.TransferRoots();
|
||||
TopoDS_Shape aShape = Reader.OneShape();
|
||||
aHSequenceOfShape->Append(aShape);
|
||||
@@ -402,16 +402,16 @@ dlg.m_ofn.lpstrInitialDir = initdir;
|
||||
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT));
|
||||
TCollection_ExtendedString aFileNameW ((Standard_ExtString )(const wchar_t* )dlg.GetPathName());
|
||||
TCollection_AsciiString aFileName (aFileNameW, '?');
|
||||
IFSelect_ReturnStatus ReturnStatus = ReadSTEP (aFileName.ToCString(), aSequence);
|
||||
Interface_ReturnStatus ReturnStatus = ReadSTEP (aFileName.ToCString(), aSequence);
|
||||
switch (ReturnStatus)
|
||||
{
|
||||
case IFSelect_RetError :
|
||||
case Interface_RetError :
|
||||
MessageBoxW (AfxGetApp()->m_pMainWnd->m_hWnd, L"Not a valid Step file", L"ERROR", MB_ICONWARNING);
|
||||
break;
|
||||
case IFSelect_RetFail :
|
||||
case Interface_RetFail :
|
||||
MessageBoxW (AfxGetApp()->m_pMainWnd->m_hWnd, L"Reading has failed", L"ERROR", MB_ICONWARNING);
|
||||
break;
|
||||
case IFSelect_RetVoid :
|
||||
case Interface_RetVoid :
|
||||
MessageBoxW (AfxGetApp()->m_pMainWnd->m_hWnd, L"Nothing to transfer", L"ERROR", MB_ICONWARNING);
|
||||
break;
|
||||
}
|
||||
@@ -420,15 +420,15 @@ dlg.m_ofn.lpstrInitialDir = initdir;
|
||||
return aSequence;
|
||||
}
|
||||
|
||||
IFSelect_ReturnStatus CImportExport::ReadSTEP(const Standard_CString& aFileName,
|
||||
Handle(TopTools_HSequenceOfShape)& aHSequenceOfShape)
|
||||
Interface_ReturnStatus CImportExport::ReadSTEP(const Standard_CString& aFileName,
|
||||
Handle(TopTools_HSequenceOfShape)& aHSequenceOfShape)
|
||||
{
|
||||
aHSequenceOfShape->Clear();
|
||||
|
||||
// create additional log file
|
||||
STEPControl_Reader aReader;
|
||||
IFSelect_ReturnStatus status = aReader.ReadFile(aFileName);
|
||||
if (status != IFSelect_RetDone)
|
||||
Interface_ReturnStatus status = aReader.ReadFile(aFileName);
|
||||
if (status != Interface_RetDone)
|
||||
return status;
|
||||
|
||||
aReader.WS()->TransferReader()->TransientProcess()->SetTraceLevel(2); // increase default trace level
|
||||
@@ -446,7 +446,7 @@ IFSelect_ReturnStatus CImportExport::ReadSTEP(const Standard_CString& aFileName,
|
||||
// Collecting resulting entities
|
||||
Standard_Integer nbs = aReader.NbShapes();
|
||||
if (nbs == 0) {
|
||||
return IFSelect_RetVoid;
|
||||
return Interface_RetVoid;
|
||||
}
|
||||
for (Standard_Integer i=1; i<=nbs; i++) {
|
||||
aHSequenceOfShape->Append(aReader.Shape(i));
|
||||
@@ -502,15 +502,15 @@ Standard_Boolean TestFacetedBrep(const Handle(TopTools_HSequenceOfShape)& aHSequ
|
||||
return !OneErrorFound;
|
||||
}
|
||||
|
||||
IFSelect_ReturnStatus CImportExport::SaveSTEP(const Handle(TopTools_HSequenceOfShape)& aHSequenceOfShape)
|
||||
Interface_ReturnStatus CImportExport::SaveSTEP(const Handle(TopTools_HSequenceOfShape)& aHSequenceOfShape)
|
||||
{
|
||||
if (aHSequenceOfShape->Length() == 0)
|
||||
{
|
||||
MessageBox (AfxGetApp()->m_pMainWnd->m_hWnd, L"No Shape in the HSequence!!", L"CasCade Warning", MB_ICONWARNING);
|
||||
return IFSelect_RetError;
|
||||
return Interface_RetError;
|
||||
}
|
||||
|
||||
IFSelect_ReturnStatus status = IFSelect_RetVoid;
|
||||
Interface_ReturnStatus status = Interface_RetVoid;
|
||||
|
||||
CFileSaveSTEPDialog aDlg(NULL);
|
||||
|
||||
@@ -528,20 +528,20 @@ IFSelect_ReturnStatus CImportExport::SaveSTEP(const Handle(TopTools_HSequenceOfS
|
||||
if (!TestFacetedBrep(aHSequenceOfShape))
|
||||
{
|
||||
MessageBoxW (AfxGetApp()->m_pMainWnd->m_hWnd, L"At least one shape doesn't contain facetes", L"CasCade Warning", MB_ICONWARNING);
|
||||
return IFSelect_RetError;
|
||||
return Interface_RetError;
|
||||
}
|
||||
|
||||
|
||||
status = SaveSTEP (aFileName.ToCString(), aHSequenceOfShape, selection);
|
||||
switch (status)
|
||||
{
|
||||
case IFSelect_RetError:
|
||||
case Interface_RetError:
|
||||
MessageBoxW (AfxGetApp()->m_pMainWnd->m_hWnd, L"Incorrect Data", L"ERROR", MB_ICONWARNING);
|
||||
break;
|
||||
case IFSelect_RetFail:
|
||||
case Interface_RetFail:
|
||||
MessageBoxW (AfxGetApp()->m_pMainWnd->m_hWnd, L"Writing has failed", L"ERROR", MB_ICONWARNING);
|
||||
break;
|
||||
case IFSelect_RetVoid:
|
||||
case Interface_RetVoid:
|
||||
MessageBoxW (AfxGetApp()->m_pMainWnd->m_hWnd, L"Nothing to transfer", L"ERROR", MB_ICONWARNING);
|
||||
break;
|
||||
}
|
||||
@@ -550,8 +550,8 @@ IFSelect_ReturnStatus CImportExport::SaveSTEP(const Handle(TopTools_HSequenceOfS
|
||||
return status;
|
||||
}
|
||||
//----------------------------------------------------------------------------------------
|
||||
IFSelect_ReturnStatus CImportExport::SaveSTEP(const Standard_CString& aFileName,
|
||||
const Handle(TopTools_HSequenceOfShape)& aHSequenceOfShape,
|
||||
Interface_ReturnStatus CImportExport::SaveSTEP(const Standard_CString& aFileName,
|
||||
const Handle(TopTools_HSequenceOfShape)& aHSequenceOfShape,
|
||||
|
||||
const STEPControl_StepModelType aValue /* =TopoDSToCc1Act_ManifoldSolidBrep */ )
|
||||
|
||||
@@ -560,11 +560,11 @@ const STEPControl_StepModelType aValue /* =TopoDSToCc1Act_ManifoldSolidBrep */ )
|
||||
|
||||
STEPControl_Writer aWriter;
|
||||
|
||||
IFSelect_ReturnStatus status;
|
||||
Interface_ReturnStatus status;
|
||||
for (Standard_Integer i=1;i<=aHSequenceOfShape->Length();i++)
|
||||
{
|
||||
status = aWriter.Transfer(aHSequenceOfShape->Value(i), aValue);
|
||||
if ( status != IFSelect_RetDone ) return status;
|
||||
if ( status != Interface_RetDone ) return status;
|
||||
}
|
||||
status = aWriter.Write(aFileName);
|
||||
return status;
|
||||
|
@@ -10,7 +10,7 @@
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#include <Storage_Error.hxx>
|
||||
#include <IFSelect_ReturnStatus.hxx>
|
||||
#include <Interface_ReturnStatus.hxx>
|
||||
#include <STEPControl_StepModelType.hxx>
|
||||
#include <Quantity_HArray1OfColor.hxx>
|
||||
#include <TColStd_HArray1OfReal.hxx>
|
||||
@@ -61,20 +61,19 @@ public :
|
||||
|
||||
static void ReadSTEP(const Handle(AIS_InteractiveContext)& anInteractiveContext);
|
||||
static Handle(TopTools_HSequenceOfShape) ReadSTEP(); // not by reference --> the sequence is created here !!
|
||||
static IFSelect_ReturnStatus ReadSTEP(const Standard_CString& aFileName,
|
||||
Handle(TopTools_HSequenceOfShape)& aHSequenceOfShape);
|
||||
static Interface_ReturnStatus ReadSTEP(const Standard_CString& aFileName,
|
||||
Handle(TopTools_HSequenceOfShape)& aHSequenceOfShape);
|
||||
//----------------------------------------------------------------------
|
||||
static void SaveSTEP(const Handle(AIS_InteractiveContext)& anInteractiveContext);
|
||||
static IFSelect_ReturnStatus SaveSTEP(const Handle(TopTools_HSequenceOfShape)& aHSequenceOfShape);
|
||||
static IFSelect_ReturnStatus SaveSTEP(const Standard_CString& aFileName,
|
||||
const Handle(TopTools_HSequenceOfShape)& aHSequenceOfShape,
|
||||
|
||||
const STEPControl_StepModelType aValue = STEPControl_AsIs);
|
||||
static Interface_ReturnStatus SaveSTEP(const Handle(TopTools_HSequenceOfShape)& aHSequenceOfShape);
|
||||
static Interface_ReturnStatus SaveSTEP(const Standard_CString& aFileName,
|
||||
const Handle(TopTools_HSequenceOfShape)& aHSequenceOfShape,
|
||||
const STEPControl_StepModelType aValue = STEPControl_AsIs);
|
||||
|
||||
static void ReadSAT(const Handle(AIS_InteractiveContext)& anInteractiveContext);
|
||||
static Handle(TopTools_HSequenceOfShape) ReadSAT(); // not by reference --> the sequence is created here !!
|
||||
static IFSelect_ReturnStatus ReadSAT(const Standard_CString& aFileName,
|
||||
Handle(TopTools_HSequenceOfShape)& aHSequenceOfShape);
|
||||
static Interface_ReturnStatus ReadSAT(const Standard_CString& aFileName,
|
||||
Handle(TopTools_HSequenceOfShape)& aHSequenceOfShape);
|
||||
//----------------------------------------------------------------------
|
||||
static Standard_Boolean SaveSTL(const Standard_CString& aFileName,
|
||||
const Handle(TopTools_HSequenceOfShape)& aHSequenceOfShape,
|
||||
|
@@ -407,7 +407,7 @@ Handle(TopTools_HSequenceOfShape) Translate::importIGES( const QString& file )
|
||||
IGESControl_Reader Reader;
|
||||
int status = Reader.ReadFile(aFilePath.ToCString() );
|
||||
|
||||
if ( status == IFSelect_RetDone )
|
||||
if ( status == Interface_RetDone )
|
||||
{
|
||||
aSequence = new TopTools_HSequenceOfShape();
|
||||
Reader.TransferRoots();
|
||||
@@ -422,8 +422,8 @@ Handle(TopTools_HSequenceOfShape) Translate::importSTEP( const QString& file )
|
||||
Handle(TopTools_HSequenceOfShape) aSequence;
|
||||
TCollection_AsciiString aFilePath = file.toUtf8().data();
|
||||
STEPControl_Reader aReader;
|
||||
IFSelect_ReturnStatus status = aReader.ReadFile( aFilePath.ToCString() );
|
||||
if ( status == IFSelect_RetDone )
|
||||
Interface_ReturnStatus status = aReader.ReadFile( aFilePath.ToCString() );
|
||||
if ( status == Interface_RetDone )
|
||||
{
|
||||
//Interface_TraceFile::SetDefault();
|
||||
bool failsonly = false;
|
||||
@@ -485,7 +485,7 @@ bool Translate::exportSTEP( const QString& file, const Handle(TopTools_HSequence
|
||||
if ( type < 0 )
|
||||
return false;
|
||||
|
||||
IFSelect_ReturnStatus status;
|
||||
Interface_ReturnStatus status;
|
||||
|
||||
if ( type == STEPControl_FacetedBrep && !checkFacetedBrep( shapes ) )
|
||||
{
|
||||
@@ -497,7 +497,7 @@ bool Translate::exportSTEP( const QString& file, const Handle(TopTools_HSequence
|
||||
for ( int i = 1; i <= shapes->Length(); i++ )
|
||||
{
|
||||
status = writer.Transfer( shapes->Value( i ), type );
|
||||
if ( status != IFSelect_RetDone )
|
||||
if ( status != Interface_RetDone )
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -505,17 +505,17 @@ bool Translate::exportSTEP( const QString& file, const Handle(TopTools_HSequence
|
||||
|
||||
switch ( status )
|
||||
{
|
||||
case IFSelect_RetError:
|
||||
case Interface_RetError:
|
||||
myInfo = QObject::tr( "INF_DATA_ERROR" );
|
||||
break;
|
||||
case IFSelect_RetFail:
|
||||
case Interface_RetFail:
|
||||
myInfo = QObject::tr( "INF_WRITING_ERROR" );
|
||||
break;
|
||||
case IFSelect_RetVoid:
|
||||
case Interface_RetVoid:
|
||||
myInfo = QObject::tr( "INF_NOTHING_ERROR" );
|
||||
break;
|
||||
}
|
||||
return status == IFSelect_RetDone;
|
||||
return status == Interface_RetDone;
|
||||
}
|
||||
|
||||
bool Translate::exportSTL( const QString& file, const Handle(TopTools_HSequenceOfShape)& shapes )
|
||||
|
@@ -326,7 +326,7 @@ Standard_Boolean MainPage::SaveSTEP(const wchar_t* theFilePath, const TopoDS_Sha
|
||||
|
||||
STEPControl_Writer aWriter;
|
||||
|
||||
if (aWriter.Transfer(theShape, theValue) != IFSelect_RetDone) {
|
||||
if (aWriter.Transfer(theShape, theValue) != Interface_RetDone) {
|
||||
Output_TextBlock->Text += L"Error: cannot translate shape to STEP\n";
|
||||
return Standard_False;
|
||||
}
|
||||
@@ -336,13 +336,13 @@ Standard_Boolean MainPage::SaveSTEP(const wchar_t* theFilePath, const TopoDS_Sha
|
||||
|
||||
switch (aWriter.Write(theFilePathA))
|
||||
{
|
||||
case IFSelect_RetError:
|
||||
case Interface_RetError:
|
||||
Output_TextBlock->Text += L"Error: Incorrect Data\n";
|
||||
break;
|
||||
case IFSelect_RetFail:
|
||||
case Interface_RetFail:
|
||||
Output_TextBlock->Text += L"Error: Writing has failed\n";
|
||||
break;
|
||||
case IFSelect_RetVoid:
|
||||
case Interface_RetVoid:
|
||||
Output_TextBlock->Text += L"Error: Nothing to transfer\n";
|
||||
break;
|
||||
default:
|
||||
@@ -413,7 +413,7 @@ Standard_Boolean MainPage::ReadIGES(const wchar_t* theFilePath, TopoDS_Shape& th
|
||||
char theFilePathA[MAX_PATH];
|
||||
WideCharToMultiByte(CP_UTF8, 0, theFilePath, -1, theFilePathA, sizeof(theFilePathA), NULL, NULL);
|
||||
|
||||
if (Reader.ReadFile(theFilePathA) != IFSelect_RetDone)
|
||||
if (Reader.ReadFile(theFilePathA) != Interface_RetDone)
|
||||
return Standard_False;
|
||||
|
||||
Reader.TransferRoots();
|
||||
@@ -437,13 +437,13 @@ Standard_Boolean MainPage::ReadSTEP(const wchar_t* theFilePath, TopoDS_Shape& th
|
||||
|
||||
switch (aReader.ReadFile(theFilePathA))
|
||||
{
|
||||
case IFSelect_RetError:
|
||||
case Interface_RetError:
|
||||
Output_TextBlock->Text += L"Error: Not a valid Step file\n";
|
||||
break;
|
||||
case IFSelect_RetFail:
|
||||
case Interface_RetFail:
|
||||
Output_TextBlock->Text += L"Error: Reading has failed\n";
|
||||
break;
|
||||
case IFSelect_RetVoid:
|
||||
case Interface_RetVoid:
|
||||
Output_TextBlock->Text += L"Error: Nothing to transfer\n";
|
||||
break;
|
||||
default:
|
||||
|
@@ -1,168 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <APIHeaderSection_EditHeader.hxx>
|
||||
#include <APIHeaderSection_MakeHeader.hxx>
|
||||
#include <IFSelect_EditForm.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Interface_TypedValue.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <StepData_StepModel.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
#include <TCollection_HAsciiString.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(APIHeaderSection_EditHeader,IFSelect_Editor)
|
||||
|
||||
static Standard_Boolean IsTimeStamp
|
||||
(const Handle(TCollection_HAsciiString)& val)
|
||||
{
|
||||
if (val.IsNull()) return Standard_False;
|
||||
if (val->Length() != 19) return Standard_False;
|
||||
// On y va
|
||||
char dizmois = val->Value(6);
|
||||
char dizjour = val->Value(9);
|
||||
char dizheur = val->Value(12);
|
||||
for (Standard_Integer i = 1; i <= 19; i ++) {
|
||||
char uncar = val->Value(i);
|
||||
switch (i) {
|
||||
case 1 : if (uncar != '1' && uncar != '2') return Standard_False; break;
|
||||
case 2 :
|
||||
case 3 :
|
||||
case 4 : if (uncar < '0' || uncar > '9') return Standard_False; break;
|
||||
case 5 : if (uncar != '-') return Standard_False;
|
||||
case 6 : if (uncar != '0' && uncar != '1') return Standard_False; break;
|
||||
case 7 : if (uncar < '0' || uncar > '9') return Standard_False;
|
||||
if (dizmois == '1' && (uncar < '0' || uncar > '2')) return Standard_False; break;
|
||||
case 8 : if (uncar != '-') return Standard_False;
|
||||
case 9 : if (uncar < '0' || uncar > '3') return Standard_False; break;
|
||||
case 10 : if (uncar < '0' || uncar > '9') return Standard_False;
|
||||
if (dizjour == '3' && (uncar != '0' && uncar != '1')) return Standard_False; break;
|
||||
case 11 : if (uncar != 'T') return Standard_False;
|
||||
case 12 : if (uncar < '0' || uncar > '2') return Standard_False; break;
|
||||
case 13 : if (uncar < '0' || uncar > '9') return Standard_False;
|
||||
if (dizheur == '2' && (uncar < '0' || uncar > '3')) return Standard_False; break;
|
||||
case 14 : if (uncar != ':') return Standard_False;
|
||||
case 15 : if (uncar < '0' || uncar > '5') return Standard_False; break;
|
||||
case 16 : if (uncar < '0' || uncar > '9') return Standard_False; break;
|
||||
case 17 : if (uncar != ':') return Standard_False;
|
||||
case 18 : if (uncar < '0' || uncar > '5') return Standard_False; break;
|
||||
case 19 : if (uncar < '0' || uncar > '9') return Standard_False; break;
|
||||
default : break;
|
||||
}
|
||||
}
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
|
||||
APIHeaderSection_EditHeader::APIHeaderSection_EditHeader ()
|
||||
: IFSelect_Editor (10)
|
||||
{
|
||||
// Definition
|
||||
Handle(Interface_TypedValue) fn_name = new Interface_TypedValue("fn_name");
|
||||
SetValue (1,fn_name,"name");
|
||||
Handle(Interface_TypedValue) fn_time = new Interface_TypedValue("fn_time_stamp");
|
||||
fn_time->SetSatisfies (IsTimeStamp,"IsTimeStamp");
|
||||
SetValue (2,fn_time,"time");
|
||||
Handle(Interface_TypedValue) fn_author = new Interface_TypedValue("fn_author");
|
||||
SetValue (3,fn_author,"author"); // 1 seul (1er de liste)
|
||||
Handle(Interface_TypedValue) fn_org = new Interface_TypedValue("fn_organization");
|
||||
SetValue (4,fn_org,"org"); // 1 seul (1er de liste)
|
||||
Handle(Interface_TypedValue) fn_preproc = new Interface_TypedValue("fn_preprocessor_version");
|
||||
SetValue (5,fn_preproc,"preproc");
|
||||
Handle(Interface_TypedValue) fn_orig = new Interface_TypedValue("fn_originating_system");
|
||||
SetValue (6,fn_orig,"orig");
|
||||
Handle(Interface_TypedValue) fn_autorize = new Interface_TypedValue("fn_authorization");
|
||||
SetValue (7,fn_autorize,"autorize");
|
||||
|
||||
Handle(Interface_TypedValue) fs_schema = new Interface_TypedValue("fs_schema_identifiers");
|
||||
SetValue (8,fs_schema,"schema"); // 1 seul (1er de liste)
|
||||
|
||||
Handle(Interface_TypedValue) fd_descr = new Interface_TypedValue("fd_description");
|
||||
SetValue (9,fd_descr,"descr"); // 1 seul (1er de liste)
|
||||
|
||||
Handle(Interface_TypedValue) fd_level = new Interface_TypedValue("fd_implementation_level");
|
||||
SetValue (10,fd_level,"level");
|
||||
|
||||
}
|
||||
|
||||
TCollection_AsciiString APIHeaderSection_EditHeader::Label () const
|
||||
{ return TCollection_AsciiString ("Step Header"); }
|
||||
|
||||
Standard_Boolean APIHeaderSection_EditHeader::Recognize
|
||||
(const Handle(IFSelect_EditForm)& /*form*/) const
|
||||
{ return Standard_True; } // ??
|
||||
|
||||
Handle(TCollection_HAsciiString) APIHeaderSection_EditHeader::StringValue
|
||||
(const Handle(IFSelect_EditForm)& /*form*/, const Standard_Integer num) const
|
||||
{
|
||||
// Default Values
|
||||
return TypedValue(num)->HStringValue();
|
||||
}
|
||||
|
||||
Standard_Boolean APIHeaderSection_EditHeader::Load
|
||||
(const Handle(IFSelect_EditForm)& form,
|
||||
const Handle(Standard_Transient)& /*ent*/,
|
||||
const Handle(Interface_InterfaceModel)& model) const
|
||||
{
|
||||
Handle(StepData_StepModel) modl =
|
||||
Handle(StepData_StepModel)::DownCast(model);
|
||||
if (modl.IsNull()) return Standard_False;
|
||||
|
||||
APIHeaderSection_MakeHeader mkh (modl);
|
||||
|
||||
form->LoadValue (1 ,mkh.Name ());
|
||||
form->LoadValue (2 ,mkh.TimeStamp ());
|
||||
form->LoadValue (3 ,mkh.AuthorValue (1));
|
||||
form->LoadValue (4 ,mkh.OrganizationValue (1));
|
||||
form->LoadValue (5 ,mkh.PreprocessorVersion ());
|
||||
form->LoadValue (6 ,mkh.OriginatingSystem ());
|
||||
form->LoadValue (7 ,mkh.Authorisation ());
|
||||
|
||||
form->LoadValue (8 ,mkh.SchemaIdentifiersValue (1));
|
||||
|
||||
form->LoadValue (9 ,mkh.DescriptionValue (1));
|
||||
form->LoadValue (10,mkh.ImplementationLevel ());
|
||||
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
Standard_Boolean APIHeaderSection_EditHeader::Apply
|
||||
(const Handle(IFSelect_EditForm)& form,
|
||||
const Handle(Standard_Transient)& /*ent*/,
|
||||
const Handle(Interface_InterfaceModel)& model) const
|
||||
{
|
||||
Handle(StepData_StepModel) modl =
|
||||
Handle(StepData_StepModel)::DownCast(model);
|
||||
if (modl.IsNull()) return Standard_False;
|
||||
|
||||
APIHeaderSection_MakeHeader mkh (modl);
|
||||
|
||||
if (form->IsModified(1)) mkh.SetName (form->EditedValue(1));
|
||||
if (form->IsModified(2)) mkh.SetTimeStamp (form->EditedValue(2));
|
||||
if (form->IsModified(3)) mkh.SetAuthorValue (1,form->EditedValue(3));
|
||||
if (form->IsModified(4)) mkh.SetOrganizationValue (1,form->EditedValue(4));
|
||||
if (form->IsModified(5)) mkh.SetPreprocessorVersion (form->EditedValue(5));
|
||||
if (form->IsModified(6)) mkh.SetOriginatingSystem (form->EditedValue(6));
|
||||
if (form->IsModified(7)) mkh.SetAuthorisation (form->EditedValue(7));
|
||||
|
||||
if (form->IsModified(8)) mkh.SetSchemaIdentifiersValue (1,form->EditedValue(8));
|
||||
|
||||
if (form->IsModified(9)) mkh.SetDescriptionValue (1,form->EditedValue(9));
|
||||
if (form->IsModified(10)) mkh.SetImplementationLevel (form->EditedValue(10));
|
||||
|
||||
mkh.Apply( Handle(StepData_StepModel)::DownCast(model) );
|
||||
|
||||
return Standard_True;
|
||||
}
|
@@ -1,78 +0,0 @@
|
||||
// Created on: 1998-07-08
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1998-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _APIHeaderSection_EditHeader_HeaderFile
|
||||
#define _APIHeaderSection_EditHeader_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <IFSelect_Editor.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
class TCollection_AsciiString;
|
||||
class IFSelect_EditForm;
|
||||
class TCollection_HAsciiString;
|
||||
class Standard_Transient;
|
||||
class Interface_InterfaceModel;
|
||||
|
||||
|
||||
class APIHeaderSection_EditHeader;
|
||||
DEFINE_STANDARD_HANDLE(APIHeaderSection_EditHeader, IFSelect_Editor)
|
||||
|
||||
|
||||
class APIHeaderSection_EditHeader : public IFSelect_Editor
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
Standard_EXPORT APIHeaderSection_EditHeader();
|
||||
|
||||
Standard_EXPORT TCollection_AsciiString Label() const Standard_OVERRIDE;
|
||||
|
||||
Standard_EXPORT Standard_Boolean Recognize (const Handle(IFSelect_EditForm)& form) const Standard_OVERRIDE;
|
||||
|
||||
Standard_EXPORT Handle(TCollection_HAsciiString) StringValue (const Handle(IFSelect_EditForm)& form, const Standard_Integer num) const Standard_OVERRIDE;
|
||||
|
||||
Standard_EXPORT Standard_Boolean Apply (const Handle(IFSelect_EditForm)& form, const Handle(Standard_Transient)& ent, const Handle(Interface_InterfaceModel)& model) const Standard_OVERRIDE;
|
||||
|
||||
Standard_EXPORT Standard_Boolean Load (const Handle(IFSelect_EditForm)& form, const Handle(Standard_Transient)& ent, const Handle(Interface_InterfaceModel)& model) const Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(APIHeaderSection_EditHeader,IFSelect_Editor)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _APIHeaderSection_EditHeader_HeaderFile
|
@@ -182,7 +182,7 @@ Handle(StepData_StepModel) APIHeaderSection_MakeHeader::NewModel
|
||||
(const Handle(Interface_Protocol)& protocol) const
|
||||
{
|
||||
Handle(StepData_StepModel) stepmodel = new StepData_StepModel;
|
||||
stepmodel->SetProtocol (protocol);
|
||||
stepmodel->SetProtocol(protocol);
|
||||
|
||||
// - Make Header information
|
||||
|
||||
|
@@ -1,4 +1,2 @@
|
||||
APIHeaderSection_EditHeader.cxx
|
||||
APIHeaderSection_EditHeader.hxx
|
||||
APIHeaderSection_MakeHeader.cxx
|
||||
APIHeaderSection_MakeHeader.hxx
|
||||
|
@@ -42,11 +42,8 @@
|
||||
#include <TopoDS_Wire.hxx>
|
||||
#include <Transfer_FinderProcess.hxx>
|
||||
#include <Transfer_SimpleBinderOfTransient.hxx>
|
||||
#include <Transfer_TransientMapper.hxx>
|
||||
#include <TransferBRep_OrientedShapeMapper.hxx>
|
||||
#include <TransferBRep_ShapeMapper.hxx>
|
||||
|
||||
//#include <ShapeCustom.hxx>
|
||||
char Name[100];
|
||||
|
||||
//=======================================================================
|
||||
@@ -236,8 +233,7 @@ void BRepToIGES_BREntity::AddFail
|
||||
(const Handle(Standard_Transient)& start,
|
||||
const Standard_CString amess)
|
||||
{
|
||||
Handle(Transfer_TransientMapper) Mapper = new Transfer_TransientMapper(start);
|
||||
TheMap->AddFail(Mapper, amess);
|
||||
TheMap->AddFail(start, amess);
|
||||
}
|
||||
|
||||
|
||||
@@ -250,8 +246,7 @@ void BRepToIGES_BREntity::AddWarning
|
||||
(const Handle(Standard_Transient)& start,
|
||||
const Standard_CString amess)
|
||||
{
|
||||
Handle(Transfer_TransientMapper) Mapper = new Transfer_TransientMapper(start);
|
||||
TheMap->AddWarning(Mapper, amess);
|
||||
TheMap->AddWarning(start, amess);
|
||||
}
|
||||
|
||||
|
||||
@@ -312,8 +307,7 @@ void BRepToIGES_BREntity::SetShapeResult
|
||||
Standard_Boolean BRepToIGES_BREntity::HasShapeResult
|
||||
(const Handle(Standard_Transient)& start) const
|
||||
{
|
||||
Handle(Transfer_TransientMapper) Mapper = new Transfer_TransientMapper(start);
|
||||
DeclareAndCast(Transfer_SimpleBinderOfTransient, binder, TheMap->Find(Mapper));
|
||||
DeclareAndCast(Transfer_SimpleBinderOfTransient, binder, TheMap->Find(start));
|
||||
if (binder.IsNull()) return Standard_False;
|
||||
return binder->HasResult();
|
||||
}
|
||||
@@ -329,8 +323,7 @@ Handle(Standard_Transient) BRepToIGES_BREntity::GetShapeResult
|
||||
{
|
||||
Handle(Standard_Transient) res;
|
||||
|
||||
Handle(Transfer_TransientMapper) Mapper = new Transfer_TransientMapper(start);
|
||||
DeclareAndCast(Transfer_SimpleBinderOfTransient, binder, TheMap->Find(Mapper));
|
||||
DeclareAndCast(Transfer_SimpleBinderOfTransient, binder, TheMap->Find(start));
|
||||
if (binder.IsNull()) return res;
|
||||
if (binder->HasResult())
|
||||
res = binder->Result();
|
||||
@@ -347,9 +340,8 @@ void BRepToIGES_BREntity::SetShapeResult
|
||||
( const Handle(Standard_Transient)& start,
|
||||
const Handle(Standard_Transient)& result)
|
||||
{
|
||||
Handle(Transfer_TransientMapper) Mapper = new Transfer_TransientMapper(start);
|
||||
Handle(Transfer_SimpleBinderOfTransient) binder = new Transfer_SimpleBinderOfTransient;
|
||||
TheMap->Bind(Mapper,binder);
|
||||
TheMap->Bind(start,binder);
|
||||
binder->SetResult(result);
|
||||
}
|
||||
|
||||
|
@@ -102,15 +102,8 @@
|
||||
#include <TopoDS_Vertex.hxx>
|
||||
#include <TopoDS_Wire.hxx>
|
||||
#include <Transfer_FinderProcess.hxx>
|
||||
#include <Transfer_SimpleBinderOfTransient.hxx>
|
||||
#include <Transfer_TransientMapper.hxx>
|
||||
#include <TransferBRep_OrientedShapeMapper.hxx>
|
||||
#include <TransferBRep_ShapeMapper.hxx>
|
||||
|
||||
//#include <GeomConvert.hxx>
|
||||
//#include <Geom2dConvert.hxx>
|
||||
//#include <ShapeAnalysis.hxx>
|
||||
//#include <ShapeCustom.hxx>
|
||||
//=======================================================================
|
||||
//function : BRepToIGESBRep_Entity
|
||||
//purpose :
|
||||
|
@@ -6,7 +6,5 @@ HeaderSection_FileName.cxx
|
||||
HeaderSection_FileName.hxx
|
||||
HeaderSection_FileSchema.cxx
|
||||
HeaderSection_FileSchema.hxx
|
||||
HeaderSection_HeaderRecognizer.cxx
|
||||
HeaderSection_HeaderRecognizer.hxx
|
||||
HeaderSection_Protocol.cxx
|
||||
HeaderSection_Protocol.hxx
|
||||
|
@@ -14,14 +14,11 @@
|
||||
|
||||
#include <HeaderSection.hxx>
|
||||
#include <HeaderSection_Protocol.hxx>
|
||||
#include <Interface_Statics.hxx>
|
||||
|
||||
StaticHandle(HeaderSection_Protocol, proto);
|
||||
|
||||
Handle(HeaderSection_Protocol) HeaderSection::Protocol()
|
||||
|
||||
{
|
||||
InitHandleVoid(HeaderSection_Protocol, proto);
|
||||
return proto;
|
||||
}
|
||||
|
||||
const Handle(HeaderSection_Protocol) & HeaderSection::Protocol()
|
||||
{
|
||||
static Handle(HeaderSection_Protocol) proto;
|
||||
if (proto.IsNull())
|
||||
proto = new HeaderSection_Protocol;
|
||||
return proto;
|
||||
}
|
||||
|
@@ -18,54 +18,15 @@
|
||||
#define _HeaderSection_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_DefineAlloc.hxx>
|
||||
#include <Standard_Handle.hxx>
|
||||
|
||||
class HeaderSection_Protocol;
|
||||
class HeaderSection_Protocol;
|
||||
class HeaderSection_FileName;
|
||||
class HeaderSection_FileDescription;
|
||||
class HeaderSection_FileSchema;
|
||||
class HeaderSection_HeaderRecognizer;
|
||||
|
||||
|
||||
|
||||
class HeaderSection
|
||||
{
|
||||
public:
|
||||
public:
|
||||
|
||||
DEFINE_STANDARD_ALLOC
|
||||
|
||||
|
||||
//! creates a Protocol
|
||||
Standard_EXPORT static Handle(HeaderSection_Protocol) Protocol();
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
|
||||
friend class HeaderSection_Protocol;
|
||||
friend class HeaderSection_FileName;
|
||||
friend class HeaderSection_FileDescription;
|
||||
friend class HeaderSection_FileSchema;
|
||||
friend class HeaderSection_HeaderRecognizer;
|
||||
|
||||
Standard_EXPORT static const Handle(HeaderSection_Protocol) & Protocol();
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _HeaderSection_HeaderFile
|
||||
|
@@ -1,51 +0,0 @@
|
||||
// Created on: 1994-06-27
|
||||
// Created by: Frederic MAUPAS
|
||||
// Copyright (c) 1994-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <HeaderSection_FileDescription.hxx>
|
||||
#include <HeaderSection_FileName.hxx>
|
||||
#include <HeaderSection_FileSchema.hxx>
|
||||
#include <HeaderSection_HeaderRecognizer.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(HeaderSection_HeaderRecognizer,StepData_FileRecognizer)
|
||||
|
||||
static TCollection_AsciiString reco_FileName ("FILE_NAME");
|
||||
static TCollection_AsciiString reco_FileSchema ("FILE_SCHEMA");
|
||||
static TCollection_AsciiString reco_FileDescription ("FILE_DESCRIPTION");
|
||||
|
||||
|
||||
|
||||
HeaderSection_HeaderRecognizer::HeaderSection_HeaderRecognizer ()
|
||||
{ }
|
||||
|
||||
void HeaderSection_HeaderRecognizer::Eval
|
||||
(const TCollection_AsciiString& key)
|
||||
{
|
||||
if (key.IsEqual(reco_FileName)) {
|
||||
SetOK(new HeaderSection_FileName);
|
||||
return;
|
||||
}
|
||||
if (key.IsEqual(reco_FileSchema)) {
|
||||
SetOK(new HeaderSection_FileSchema);
|
||||
return;
|
||||
}
|
||||
if (key.IsEqual(reco_FileDescription)) {
|
||||
SetOK(new HeaderSection_FileDescription);
|
||||
return;
|
||||
}
|
||||
}
|
@@ -1,66 +0,0 @@
|
||||
// Created on: 1994-06-27
|
||||
// Created by: Frederic MAUPAS
|
||||
// Copyright (c) 1994-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _HeaderSection_HeaderRecognizer_HeaderFile
|
||||
#define _HeaderSection_HeaderRecognizer_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <StepData_FileRecognizer.hxx>
|
||||
class TCollection_AsciiString;
|
||||
|
||||
|
||||
class HeaderSection_HeaderRecognizer;
|
||||
DEFINE_STANDARD_HANDLE(HeaderSection_HeaderRecognizer, StepData_FileRecognizer)
|
||||
|
||||
//! Recognizes STEP Standard Header Entities
|
||||
//! (FileName, FileDescription, FileSchema)
|
||||
class HeaderSection_HeaderRecognizer : public StepData_FileRecognizer
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
Standard_EXPORT HeaderSection_HeaderRecognizer();
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(HeaderSection_HeaderRecognizer,StepData_FileRecognizer)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
//! Recognizes data types of Header STEP Standard
|
||||
Standard_EXPORT void Eval (const TCollection_AsciiString& key) Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _HeaderSection_HeaderRecognizer_HeaderFile
|
@@ -2,8 +2,6 @@ IFGraph_AllConnected.cxx
|
||||
IFGraph_AllConnected.hxx
|
||||
IFGraph_AllShared.cxx
|
||||
IFGraph_AllShared.hxx
|
||||
IFGraph_Articulations.cxx
|
||||
IFGraph_Articulations.hxx
|
||||
IFGraph_Compare.cxx
|
||||
IFGraph_Compare.hxx
|
||||
IFGraph_ConnectedComponants.cxx
|
||||
|
@@ -14,34 +14,23 @@
|
||||
|
||||
#include <IFGraph_AllShared.hxx>
|
||||
#include <Interface_EntityIterator.hxx>
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
|
||||
IFGraph_AllShared::IFGraph_AllShared (const Interface_Graph& agraph)
|
||||
: thegraph (agraph) { }
|
||||
|
||||
|
||||
IFGraph_AllShared::IFGraph_AllShared
|
||||
(const Interface_Graph& agraph, const Handle(Standard_Transient)& ent)
|
||||
: thegraph (agraph)
|
||||
IFGraph_AllShared::IFGraph_AllShared (const Interface_Graph& agraph, const Handle(Standard_Transient)& ent)
|
||||
: thegraph (agraph)
|
||||
{
|
||||
if (!agraph.Model()->Contains(ent)) return;
|
||||
GetFromEntity(ent);
|
||||
}
|
||||
|
||||
void IFGraph_AllShared::GetFromEntity
|
||||
(const Handle(Standard_Transient)& ent)
|
||||
{ thegraph.GetFromEntity(ent,Standard_True); } // le fait pour nous
|
||||
|
||||
void IFGraph_AllShared::GetFromIter (const Interface_EntityIterator& iter)
|
||||
void IFGraph_AllShared::GetFromIter (const Interface_EntityIterator& iter)
|
||||
{
|
||||
for (iter.Start(); iter.More(); iter.Next())
|
||||
thegraph.GetFromEntity(iter.Value(),Standard_True);
|
||||
}
|
||||
|
||||
void IFGraph_AllShared::ResetData ()
|
||||
{ Reset(); thegraph.Reset(); }
|
||||
|
||||
void IFGraph_AllShared::Evaluate()
|
||||
{ Reset(); GetFromGraph(thegraph); }
|
||||
void IFGraph_AllShared::Evaluate()
|
||||
{
|
||||
Reset();
|
||||
GetFromGraph(thegraph);
|
||||
}
|
||||
|
@@ -23,8 +23,6 @@
|
||||
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_GraphContent.hxx>
|
||||
class Interface_Graph;
|
||||
class Standard_Transient;
|
||||
class Interface_EntityIterator;
|
||||
|
||||
|
||||
@@ -33,13 +31,14 @@ class Interface_EntityIterator;
|
||||
//! for instance)
|
||||
class IFGraph_AllShared : public Interface_GraphContent
|
||||
{
|
||||
public:
|
||||
public:
|
||||
|
||||
DEFINE_STANDARD_ALLOC
|
||||
|
||||
|
||||
//! creates an AllShared from a graph, empty ready to be filled
|
||||
Standard_EXPORT IFGraph_AllShared(const Interface_Graph& agraph);
|
||||
IFGraph_AllShared(const Interface_Graph& agraph)
|
||||
: thegraph (agraph)
|
||||
{}
|
||||
|
||||
//! creates an AllShared which memrizes Entities shared by a given
|
||||
//! one, at any level, including itself
|
||||
@@ -47,40 +46,21 @@ public:
|
||||
|
||||
//! adds an entity and its shared ones to the list (allows to
|
||||
//! cumulate all Entities shared by some ones)
|
||||
Standard_EXPORT void GetFromEntity (const Handle(Standard_Transient)& ent);
|
||||
void GetFromEntity (const Handle(Standard_Transient)& ent) { thegraph.GetFromEntity(ent,Standard_True); }
|
||||
|
||||
//! Adds Entities from an EntityIterator and all their shared
|
||||
//! ones at any level
|
||||
Standard_EXPORT void GetFromIter (const Interface_EntityIterator& iter);
|
||||
|
||||
//! Allows to restart on a new data set
|
||||
Standard_EXPORT void ResetData();
|
||||
|
||||
void ResetData() { Reset(); thegraph.Reset(); }
|
||||
|
||||
//! does the specific evaluation (shared entities atall levels)
|
||||
Standard_EXPORT virtual void Evaluate() Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
private:
|
||||
|
||||
Interface_Graph thegraph;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFGraph_AllShared_HeaderFile
|
||||
|
@@ -1,82 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFGraph_Articulations.hxx>
|
||||
#include <Interface_EntityIterator.hxx>
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
|
||||
// Points d'Articulation d'un Graphe : ce sont les "passages obliges" du graphe
|
||||
// Algorithme tire du Sedgewick, p 392
|
||||
IFGraph_Articulations::IFGraph_Articulations
|
||||
(const Interface_Graph& agraph, const Standard_Boolean whole)
|
||||
: thegraph (agraph)
|
||||
{ if (whole) thegraph.GetFromModel(); }
|
||||
|
||||
|
||||
void IFGraph_Articulations::GetFromEntity
|
||||
(const Handle(Standard_Transient)& ent)
|
||||
{ thegraph.GetFromEntity(ent,Standard_True); }
|
||||
|
||||
void IFGraph_Articulations::GetFromIter(const Interface_EntityIterator& iter)
|
||||
{ thegraph.GetFromIter(iter,0); }
|
||||
|
||||
|
||||
void IFGraph_Articulations::ResetData ()
|
||||
{ Reset(); thegraph.Reset(); thelist = new TColStd_HSequenceOfInteger(); }
|
||||
|
||||
void IFGraph_Articulations::Evaluate ()
|
||||
{
|
||||
// Algorithme, cf Sedgewick "Algorithms", p 392
|
||||
thelist = new TColStd_HSequenceOfInteger();
|
||||
// Utilisation de Visit
|
||||
Standard_Integer nb = thegraph.Size();
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
thenow = 0;
|
||||
if (thegraph.IsPresent(i)) Visit(i);
|
||||
}
|
||||
// Resultat dans thelist
|
||||
Reset();
|
||||
Standard_Integer nbres = thelist->Length();
|
||||
for (Standard_Integer ires = 1; ires <= nbres; ires ++) {
|
||||
Standard_Integer num = thelist->Value(ires);
|
||||
GetOneItem(thegraph.Model()->Value(num));
|
||||
}
|
||||
}
|
||||
|
||||
Standard_Integer IFGraph_Articulations::Visit (const Standard_Integer num)
|
||||
{
|
||||
thenow ++;
|
||||
thegraph.SetStatus(num,thenow);
|
||||
Standard_Integer min = thenow;
|
||||
|
||||
for (Interface_EntityIterator iter = thegraph.Shareds(thegraph.Entity(num));
|
||||
iter.More(); iter.Next()) {
|
||||
Handle(Standard_Transient) ent = iter.Value();
|
||||
Standard_Integer nument = thegraph.EntityNumber(ent);
|
||||
if (!thegraph.IsPresent(num)) {
|
||||
thegraph.GetFromEntity(ent,Standard_False);
|
||||
nument = thegraph.EntityNumber(ent);
|
||||
}
|
||||
Standard_Integer statent = thegraph.Status(nument); // pas reevalue
|
||||
if (statent == 0) {
|
||||
Standard_Integer mm = Visit(nument);
|
||||
if (mm < min) min = mm;
|
||||
if (mm > thegraph.Status(num)) thelist->Append(num); // ON EN A UN : num
|
||||
}
|
||||
else if (statent < min) min = statent;
|
||||
}
|
||||
return min;
|
||||
}
|
@@ -1,94 +0,0 @@
|
||||
// Created on: 1992-09-23
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1992-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFGraph_Articulations_HeaderFile
|
||||
#define _IFGraph_Articulations_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_DefineAlloc.hxx>
|
||||
#include <Standard_Handle.hxx>
|
||||
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <TColStd_HSequenceOfInteger.hxx>
|
||||
#include <Interface_GraphContent.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
class Interface_Graph;
|
||||
class Standard_Transient;
|
||||
class Interface_EntityIterator;
|
||||
|
||||
|
||||
//! this class gives entities which are Articulation points
|
||||
//! in a whole Model or in a sub-part
|
||||
//! An Articulation Point divides the graph in two (or more)
|
||||
//! disconnected sub-graphs
|
||||
//! Identifying Articulation Points allows improving
|
||||
//! efficiency of spliting a set of Entities into sub-sets
|
||||
class IFGraph_Articulations : public Interface_GraphContent
|
||||
{
|
||||
public:
|
||||
|
||||
DEFINE_STANDARD_ALLOC
|
||||
|
||||
|
||||
//! creates Articulations to evaluate a Graph
|
||||
//! whole True : works on the whole Model
|
||||
//! whole False : remains empty, ready to work on a sub-part
|
||||
Standard_EXPORT IFGraph_Articulations(const Interface_Graph& agraph, const Standard_Boolean whole);
|
||||
|
||||
//! adds an entity and its shared ones to the list
|
||||
Standard_EXPORT void GetFromEntity (const Handle(Standard_Transient)& ent);
|
||||
|
||||
//! adds a list of entities (as an iterator)
|
||||
Standard_EXPORT void GetFromIter (const Interface_EntityIterator& iter);
|
||||
|
||||
//! Allows to restart on a new data set
|
||||
Standard_EXPORT void ResetData();
|
||||
|
||||
//! Evaluates the list of Articulation points
|
||||
Standard_EXPORT virtual void Evaluate() Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
//! basic routine of computation
|
||||
//! (see book Sedgewick "Algorithms", p 392)
|
||||
Standard_EXPORT Standard_Integer Visit (const Standard_Integer num);
|
||||
|
||||
|
||||
Interface_Graph thegraph;
|
||||
Standard_Integer thenow;
|
||||
Handle(TColStd_HSequenceOfInteger) thelist;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFGraph_Articulations_HeaderFile
|
@@ -15,64 +15,40 @@
|
||||
#include <IFGraph_AllShared.hxx>
|
||||
#include <IFGraph_Compare.hxx>
|
||||
#include <Interface_EntityIterator.hxx>
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
|
||||
// Comparateur de deux sous-ensembles d un Modele
|
||||
// Au premier sous-ensemble, est attribue le Status 1
|
||||
// Au deuxieme sous-ensemble, est attribue le Status 2
|
||||
// La partie commune se voit attribuer le Status 3
|
||||
IFGraph_Compare::IFGraph_Compare (const Interface_Graph& agraph)
|
||||
: thegraph (agraph) { }
|
||||
|
||||
void IFGraph_Compare::GetFromEntity
|
||||
(const Handle(Standard_Transient)& ent, const Standard_Boolean first)
|
||||
void IFGraph_Compare::GetFromEntity (const Handle(Standard_Transient)& ent, const Standard_Boolean first)
|
||||
{
|
||||
IFGraph_AllShared iter(thegraph.Model(),ent);
|
||||
GetFromIter(iter,first);
|
||||
}
|
||||
|
||||
void IFGraph_Compare::GetFromIter
|
||||
(const Interface_EntityIterator& iter, const Standard_Boolean first)
|
||||
void IFGraph_Compare::GetFromIter (const Interface_EntityIterator& iter, const Standard_Boolean first)
|
||||
{
|
||||
Standard_Integer stat = 2;
|
||||
if (first) stat = 1;
|
||||
thegraph.GetFromIter(iter,stat,3,Standard_False);
|
||||
}
|
||||
|
||||
|
||||
void IFGraph_Compare::Merge ()
|
||||
void IFGraph_Compare::Merge ()
|
||||
{
|
||||
thegraph.ChangeStatus (2,1);
|
||||
thegraph.ChangeStatus (3,1);
|
||||
}
|
||||
|
||||
void IFGraph_Compare::RemoveSecond ()
|
||||
void IFGraph_Compare::RemoveSecond ()
|
||||
{
|
||||
thegraph.ChangeStatus (3,1);
|
||||
thegraph.RemoveStatus (2);
|
||||
}
|
||||
|
||||
void IFGraph_Compare::KeepCommon ()
|
||||
void IFGraph_Compare::KeepCommon ()
|
||||
{
|
||||
thegraph.RemoveStatus (1);
|
||||
thegraph.RemoveStatus (2);
|
||||
thegraph.ChangeStatus (3,1);
|
||||
}
|
||||
|
||||
void IFGraph_Compare::ResetData ()
|
||||
{ Reset(); thegraph.Reset(); }
|
||||
|
||||
void IFGraph_Compare::Evaluate ()
|
||||
void IFGraph_Compare::Evaluate ()
|
||||
{
|
||||
Reset(); GetFromGraph(thegraph); // Evaluation deja faite par le graphe
|
||||
}
|
||||
|
||||
Interface_EntityIterator IFGraph_Compare::Common () const
|
||||
{ return Interface_GraphContent(thegraph,3); }
|
||||
|
||||
Interface_EntityIterator IFGraph_Compare::FirstOnly () const
|
||||
{ return Interface_GraphContent(thegraph,1); }
|
||||
|
||||
Interface_EntityIterator IFGraph_Compare::SecondOnly () const
|
||||
{ return Interface_GraphContent(thegraph,2); }
|
||||
|
@@ -23,9 +23,6 @@
|
||||
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_GraphContent.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
class Interface_Graph;
|
||||
class Standard_Transient;
|
||||
class Interface_EntityIterator;
|
||||
|
||||
|
||||
@@ -36,13 +33,14 @@ class Interface_EntityIterator;
|
||||
//! Basic Iteration gives Cumulation (union)
|
||||
class IFGraph_Compare : public Interface_GraphContent
|
||||
{
|
||||
public:
|
||||
public:
|
||||
|
||||
DEFINE_STANDARD_ALLOC
|
||||
|
||||
|
||||
//! creates empty Compare, ready to work
|
||||
Standard_EXPORT IFGraph_Compare(const Interface_Graph& agraph);
|
||||
IFGraph_Compare(const Interface_Graph& agraph)
|
||||
: thegraph (agraph)
|
||||
{}
|
||||
|
||||
//! adds an entity and its shared ones to the list :
|
||||
//! first True means adds to the first sub-list, else to the 2nd
|
||||
@@ -66,42 +64,23 @@ public:
|
||||
Standard_EXPORT void KeepCommon();
|
||||
|
||||
//! Allows to restart on a new data set
|
||||
Standard_EXPORT void ResetData();
|
||||
void ResetData() { Reset(); thegraph.Reset(); }
|
||||
|
||||
//! Recomputes result of comparing to sub-parts
|
||||
Standard_EXPORT virtual void Evaluate() Standard_OVERRIDE;
|
||||
|
||||
//! returns entities common to the both parts
|
||||
Standard_EXPORT Interface_EntityIterator Common() const;
|
||||
|
||||
Interface_EntityIterator Common() const { return Interface_GraphContent(thegraph,3); }
|
||||
|
||||
//! returns entities which are exclusively in the first list
|
||||
Standard_EXPORT Interface_EntityIterator FirstOnly() const;
|
||||
|
||||
Interface_EntityIterator FirstOnly() const { return Interface_GraphContent(thegraph,1); }
|
||||
|
||||
//! returns entities which are exclusively in the second part
|
||||
Standard_EXPORT Interface_EntityIterator SecondOnly() const;
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
Interface_EntityIterator SecondOnly() const { return Interface_GraphContent(thegraph,2); }
|
||||
|
||||
private:
|
||||
|
||||
Interface_Graph thegraph;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFGraph_Compare_HeaderFile
|
||||
|
@@ -23,11 +23,8 @@
|
||||
// On recommence jusqu'a ce qu'il n'y ait plus de Vertex libre
|
||||
// Honnetement, si ca ne marche pas, cf classe ConnectedVerticesIterator
|
||||
// de GraphTools qui fait en principe la meme chose
|
||||
IFGraph_ConnectedComponants::IFGraph_ConnectedComponants
|
||||
(const Interface_Graph& agraph, const Standard_Boolean whole)
|
||||
: IFGraph_SubPartsIterator (agraph, whole) { }
|
||||
|
||||
void IFGraph_ConnectedComponants::Evaluate()
|
||||
void IFGraph_ConnectedComponants::Evaluate()
|
||||
{
|
||||
// On part des "loaded"
|
||||
// Pour chacun : s il est note dans le graphe, on passe
|
||||
|
@@ -22,10 +22,8 @@
|
||||
#include <Standard_Handle.hxx>
|
||||
|
||||
#include <IFGraph_SubPartsIterator.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
class Interface_Graph;
|
||||
|
||||
|
||||
//! determines Connected Componants in a Graph. They define
|
||||
//! disjoined sets of Entities
|
||||
class IFGraph_ConnectedComponants : public IFGraph_SubPartsIterator
|
||||
@@ -33,37 +31,16 @@ class IFGraph_ConnectedComponants : public IFGraph_SubPartsIterator
|
||||
public:
|
||||
|
||||
DEFINE_STANDARD_ALLOC
|
||||
|
||||
|
||||
//! creates with a Graph, and will analyse :
|
||||
//! whole True : all the contents of the Model
|
||||
//! whole False : sub-parts which will be given later
|
||||
Standard_EXPORT IFGraph_ConnectedComponants(const Interface_Graph& agraph, const Standard_Boolean whole);
|
||||
IFGraph_ConnectedComponants(const Interface_Graph& agraph, const Standard_Boolean whole)
|
||||
: IFGraph_SubPartsIterator (agraph, whole)
|
||||
{}
|
||||
|
||||
//! does the computation
|
||||
Standard_EXPORT virtual void Evaluate() Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFGraph_ConnectedComponants_HeaderFile
|
||||
|
@@ -16,8 +16,6 @@
|
||||
#include <IFGraph_Cumulate.hxx>
|
||||
#include <Interface_EntityIterator.hxx>
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
|
||||
// Calcul de cumul
|
||||
// Tres simple, on note les entites demandees, et a la fin
|
||||
@@ -26,31 +24,25 @@
|
||||
// Les status demarrent a 2, ainsi a l ajout d une entite, on distingue bien
|
||||
// entre les entites nouvelles, liees a cet appel (statut temporaire 1) et les
|
||||
// autres (statut superieur ou egal a 2)
|
||||
IFGraph_Cumulate::IFGraph_Cumulate (const Interface_Graph& agraph)
|
||||
: thegraph (agraph) { }
|
||||
|
||||
void IFGraph_Cumulate::GetFromEntity
|
||||
(const Handle(Standard_Transient)& ent)
|
||||
void IFGraph_Cumulate::GetFromEntity (const Handle(Standard_Transient)& ent)
|
||||
{
|
||||
IFGraph_AllShared iter(thegraph.Model(),ent);
|
||||
GetFromIter (iter);
|
||||
}
|
||||
|
||||
void IFGraph_Cumulate::ResetData ()
|
||||
{ Reset(); thegraph.Reset(); }
|
||||
|
||||
void IFGraph_Cumulate::GetFromIter (const Interface_EntityIterator& iter)
|
||||
void IFGraph_Cumulate::GetFromIter (const Interface_EntityIterator& iter)
|
||||
{
|
||||
thegraph.GetFromIter(iter,1,1,Standard_True);
|
||||
thegraph.ChangeStatus (1,2); // une fois le calcul fait
|
||||
}
|
||||
|
||||
void IFGraph_Cumulate::Evaluate ()
|
||||
void IFGraph_Cumulate::Evaluate ()
|
||||
{
|
||||
Reset(); GetFromGraph(thegraph); // evaluation deja faite dans le graphe
|
||||
}
|
||||
|
||||
Interface_EntityIterator IFGraph_Cumulate::Overlapped () const
|
||||
Interface_EntityIterator IFGraph_Cumulate::Overlapped () const
|
||||
{
|
||||
Interface_EntityIterator iter;
|
||||
Standard_Integer nb = thegraph.Size();
|
||||
@@ -61,7 +53,7 @@ IFGraph_Cumulate::IFGraph_Cumulate (const Interface_Graph& agraph)
|
||||
return iter;
|
||||
}
|
||||
|
||||
Interface_EntityIterator IFGraph_Cumulate::Forgotten () const
|
||||
Interface_EntityIterator IFGraph_Cumulate::Forgotten () const
|
||||
{
|
||||
Interface_EntityIterator iter;
|
||||
Standard_Integer nb = thegraph.Size();
|
||||
@@ -72,8 +64,7 @@ IFGraph_Cumulate::IFGraph_Cumulate (const Interface_Graph& agraph)
|
||||
return iter;
|
||||
}
|
||||
|
||||
Interface_EntityIterator IFGraph_Cumulate::PerCount
|
||||
(const Standard_Integer count) const
|
||||
Interface_EntityIterator IFGraph_Cumulate::PerCount (const Standard_Integer count) const
|
||||
{
|
||||
Interface_EntityIterator iter;
|
||||
Standard_Integer nb = thegraph.Size();
|
||||
@@ -84,9 +75,7 @@ IFGraph_Cumulate::IFGraph_Cumulate (const Interface_Graph& agraph)
|
||||
return iter;
|
||||
}
|
||||
|
||||
|
||||
Standard_Integer IFGraph_Cumulate::NbTimes
|
||||
(const Handle(Standard_Transient)& ent) const
|
||||
Standard_Integer IFGraph_Cumulate::NbTimes (const Handle(Standard_Transient)& ent) const
|
||||
{
|
||||
Standard_Integer num = thegraph.EntityNumber(ent);
|
||||
if (num == 0) return 0;
|
||||
@@ -94,7 +83,7 @@ IFGraph_Cumulate::IFGraph_Cumulate (const Interface_Graph& agraph)
|
||||
return stat-1;
|
||||
}
|
||||
|
||||
Standard_Integer IFGraph_Cumulate::HighestNbTimes () const
|
||||
Standard_Integer IFGraph_Cumulate::HighestNbTimes () const
|
||||
{
|
||||
Standard_Integer max = 0;
|
||||
Standard_Integer nb = thegraph.Size();
|
||||
|
@@ -23,9 +23,6 @@
|
||||
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_GraphContent.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
class Interface_Graph;
|
||||
class Standard_Transient;
|
||||
class Interface_EntityIterator;
|
||||
|
||||
|
||||
@@ -35,14 +32,15 @@ class Interface_EntityIterator;
|
||||
//! Basic Iteration gives entities which are part of Cumulation
|
||||
class IFGraph_Cumulate : public Interface_GraphContent
|
||||
{
|
||||
public:
|
||||
public:
|
||||
|
||||
DEFINE_STANDARD_ALLOC
|
||||
|
||||
|
||||
//! creates empty Cumulate, ready to work
|
||||
Standard_EXPORT IFGraph_Cumulate(const Interface_Graph& agraph);
|
||||
|
||||
IFGraph_Cumulate(const Interface_Graph& agraph)
|
||||
: thegraph (agraph)
|
||||
{}
|
||||
|
||||
//! adds an entity and its shared ones to the list
|
||||
Standard_EXPORT void GetFromEntity (const Handle(Standard_Transient)& ent);
|
||||
|
||||
@@ -51,8 +49,8 @@ public:
|
||||
Standard_EXPORT void GetFromIter (const Interface_EntityIterator& iter);
|
||||
|
||||
//! Allows to restart on a new data set
|
||||
Standard_EXPORT void ResetData();
|
||||
|
||||
void ResetData() { Reset(); thegraph.Reset(); }
|
||||
|
||||
//! Evaluates the result of cumulation
|
||||
Standard_EXPORT virtual void Evaluate() Standard_OVERRIDE;
|
||||
|
||||
@@ -74,28 +72,9 @@ public:
|
||||
//! (0 means empty, 1 means no overlap)
|
||||
Standard_EXPORT Standard_Integer HighestNbTimes() const;
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
private:
|
||||
|
||||
Interface_Graph thegraph;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFGraph_Cumulate_HeaderFile
|
||||
|
@@ -23,24 +23,8 @@
|
||||
// Les status :
|
||||
// - Les entites de depart sont au Status 0
|
||||
// - Les entites Sharing NOUVELLES (ExternalSources) sont au Status 1
|
||||
IFGraph_ExternalSources::IFGraph_ExternalSources
|
||||
(const Interface_Graph& agraph)
|
||||
: thegraph (agraph) { }
|
||||
|
||||
|
||||
void IFGraph_ExternalSources::GetFromEntity
|
||||
(const Handle(Standard_Transient)& ent)
|
||||
{ thegraph.GetFromEntity(ent,Standard_True); }
|
||||
|
||||
void IFGraph_ExternalSources::GetFromIter
|
||||
(const Interface_EntityIterator& iter)
|
||||
{ thegraph.GetFromIter(iter,0); }
|
||||
|
||||
void IFGraph_ExternalSources::ResetData ()
|
||||
{ Reset(); thegraph.Reset(); }
|
||||
|
||||
|
||||
void IFGraph_ExternalSources::Evaluate ()
|
||||
void IFGraph_ExternalSources::Evaluate ()
|
||||
{
|
||||
Reset();
|
||||
thegraph.RemoveStatus(1);
|
||||
@@ -52,7 +36,7 @@ IFGraph_ExternalSources::IFGraph_ExternalSources
|
||||
GetFromGraph(thegraph,1);
|
||||
}
|
||||
|
||||
Standard_Boolean IFGraph_ExternalSources::IsEmpty ()
|
||||
Standard_Boolean IFGraph_ExternalSources::IsEmpty ()
|
||||
{
|
||||
Evaluate();
|
||||
Standard_Integer nb = thegraph.Size();
|
||||
|
@@ -23,9 +23,6 @@
|
||||
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_GraphContent.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
class Interface_Graph;
|
||||
class Standard_Transient;
|
||||
class Interface_EntityIterator;
|
||||
|
||||
|
||||
@@ -33,23 +30,26 @@ class Interface_EntityIterator;
|
||||
//! a sub-part, but are not contained by this sub-part
|
||||
class IFGraph_ExternalSources : public Interface_GraphContent
|
||||
{
|
||||
public:
|
||||
public:
|
||||
|
||||
DEFINE_STANDARD_ALLOC
|
||||
|
||||
|
||||
//! creates empty ExternalSources, ready to work
|
||||
Standard_EXPORT IFGraph_ExternalSources(const Interface_Graph& agraph);
|
||||
IFGraph_ExternalSources(const Interface_Graph& agraph)
|
||||
: thegraph (agraph)
|
||||
{}
|
||||
|
||||
//! adds an entity and its shared ones to the list
|
||||
Standard_EXPORT void GetFromEntity (const Handle(Standard_Transient)& ent);
|
||||
|
||||
void GetFromEntity (const Handle(Standard_Transient)& ent)
|
||||
{ thegraph.GetFromEntity(ent,Standard_True); }
|
||||
|
||||
//! adds a list of entities (as an iterator) with shared ones
|
||||
Standard_EXPORT void GetFromIter (const Interface_EntityIterator& iter);
|
||||
|
||||
void GetFromIter (const Interface_EntityIterator& iter)
|
||||
{ thegraph.GetFromIter(iter,0); }
|
||||
|
||||
//! Allows to restart on a new data set
|
||||
Standard_EXPORT void ResetData();
|
||||
|
||||
void ResetData() { Reset(); thegraph.Reset(); }
|
||||
|
||||
//! Evaluates external sources of a set of entities
|
||||
Standard_EXPORT virtual void Evaluate() Standard_OVERRIDE;
|
||||
|
||||
@@ -58,28 +58,9 @@ public:
|
||||
//! (performs an Evaluation as necessary)
|
||||
Standard_EXPORT Standard_Boolean IsEmpty();
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
private:
|
||||
|
||||
Interface_Graph thegraph;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFGraph_ExternalSources_HeaderFile
|
||||
|
@@ -14,28 +14,17 @@
|
||||
|
||||
#include <IFGraph_ExternalSources.hxx>
|
||||
#include <IFGraph_SCRoots.hxx>
|
||||
#include <IFGraph_StrongComponants.hxx>
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
|
||||
//#include <Interface_GraphContent.hxx>
|
||||
IFGraph_SCRoots::IFGraph_SCRoots
|
||||
(const Interface_Graph& agraph, const Standard_Boolean whole)
|
||||
: IFGraph_StrongComponants (agraph,whole) { }
|
||||
|
||||
IFGraph_SCRoots::IFGraph_SCRoots (IFGraph_StrongComponants& subparts)
|
||||
: IFGraph_StrongComponants (subparts) { }
|
||||
|
||||
// StrongComponants racines d un ensemble donne
|
||||
// On ne tient pas compte du reste eventuel (c est un autre probleme)
|
||||
// On part du fait que StrongComponants donne les Composants dans l ordre de
|
||||
// dependance, le premier ne dependant de rien (les autres, on ne sait pas ...)
|
||||
|
||||
void IFGraph_SCRoots::Evaluate ()
|
||||
void IFGraph_SCRoots::Evaluate ()
|
||||
{
|
||||
IFGraph_StrongComponants complist (Model(),Standard_False);
|
||||
complist.GetFromIter(Loaded());
|
||||
// Interface_Graph G(Model());
|
||||
Interface_Graph G(thegraph);
|
||||
#ifdef OCCT_DEBUG
|
||||
cout<<" SCRoots:"<<endl;
|
||||
@@ -55,15 +44,3 @@ IFGraph_SCRoots::IFGraph_SCRoots
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ce qui suit, c etait autre chose : les SC qui n ont pas d ExternalSource
|
||||
Interface_EntityIterator list = complist.Entities();
|
||||
IFGraph_ExternalSources eval (Model());
|
||||
eval.GetFromIter(list);
|
||||
if (eval.IsEmpty()) {
|
||||
AddPart();
|
||||
GetFromIter(list);
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
@@ -22,9 +22,7 @@
|
||||
#include <Standard_Handle.hxx>
|
||||
|
||||
#include <IFGraph_StrongComponants.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
class Interface_Graph;
|
||||
class IFGraph_StrongComponants;
|
||||
|
||||
|
||||
//! determines strong componants in a graph which are Roots
|
||||
@@ -38,35 +36,17 @@ public:
|
||||
//! creates with a Graph, and will analyse :
|
||||
//! whole True : all the contents of the Model
|
||||
//! whole False : sub-parts which will be given later
|
||||
Standard_EXPORT IFGraph_SCRoots(const Interface_Graph& agraph, const Standard_Boolean whole);
|
||||
|
||||
IFGraph_SCRoots(const Interface_Graph& agraph, const Standard_Boolean whole)
|
||||
: IFGraph_StrongComponants (agraph,whole)
|
||||
{}
|
||||
|
||||
//! creates from a StrongComponants which was already computed
|
||||
Standard_EXPORT IFGraph_SCRoots(IFGraph_StrongComponants& subparts);
|
||||
|
||||
IFGraph_SCRoots(IFGraph_StrongComponants& subparts)
|
||||
: IFGraph_StrongComponants (subparts)
|
||||
{}
|
||||
|
||||
//! does the computation
|
||||
Standard_EXPORT virtual void Evaluate() Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFGraph_SCRoots_HeaderFile
|
||||
|
@@ -16,15 +16,9 @@
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_GraphContent.hxx>
|
||||
|
||||
//#include <IFGraph_SortedStrongs.hxx>
|
||||
IFGraph_StrongComponants::IFGraph_StrongComponants
|
||||
(const Interface_Graph& agraph, const Standard_Boolean whole)
|
||||
: IFGraph_SubPartsIterator (agraph, whole) { }
|
||||
|
||||
void IFGraph_StrongComponants::Evaluate ()
|
||||
void IFGraph_StrongComponants::Evaluate ()
|
||||
{
|
||||
Interface_GraphContent iter = Loaded();
|
||||
Interface_Graph G(thegraph); G.GetFromIter(iter,0);
|
||||
Interface_Graph G(thegraph); G.GetFromIter(Loaded(),0);
|
||||
Standard_Integer nb = G.Size();
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
if (!G.IsPresent(i)) continue;
|
||||
|
@@ -22,7 +22,6 @@
|
||||
#include <Standard_Handle.hxx>
|
||||
|
||||
#include <IFGraph_SubPartsIterator.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
class Interface_Graph;
|
||||
|
||||
|
||||
@@ -30,40 +29,19 @@ class Interface_Graph;
|
||||
//! isolated entities (single componants) or loops
|
||||
class IFGraph_StrongComponants : public IFGraph_SubPartsIterator
|
||||
{
|
||||
public:
|
||||
public:
|
||||
|
||||
DEFINE_STANDARD_ALLOC
|
||||
|
||||
|
||||
//! creates with a Graph, and will analyse :
|
||||
//! whole True : all the contents of the Model
|
||||
//! whole False : sub-parts which will be given later
|
||||
Standard_EXPORT IFGraph_StrongComponants(const Interface_Graph& agraph, const Standard_Boolean whole);
|
||||
|
||||
IFGraph_StrongComponants(const Interface_Graph& agraph, const Standard_Boolean whole)
|
||||
: IFGraph_SubPartsIterator (agraph, whole)
|
||||
{}
|
||||
|
||||
//! does the computation
|
||||
Standard_EXPORT virtual void Evaluate() Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFGraph_StrongComponants_HeaderFile
|
||||
|
@@ -26,9 +26,8 @@
|
||||
// SubPartsIterator permet de regrouper les entites en plusieurs sous-parties
|
||||
// A chaque sous-partie est attache un Status : la 1re a 1, la 2e a 2, etc...
|
||||
// (consequence, les sous-parties sont necessairement disjointes)
|
||||
IFGraph_SubPartsIterator::IFGraph_SubPartsIterator
|
||||
(const Interface_Graph& agraph, const Standard_Boolean whole)
|
||||
: thegraph (agraph)
|
||||
IFGraph_SubPartsIterator::IFGraph_SubPartsIterator (const Interface_Graph& agraph, const Standard_Boolean whole)
|
||||
: thegraph (agraph)
|
||||
{
|
||||
if (whole) thegraph.GetFromModel();
|
||||
theparts = new TColStd_HSequenceOfInteger();
|
||||
@@ -37,9 +36,8 @@ IFGraph_SubPartsIterator::IFGraph_SubPartsIterator
|
||||
thecurr = 0;
|
||||
}
|
||||
|
||||
IFGraph_SubPartsIterator::IFGraph_SubPartsIterator
|
||||
(IFGraph_SubPartsIterator& other)
|
||||
: thegraph (other.Graph())
|
||||
IFGraph_SubPartsIterator::IFGraph_SubPartsIterator (IFGraph_SubPartsIterator& other)
|
||||
: thegraph (other.thegraph)
|
||||
{
|
||||
Standard_Integer nb = thegraph.Size();
|
||||
theparts = new TColStd_HSequenceOfInteger();
|
||||
@@ -57,8 +55,7 @@ IFGraph_SubPartsIterator::IFGraph_SubPartsIterator
|
||||
thecurr = 1;
|
||||
}
|
||||
|
||||
void IFGraph_SubPartsIterator::GetParts
|
||||
(IFGraph_SubPartsIterator& other)
|
||||
void IFGraph_SubPartsIterator::GetParts (IFGraph_SubPartsIterator& other)
|
||||
{
|
||||
if (Model() != other.Model()) Interface_InterfaceError::Raise
|
||||
("SubPartsIterator : GetParts");
|
||||
@@ -77,48 +74,44 @@ IFGraph_SubPartsIterator::IFGraph_SubPartsIterator
|
||||
}
|
||||
}
|
||||
|
||||
const Interface_Graph& IFGraph_SubPartsIterator::Graph () const
|
||||
{ return thegraph; }
|
||||
|
||||
// .... Gestion Interne (remplissage, etc...) .... //
|
||||
|
||||
Handle(Interface_InterfaceModel) IFGraph_SubPartsIterator::Model() const
|
||||
{ return thegraph.Model(); }
|
||||
Handle(Interface_InterfaceModel) IFGraph_SubPartsIterator::Model() const
|
||||
{ return thegraph.Model(); }
|
||||
|
||||
void IFGraph_SubPartsIterator::AddPart ()
|
||||
void IFGraph_SubPartsIterator::AddPart ()
|
||||
{
|
||||
theparts->Append( Standard_Integer(0) );
|
||||
thepart = theparts->Length();
|
||||
}
|
||||
|
||||
Standard_Integer IFGraph_SubPartsIterator::NbParts () const
|
||||
{ return theparts->Length(); }
|
||||
Standard_Integer IFGraph_SubPartsIterator::NbParts () const
|
||||
{ return theparts->Length(); }
|
||||
|
||||
Standard_Integer IFGraph_SubPartsIterator::PartNum () const
|
||||
{ return thepart; }
|
||||
Standard_Integer IFGraph_SubPartsIterator::PartNum () const
|
||||
{ return thepart; }
|
||||
|
||||
void IFGraph_SubPartsIterator::SetLoad ()
|
||||
{ thepart = 0; }
|
||||
void IFGraph_SubPartsIterator::SetLoad ()
|
||||
{ thepart = 0; }
|
||||
|
||||
void IFGraph_SubPartsIterator::SetPartNum (const Standard_Integer num)
|
||||
void IFGraph_SubPartsIterator::SetPartNum (const Standard_Integer num)
|
||||
{
|
||||
if (num <= 0 || num > theparts->Length()) Standard_OutOfRange::Raise
|
||||
("IFGraph_SubPartsIterator : SetPartNum");
|
||||
thepart = num;
|
||||
}
|
||||
|
||||
void IFGraph_SubPartsIterator::GetFromEntity
|
||||
(const Handle(Standard_Transient)& ent, const Standard_Boolean shared)
|
||||
void IFGraph_SubPartsIterator::GetFromEntity (const Handle(Standard_Transient)& ent, const Standard_Boolean shared)
|
||||
{
|
||||
thegraph.GetFromEntity(ent,shared, thepart,thepart,Standard_False);
|
||||
}
|
||||
|
||||
void IFGraph_SubPartsIterator::GetFromIter (const Interface_EntityIterator& iter)
|
||||
void IFGraph_SubPartsIterator::GetFromIter (const Interface_EntityIterator& iter)
|
||||
{
|
||||
thegraph.GetFromIter(iter, thepart,thepart, Standard_False);
|
||||
}
|
||||
|
||||
void IFGraph_SubPartsIterator::Reset ()
|
||||
void IFGraph_SubPartsIterator::Reset ()
|
||||
{
|
||||
thegraph.Reset();
|
||||
theparts->Clear();
|
||||
@@ -251,11 +244,3 @@ IFGraph_SubPartsIterator::IFGraph_SubPartsIterator
|
||||
}
|
||||
return iter;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : ~IFGraph_SubPartsIterator
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
IFGraph_SubPartsIterator::~IFGraph_SubPartsIterator()
|
||||
{}
|
||||
|
@@ -23,14 +23,8 @@
|
||||
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <TColStd_HSequenceOfInteger.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
class Standard_OutOfRange;
|
||||
class Standard_NoSuchObject;
|
||||
class Interface_InterfaceError;
|
||||
class Interface_Graph;
|
||||
class TColStd_HSequenceOfTransient;
|
||||
class Interface_InterfaceModel;
|
||||
class Standard_Transient;
|
||||
class Interface_EntityIterator;
|
||||
class Interface_GraphContent;
|
||||
|
||||
@@ -82,8 +76,8 @@ public:
|
||||
//! (0 at load time)
|
||||
Standard_EXPORT Standard_Integer PartNum() const;
|
||||
|
||||
//! Sets SubPartIterator to get Entities (by GetFromEntity &
|
||||
//! GetFromIter) into load status, to be analysed later
|
||||
//! Sets SubPartIterator to get Entities (by GetFromEntity & GetFromIter)
|
||||
//! into load status, to be analysed later
|
||||
Standard_EXPORT void SetLoad();
|
||||
|
||||
//! Sets numero of receiving part to a new value
|
||||
@@ -150,35 +144,18 @@ public:
|
||||
//! Error : same as above (end of iteration)
|
||||
Standard_EXPORT Interface_EntityIterator Entities() const;
|
||||
|
||||
Standard_EXPORT virtual ~IFGraph_SubPartsIterator();
|
||||
|
||||
protected:
|
||||
|
||||
Standard_EXPORT virtual ~IFGraph_SubPartsIterator() {}
|
||||
|
||||
protected:
|
||||
|
||||
Interface_Graph thegraph;
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
//! Returns the Graph used by <me>. Used to create another
|
||||
//! SubPartsIterator from <me>
|
||||
Standard_EXPORT const Interface_Graph& Graph() const;
|
||||
|
||||
private:
|
||||
|
||||
Handle(TColStd_HSequenceOfInteger) theparts;
|
||||
Handle(TColStd_HSequenceOfInteger) thefirsts;
|
||||
Standard_Integer thepart;
|
||||
Standard_Integer thecurr;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFGraph_SubPartsIterator_HeaderFile
|
||||
|
@@ -1,66 +1,11 @@
|
||||
IFSelect.cxx
|
||||
IFSelect.hxx
|
||||
IFSelect_Act.cxx
|
||||
IFSelect_Act.hxx
|
||||
IFSelect_ActFunc.hxx
|
||||
IFSelect_Activator.cxx
|
||||
IFSelect_Activator.hxx
|
||||
IFSelect_AppliedModifiers.cxx
|
||||
IFSelect_AppliedModifiers.hxx
|
||||
IFSelect_BasicDumper.cxx
|
||||
IFSelect_BasicDumper.hxx
|
||||
IFSelect_CheckCounter.cxx
|
||||
IFSelect_CheckCounter.hxx
|
||||
IFSelect_ContextModif.cxx
|
||||
IFSelect_ContextModif.hxx
|
||||
IFSelect_ContextWrite.cxx
|
||||
IFSelect_ContextWrite.hxx
|
||||
IFSelect_Dispatch.cxx
|
||||
IFSelect_Dispatch.hxx
|
||||
IFSelect_DispGlobal.cxx
|
||||
IFSelect_DispGlobal.hxx
|
||||
IFSelect_DispPerCount.cxx
|
||||
IFSelect_DispPerCount.hxx
|
||||
IFSelect_DispPerFiles.cxx
|
||||
IFSelect_DispPerFiles.hxx
|
||||
IFSelect_DispPerOne.cxx
|
||||
IFSelect_DispPerOne.hxx
|
||||
IFSelect_DispPerSignature.cxx
|
||||
IFSelect_DispPerSignature.hxx
|
||||
IFSelect_EditForm.cxx
|
||||
IFSelect_EditForm.hxx
|
||||
IFSelect_Editor.cxx
|
||||
IFSelect_Editor.hxx
|
||||
IFSelect_EditValue.hxx
|
||||
IFSelect_FileModifier.gxx
|
||||
IFSelect_Functions.cxx
|
||||
IFSelect_Functions.hxx
|
||||
IFSelect_GeneralModifier.cxx
|
||||
IFSelect_GeneralModifier.hxx
|
||||
IFSelect_GraphCounter.cxx
|
||||
IFSelect_GraphCounter.hxx
|
||||
IFSelect_HSeqOfSelection.hxx
|
||||
IFSelect_IntParam.cxx
|
||||
IFSelect_IntParam.hxx
|
||||
IFSelect_ListEditor.cxx
|
||||
IFSelect_ListEditor.hxx
|
||||
IFSelect_ModelCopier.cxx
|
||||
IFSelect_ModelCopier.hxx
|
||||
IFSelect_ModelModifier.gxx
|
||||
IFSelect_ModifEditForm.cxx
|
||||
IFSelect_ModifEditForm.hxx
|
||||
IFSelect_Modifier.cxx
|
||||
IFSelect_Modifier.hxx
|
||||
IFSelect_ModifReorder.cxx
|
||||
IFSelect_ModifReorder.hxx
|
||||
IFSelect_PacketList.cxx
|
||||
IFSelect_PacketList.hxx
|
||||
IFSelect_ParamEditor.cxx
|
||||
IFSelect_ParamEditor.hxx
|
||||
IFSelect_PrintCount.hxx
|
||||
IFSelect_PrintFail.hxx
|
||||
IFSelect_RemainMode.hxx
|
||||
IFSelect_ReturnStatus.hxx
|
||||
IFSelect_SelectAnyList.cxx
|
||||
IFSelect_SelectAnyList.hxx
|
||||
IFSelect_SelectAnyType.cxx
|
||||
@@ -127,19 +72,7 @@ IFSelect_SelectUnion.cxx
|
||||
IFSelect_SelectUnion.hxx
|
||||
IFSelect_SelectUnknownEntities.cxx
|
||||
IFSelect_SelectUnknownEntities.hxx
|
||||
IFSelect_SequenceOfAppliedModifiers.hxx
|
||||
IFSelect_SequenceOfGeneralModifier.hxx
|
||||
IFSelect_SequenceOfInterfaceModel.hxx
|
||||
IFSelect_SessionDumper.cxx
|
||||
IFSelect_SessionDumper.hxx
|
||||
IFSelect_SessionFile.cxx
|
||||
IFSelect_SessionFile.hxx
|
||||
IFSelect_SessionPilot.cxx
|
||||
IFSelect_SessionPilot.hxx
|
||||
IFSelect_ShareOut.cxx
|
||||
IFSelect_ShareOut.hxx
|
||||
IFSelect_ShareOutResult.cxx
|
||||
IFSelect_ShareOutResult.hxx
|
||||
IFSelect_SignAncestor.cxx
|
||||
IFSelect_SignAncestor.hxx
|
||||
IFSelect_Signature.cxx
|
||||
@@ -156,13 +89,8 @@ IFSelect_SignType.cxx
|
||||
IFSelect_SignType.hxx
|
||||
IFSelect_SignValidity.cxx
|
||||
IFSelect_SignValidity.hxx
|
||||
IFSelect_Transformer.cxx
|
||||
IFSelect_Transformer.hxx
|
||||
IFSelect_TransformStandard.cxx
|
||||
IFSelect_TransformStandard.hxx
|
||||
IFSelect_TSeqOfDispatch.hxx
|
||||
IFSelect_TSeqOfSelection.hxx
|
||||
IFSelect_WorkLibrary.cxx
|
||||
IFSelect_WorkLibrary.hxx
|
||||
IFSelect_Vars.cxx
|
||||
IFSelect_Vars.hxx
|
||||
IFSelect_WorkSession.cxx
|
||||
IFSelect_WorkSession.hxx
|
||||
|
@@ -1,33 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFSelect.hxx>
|
||||
#include <IFSelect_SessionFile.hxx>
|
||||
#include <IFSelect_WorkSession.hxx>
|
||||
|
||||
// Methodes de confort, evitant de devoir connaitre SessionFile, qui est un
|
||||
// Tool non destine a l export (en particulier, pas un Handle)
|
||||
Standard_Boolean IFSelect::SaveSession
|
||||
(const Handle(IFSelect_WorkSession)& WS, const Standard_CString file)
|
||||
{
|
||||
IFSelect_SessionFile sesfile(WS,file);
|
||||
return sesfile.IsDone();
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect::RestoreSession
|
||||
(const Handle(IFSelect_WorkSession)& WS, const Standard_CString file)
|
||||
{
|
||||
IFSelect_SessionFile sesfile(WS);
|
||||
return (sesfile.Read(file) == 0);
|
||||
}
|
@@ -1,238 +0,0 @@
|
||||
// Created on: 1992-09-21
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1992-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_HeaderFile
|
||||
#define _IFSelect_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_DefineAlloc.hxx>
|
||||
#include <Standard_Handle.hxx>
|
||||
|
||||
#include <Standard_Boolean.hxx>
|
||||
#include <Standard_CString.hxx>
|
||||
class IFSelect_WorkSession;
|
||||
class IFSelect_Signature;
|
||||
class IFSelect_SignMultiple;
|
||||
class IFSelect_SignType;
|
||||
class IFSelect_SignCategory;
|
||||
class IFSelect_SignValidity;
|
||||
class IFSelect_SignAncestor;
|
||||
class IFSelect_ShareOut;
|
||||
class IFSelect_AppliedModifiers;
|
||||
class IFSelect_ShareOutResult;
|
||||
class IFSelect_PacketList;
|
||||
class IFSelect_Dispatch;
|
||||
class IFSelect_DispGlobal;
|
||||
class IFSelect_DispPerOne;
|
||||
class IFSelect_DispPerCount;
|
||||
class IFSelect_DispPerSignature;
|
||||
class IFSelect_DispPerFiles;
|
||||
class IFSelect_SelectionIterator;
|
||||
class IFSelect_Selection;
|
||||
class IFSelect_SelectBase;
|
||||
class IFSelect_SelectModelRoots;
|
||||
class IFSelect_SelectModelEntities;
|
||||
class IFSelect_SelectEntityNumber;
|
||||
class IFSelect_SelectPointed;
|
||||
class IFSelect_SelectCombine;
|
||||
class IFSelect_SelectUnion;
|
||||
class IFSelect_SelectIntersection;
|
||||
class IFSelect_SelectControl;
|
||||
class IFSelect_SelectDiff;
|
||||
class IFSelect_SelectDeduct;
|
||||
class IFSelect_SelectShared;
|
||||
class IFSelect_SelectSharing;
|
||||
class IFSelect_SelectAnyList;
|
||||
class IFSelect_SelectInList;
|
||||
class IFSelect_SelectSuite;
|
||||
class IFSelect_SelectExtract;
|
||||
class IFSelect_SelectUnknownEntities;
|
||||
class IFSelect_SelectErrorEntities;
|
||||
class IFSelect_SelectIncorrectEntities;
|
||||
class IFSelect_SelectRoots;
|
||||
class IFSelect_SelectRootComps;
|
||||
class IFSelect_SelectRange;
|
||||
class IFSelect_SelectAnyType;
|
||||
class IFSelect_SelectType;
|
||||
class IFSelect_SelectSignature;
|
||||
class IFSelect_SelectFlag;
|
||||
class IFSelect_SelectSent;
|
||||
class IFSelect_SelectExplore;
|
||||
class IFSelect_SelectSignedShared;
|
||||
class IFSelect_SelectSignedSharing;
|
||||
class IFSelect_IntParam;
|
||||
class IFSelect_SignatureList;
|
||||
class IFSelect_CheckCounter;
|
||||
class IFSelect_SignCounter;
|
||||
class IFSelect_GraphCounter;
|
||||
class IFSelect_Editor;
|
||||
class IFSelect_ParamEditor;
|
||||
class IFSelect_EditForm;
|
||||
class IFSelect_ListEditor;
|
||||
class IFSelect_ContextModif;
|
||||
class IFSelect_ContextWrite;
|
||||
class IFSelect_Transformer;
|
||||
class IFSelect_TransformStandard;
|
||||
class IFSelect_ModelCopier;
|
||||
class IFSelect_GeneralModifier;
|
||||
class IFSelect_Modifier;
|
||||
class IFSelect_ModifReorder;
|
||||
class IFSelect_ModifEditForm;
|
||||
class IFSelect_FileModifier;
|
||||
class IFSelect_ModelModifier;
|
||||
class IFSelect_WorkSession;
|
||||
class IFSelect_WorkLibrary;
|
||||
class IFSelect_SessionFile;
|
||||
class IFSelect_SessionDumper;
|
||||
class IFSelect_BasicDumper;
|
||||
class IFSelect_Activator;
|
||||
class IFSelect_SessionPilot;
|
||||
class IFSelect_Act;
|
||||
class IFSelect_Functions;
|
||||
|
||||
|
||||
//! Gives tools to manage Selecting a group of Entities
|
||||
//! processed by an Interface, for instance to divide up an
|
||||
//! original Model (from a File) to several smaller ones
|
||||
//! They use description of an Interface Model as a graph
|
||||
//!
|
||||
//! Remark that this corresponds to the description of a
|
||||
//! "scenario" of sharing out a File. Parts of this Scenario
|
||||
//! are intended to be permanently stored. IFSelect provides
|
||||
//! the Transient, active counterparts (to run the Scenario).
|
||||
//! But a permanent one (either as Persistent Objects or as
|
||||
//! interpretable Text) must be provided elsewhere.
|
||||
class IFSelect
|
||||
{
|
||||
public:
|
||||
|
||||
DEFINE_STANDARD_ALLOC
|
||||
|
||||
|
||||
//! Saves the state of a WorkSession from IFSelect, by using a
|
||||
//! SessionFile from IFSelect. Returns True if Done, False in
|
||||
//! case of Error on Writing. <file> gives the name of the File
|
||||
//! to be produced (this avoids to export the class SessionFile).
|
||||
Standard_EXPORT static Standard_Boolean SaveSession (const Handle(IFSelect_WorkSession)& WS, const Standard_CString file);
|
||||
|
||||
//! Restore the state of a WorkSession from IFSelect, by using a
|
||||
//! SessionFile from IFSelect. Returns True if Done, False in
|
||||
//! case of Error on Writing. <file> gives the name of the File
|
||||
//! to be used (this avoids to export the class SessionFile).
|
||||
Standard_EXPORT static Standard_Boolean RestoreSession (const Handle(IFSelect_WorkSession)& WS, const Standard_CString file);
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
|
||||
friend class IFSelect_Signature;
|
||||
friend class IFSelect_SignMultiple;
|
||||
friend class IFSelect_SignType;
|
||||
friend class IFSelect_SignCategory;
|
||||
friend class IFSelect_SignValidity;
|
||||
friend class IFSelect_SignAncestor;
|
||||
friend class IFSelect_ShareOut;
|
||||
friend class IFSelect_AppliedModifiers;
|
||||
friend class IFSelect_ShareOutResult;
|
||||
friend class IFSelect_PacketList;
|
||||
friend class IFSelect_Dispatch;
|
||||
friend class IFSelect_DispGlobal;
|
||||
friend class IFSelect_DispPerOne;
|
||||
friend class IFSelect_DispPerCount;
|
||||
friend class IFSelect_DispPerSignature;
|
||||
friend class IFSelect_DispPerFiles;
|
||||
friend class IFSelect_SelectionIterator;
|
||||
friend class IFSelect_Selection;
|
||||
friend class IFSelect_SelectBase;
|
||||
friend class IFSelect_SelectModelRoots;
|
||||
friend class IFSelect_SelectModelEntities;
|
||||
friend class IFSelect_SelectEntityNumber;
|
||||
friend class IFSelect_SelectPointed;
|
||||
friend class IFSelect_SelectCombine;
|
||||
friend class IFSelect_SelectUnion;
|
||||
friend class IFSelect_SelectIntersection;
|
||||
friend class IFSelect_SelectControl;
|
||||
friend class IFSelect_SelectDiff;
|
||||
friend class IFSelect_SelectDeduct;
|
||||
friend class IFSelect_SelectShared;
|
||||
friend class IFSelect_SelectSharing;
|
||||
friend class IFSelect_SelectAnyList;
|
||||
friend class IFSelect_SelectInList;
|
||||
friend class IFSelect_SelectSuite;
|
||||
friend class IFSelect_SelectExtract;
|
||||
friend class IFSelect_SelectUnknownEntities;
|
||||
friend class IFSelect_SelectErrorEntities;
|
||||
friend class IFSelect_SelectIncorrectEntities;
|
||||
friend class IFSelect_SelectRoots;
|
||||
friend class IFSelect_SelectRootComps;
|
||||
friend class IFSelect_SelectRange;
|
||||
friend class IFSelect_SelectAnyType;
|
||||
friend class IFSelect_SelectType;
|
||||
friend class IFSelect_SelectSignature;
|
||||
friend class IFSelect_SelectFlag;
|
||||
friend class IFSelect_SelectSent;
|
||||
friend class IFSelect_SelectExplore;
|
||||
friend class IFSelect_SelectSignedShared;
|
||||
friend class IFSelect_SelectSignedSharing;
|
||||
friend class IFSelect_IntParam;
|
||||
friend class IFSelect_SignatureList;
|
||||
friend class IFSelect_CheckCounter;
|
||||
friend class IFSelect_SignCounter;
|
||||
friend class IFSelect_GraphCounter;
|
||||
friend class IFSelect_Editor;
|
||||
friend class IFSelect_ParamEditor;
|
||||
friend class IFSelect_EditForm;
|
||||
friend class IFSelect_ListEditor;
|
||||
friend class IFSelect_ContextModif;
|
||||
friend class IFSelect_ContextWrite;
|
||||
friend class IFSelect_Transformer;
|
||||
friend class IFSelect_TransformStandard;
|
||||
friend class IFSelect_ModelCopier;
|
||||
friend class IFSelect_GeneralModifier;
|
||||
friend class IFSelect_Modifier;
|
||||
friend class IFSelect_ModifReorder;
|
||||
friend class IFSelect_ModifEditForm;
|
||||
friend class IFSelect_FileModifier;
|
||||
friend class IFSelect_ModelModifier;
|
||||
friend class IFSelect_WorkSession;
|
||||
friend class IFSelect_WorkLibrary;
|
||||
friend class IFSelect_SessionFile;
|
||||
friend class IFSelect_SessionDumper;
|
||||
friend class IFSelect_BasicDumper;
|
||||
friend class IFSelect_Activator;
|
||||
friend class IFSelect_SessionPilot;
|
||||
friend class IFSelect_Act;
|
||||
friend class IFSelect_Functions;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_HeaderFile
|
@@ -1,65 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFSelect_Act.hxx>
|
||||
#include <IFSelect_SessionPilot.hxx>
|
||||
#include <Standard_DomainError.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_Act,IFSelect_Activator)
|
||||
|
||||
static TCollection_AsciiString thedefgr, thedefil;
|
||||
|
||||
|
||||
|
||||
IFSelect_Act::IFSelect_Act
|
||||
(const Standard_CString name, const Standard_CString help,
|
||||
const IFSelect_ActFunc func)
|
||||
: thename (name) , thehelp (help) , thefunc (func) { }
|
||||
|
||||
IFSelect_ReturnStatus IFSelect_Act::Do
|
||||
(const Standard_Integer, const Handle(IFSelect_SessionPilot)& pilot)
|
||||
{
|
||||
if (!thefunc) return IFSelect_RetVoid;
|
||||
return thefunc (pilot);
|
||||
}
|
||||
|
||||
Standard_CString IFSelect_Act::Help (const Standard_Integer) const
|
||||
{ return thehelp.ToCString(); }
|
||||
|
||||
|
||||
void IFSelect_Act::SetGroup
|
||||
(const Standard_CString group, const Standard_CString file)
|
||||
{ thedefgr.Clear(); if (group[0] != '\0') thedefgr.AssignCat(group);
|
||||
thedefil.Clear(); if (file [0] != '\0') thedefil.AssignCat(file); }
|
||||
|
||||
void IFSelect_Act::AddFunc
|
||||
(const Standard_CString name, const Standard_CString help,
|
||||
const IFSelect_ActFunc func)
|
||||
{
|
||||
Handle(IFSelect_Act) act = new IFSelect_Act (name,help,func);
|
||||
if (thedefgr.Length() > 0) act->SetForGroup (thedefgr.ToCString());
|
||||
act->Add (1,name);
|
||||
}
|
||||
|
||||
void IFSelect_Act::AddFSet
|
||||
(const Standard_CString name, const Standard_CString help,
|
||||
const IFSelect_ActFunc func)
|
||||
{
|
||||
Handle(IFSelect_Act) act = new IFSelect_Act (name,help,func);
|
||||
if (thedefgr.Length() > 0)
|
||||
act->SetForGroup (thedefgr.ToCString(),thedefil.ToCString());
|
||||
act->AddSet (1,name);
|
||||
}
|
@@ -1,111 +0,0 @@
|
||||
// Created on: 1996-03-05
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1996-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_Act_HeaderFile
|
||||
#define _IFSelect_Act_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
#include <IFSelect_ActFunc.hxx>
|
||||
#include <IFSelect_Activator.hxx>
|
||||
#include <Standard_CString.hxx>
|
||||
#include <IFSelect_ReturnStatus.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
class Standard_DomainError;
|
||||
class IFSelect_SessionPilot;
|
||||
|
||||
|
||||
class IFSelect_Act;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_Act, IFSelect_Activator)
|
||||
|
||||
//! Act gives a simple way to define and add functions to be ran
|
||||
//! from a SessionPilot, as follows :
|
||||
//!
|
||||
//! Define a function as
|
||||
//! static IFSelect_RetStatus myfunc
|
||||
//! (const Standard_CString name,
|
||||
//! const Handle(IFSelect_SessionPilot)& pilot)
|
||||
//! { ... }
|
||||
//! When ran, it receives the exact name (string) of the called
|
||||
//! function, and the SessionPilot which brings other infos
|
||||
//!
|
||||
//! Add it by
|
||||
//! IFSelect_Act::AddFunc (name,help,myfunc);
|
||||
//! for a normal function, or
|
||||
//! IFSelect_Act::AddFSet (name,help,myfunc);
|
||||
//! for a function which is intended to create a control item
|
||||
//! name and help are given as CString
|
||||
//!
|
||||
//! Then, it is available for run
|
||||
class IFSelect_Act : public IFSelect_Activator
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates an Act with a name, help and a function
|
||||
//! mode (Add or AddSet) is given when recording
|
||||
Standard_EXPORT IFSelect_Act(const Standard_CString name, const Standard_CString help, const IFSelect_ActFunc func);
|
||||
|
||||
//! Execution of Command Line. remark that <number> is senseless
|
||||
//! because each Act brings one and only one function
|
||||
Standard_EXPORT IFSelect_ReturnStatus Do (const Standard_Integer number, const Handle(IFSelect_SessionPilot)& pilot) Standard_OVERRIDE;
|
||||
|
||||
//! Short Help for commands : returns the help given to create
|
||||
Standard_EXPORT Standard_CString Help (const Standard_Integer number) const Standard_OVERRIDE;
|
||||
|
||||
//! Changes the default group name for the following Acts
|
||||
//! group empty means to come back to default from Activator
|
||||
//! Also a file name can be precised (to query by getsource)
|
||||
Standard_EXPORT static void SetGroup (const Standard_CString group, const Standard_CString file = "");
|
||||
|
||||
//! Adds a function with its name and help : creates an Act then
|
||||
//! records it as normal function
|
||||
Standard_EXPORT static void AddFunc (const Standard_CString name, const Standard_CString help, const IFSelect_ActFunc func);
|
||||
|
||||
//! Adds a function with its name and help : creates an Act then
|
||||
//! records it as function for XSET (i.e. to create control item)
|
||||
Standard_EXPORT static void AddFSet (const Standard_CString name, const Standard_CString help, const IFSelect_ActFunc func);
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_Act,IFSelect_Activator)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
TCollection_AsciiString thename;
|
||||
TCollection_AsciiString thehelp;
|
||||
IFSelect_ActFunc thefunc;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_Act_HeaderFile
|
@@ -1,24 +0,0 @@
|
||||
// Created on: 2000-02-29
|
||||
// Created by: data exchange team
|
||||
// Copyright (c) 2000-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_ActFunc_HeaderFile
|
||||
#define _IFSelect_ActFunc_HeaderFile
|
||||
|
||||
#include <IFSelect_SessionPilot.hxx>
|
||||
#include <IFSelect_ReturnStatus.hxx>
|
||||
|
||||
typedef IFSelect_ReturnStatus (*IFSelect_ActFunc) (const Handle(IFSelect_SessionPilot)&);
|
||||
|
||||
#endif
|
@@ -1,74 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFSelect_AppliedModifiers.hxx>
|
||||
#include <IFSelect_GeneralModifier.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_AppliedModifiers,MMgt_TShared)
|
||||
|
||||
IFSelect_AppliedModifiers::IFSelect_AppliedModifiers
|
||||
(const Standard_Integer nbmax, const Standard_Integer nbent)
|
||||
: thelists (nbmax+1)
|
||||
{
|
||||
thenbent = nbent; theentcnt = 0;
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_AppliedModifiers::AddModif
|
||||
(const Handle(IFSelect_GeneralModifier)& modif)
|
||||
{
|
||||
if (themodifs.Length() >= thelists.NbEntities()) return Standard_False;
|
||||
themodifs.Append(modif);
|
||||
thelists.SetNumber (themodifs.Length());
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_AppliedModifiers::AddNum
|
||||
(const Standard_Integer nument)
|
||||
{
|
||||
thelists.Add (nument);
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
|
||||
Standard_Integer IFSelect_AppliedModifiers::Count () const
|
||||
{ return themodifs.Length(); }
|
||||
|
||||
Standard_Boolean IFSelect_AppliedModifiers::Item
|
||||
(const Standard_Integer num,
|
||||
Handle(IFSelect_GeneralModifier)& modif,
|
||||
Standard_Integer& entcount)
|
||||
{
|
||||
if (num < 1 || num > themodifs.Length()) return Standard_False;
|
||||
modif = themodifs.Value(num);
|
||||
thelists.SetNumber (num);
|
||||
theentcnt = thelists.Length();
|
||||
entcount = (theentcnt > 0 ? theentcnt : thenbent);
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
Standard_Integer IFSelect_AppliedModifiers::ItemNum
|
||||
(const Standard_Integer nument) const
|
||||
{ return (theentcnt > 0 ? thelists.Value(nument) : nument); }
|
||||
|
||||
Handle(TColStd_HSequenceOfInteger) IFSelect_AppliedModifiers::ItemList () const
|
||||
{
|
||||
Handle(TColStd_HSequenceOfInteger) list = new TColStd_HSequenceOfInteger();
|
||||
Standard_Integer i, nb = (theentcnt > 0 ? theentcnt : thenbent);
|
||||
for (i = 1; i <= nb; i ++) list->Append (ItemNum(i));
|
||||
return list;
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_AppliedModifiers::IsForAll () const
|
||||
{ return (theentcnt == 0); }
|
@@ -1,133 +0,0 @@
|
||||
// Created on: 1994-05-02
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1994-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_AppliedModifiers_HeaderFile
|
||||
#define _IFSelect_AppliedModifiers_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <IFSelect_SequenceOfGeneralModifier.hxx>
|
||||
#include <Interface_IntList.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <MMgt_TShared.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
#include <TColStd_HSequenceOfInteger.hxx>
|
||||
class IFSelect_GeneralModifier;
|
||||
|
||||
|
||||
class IFSelect_AppliedModifiers;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_AppliedModifiers, MMgt_TShared)
|
||||
|
||||
//! This class allows to memorize and access to the modifiers
|
||||
//! which are to be applied to a file. To each modifier, is bound
|
||||
//! a list of integers (optionnal) : if this list is absent, the
|
||||
//! modifier applies to all the file. Else, it applies to the
|
||||
//! entities designated by these numbers in the produced file.
|
||||
//!
|
||||
//! To record a modifier, and a possible list of entity numbers
|
||||
//! to be applied on :
|
||||
//! AddModif (amodifier);
|
||||
//! loop on AddNum (anumber);
|
||||
//!
|
||||
//! To query it, Count gives the count of recorded modifiers,
|
||||
//! then for each one :
|
||||
//! Item (numodif, amodifier, entcount);
|
||||
//! IsForAll () -> can be called, if True, applies on the whole file
|
||||
//!
|
||||
//! for (i = 1; i <= entcount; i ++)
|
||||
//! nument = ItemNum (i); -> return an entity number
|
||||
class IFSelect_AppliedModifiers : public MMgt_TShared
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates an AppliedModifiers, ready to record up to <nbmax>
|
||||
//! modifiers, on a model of <nbent> entities
|
||||
Standard_EXPORT IFSelect_AppliedModifiers(const Standard_Integer nbmax, const Standard_Integer nbent);
|
||||
|
||||
//! Records a modifier. By default, it is to apply on all a
|
||||
//! produced file. Further calls to AddNum will restrict this.
|
||||
//! Returns True if done, False if too many modifiers are already
|
||||
//! recorded
|
||||
Standard_EXPORT Standard_Boolean AddModif (const Handle(IFSelect_GeneralModifier)& modif);
|
||||
|
||||
//! Adds a number of entity of the output file to be applied on.
|
||||
//! If a sequence of AddNum is called after AddModif, this
|
||||
//! Modifier will be applied on the list of designated entities.
|
||||
//! Else, it will be applied on all the file
|
||||
//! Returns True if done, False if no modifier has yet been added
|
||||
Standard_EXPORT Standard_Boolean AddNum (const Standard_Integer nument);
|
||||
|
||||
//! Returns the count of recorded modifiers
|
||||
Standard_EXPORT Standard_Integer Count() const;
|
||||
|
||||
//! Returns the description for applied modifier n0 <num> :
|
||||
//! the modifier itself, and the count of entities to be applied
|
||||
//! on. If no specific list of number has been defined, returns
|
||||
//! the total count of entities of the file
|
||||
//! If this count is zero, then the modifier applies to all
|
||||
//! the file (see below). Else, the numbers are then queried by
|
||||
//! calls to ItemNum between 1 and <entcount>
|
||||
//! Returns True if OK, False if <num> is out of range
|
||||
Standard_EXPORT Standard_Boolean Item (const Standard_Integer num, Handle(IFSelect_GeneralModifier)& modif, Standard_Integer& entcount);
|
||||
|
||||
//! Returns a numero of entity to be applied on, given its rank
|
||||
//! in the list. If no list is defined (i.e. for all the file),
|
||||
//! returns <nument> itself, to give all the entities of the file
|
||||
//! Returns 0 if <nument> out of range
|
||||
Standard_EXPORT Standard_Integer ItemNum (const Standard_Integer nument) const;
|
||||
|
||||
//! Returns the list of entities to be applied on (see Item)
|
||||
//! as a HSequence (IsForAll produces the complete list of all
|
||||
//! the entity numbers of the file
|
||||
Standard_EXPORT Handle(TColStd_HSequenceOfInteger) ItemList() const;
|
||||
|
||||
//! Returns True if the applied modifier queried by last call to
|
||||
//! Item is to be applied to all the produced file.
|
||||
//! Else, <entcount> returned by Item gives the count of entity
|
||||
//! numbers, each one is queried by ItemNum
|
||||
Standard_EXPORT Standard_Boolean IsForAll() const;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_AppliedModifiers,MMgt_TShared)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
IFSelect_SequenceOfGeneralModifier themodifs;
|
||||
Interface_IntList thelists;
|
||||
Standard_Integer thenbent;
|
||||
Standard_Integer theentcnt;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_AppliedModifiers_HeaderFile
|
@@ -1,189 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFSelect_BasicDumper.hxx>
|
||||
#include <IFSelect_DispGlobal.hxx>
|
||||
#include <IFSelect_DispPerCount.hxx>
|
||||
#include <IFSelect_DispPerOne.hxx>
|
||||
#include <IFSelect_IntParam.hxx>
|
||||
#include <IFSelect_Modifier.hxx>
|
||||
#include <IFSelect_SelectDiff.hxx>
|
||||
#include <IFSelect_SelectEntityNumber.hxx>
|
||||
#include <IFSelect_SelectErrorEntities.hxx>
|
||||
#include <IFSelect_SelectIncorrectEntities.hxx>
|
||||
#include <IFSelect_SelectIntersection.hxx>
|
||||
#include <IFSelect_SelectModelEntities.hxx>
|
||||
#include <IFSelect_SelectModelRoots.hxx>
|
||||
#include <IFSelect_SelectPointed.hxx>
|
||||
#include <IFSelect_SelectRange.hxx>
|
||||
#include <IFSelect_SelectRootComps.hxx>
|
||||
#include <IFSelect_SelectRoots.hxx>
|
||||
#include <IFSelect_SelectShared.hxx>
|
||||
#include <IFSelect_SelectSharing.hxx>
|
||||
#include <IFSelect_SelectUnion.hxx>
|
||||
#include <IFSelect_SelectUnknownEntities.hxx>
|
||||
#include <IFSelect_SessionFile.hxx>
|
||||
#include <IFSelect_ShareOut.hxx>
|
||||
#include <IFSelect_TransformStandard.hxx>
|
||||
#include <IFSelect_WorkSession.hxx>
|
||||
#include <Interface_Macros.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_BasicDumper,IFSelect_SessionDumper)
|
||||
|
||||
//#include <IFSelect_SelectTextType.hxx>
|
||||
#define FIRSTCHAR 1
|
||||
// Param litteral "own" sous la forme :"<val>" -> first = 3
|
||||
// A present, forme simplifiee : <val> directement -> first = 1
|
||||
|
||||
|
||||
|
||||
IFSelect_BasicDumper::IFSelect_BasicDumper () { }
|
||||
|
||||
Standard_Boolean IFSelect_BasicDumper::WriteOwn
|
||||
(IFSelect_SessionFile& file, const Handle(Standard_Transient)& item) const
|
||||
{
|
||||
Handle(Standard_Type) type = item->DynamicType();
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectModelRoots)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectModelEntities)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectEntityNumber)) {
|
||||
DeclareAndCast(IFSelect_SelectEntityNumber,sen,item);
|
||||
file.SendItem(sen->Number());
|
||||
return Standard_True;
|
||||
}
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectPointed)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectUnion)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectIntersection)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectDiff)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectUnknownEntities)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectErrorEntities)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectIncorrectEntities)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectRoots)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectRootComps)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectRange)) {
|
||||
DeclareAndCast(IFSelect_SelectRange,sra,item);
|
||||
file.SendItem(sra->Lower());
|
||||
file.SendItem(sra->Upper());
|
||||
return Standard_True;
|
||||
}
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectShared)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectSharing)) return Standard_True;
|
||||
|
||||
if (type == STANDARD_TYPE(IFSelect_DispPerOne)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_DispGlobal)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_DispPerCount)) {
|
||||
DeclareAndCast(IFSelect_DispPerCount,dpc,item);
|
||||
file.SendItem(dpc->Count());
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
if (type == STANDARD_TYPE(IFSelect_TransformStandard)) {
|
||||
DeclareAndCast(IFSelect_TransformStandard,trs,item);
|
||||
if (trs->CopyOption()) file.SendText("copy");
|
||||
else file.SendText("onthespot");
|
||||
Standard_Integer nbm = trs->NbModifiers();
|
||||
for (Standard_Integer i = 1; i <= nbm; i ++)
|
||||
file.SendItem(trs->Modifier(i));
|
||||
}
|
||||
|
||||
return Standard_False;
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_BasicDumper::ReadOwn
|
||||
(IFSelect_SessionFile& file, const TCollection_AsciiString& type,
|
||||
Handle(Standard_Transient)& item) const
|
||||
{
|
||||
if (type.IsEqual("IFSelect_SelectModelRoots"))
|
||||
{ item = new IFSelect_SelectModelRoots (); return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_SelectModelEntities"))
|
||||
{ item = new IFSelect_SelectModelEntities (); return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_SelectEntityNumber")) {
|
||||
Handle(IFSelect_SelectEntityNumber) sen =
|
||||
new IFSelect_SelectEntityNumber ();
|
||||
sen->SetNumber (GetCasted(IFSelect_IntParam,file.ItemValue(1)));
|
||||
item = sen;
|
||||
return Standard_True;
|
||||
}
|
||||
if (type.IsEqual("IFSelect_SelectPointed"))
|
||||
{ item = new IFSelect_SelectPointed; return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_SelectUnion"))
|
||||
{ item = new IFSelect_SelectUnion; return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_SelectIntersection"))
|
||||
{ item = new IFSelect_SelectIntersection; return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_SelectDiff"))
|
||||
{ item = new IFSelect_SelectDiff; return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_SelectUnknownEntities"))
|
||||
{ item = new IFSelect_SelectUnknownEntities; return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_SelectErrorEntities"))
|
||||
{ item = new IFSelect_SelectErrorEntities; return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_SelectIncorrectEntities"))
|
||||
{ item = new IFSelect_SelectIncorrectEntities; return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_SelectRoots"))
|
||||
{ item = new IFSelect_SelectRoots; return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_SelectRootComps"))
|
||||
{ item = new IFSelect_SelectRootComps; return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_SelectRange")) {
|
||||
Handle(IFSelect_SelectRange) sra = new IFSelect_SelectRange;
|
||||
sra->SetRange (GetCasted(IFSelect_IntParam,file.ItemValue(1)),
|
||||
GetCasted(IFSelect_IntParam,file.ItemValue(2)) );
|
||||
item = sra;
|
||||
return Standard_True;
|
||||
}
|
||||
if (type.IsEqual("IFSelect_SelectTextType")) {
|
||||
const TCollection_AsciiString exname = file.ParamValue(1);
|
||||
if (exname.Length() < FIRSTCHAR) return Standard_False;
|
||||
if (exname.Value(FIRSTCHAR) == 'e') {}
|
||||
else if (exname.Value(FIRSTCHAR) == 'c') {}
|
||||
else return Standard_False;
|
||||
// item = new IFSelect_SelectTextType (file.TextValue(2).ToCString(),exact);
|
||||
// return Standard_True;
|
||||
}
|
||||
if (type.IsEqual("IFSelect_SelectShared"))
|
||||
{ item = new IFSelect_SelectShared; return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_SelectSharing"))
|
||||
{ item = new IFSelect_SelectSharing; return Standard_True; }
|
||||
|
||||
if (type.IsEqual("IFSelect_DispPerOne"))
|
||||
{ item = new IFSelect_DispPerOne; return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_DispGlobal"))
|
||||
{ item = new IFSelect_DispGlobal; return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_DispPerCount")) {
|
||||
Handle(IFSelect_DispPerCount) dpc = new IFSelect_DispPerCount;
|
||||
dpc->SetCount (GetCasted(IFSelect_IntParam,file.ItemValue(1)) );
|
||||
item = dpc;
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
if (type.IsEqual("IFSelect_TransformStandard")) {
|
||||
Standard_Boolean copyoption;
|
||||
const TCollection_AsciiString copyname = file.ParamValue(1);
|
||||
if (copyname.Length() < FIRSTCHAR) return Standard_False;
|
||||
if (copyname.Value(FIRSTCHAR) == 'c') copyoption = Standard_True;
|
||||
else if (copyname.Value(FIRSTCHAR) == 'o') copyoption = Standard_False;
|
||||
else return Standard_False;
|
||||
Handle(IFSelect_TransformStandard) trs = new IFSelect_TransformStandard;
|
||||
trs->SetCopyOption(copyoption);
|
||||
Standard_Integer nbp = file.NbParams();
|
||||
for (Standard_Integer i = 2; i <= nbp; i ++) {
|
||||
DeclareAndCast(IFSelect_Modifier,modif,file.ItemValue(i));
|
||||
if (!modif.IsNull()) trs->AddModifier(modif);
|
||||
}
|
||||
item = trs;
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
return Standard_False;
|
||||
}
|
@@ -1,76 +0,0 @@
|
||||
// Created on: 1993-11-04
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1993-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_BasicDumper_HeaderFile
|
||||
#define _IFSelect_BasicDumper_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <IFSelect_SessionDumper.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
class IFSelect_SessionFile;
|
||||
class Standard_Transient;
|
||||
class TCollection_AsciiString;
|
||||
|
||||
|
||||
class IFSelect_BasicDumper;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_BasicDumper, IFSelect_SessionDumper)
|
||||
|
||||
//! BasicDumper takes into account, for SessionFile, all the
|
||||
//! classes defined in the package IFSelect : Selections,
|
||||
//! Dispatches (there is no Modifier)
|
||||
class IFSelect_BasicDumper : public IFSelect_SessionDumper
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates a BasicDumper and puts it into the Library of Dumper
|
||||
Standard_EXPORT IFSelect_BasicDumper();
|
||||
|
||||
//! Write the Own Parameters of Types defined in package IFSelect
|
||||
//! Returns True if <item> has been processed, False else
|
||||
Standard_EXPORT Standard_Boolean WriteOwn (IFSelect_SessionFile& file, const Handle(Standard_Transient)& item) const Standard_OVERRIDE;
|
||||
|
||||
//! Recognizes and Read Own Parameters for Types of package
|
||||
//! IFSelect. Returns True if done and <item> created, False else
|
||||
Standard_EXPORT Standard_Boolean ReadOwn (IFSelect_SessionFile& file, const TCollection_AsciiString& type, Handle(Standard_Transient)& item) const Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_BasicDumper,IFSelect_SessionDumper)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_BasicDumper_HeaderFile
|
@@ -1,464 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFSelect_ContextModif.hxx>
|
||||
#include <IFSelect_GeneralModifier.hxx>
|
||||
#include <IFSelect_Selection.hxx>
|
||||
#include <Interface_Check.hxx>
|
||||
#include <Interface_CheckIterator.hxx>
|
||||
#include <Interface_CopyControl.hxx>
|
||||
#include <Interface_CopyTool.hxx>
|
||||
#include <Interface_EntityIterator.hxx>
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Interface_Protocol.hxx>
|
||||
#include <Message.hxx>
|
||||
#include <Message_Messenger.hxx>
|
||||
#include <Standard_NoSuchObject.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
|
||||
//=======================================================================
|
||||
//function : IFSelect_ContextModif
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
IFSelect_ContextModif::IFSelect_ContextModif(const Interface_Graph& graph,
|
||||
const Interface_CopyTool& TC,
|
||||
const Standard_CString filename)
|
||||
: thegraf (graph,Standard_False) , thefile (filename) ,
|
||||
thelist (graph.Size(),' ')
|
||||
{
|
||||
themap = TC.Control(); thesel = Standard_False; thecurr = thecurt = 0;
|
||||
Standard_Integer nb = thelist.Length();
|
||||
Handle(Standard_Transient) newent;
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
if (themap->Search(graph.Entity(i),newent)) thelist.SetValue(i,'1');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : IFSelect_ContextModif
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
IFSelect_ContextModif::IFSelect_ContextModif(const Interface_Graph& graph,
|
||||
const Standard_CString filename)
|
||||
: thegraf (graph,Standard_False) , thefile (filename) ,
|
||||
thelist (graph.Size(),' ')
|
||||
{
|
||||
thesel = Standard_False; thecurr = thecurt = 0;
|
||||
Standard_Integer nb = thelist.Length();
|
||||
Handle(Standard_Transient) newent;
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) thelist.SetValue(i,'1');
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : Select
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_ContextModif::Select (Interface_EntityIterator& list)
|
||||
{
|
||||
thesel = Standard_True;
|
||||
Standard_Integer nb = thelist.Length();
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) thelist.SetValue(i,' ');
|
||||
for (list.Start(); list.More(); list.Next()) {
|
||||
Handle(Standard_Transient) start,newent;
|
||||
start = list.Value();
|
||||
Standard_Integer num = thegraf.EntityNumber(start);
|
||||
if (num > nb || num < 0) num = 0;
|
||||
if (themap.IsNull() && num > 0) thelist.SetValue(num,'1');
|
||||
else if (themap->Search (start,newent)) {
|
||||
if (num > 0) thelist.SetValue(num,'1');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : OriginalGraph
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
const Interface_Graph& IFSelect_ContextModif::OriginalGraph () const
|
||||
{
|
||||
return thegraf;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : OriginalModel
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(Interface_InterfaceModel) IFSelect_ContextModif::OriginalModel() const
|
||||
{
|
||||
return thegraf.Model();
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : SetProtocol
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_ContextModif::SetProtocol(const Handle(Interface_Protocol)& prot)
|
||||
{
|
||||
theprot = prot;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : Protocol
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(Interface_Protocol) IFSelect_ContextModif::Protocol() const
|
||||
{
|
||||
return theprot;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : HasFileName
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Standard_Boolean IFSelect_ContextModif::HasFileName() const
|
||||
{
|
||||
return (thefile.Length() > 0);
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : FileName
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Standard_CString IFSelect_ContextModif::FileName () const
|
||||
{
|
||||
return thefile.ToCString();
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : Control
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(Interface_CopyControl) IFSelect_ContextModif::Control () const
|
||||
{
|
||||
return themap;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : IsForNone
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Standard_Boolean IFSelect_ContextModif::IsForNone () const
|
||||
{
|
||||
if (!thesel) return Standard_False;
|
||||
Standard_Integer nb = thelist.Length();
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
if (thelist.Value(i) != ' ') return Standard_False;
|
||||
}
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : IsForAll
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Standard_Boolean IFSelect_ContextModif::IsForAll () const
|
||||
{
|
||||
return (!thesel);
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : IsTransferred
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Standard_Boolean IFSelect_ContextModif::IsTransferred
|
||||
(const Handle(Standard_Transient)& ent) const
|
||||
{
|
||||
if (themap.IsNull()) return Standard_True;
|
||||
Handle(Standard_Transient) newent;
|
||||
return themap->Search(ent,newent);
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : IsSelected
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Standard_Boolean IFSelect_ContextModif::IsSelected
|
||||
(const Handle(Standard_Transient)& ent) const
|
||||
{
|
||||
// Select a deja verifie "IsTransferred"
|
||||
Standard_Integer num = thegraf.EntityNumber(ent);
|
||||
if (num == 0) return Standard_False;
|
||||
return (thelist.Value(num) != ' ');
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : SelectedOriginal
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Interface_EntityIterator IFSelect_ContextModif::SelectedOriginal () const
|
||||
{
|
||||
Interface_EntityIterator list;
|
||||
Standard_Integer nb = thelist.Length();
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
if (thelist.Value(i) != ' ') list.GetOneItem (thegraf.Entity(i));
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : SelectedResult
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Interface_EntityIterator IFSelect_ContextModif::SelectedResult () const
|
||||
{
|
||||
Interface_EntityIterator list;
|
||||
Standard_Integer nb = thelist.Length();
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
Handle(Standard_Transient) newent;
|
||||
if (themap.IsNull()) newent = thegraf.Entity(i);
|
||||
else if (thelist.Value(i) != ' ') themap->Search (thegraf.Entity(i),newent);
|
||||
if (!newent.IsNull()) list.GetOneItem (newent);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : SelectedCount
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Standard_Integer IFSelect_ContextModif::SelectedCount () const
|
||||
{
|
||||
Standard_Integer nb = thelist.Length();
|
||||
Standard_Integer ns = 0;
|
||||
for (Standard_Integer i = 1; i <= nb; i ++)
|
||||
{ if (thelist.Value(i) != ' ') ns ++; }
|
||||
return ns;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : Start
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_ContextModif::Start ()
|
||||
{
|
||||
thecurr = thecurt = 0;
|
||||
Next();
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : More
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Standard_Boolean IFSelect_ContextModif::More () const
|
||||
{
|
||||
return (thecurr > 0);
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : Next
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_ContextModif::Next()
|
||||
{
|
||||
Standard_Integer nb = thelist.Length();
|
||||
// thecurr = thecurt;
|
||||
// if (thecurr <= 0 && thecurt >= 0) return;
|
||||
for (Standard_Integer i = thecurr+1; i <= nb; i ++) {
|
||||
if (thelist.Value(i) != ' ') { thecurr = i; thecurt ++; return; }
|
||||
}
|
||||
thecurr = thecurt = 0;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : ValueOriginal
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(Standard_Transient) IFSelect_ContextModif::ValueOriginal () const
|
||||
{
|
||||
if (thecurr <= 0) Standard_NoSuchObject::Raise("IFSelect_ContextModif");
|
||||
return thegraf.Entity(thecurr);
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : ValueResult
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(Standard_Transient) IFSelect_ContextModif::ValueResult () const
|
||||
{
|
||||
if (thecurr <= 0) Standard_NoSuchObject::Raise("IFSelect_ContextModif");
|
||||
Handle(Standard_Transient) ent,newent;
|
||||
ent = thegraf.Entity(thecurr);
|
||||
if (themap.IsNull()) newent = ent;
|
||||
else themap->Search(ent,newent);
|
||||
return newent;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : TraceModifier
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_ContextModif::TraceModifier
|
||||
(const Handle(IFSelect_GeneralModifier)& modif)
|
||||
{
|
||||
if (modif.IsNull()) return;
|
||||
|
||||
Handle(Message_Messenger) sout = Message::DefaultMessenger();
|
||||
sout << "--- Run Modifier:" << endl;
|
||||
Handle(IFSelect_Selection) sel = modif->Selection();
|
||||
if (!sel.IsNull()) sout<<" Selection:"<<sel->Label();
|
||||
else sout<<" (no Selection)";
|
||||
|
||||
// on va simplement compter les entites
|
||||
Standard_Integer ne = 0, nb = thelist.Length();
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
if (thelist.Value(i) != ' ') ne ++;
|
||||
}
|
||||
if (nb == ne) sout<<" All Model ("<<nb<<" Entities)"<<endl;
|
||||
else sout<<" Entities,Total:"<<nb<<" Concerned:"<<ne<<endl;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : Trace
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_ContextModif::Trace (const Standard_CString mess)
|
||||
{
|
||||
// Trace courante
|
||||
if (thecurr <= 0) return;
|
||||
Handle(Message_Messenger) sout = Message::DefaultMessenger();
|
||||
if (ValueOriginal() == ValueResult())
|
||||
sout<<"-- ContextModif. Entity n0 "<<thecurr<<endl;
|
||||
else
|
||||
sout<<"-- ContextModif. Entity in Original, n0 "<<thecurr<<" in Result, n0 "
|
||||
<<thecurt<<endl;
|
||||
if (mess[0] != '\0') sout<<"-- Message:"<<mess<<endl;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : AddCheck
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_ContextModif::AddCheck(const Handle(Interface_Check)& check)
|
||||
{
|
||||
if (check->NbFails() + check->NbWarnings() == 0) return;
|
||||
const Handle(Standard_Transient)& ent = check->Entity();
|
||||
Standard_Integer num = thegraf.EntityNumber(ent);
|
||||
if (num == 0 && !ent.IsNull()) num = -1; // force enregistrement
|
||||
thechek.Add(check,num);
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : AddWarning
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_ContextModif::AddWarning(const Handle(Standard_Transient)& start,
|
||||
const Standard_CString mess,
|
||||
const Standard_CString orig)
|
||||
{
|
||||
thechek.CCheck(thegraf.EntityNumber(start))->AddWarning(mess,orig);
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : AddFail
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_ContextModif::AddFail(const Handle(Standard_Transient)& start,
|
||||
const Standard_CString mess,
|
||||
const Standard_CString orig)
|
||||
{
|
||||
thechek.CCheck(thegraf.EntityNumber(start))->AddFail(mess,orig);
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : CCheck
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(Interface_Check) IFSelect_ContextModif::CCheck(const Standard_Integer num)
|
||||
{
|
||||
Handle(Interface_Check) ach = thechek.CCheck(num);
|
||||
if (num > 0 && num <= thegraf.Size()) ach->SetEntity(thegraf.Entity(num));
|
||||
return ach;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : CCheck
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(Interface_Check) IFSelect_ContextModif::CCheck
|
||||
(const Handle(Standard_Transient)& ent)
|
||||
{
|
||||
Standard_Integer num = thegraf.EntityNumber(ent);
|
||||
if (num == 0) num = -1; // force l enregistrement
|
||||
Handle(Interface_Check)& ach = thechek.CCheck(num);
|
||||
ach->SetEntity(ent);
|
||||
return ach;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : CheckList
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Interface_CheckIterator IFSelect_ContextModif::CheckList () const
|
||||
{
|
||||
return thechek;
|
||||
}
|
@@ -1,241 +0,0 @@
|
||||
// Created on: 1994-06-08
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1994-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_ContextModif_HeaderFile
|
||||
#define _IFSelect_ContextModif_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_DefineAlloc.hxx>
|
||||
#include <Standard_Handle.hxx>
|
||||
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
#include <Interface_CheckIterator.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <Standard_CString.hxx>
|
||||
class Interface_Protocol;
|
||||
class Interface_CopyControl;
|
||||
class Standard_NoSuchObject;
|
||||
class Interface_Graph;
|
||||
class Interface_CopyTool;
|
||||
class Interface_EntityIterator;
|
||||
class Interface_InterfaceModel;
|
||||
class Standard_Transient;
|
||||
class IFSelect_GeneralModifier;
|
||||
class Interface_Check;
|
||||
class Interface_CheckIterator;
|
||||
|
||||
|
||||
//! This class gathers various informations used by Model Modifiers
|
||||
//! apart from the target model itself, and the CopyTool which
|
||||
//! must be passed directly.
|
||||
//!
|
||||
//! These informations report to original data : model, entities,
|
||||
//! and the selection list if there is one : it allows to query
|
||||
//! about such or such starting entity, or result entity, or
|
||||
//! iterate on selection list ...
|
||||
//! Also data useful for file output are available (because some
|
||||
//! Modifiers concern models produced for file output).
|
||||
//!
|
||||
//! Furthermore, in return, ContextModif can record Checks, either
|
||||
//! one for all, or one for each Entity. It supports trace too.
|
||||
class IFSelect_ContextModif
|
||||
{
|
||||
public:
|
||||
|
||||
DEFINE_STANDARD_ALLOC
|
||||
|
||||
|
||||
//! Prepares a ContextModif with these informations :
|
||||
//! - the graph established from original model (target passed
|
||||
//! directly to Modifier)
|
||||
//! - the CopyTool which detains the CopyControl, which maps
|
||||
//! starting (in original) and result (in target) entities
|
||||
//! - an optional file name (for file output)
|
||||
//!
|
||||
//! Such a ContextModif is considered to be applied on all
|
||||
//! transferred entities (no filter active)
|
||||
Standard_EXPORT IFSelect_ContextModif(const Interface_Graph& graph, const Interface_CopyTool& TC, const Standard_CString filename = "");
|
||||
|
||||
//! Prepares a ContextModif with these informations :
|
||||
//! - the graph established from original model (target passed
|
||||
//! directly to Modifier)
|
||||
//! - an optional file name (for file output)
|
||||
//! Here, no CopyControl, hence all entities are considered equal
|
||||
//! as starting and result
|
||||
//!
|
||||
//! Such a ContextModif is considered to be applied on all
|
||||
//! transferred entities (no filter active)
|
||||
Standard_EXPORT IFSelect_ContextModif(const Interface_Graph& graph, const Standard_CString filename = "");
|
||||
|
||||
//! This method requires ContextModif to be applied with a filter.
|
||||
//! If a ModelModifier is defined with a Selection criterium,
|
||||
//! the result of this Selection is used as a filter :
|
||||
//! - if none of its items has been transferred, the modification
|
||||
//! does not apply at all
|
||||
//! - else, the Modifier can query for what entities were selected
|
||||
//! and what are their results
|
||||
//! - if this method is not called before working, the Modifier
|
||||
//! has to work on the whole Model
|
||||
Standard_EXPORT void Select (Interface_EntityIterator& list);
|
||||
|
||||
//! Returns the original Graph (compared to OriginalModel, it
|
||||
//! gives more query capabilitites)
|
||||
Standard_EXPORT const Interface_Graph& OriginalGraph() const;
|
||||
|
||||
//! Returns the original model
|
||||
Standard_EXPORT Handle(Interface_InterfaceModel) OriginalModel() const;
|
||||
|
||||
//! Allows to transmit a Protocol as part of a ContextModif
|
||||
Standard_EXPORT void SetProtocol (const Handle(Interface_Protocol)& proto);
|
||||
|
||||
//! Returns the Protocol (Null if not set)
|
||||
Standard_EXPORT Handle(Interface_Protocol) Protocol() const;
|
||||
|
||||
//! Returns True if a non empty file name has been defined
|
||||
Standard_EXPORT Standard_Boolean HasFileName() const;
|
||||
|
||||
//! Returns File Name (can be empty)
|
||||
Standard_EXPORT Standard_CString FileName() const;
|
||||
|
||||
//! Returns the map for a direct use, if required
|
||||
Standard_EXPORT Handle(Interface_CopyControl) Control() const;
|
||||
|
||||
//! Returns True if Select has determined that a Modifier may not
|
||||
//! be run (filter defined and empty)
|
||||
Standard_EXPORT Standard_Boolean IsForNone() const;
|
||||
|
||||
//! Returns True if no filter is defined : a Modifier has to work
|
||||
//! on all entities of the resulting (target) model
|
||||
Standard_EXPORT Standard_Boolean IsForAll() const;
|
||||
|
||||
//! Returns True if a starting item has been transferred
|
||||
Standard_EXPORT Standard_Boolean IsTransferred (const Handle(Standard_Transient)& ent) const;
|
||||
|
||||
//! Returns True if a starting item has been transferred and selected
|
||||
Standard_EXPORT Standard_Boolean IsSelected (const Handle(Standard_Transient)& ent) const;
|
||||
|
||||
//! Returns True if a starting entity has been transferred, and
|
||||
//! the result is in <res>. Returns False else
|
||||
//! (direct call to the map)
|
||||
Standard_EXPORT Standard_Boolean Search (const Handle(Standard_Transient)& ent, Handle(Standard_Transient)& res) const;
|
||||
|
||||
//! Returns the list of original selected items.
|
||||
//! See also the iteration
|
||||
Standard_EXPORT Interface_EntityIterator SelectedOriginal() const;
|
||||
|
||||
//! Returns the list of resulting counterparts of selected items.
|
||||
//! See also the iteration
|
||||
Standard_EXPORT Interface_EntityIterator SelectedResult() const;
|
||||
|
||||
//! Returns the count of selected and transferred items
|
||||
Standard_EXPORT Standard_Integer SelectedCount() const;
|
||||
|
||||
//! Starts an iteration on selected items. It takes into account
|
||||
//! IsForAll/IsForNone, by really iterating on all selected items.
|
||||
Standard_EXPORT void Start();
|
||||
|
||||
//! Returns True until the iteration has finished
|
||||
Standard_EXPORT Standard_Boolean More() const;
|
||||
|
||||
//! Advances the iteration
|
||||
Standard_EXPORT void Next();
|
||||
|
||||
//! Returns the current selected item in the original model
|
||||
Standard_EXPORT Handle(Standard_Transient) ValueOriginal() const;
|
||||
|
||||
//! Returns the result counterpart of current selected item
|
||||
//! (in the target model)
|
||||
Standard_EXPORT Handle(Standard_Transient) ValueResult() const;
|
||||
|
||||
//! Traces the application of a Modifier. Works with default trace
|
||||
//! File and Level. Fills the trace if default trace level is at
|
||||
//! least 1. Traces the Modifier (its Label) and its Selection if
|
||||
//! there is one (its Label).
|
||||
//! To be called after Select (because status IsForAll is printed)
|
||||
//! Worths to trace a global modification. See also Trace below
|
||||
Standard_EXPORT void TraceModifier (const Handle(IFSelect_GeneralModifier)& modif);
|
||||
|
||||
//! Traces the modification of the current entity (see above,
|
||||
//! ValueOriginal and ValueResult) for default trace level >= 2.
|
||||
//! To be called on each indivudual entity really modified
|
||||
//! <mess> is an optionnal additional message
|
||||
Standard_EXPORT void Trace (const Standard_CString mess = "");
|
||||
|
||||
//! Adds a Check to the CheckList. If it is empty, nothing is done
|
||||
//! If it concerns an Entity from the Original Model (by SetEntity)
|
||||
//! to which another Check is attached, it is merged to it.
|
||||
//! Else, it is added or merged as to GlobalCheck.
|
||||
Standard_EXPORT void AddCheck (const Handle(Interface_Check)& check);
|
||||
|
||||
//! Adds a Warning Message for an Entity from the original Model
|
||||
//! If <start> is not an Entity from the original model (e.g. the
|
||||
//! model itself) this message is added to Global Check.
|
||||
Standard_EXPORT void AddWarning (const Handle(Standard_Transient)& start, const Standard_CString mess, const Standard_CString orig = "");
|
||||
|
||||
//! Adds a Fail Message for an Entity from the original Model
|
||||
//! If <start> is not an Entity from the original model (e.g. the
|
||||
//! model itself) this message is added to Global Check.
|
||||
Standard_EXPORT void AddFail (const Handle(Standard_Transient)& start, const Standard_CString mess, const Standard_CString orig = "");
|
||||
|
||||
//! Returns a Check given an Entity number (in the original Model)
|
||||
//! by default a Global Check. Creates it the first time.
|
||||
//! It can then be acknowledged on the spot, in condition that the
|
||||
//! caller works by reference ("Interface_Check& check = ...")
|
||||
Standard_EXPORT Handle(Interface_Check) CCheck (const Standard_Integer num = 0);
|
||||
|
||||
//! Returns a Check attached to an Entity from the original Model
|
||||
//! It can then be acknowledged on the spot, in condition that the
|
||||
//! caller works by reference ("Interface_Check& check = ...")
|
||||
Standard_EXPORT Handle(Interface_Check) CCheck (const Handle(Standard_Transient)& start);
|
||||
|
||||
//! Returns the complete CheckList
|
||||
Standard_EXPORT Interface_CheckIterator CheckList() const;
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
Interface_Graph thegraf;
|
||||
Handle(Interface_Protocol) theprot;
|
||||
Handle(Interface_CopyControl) themap;
|
||||
TCollection_AsciiString thefile;
|
||||
TCollection_AsciiString thelist;
|
||||
Interface_CheckIterator thechek;
|
||||
Standard_Boolean thesel;
|
||||
Standard_Integer thecurr;
|
||||
Standard_Integer thecurt;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_ContextModif_HeaderFile
|
@@ -1,298 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFSelect_AppliedModifiers.hxx>
|
||||
#include <IFSelect_ContextWrite.hxx>
|
||||
#include <IFSelect_GeneralModifier.hxx>
|
||||
#include <Interface_Check.hxx>
|
||||
#include <Interface_CheckIterator.hxx>
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_HGraph.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Interface_Protocol.hxx>
|
||||
#include <Standard_NoSuchObject.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
|
||||
//=======================================================================
|
||||
//function : IFSelect_ContextWrite
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
IFSelect_ContextWrite::IFSelect_ContextWrite
|
||||
(const Handle(Interface_InterfaceModel)& model,
|
||||
const Handle(Interface_Protocol)& proto,
|
||||
const Handle(IFSelect_AppliedModifiers)& applieds,
|
||||
const Standard_CString filename)
|
||||
: themodel (model) , theproto (proto) , thefile (filename) ,
|
||||
theapply (applieds) , thenumod(0) , thenbent (0) , thecurr (0) { }
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : IFSelect_ContextWrite
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
IFSelect_ContextWrite::IFSelect_ContextWrite
|
||||
(const Handle(Interface_HGraph)& hgraph,
|
||||
const Handle(Interface_Protocol)& proto,
|
||||
const Handle(IFSelect_AppliedModifiers)& applieds,
|
||||
const Standard_CString filename)
|
||||
: themodel (hgraph->Graph().Model()) ,
|
||||
theproto (proto) , thefile (filename) , theapply (applieds) ,
|
||||
thehgraf (hgraph) , thenumod(0) , thenbent (0) , thecurr (0) { }
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : Model
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(Interface_InterfaceModel) IFSelect_ContextWrite::Model () const
|
||||
{
|
||||
return themodel;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : Protocol
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(Interface_Protocol) IFSelect_ContextWrite::Protocol () const
|
||||
{
|
||||
return theproto;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : FileName
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Standard_CString IFSelect_ContextWrite::FileName () const
|
||||
{
|
||||
return thefile.ToCString();
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : AppliedModifiers
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(IFSelect_AppliedModifiers) IFSelect_ContextWrite::AppliedModifiers () const
|
||||
{
|
||||
return theapply;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : Graph
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
const Interface_Graph& IFSelect_ContextWrite::Graph ()
|
||||
{
|
||||
if (thehgraf.IsNull()) thehgraf = new Interface_HGraph(themodel,theproto);
|
||||
return thehgraf->Graph();
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : NbModifiers
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Standard_Integer IFSelect_ContextWrite::NbModifiers () const
|
||||
{ return (theapply.IsNull() ? 0 : theapply->Count()); }
|
||||
|
||||
Standard_Boolean IFSelect_ContextWrite::SetModifier
|
||||
(const Standard_Integer numod)
|
||||
{
|
||||
themodif.Nullify(); thenumod = thenbent = thecurr = 0;
|
||||
if (theapply.IsNull()) return Standard_False;
|
||||
if (numod < 1 || numod > theapply->Count()) return Standard_False;
|
||||
theapply->Item(numod,themodif,thenbent);
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : FileModifier
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(IFSelect_GeneralModifier) IFSelect_ContextWrite::FileModifier () const
|
||||
{
|
||||
return themodif;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : IsForNone
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Standard_Boolean IFSelect_ContextWrite::IsForNone () const
|
||||
{
|
||||
return (thenbent == 0);
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : IsForAll
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Standard_Boolean IFSelect_ContextWrite::IsForAll () const
|
||||
{
|
||||
return theapply->IsForAll();
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : NbEntities
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Standard_Integer IFSelect_ContextWrite::NbEntities () const
|
||||
{
|
||||
return thenbent;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : Start
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_ContextWrite::Start ()
|
||||
{
|
||||
thecurr = 1;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : More
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Standard_Boolean IFSelect_ContextWrite::More () const
|
||||
{
|
||||
return (thecurr <= thenbent);
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : Next
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_ContextWrite::Next ()
|
||||
{
|
||||
thecurr ++;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : Value
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(Standard_Transient) IFSelect_ContextWrite::Value() const
|
||||
{
|
||||
if (thecurr < 1 || thecurr > thenbent)
|
||||
Standard_NoSuchObject::Raise("IFSelect_ContextWrite:Value");
|
||||
Standard_Integer num = theapply->ItemNum (thecurr);
|
||||
return themodel->Value(num);
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : AddCheck
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_ContextWrite::AddCheck (const Handle(Interface_Check)& check)
|
||||
{
|
||||
if (check->NbFails() + check->NbWarnings() == 0) return;
|
||||
const Handle(Standard_Transient)& ent = check->Entity();
|
||||
Standard_Integer num = themodel->Number(ent);
|
||||
if (num == 0 && !ent.IsNull()) num = -1; // force enregistrement
|
||||
thecheck.Add(check,num);
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : AddWarning
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_ContextWrite::AddWarning(const Handle(Standard_Transient)& start,
|
||||
const Standard_CString mess,
|
||||
const Standard_CString orig)
|
||||
{
|
||||
thecheck.CCheck(themodel->Number(start))->AddWarning(mess,orig);
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : AddFail
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_ContextWrite::AddFail(const Handle(Standard_Transient)& start,
|
||||
const Standard_CString mess,
|
||||
const Standard_CString orig)
|
||||
{
|
||||
thecheck.CCheck(themodel->Number(start))->AddFail(mess,orig);
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : CCheck
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(Interface_Check) IFSelect_ContextWrite::CCheck (const Standard_Integer num)
|
||||
{
|
||||
Handle(Interface_Check) ach = thecheck.CCheck(num);
|
||||
if (num > 0 && num <= themodel->NbEntities()) ach->SetEntity(themodel->Value(num));
|
||||
return ach;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : CCheck
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(Interface_Check) IFSelect_ContextWrite::CCheck(const Handle(Standard_Transient)& ent)
|
||||
{
|
||||
Standard_Integer num = themodel->Number(ent);
|
||||
if (num == 0) num = -1; // force l enregistrement
|
||||
Handle(Interface_Check) ach = thecheck.CCheck(num);
|
||||
ach->SetEntity(ent);
|
||||
return ach;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : CheckList
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Interface_CheckIterator IFSelect_ContextWrite::CheckList () const
|
||||
{
|
||||
return thecheck;
|
||||
}
|
@@ -1,185 +0,0 @@
|
||||
// Created on: 1996-01-26
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1996-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_ContextWrite_HeaderFile
|
||||
#define _IFSelect_ContextWrite_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_DefineAlloc.hxx>
|
||||
#include <Standard_Handle.hxx>
|
||||
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
#include <Interface_CheckIterator.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <Standard_CString.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
class Interface_InterfaceModel;
|
||||
class Interface_Protocol;
|
||||
class IFSelect_AppliedModifiers;
|
||||
class Interface_HGraph;
|
||||
class IFSelect_GeneralModifier;
|
||||
class Standard_NoSuchObject;
|
||||
class Interface_Graph;
|
||||
class Standard_Transient;
|
||||
class Interface_Check;
|
||||
class Interface_CheckIterator;
|
||||
|
||||
|
||||
//! This class gathers various informations used by File Modifiers
|
||||
//! apart from the writer object, which is specific of the norm
|
||||
//! and of the physical format
|
||||
//!
|
||||
//! These informations are controlled by an object AppliedModifiers
|
||||
//! (if it is not defined, no modification is allowed on writing)
|
||||
//!
|
||||
//! Furthermore, in return, ContextModif can record Checks, either
|
||||
//! one for all, or one for each Entity. It supports trace too.
|
||||
class IFSelect_ContextWrite
|
||||
{
|
||||
public:
|
||||
|
||||
DEFINE_STANDARD_ALLOC
|
||||
|
||||
|
||||
//! Prepares a ContextWrite with these informations :
|
||||
//! - the model which is to be written
|
||||
//! - the protocol to be used
|
||||
//! - the filename
|
||||
//! - an object AppliedModifiers to work. It gives a list of
|
||||
//! FileModifiers to be ran, and for each one it can give
|
||||
//! a restricted list of entities (in the model), else all
|
||||
//! the model is considered
|
||||
Standard_EXPORT IFSelect_ContextWrite(const Handle(Interface_InterfaceModel)& model, const Handle(Interface_Protocol)& proto, const Handle(IFSelect_AppliedModifiers)& applieds, const Standard_CString filename);
|
||||
|
||||
//! Same as above but with an already computed Graph
|
||||
Standard_EXPORT IFSelect_ContextWrite(const Handle(Interface_HGraph)& hgraph, const Handle(Interface_Protocol)& proto, const Handle(IFSelect_AppliedModifiers)& applieds, const Standard_CString filename);
|
||||
|
||||
//! Returns the Model
|
||||
Standard_EXPORT Handle(Interface_InterfaceModel) Model() const;
|
||||
|
||||
//! Returns the Protocol;
|
||||
Standard_EXPORT Handle(Interface_Protocol) Protocol() const;
|
||||
|
||||
//! Returns the File Name
|
||||
Standard_EXPORT Standard_CString FileName() const;
|
||||
|
||||
//! Returns the object AppliedModifiers
|
||||
Standard_EXPORT Handle(IFSelect_AppliedModifiers) AppliedModifiers() const;
|
||||
|
||||
//! Returns the Graph, either given when created, else created
|
||||
//! the first time it is queried
|
||||
Standard_EXPORT const Interface_Graph& Graph();
|
||||
|
||||
//! Returns the count of recorded File Modifiers
|
||||
Standard_EXPORT Standard_Integer NbModifiers() const;
|
||||
|
||||
//! Sets active the File Modifier n0 <numod>
|
||||
//! Then, it prepares the list of entities to consider, if any
|
||||
//! Returns False if <numod> out of range
|
||||
Standard_EXPORT Standard_Boolean SetModifier (const Standard_Integer numod);
|
||||
|
||||
//! Returns the currently active File Modifier. Cast to be done
|
||||
//! Null if not properly set : must be test IsNull after casting
|
||||
Standard_EXPORT Handle(IFSelect_GeneralModifier) FileModifier() const;
|
||||
|
||||
//! Returns True if no modifier is currently set
|
||||
Standard_EXPORT Standard_Boolean IsForNone() const;
|
||||
|
||||
//! Returns True if the current modifier is to be applied to
|
||||
//! the whole model. Else, a restricted list of selected entities
|
||||
//! is defined, it can be exploited by the File Modifier
|
||||
Standard_EXPORT Standard_Boolean IsForAll() const;
|
||||
|
||||
//! Returns the total count of selected entities
|
||||
Standard_EXPORT Standard_Integer NbEntities() const;
|
||||
|
||||
//! Starts an iteration on selected items. It takes into account
|
||||
//! IsForAll/IsForNone, by really iterating on all selected items.
|
||||
Standard_EXPORT void Start();
|
||||
|
||||
//! Returns True until the iteration has finished
|
||||
Standard_EXPORT Standard_Boolean More() const;
|
||||
|
||||
//! Advances the iteration
|
||||
Standard_EXPORT void Next();
|
||||
|
||||
//! Returns the current selected entity in the model
|
||||
Standard_EXPORT Handle(Standard_Transient) Value() const;
|
||||
|
||||
//! Adds a Check to the CheckList. If it is empty, nothing is done
|
||||
//! If it concerns an Entity from the Model (by SetEntity)
|
||||
//! to which another Check is attached, it is merged to it.
|
||||
//! Else, it is added or merged as to GlobalCheck.
|
||||
Standard_EXPORT void AddCheck (const Handle(Interface_Check)& check);
|
||||
|
||||
//! Adds a Warning Message for an Entity from the Model
|
||||
//! If <start> is not an Entity from the model (e.g. the
|
||||
//! model itself) this message is added to Global Check.
|
||||
Standard_EXPORT void AddWarning (const Handle(Standard_Transient)& start, const Standard_CString mess, const Standard_CString orig = "");
|
||||
|
||||
//! Adds a Fail Message for an Entity from the Model
|
||||
//! If <start> is not an Entity from the model (e.g. the
|
||||
//! model itself) this message is added to Global Check.
|
||||
Standard_EXPORT void AddFail (const Handle(Standard_Transient)& start, const Standard_CString mess, const Standard_CString orig = "");
|
||||
|
||||
//! Returns a Check given an Entity number (in the Model)
|
||||
//! by default a Global Check. Creates it the first time.
|
||||
//! It can then be acknowledged on the spot, in condition that the
|
||||
//! caller works by reference ("Interface_Check& check = ...")
|
||||
Standard_EXPORT Handle(Interface_Check) CCheck (const Standard_Integer num = 0);
|
||||
|
||||
//! Returns a Check attached to an Entity from the Model
|
||||
//! It can then be acknowledged on the spot, in condition that the
|
||||
//! caller works by reference ("Interface_Check& check = ...")
|
||||
Standard_EXPORT Handle(Interface_Check) CCheck (const Handle(Standard_Transient)& start);
|
||||
|
||||
//! Returns the complete CheckList
|
||||
Standard_EXPORT Interface_CheckIterator CheckList() const;
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
Handle(Interface_InterfaceModel) themodel;
|
||||
Handle(Interface_Protocol) theproto;
|
||||
TCollection_AsciiString thefile;
|
||||
Handle(IFSelect_AppliedModifiers) theapply;
|
||||
Handle(Interface_HGraph) thehgraf;
|
||||
Interface_CheckIterator thecheck;
|
||||
Standard_Integer thenumod;
|
||||
Standard_Integer thenbent;
|
||||
Standard_Integer thecurr;
|
||||
Handle(IFSelect_GeneralModifier) themodif;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_ContextWrite_HeaderFile
|
@@ -1,41 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFGraph_SubPartsIterator.hxx>
|
||||
#include <IFSelect_DispGlobal.hxx>
|
||||
#include <IFSelect_Selection.hxx>
|
||||
#include <Interface_EntityIterator.hxx>
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_DispGlobal,IFSelect_Dispatch)
|
||||
|
||||
// Genere un seul paquet avec la sortie finale
|
||||
IFSelect_DispGlobal::IFSelect_DispGlobal () { }
|
||||
|
||||
TCollection_AsciiString IFSelect_DispGlobal::Label () const
|
||||
{ return TCollection_AsciiString ("One File for All Input"); }
|
||||
|
||||
Standard_Boolean IFSelect_DispGlobal::LimitedMax
|
||||
(const Standard_Integer /* nbent */, Standard_Integer& pcount) const
|
||||
{ pcount = 1; return Standard_True; }
|
||||
|
||||
// 1 packet ( a partir de UniqueResult)
|
||||
void IFSelect_DispGlobal::Packets
|
||||
(const Interface_Graph& G, IFGraph_SubPartsIterator& packs) const
|
||||
{
|
||||
packs.AddPart();
|
||||
packs.GetFromIter(FinalSelection()->UniqueResult(G));
|
||||
}
|
@@ -1,79 +0,0 @@
|
||||
// Created on: 1992-11-17
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1992-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_DispGlobal_HeaderFile
|
||||
#define _IFSelect_DispGlobal_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <IFSelect_Dispatch.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
class TCollection_AsciiString;
|
||||
class Interface_Graph;
|
||||
class IFGraph_SubPartsIterator;
|
||||
|
||||
|
||||
class IFSelect_DispGlobal;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_DispGlobal, IFSelect_Dispatch)
|
||||
|
||||
//! A DispGlobal gathers all the input Entities into only one
|
||||
//! global Packet
|
||||
class IFSelect_DispGlobal : public IFSelect_Dispatch
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates a DispGlobal
|
||||
Standard_EXPORT IFSelect_DispGlobal();
|
||||
|
||||
//! Returns as Label, "One File for all Input"
|
||||
Standard_EXPORT TCollection_AsciiString Label() const Standard_OVERRIDE;
|
||||
|
||||
//! Returns True : maximum equates 1
|
||||
Standard_EXPORT virtual Standard_Boolean LimitedMax (const Standard_Integer nbent, Standard_Integer& max) const Standard_OVERRIDE;
|
||||
|
||||
//! Computes the list of produced Packets. It is made of only ONE
|
||||
//! Packet, which gets the RootResult from the Final Selection.
|
||||
//! Remark : the inherited exception raising is never activated.
|
||||
Standard_EXPORT void Packets (const Interface_Graph& G, IFGraph_SubPartsIterator& packs) const Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_DispGlobal,IFSelect_Dispatch)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_DispGlobal_HeaderFile
|
@@ -1,81 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFGraph_SCRoots.hxx>
|
||||
#include <IFGraph_SubPartsIterator.hxx>
|
||||
#include <IFSelect_DispPerCount.hxx>
|
||||
#include <IFSelect_IntParam.hxx>
|
||||
#include <IFSelect_Selection.hxx>
|
||||
#include <Interface_EntityIterator.hxx>
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_InterfaceError.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_DispPerCount,IFSelect_Dispatch)
|
||||
|
||||
IFSelect_DispPerCount::IFSelect_DispPerCount () { }
|
||||
|
||||
Handle(IFSelect_IntParam) IFSelect_DispPerCount::Count () const
|
||||
{ return thecount; }
|
||||
|
||||
void IFSelect_DispPerCount::SetCount
|
||||
(const Handle(IFSelect_IntParam)& pcount)
|
||||
{ thecount = pcount; }
|
||||
|
||||
Standard_Integer IFSelect_DispPerCount::CountValue () const
|
||||
{
|
||||
Standard_Integer pcount = 0;
|
||||
if (!thecount.IsNull()) pcount = thecount->Value();
|
||||
if (pcount <= 0) pcount = 1; // option prise par defaut
|
||||
return pcount;
|
||||
}
|
||||
|
||||
TCollection_AsciiString IFSelect_DispPerCount::Label () const
|
||||
{
|
||||
TCollection_AsciiString lab(CountValue());
|
||||
lab.Insert(1,"One File per ");
|
||||
lab.AssignCat(" Entities");
|
||||
return lab;
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_DispPerCount::LimitedMax
|
||||
(const Standard_Integer nbent, Standard_Integer& pcount) const
|
||||
{
|
||||
pcount = 1 + nbent / CountValue();
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
void IFSelect_DispPerCount::Packets
|
||||
(const Interface_Graph& G, IFGraph_SubPartsIterator& packs) const
|
||||
{
|
||||
// Ressemble a DispPerOne, mais fait un AddPart tous les "count" racines
|
||||
Standard_Integer pcount = CountValue();
|
||||
|
||||
IFGraph_SCRoots roots(G,Standard_False);
|
||||
roots.SetLoad();
|
||||
roots.GetFromIter(FinalSelection()->UniqueResult(G));
|
||||
// SCRoots a initie la resolution : decoupage en StrongComponants + selection
|
||||
// des racines. Un paquet correspond des lors a <count> racines
|
||||
// Donc, il faut iterer sur les Parts de roots et les prendre par <count>
|
||||
|
||||
Standard_Integer i = 0;
|
||||
for (roots.Start(); roots.More(); roots.Next()) {
|
||||
if (i == 0) packs.AddPart();
|
||||
i ++; if (i >= pcount) i = 0; // regroupement selon "count"
|
||||
packs.GetFromIter(roots.Entities());
|
||||
}
|
||||
}
|
@@ -1,94 +0,0 @@
|
||||
// Created on: 1992-11-17
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1992-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_DispPerCount_HeaderFile
|
||||
#define _IFSelect_DispPerCount_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <IFSelect_Dispatch.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
class IFSelect_IntParam;
|
||||
class Interface_InterfaceError;
|
||||
class TCollection_AsciiString;
|
||||
class Interface_Graph;
|
||||
class IFGraph_SubPartsIterator;
|
||||
|
||||
|
||||
class IFSelect_DispPerCount;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_DispPerCount, IFSelect_Dispatch)
|
||||
|
||||
//! A DispPerCount gathers all the input Entities into one or
|
||||
//! several Packets, each containing a defined count of Entity
|
||||
//! This count is a Parameter of the DispPerCount, given as an
|
||||
//! IntParam, thus allowing external control of its Value
|
||||
class IFSelect_DispPerCount : public IFSelect_Dispatch
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates a DispPerCount with no Count (default value 1)
|
||||
Standard_EXPORT IFSelect_DispPerCount();
|
||||
|
||||
//! Returns the Count Parameter used for splitting
|
||||
Standard_EXPORT Handle(IFSelect_IntParam) Count() const;
|
||||
|
||||
//! Sets a new Parameter for Count
|
||||
Standard_EXPORT void SetCount (const Handle(IFSelect_IntParam)& count);
|
||||
|
||||
//! Returns the effective value of the count parameter
|
||||
//! (if Count Parameter not Set or value not positive, returns 1)
|
||||
Standard_EXPORT Standard_Integer CountValue() const;
|
||||
|
||||
//! Returns as Label, "One File per <count> Input Entities"
|
||||
Standard_EXPORT TCollection_AsciiString Label() const Standard_OVERRIDE;
|
||||
|
||||
//! Returns True, maximum count is given as <nbent>
|
||||
Standard_EXPORT virtual Standard_Boolean LimitedMax (const Standard_Integer nbent, Standard_Integer& max) const Standard_OVERRIDE;
|
||||
|
||||
//! Computes the list of produced Packets. It defines Packets in
|
||||
//! order to have at most <Count> Entities per Packet, Entities
|
||||
//! are given by RootResult from the Final Selection.
|
||||
Standard_EXPORT void Packets (const Interface_Graph& G, IFGraph_SubPartsIterator& packs) const Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_DispPerCount,IFSelect_Dispatch)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
Handle(IFSelect_IntParam) thecount;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_DispPerCount_HeaderFile
|
@@ -1,84 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFGraph_SCRoots.hxx>
|
||||
#include <IFGraph_SubPartsIterator.hxx>
|
||||
#include <IFSelect_DispPerFiles.hxx>
|
||||
#include <IFSelect_IntParam.hxx>
|
||||
#include <IFSelect_Selection.hxx>
|
||||
#include <Interface_EntityIterator.hxx>
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_InterfaceError.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_DispPerFiles,IFSelect_Dispatch)
|
||||
|
||||
IFSelect_DispPerFiles::IFSelect_DispPerFiles () { }
|
||||
|
||||
Handle(IFSelect_IntParam) IFSelect_DispPerFiles::Count () const
|
||||
{ return thecount; }
|
||||
|
||||
void IFSelect_DispPerFiles::SetCount
|
||||
(const Handle(IFSelect_IntParam)& pcount)
|
||||
{ thecount = pcount; }
|
||||
|
||||
Standard_Integer IFSelect_DispPerFiles::CountValue () const
|
||||
{
|
||||
Standard_Integer pcount = 0;
|
||||
if (!thecount.IsNull()) pcount = thecount->Value();
|
||||
if (pcount <= 0) pcount = 1; // option prise par defaut
|
||||
return pcount;
|
||||
}
|
||||
|
||||
TCollection_AsciiString IFSelect_DispPerFiles::Label () const
|
||||
{
|
||||
TCollection_AsciiString lab(CountValue());
|
||||
lab.Insert(1,"Maximum ");
|
||||
lab.AssignCat(" Files");
|
||||
return lab;
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_DispPerFiles::LimitedMax
|
||||
(const Standard_Integer /* nbent */, Standard_Integer& pcount) const
|
||||
{
|
||||
pcount = CountValue();
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
void IFSelect_DispPerFiles::Packets
|
||||
(const Interface_Graph& G, IFGraph_SubPartsIterator& packs) const
|
||||
{
|
||||
// Ressemble a DispPerOne, mais fait "count" AddPart racines
|
||||
Standard_Integer pcount = CountValue();
|
||||
|
||||
IFGraph_SCRoots roots(G,Standard_False);
|
||||
roots.SetLoad();
|
||||
roots.GetFromIter(FinalSelection()->UniqueResult(G));
|
||||
// SCRoots a initie la resolution : decoupage en StrongComponants + selection
|
||||
// des racines. Un paquet correspond des lors a <count> racines
|
||||
// Donc, il faut iterer sur les Parts de roots et les prendre par <count>
|
||||
roots.Start(); // Start fait Evaluate specifique
|
||||
Standard_Integer nb = roots.NbParts();
|
||||
if (pcount > 0) pcount = (nb-1) / pcount +1; // par packet
|
||||
|
||||
Standard_Integer i = 0;
|
||||
for (; roots.More(); roots.Next()) { // Start deja fait
|
||||
if (i == 0) packs.AddPart();
|
||||
i ++; if (i >= pcount) i = 0; // regroupement selon "count"
|
||||
packs.GetFromIter(roots.Entities());
|
||||
}
|
||||
}
|
@@ -1,98 +0,0 @@
|
||||
// Created on: 1994-12-21
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1994-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_DispPerFiles_HeaderFile
|
||||
#define _IFSelect_DispPerFiles_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <IFSelect_Dispatch.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
class IFSelect_IntParam;
|
||||
class Interface_InterfaceError;
|
||||
class TCollection_AsciiString;
|
||||
class Interface_Graph;
|
||||
class IFGraph_SubPartsIterator;
|
||||
|
||||
|
||||
class IFSelect_DispPerFiles;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_DispPerFiles, IFSelect_Dispatch)
|
||||
|
||||
//! A DispPerFiles produces a determined count of Packets from the
|
||||
//! input Entities. It divides, as equally as possible, the input
|
||||
//! list into a count of files. This count is the parameter of the
|
||||
//! DispPerFiles. If the input list has less than this count, of
|
||||
//! course there will be one packet per input entity.
|
||||
//! This count is a Parameter of the DispPerFiles, given as an
|
||||
//! IntParam, thus allowing external control of its Value
|
||||
class IFSelect_DispPerFiles : public IFSelect_Dispatch
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates a DispPerFiles with no Count (default value 1 file)
|
||||
Standard_EXPORT IFSelect_DispPerFiles();
|
||||
|
||||
//! Returns the Count Parameter used for splitting
|
||||
Standard_EXPORT Handle(IFSelect_IntParam) Count() const;
|
||||
|
||||
//! Sets a new Parameter for Count
|
||||
Standard_EXPORT void SetCount (const Handle(IFSelect_IntParam)& count);
|
||||
|
||||
//! Returns the effective value of the count parameter
|
||||
//! (if Count Parameter not Set or value not positive, returns 1)
|
||||
Standard_EXPORT Standard_Integer CountValue() const;
|
||||
|
||||
//! Returns as Label, "Maximum <count> Files"
|
||||
Standard_EXPORT TCollection_AsciiString Label() const Standard_OVERRIDE;
|
||||
|
||||
//! Returns True, maximum count is given as CountValue
|
||||
Standard_EXPORT virtual Standard_Boolean LimitedMax (const Standard_Integer nbent, Standard_Integer& max) const Standard_OVERRIDE;
|
||||
|
||||
//! Computes the list of produced Packets. It defines Packets in
|
||||
//! order to have <Count> Packets, except if the input count of
|
||||
//! Entities is lower. Entities are given by RootResult from the
|
||||
//! Final Selection.
|
||||
Standard_EXPORT void Packets (const Interface_Graph& G, IFGraph_SubPartsIterator& packs) const Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_DispPerFiles,IFSelect_Dispatch)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
Handle(IFSelect_IntParam) thecount;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_DispPerFiles_HeaderFile
|
@@ -1,47 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFGraph_SCRoots.hxx>
|
||||
#include <IFGraph_SubPartsIterator.hxx>
|
||||
#include <IFSelect_DispPerOne.hxx>
|
||||
#include <IFSelect_Selection.hxx>
|
||||
#include <Interface_EntityIterator.hxx>
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_DispPerOne,IFSelect_Dispatch)
|
||||
|
||||
// Genere un paquet par racine (strong comp.) locale a la liste transmise
|
||||
IFSelect_DispPerOne::IFSelect_DispPerOne () { }
|
||||
|
||||
TCollection_AsciiString IFSelect_DispPerOne::Label () const
|
||||
{ return TCollection_AsciiString ("One File per Input Entity"); }
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_DispPerOne::LimitedMax
|
||||
(const Standard_Integer nbent, Standard_Integer& pcount) const
|
||||
{ pcount = nbent; return Standard_True; }
|
||||
|
||||
void IFSelect_DispPerOne::Packets
|
||||
(const Interface_Graph& G, IFGraph_SubPartsIterator& packs) const
|
||||
{
|
||||
IFGraph_SCRoots packsc(G,Standard_False); // OK pour SubPartsIterator
|
||||
packsc.SetLoad();
|
||||
packsc.GetFromIter(FinalSelection()->UniqueResult(G));
|
||||
// SCRoots a initie la resolution : decoupage en StrongComponants + selection
|
||||
// des Racines. Chaque Racine correspond a un Packet. CQFD
|
||||
packs.GetParts(packsc);
|
||||
}
|
@@ -1,79 +0,0 @@
|
||||
// Created on: 1992-11-17
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1992-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_DispPerOne_HeaderFile
|
||||
#define _IFSelect_DispPerOne_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <IFSelect_Dispatch.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
class TCollection_AsciiString;
|
||||
class Interface_Graph;
|
||||
class IFGraph_SubPartsIterator;
|
||||
|
||||
|
||||
class IFSelect_DispPerOne;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_DispPerOne, IFSelect_Dispatch)
|
||||
|
||||
//! A DispPerOne gathers all the input Entities into as many
|
||||
//! Packets as there Root Entities from the Final Selection,
|
||||
//! that is, one Packet per Entity
|
||||
class IFSelect_DispPerOne : public IFSelect_Dispatch
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates a DispPerOne
|
||||
Standard_EXPORT IFSelect_DispPerOne();
|
||||
|
||||
//! Returns as Label, "One File per Input Entity"
|
||||
Standard_EXPORT TCollection_AsciiString Label() const Standard_OVERRIDE;
|
||||
|
||||
//! Returns True, maximum limit is given as <nbent>
|
||||
Standard_EXPORT virtual Standard_Boolean LimitedMax (const Standard_Integer nbent, Standard_Integer& max) const Standard_OVERRIDE;
|
||||
|
||||
//! Returns the list of produced Packets. It defines one Packet
|
||||
//! per Entity given by RootResult from the Final Selection.
|
||||
Standard_EXPORT void Packets (const Interface_Graph& G, IFGraph_SubPartsIterator& packs) const Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_DispPerOne,IFSelect_Dispatch)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_DispPerOne_HeaderFile
|
@@ -1,81 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFGraph_SubPartsIterator.hxx>
|
||||
#include <IFSelect_DispPerSignature.hxx>
|
||||
#include <IFSelect_Selection.hxx>
|
||||
#include <IFSelect_SignCounter.hxx>
|
||||
#include <Interface_EntityIterator.hxx>
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_InterfaceError.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
#include <TCollection_HAsciiString.hxx>
|
||||
#include <TColStd_HSequenceOfHAsciiString.hxx>
|
||||
#include <TColStd_HSequenceOfTransient.hxx>
|
||||
|
||||
#include <stdio.h>
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_DispPerSignature,IFSelect_Dispatch)
|
||||
|
||||
IFSelect_DispPerSignature::IFSelect_DispPerSignature () { }
|
||||
|
||||
Handle(IFSelect_SignCounter) IFSelect_DispPerSignature::SignCounter () const
|
||||
{ return thesign; }
|
||||
|
||||
void IFSelect_DispPerSignature::SetSignCounter
|
||||
(const Handle(IFSelect_SignCounter)& sign)
|
||||
{ thesign = sign; thesign->SetList (Standard_True); }
|
||||
|
||||
Standard_CString IFSelect_DispPerSignature::SignName () const
|
||||
{ return (Standard_CString ) (thesign.IsNull() ? "???" : thesign->Name()); }
|
||||
|
||||
TCollection_AsciiString IFSelect_DispPerSignature::Label () const
|
||||
{
|
||||
char lab[50];
|
||||
sprintf (lab,"One File per Signature %s",SignName());
|
||||
return TCollection_AsciiString(lab);
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_DispPerSignature::LimitedMax
|
||||
(const Standard_Integer nbent, Standard_Integer& max) const
|
||||
{
|
||||
max = nbent;
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
void IFSelect_DispPerSignature::Packets
|
||||
(const Interface_Graph& G, IFGraph_SubPartsIterator& packs) const
|
||||
{
|
||||
if (thesign.IsNull()) {
|
||||
packs.AddPart();
|
||||
packs.GetFromIter (FinalSelection()->RootResult(G));
|
||||
return;
|
||||
}
|
||||
|
||||
thesign->Clear();
|
||||
thesign->AddList (FinalSelection()->RootResult(G).Content(),G.Model());
|
||||
Handle(TColStd_HSequenceOfHAsciiString) list = thesign->List();
|
||||
Standard_Integer i,nb,is,nbs = list->Length();
|
||||
Handle(TCollection_HAsciiString) asign;
|
||||
Handle(TColStd_HSequenceOfTransient) ents;
|
||||
for (is = 1; is <= nbs; is ++) {
|
||||
asign = list->Value(is);
|
||||
ents = thesign->Entities (asign->ToCString());
|
||||
if (ents.IsNull()) continue;
|
||||
packs.AddPart();
|
||||
nb = ents->Length();
|
||||
for (i = 1; i <= nb; i ++)
|
||||
packs.GetFromEntity (ents->Value(i),Standard_False);
|
||||
}
|
||||
}
|
@@ -1,95 +0,0 @@
|
||||
// Created on: 1994-12-21
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1994-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_DispPerSignature_HeaderFile
|
||||
#define _IFSelect_DispPerSignature_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <IFSelect_Dispatch.hxx>
|
||||
#include <Standard_CString.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
class IFSelect_SignCounter;
|
||||
class Interface_InterfaceError;
|
||||
class TCollection_AsciiString;
|
||||
class Interface_Graph;
|
||||
class IFGraph_SubPartsIterator;
|
||||
|
||||
|
||||
class IFSelect_DispPerSignature;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_DispPerSignature, IFSelect_Dispatch)
|
||||
|
||||
//! A DispPerSignature sorts input Entities according to a
|
||||
//! Signature : it works with a SignCounter to do this.
|
||||
class IFSelect_DispPerSignature : public IFSelect_Dispatch
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates a DispPerSignature with no SignCounter (by default,
|
||||
//! produces only one packet)
|
||||
Standard_EXPORT IFSelect_DispPerSignature();
|
||||
|
||||
//! Returns the SignCounter used for splitting
|
||||
Standard_EXPORT Handle(IFSelect_SignCounter) SignCounter() const;
|
||||
|
||||
//! Sets a SignCounter for sort
|
||||
//! Remark : it is set to record lists of entities, not only counts
|
||||
Standard_EXPORT void SetSignCounter (const Handle(IFSelect_SignCounter)& sign);
|
||||
|
||||
//! Returns the name of the SignCounter, which caracterises the
|
||||
//! sorting criterium for this Dispatch
|
||||
Standard_EXPORT Standard_CString SignName() const;
|
||||
|
||||
//! Returns as Label, "One File per Signature <name>"
|
||||
Standard_EXPORT TCollection_AsciiString Label() const Standard_OVERRIDE;
|
||||
|
||||
//! Returns True, maximum count is given as <nbent>
|
||||
Standard_EXPORT virtual Standard_Boolean LimitedMax (const Standard_Integer nbent, Standard_Integer& max) const Standard_OVERRIDE;
|
||||
|
||||
//! Computes the list of produced Packets. It defines Packets from
|
||||
//! the SignCounter, which sirts the input Entities per Signature
|
||||
//! (specific of the SignCounter).
|
||||
Standard_EXPORT void Packets (const Interface_Graph& G, IFGraph_SubPartsIterator& packs) const Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_DispPerSignature,IFSelect_Dispatch)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
Handle(IFSelect_SignCounter) thesign;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_DispPerSignature_HeaderFile
|
@@ -1,85 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFGraph_Compare.hxx>
|
||||
#include <IFGraph_SubPartsIterator.hxx>
|
||||
#include <IFSelect_Dispatch.hxx>
|
||||
#include <IFSelect_Selection.hxx>
|
||||
#include <IFSelect_SelectionIterator.hxx>
|
||||
#include <Interface_EntityIterator.hxx>
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_InterfaceError.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
#include <TCollection_HAsciiString.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_Dispatch,MMgt_TShared)
|
||||
|
||||
void IFSelect_Dispatch::SetRootName
|
||||
(const Handle(TCollection_HAsciiString)& name)
|
||||
{
|
||||
thename = name;
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_Dispatch::HasRootName () const
|
||||
{ return (!thename.IsNull()); }
|
||||
|
||||
const Handle(TCollection_HAsciiString)& IFSelect_Dispatch::RootName () const
|
||||
{ return thename; }
|
||||
|
||||
void IFSelect_Dispatch::SetFinalSelection
|
||||
(const Handle(IFSelect_Selection)& sel)
|
||||
{ thefinal = sel; }
|
||||
|
||||
Handle(IFSelect_Selection) IFSelect_Dispatch::FinalSelection () const
|
||||
{ return thefinal; }
|
||||
|
||||
IFSelect_SelectionIterator IFSelect_Dispatch::Selections () const
|
||||
{
|
||||
IFSelect_SelectionIterator iter;
|
||||
iter.AddItem(thefinal);
|
||||
for(; iter.More(); iter.Next()) {
|
||||
iter.Value()->FillIterator(iter); // Iterateur qui se court apres
|
||||
}
|
||||
return iter;
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_Dispatch::CanHaveRemainder () const
|
||||
{ return Standard_False; }
|
||||
|
||||
Standard_Boolean IFSelect_Dispatch::LimitedMax
|
||||
(const Standard_Integer , Standard_Integer& max) const
|
||||
{ max = 0; return Standard_False; }
|
||||
|
||||
Interface_EntityIterator IFSelect_Dispatch::GetEntities
|
||||
(const Interface_Graph& G) const
|
||||
{ return thefinal->UniqueResult(G); }
|
||||
|
||||
Interface_EntityIterator IFSelect_Dispatch::Packeted
|
||||
(const Interface_Graph& G) const
|
||||
{
|
||||
Interface_EntityIterator total = GetEntities(G);
|
||||
Interface_EntityIterator remain = Remainder(G);
|
||||
if (remain.NbEntities() == 0) return total;
|
||||
// sinon, faire la difference !
|
||||
IFGraph_Compare GC(G);
|
||||
GC.GetFromIter (total, Standard_True);
|
||||
GC.GetFromIter (remain,Standard_False);
|
||||
return GC.FirstOnly();
|
||||
}
|
||||
|
||||
Interface_EntityIterator IFSelect_Dispatch::Remainder
|
||||
(const Interface_Graph& ) const
|
||||
{ Interface_EntityIterator iter; return iter; } // par defaut vide
|
@@ -1,153 +0,0 @@
|
||||
// Created on: 1992-11-17
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1992-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_Dispatch_HeaderFile
|
||||
#define _IFSelect_Dispatch_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <MMgt_TShared.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
class TCollection_HAsciiString;
|
||||
class IFSelect_Selection;
|
||||
class Interface_InterfaceError;
|
||||
class IFSelect_SelectionIterator;
|
||||
class TCollection_AsciiString;
|
||||
class Interface_EntityIterator;
|
||||
class Interface_Graph;
|
||||
class IFGraph_SubPartsIterator;
|
||||
|
||||
|
||||
class IFSelect_Dispatch;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_Dispatch, MMgt_TShared)
|
||||
|
||||
//! This class allows to describe how a set of Entities has to be
|
||||
//! dispatched into resulting Packets : a Packet is a sub-set of
|
||||
//! the initial set of entities.
|
||||
//!
|
||||
//! Thus, it can generate zero, one, or more Packets according
|
||||
//! input set and criterium of dispatching. And it can let apart
|
||||
//! some entities : it is the Remainder, which can be recovered
|
||||
//! by a specific Selection (RemainderFromDispatch).
|
||||
//!
|
||||
//! Depending of sub-classes, a Dispatch can potentially generate
|
||||
//! a limited or not count of packet, and a remainder or none.
|
||||
//!
|
||||
//! The input set is read from a specified Selection, attached to
|
||||
//! the Dispatch : the Final Selection of the Dispatch. The input
|
||||
//! is the Unique Root Entities list of the Final Selection
|
||||
class IFSelect_Dispatch : public MMgt_TShared
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Sets a Root Name as an HAsciiString
|
||||
//! To reset it, give a Null Handle (then, a ShareOut will have
|
||||
//! to define the Default Root Name)
|
||||
Standard_EXPORT void SetRootName (const Handle(TCollection_HAsciiString)& name);
|
||||
|
||||
//! Returns True if a specific Root Name has been set
|
||||
//! (else, the Default Root Name has to be used)
|
||||
Standard_EXPORT Standard_Boolean HasRootName() const;
|
||||
|
||||
//! Returns the Root Name for files produced by this dispatch
|
||||
//! It is empty if it has not been set or if it has been reset
|
||||
Standard_EXPORT const Handle(TCollection_HAsciiString)& RootName() const;
|
||||
|
||||
//! Stores (or Changes) the Final Selection for a Dispatch
|
||||
Standard_EXPORT void SetFinalSelection (const Handle(IFSelect_Selection)& sel);
|
||||
|
||||
//! Returns the Final Selection of a Dispatch
|
||||
//! we 'd like : C++ : return const &
|
||||
Standard_EXPORT Handle(IFSelect_Selection) FinalSelection() const;
|
||||
|
||||
//! Returns the complete list of source Selections (starting
|
||||
//! from FinalSelection)
|
||||
Standard_EXPORT IFSelect_SelectionIterator Selections() const;
|
||||
|
||||
//! Returns True if a Dispatch can have a Remainder, i.e. if its
|
||||
//! criterium can let entities apart. It is a potential answer,
|
||||
//! remainder can be empty at run-time even if answer is True.
|
||||
//! (to attach a RemainderFromDispatch Selection is not allowed if
|
||||
//! answer is True).
|
||||
//! Default answer given here is False (can be redefined)
|
||||
Standard_EXPORT virtual Standard_Boolean CanHaveRemainder() const;
|
||||
|
||||
//! Returns True if a Dispatch generates a count of Packets always
|
||||
//! less than or equal to a maximum value : it can be computed
|
||||
//! from the total count of Entities to be dispatched : <nbent>.
|
||||
//! If answer is False, no limited maximum is expected for account
|
||||
//! If answer is True, expected maximum is given in argument <max>
|
||||
//! Default answer given here is False (can be redefined)
|
||||
Standard_EXPORT virtual Standard_Boolean LimitedMax (const Standard_Integer nbent, Standard_Integer& max) const;
|
||||
|
||||
//! Returns a text which defines the way a Dispatch produces
|
||||
//! packets (which will become files) from its Input
|
||||
Standard_EXPORT virtual TCollection_AsciiString Label() const = 0;
|
||||
|
||||
//! Gets Unique Root Entities from the Final Selection, given an
|
||||
//! input Graph
|
||||
//! This the starting step for an Evaluation (Packets - Remainder)
|
||||
Standard_EXPORT Interface_EntityIterator GetEntities (const Interface_Graph& G) const;
|
||||
|
||||
//! Returns the list of produced Packets into argument <pack>.
|
||||
//! Each Packet corresponds to a Part, the Entities listed are the
|
||||
//! Roots given by the Selection. Input is given as a Graph.
|
||||
//! Thus, to create a file from a packet, it suffices to take the
|
||||
//! entities listed in a Part of Packets (that is, a Packet)
|
||||
//! without worrying about Shared entities
|
||||
//! This method can raise an Exception if data are not coherent
|
||||
Standard_EXPORT virtual void Packets (const Interface_Graph& G, IFGraph_SubPartsIterator& packs) const = 0;
|
||||
|
||||
//! Returns the list of all Input Entities (see GetEntities) which
|
||||
//! are put in a Packet. That is, Entities listed in GetEntities
|
||||
//! but not in Remainder (see below). Input is given as a Graph.
|
||||
Standard_EXPORT Interface_EntityIterator Packeted (const Interface_Graph& G) const;
|
||||
|
||||
//! Returns Remainder which is a set of Entities. Can be empty.
|
||||
//! Default evaluation is empty (has to be redefined if
|
||||
//! CanHaveRemainder is redefined to return True).
|
||||
Standard_EXPORT virtual Interface_EntityIterator Remainder (const Interface_Graph& G) const;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_Dispatch,MMgt_TShared)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
Handle(TCollection_HAsciiString) thename;
|
||||
Handle(IFSelect_Selection) thefinal;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_Dispatch_HeaderFile
|
@@ -1,548 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFSelect_EditForm.hxx>
|
||||
#include <IFSelect_Editor.hxx>
|
||||
#include <IFSelect_ListEditor.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Interface_MSG.hxx>
|
||||
#include <Interface_TypedValue.hxx>
|
||||
#include <Message.hxx>
|
||||
#include <Message_Messenger.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_HAsciiString.hxx>
|
||||
#include <TColStd_HSequenceOfHAsciiString.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_EditForm,MMgt_TShared)
|
||||
|
||||
IFSelect_EditForm::IFSelect_EditForm
|
||||
(const Handle(IFSelect_Editor)& editor,
|
||||
const Standard_Boolean readonly, const Standard_Boolean undoable,
|
||||
const Standard_CString label)
|
||||
: thecomplete (Standard_True) ,
|
||||
theloaded (Standard_False) ,
|
||||
thekeepst (Standard_False) ,
|
||||
thelabel (label) ,
|
||||
thenums (0,1) ,
|
||||
theorigs (0, (undoable ? editor->NbValues() : 0) ) ,
|
||||
themodifs (0, (readonly ? 0 : editor->NbValues()) ) ,
|
||||
thestatus (0, (readonly ? 0 : editor->NbValues()) ) ,
|
||||
theeditor (editor) ,
|
||||
thetouched (0) { }
|
||||
|
||||
IFSelect_EditForm::IFSelect_EditForm
|
||||
(const Handle(IFSelect_Editor)& editor,
|
||||
const TColStd_SequenceOfInteger& nums,
|
||||
const Standard_Boolean readonly, const Standard_Boolean undoable,
|
||||
const Standard_CString label)
|
||||
: thecomplete (Standard_False) ,
|
||||
theloaded (Standard_False) ,
|
||||
thekeepst (Standard_False) ,
|
||||
thelabel (label) ,
|
||||
thenums (0,nums.Length()) ,
|
||||
theorigs (0, (undoable ? nums.Length() : 0) ) ,
|
||||
themodifs (0, (readonly ? 0 : nums.Length()) ) ,
|
||||
thestatus (0, (readonly ? 0 : nums.Length()) ) ,
|
||||
theeditor (editor) ,
|
||||
thetouched (0)
|
||||
{
|
||||
Standard_Integer i,nb = nums.Length();
|
||||
for (i = 1; i <= nb; i ++) thenums.SetValue (i,nums.Value(i));
|
||||
}
|
||||
|
||||
Standard_Boolean& IFSelect_EditForm::EditKeepStatus ()
|
||||
{ return thekeepst; }
|
||||
|
||||
Standard_CString IFSelect_EditForm::Label () const
|
||||
{ return thelabel.ToCString(); }
|
||||
|
||||
Standard_Boolean IFSelect_EditForm::IsLoaded () const
|
||||
{ return theloaded; }
|
||||
|
||||
void IFSelect_EditForm::ClearData ()
|
||||
{ theent.Nullify(); themodel.Nullify(); theloaded = Standard_False; }
|
||||
|
||||
void IFSelect_EditForm::SetData
|
||||
(const Handle(Standard_Transient)& ent,
|
||||
const Handle(Interface_InterfaceModel)& model)
|
||||
{ theent = ent; themodel = model; }
|
||||
|
||||
void IFSelect_EditForm::SetEntity
|
||||
(const Handle(Standard_Transient)& ent)
|
||||
{ theent = ent; }
|
||||
|
||||
void IFSelect_EditForm::SetModel
|
||||
(const Handle(Interface_InterfaceModel)& model)
|
||||
{ themodel = model; }
|
||||
|
||||
Handle(Standard_Transient) IFSelect_EditForm::Entity () const
|
||||
{ return theent; }
|
||||
|
||||
Handle(Interface_InterfaceModel) IFSelect_EditForm::Model () const
|
||||
{ return themodel; }
|
||||
|
||||
Handle(IFSelect_Editor) IFSelect_EditForm::Editor () const
|
||||
{ return theeditor; }
|
||||
|
||||
Standard_Boolean IFSelect_EditForm::IsComplete () const
|
||||
{ return thecomplete; }
|
||||
|
||||
Standard_Integer IFSelect_EditForm::NbValues
|
||||
(const Standard_Boolean editable) const
|
||||
{
|
||||
if (!editable || thecomplete) return theeditor->NbValues();
|
||||
return thenums.Upper();
|
||||
}
|
||||
|
||||
Standard_Integer IFSelect_EditForm::NumberFromRank
|
||||
(const Standard_Integer rank) const
|
||||
{
|
||||
if (thecomplete) return rank;
|
||||
if (rank < 1 || rank > thenums.Upper()) return 0;
|
||||
return thenums.Value(rank);
|
||||
}
|
||||
|
||||
Standard_Integer IFSelect_EditForm::RankFromNumber
|
||||
(const Standard_Integer num) const
|
||||
{
|
||||
if (thecomplete) return num;
|
||||
Standard_Integer i, n = thenums.Upper();
|
||||
for (i = 1; i <= n; i ++) {
|
||||
if (thenums.Value(i) == num) return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
Standard_Integer IFSelect_EditForm::NameNumber
|
||||
(const Standard_CString name) const
|
||||
{
|
||||
Standard_Integer res = theeditor->NameNumber(name);
|
||||
if (thecomplete || res == 0) return res;
|
||||
// Sinon, chercher res dans thenums
|
||||
Standard_Integer i, nb = thenums.Length();
|
||||
for (i = 1; i <= nb; i ++) {
|
||||
if (res == thenums.Value(i)) return res;
|
||||
}
|
||||
return -res;
|
||||
}
|
||||
|
||||
Standard_Integer IFSelect_EditForm::NameRank
|
||||
(const Standard_CString name) const
|
||||
{
|
||||
Standard_Integer res = theeditor->NameNumber(name);
|
||||
if (thecomplete || res == 0) return res;
|
||||
// Sinon, chercher res dans thenums
|
||||
Standard_Integer i, nb = thenums.Length();
|
||||
for (i = 1; i <= nb; i ++) {
|
||||
if (res == thenums.Value(i)) return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void IFSelect_EditForm::LoadDefault ()
|
||||
{
|
||||
theloaded = Standard_True;
|
||||
thetouched = 0;
|
||||
Standard_Integer i,nb = theorigs.Upper();
|
||||
if (nb == 0) return;
|
||||
for (i = 1; i <= nb; i ++) {
|
||||
Standard_Integer num = NumberFromRank(i);
|
||||
if (num == 0) continue;
|
||||
Handle(TCollection_HAsciiString) str = theeditor->StringValue (this,num);
|
||||
theorigs.SetValue (i,str);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_EditForm::LoadData
|
||||
(const Handle(Standard_Transient)& ent,
|
||||
const Handle(Interface_InterfaceModel)& model)
|
||||
{
|
||||
thetouched = 0;
|
||||
if (!theeditor->Load (this,ent,model)) return Standard_False;
|
||||
SetData (ent,model);
|
||||
theloaded = Standard_True;
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_EditForm::LoadEntity
|
||||
(const Handle(Standard_Transient)& ent)
|
||||
{
|
||||
thetouched = 0;
|
||||
Handle(Interface_InterfaceModel) model;
|
||||
if (!theeditor->Load (this,ent,model)) return Standard_False;
|
||||
SetEntity (ent);
|
||||
theloaded = Standard_True;
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_EditForm::LoadModel
|
||||
(const Handle(Interface_InterfaceModel)& model)
|
||||
{
|
||||
thetouched = 0;
|
||||
Handle(Standard_Transient) ent;
|
||||
if (!theeditor->Load (this,ent,model)) return Standard_False;
|
||||
SetData (ent,model);
|
||||
theloaded = Standard_True;
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_EditForm::LoadData ()
|
||||
{
|
||||
thetouched = 0;
|
||||
Handle(Interface_InterfaceModel) model;
|
||||
Handle(Standard_Transient) ent;
|
||||
if (!theeditor->Load (this,ent,model)) return Standard_False;
|
||||
theloaded = Standard_True;
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
|
||||
// ######## VALUES ########
|
||||
|
||||
Handle(IFSelect_ListEditor) IFSelect_EditForm::ListEditor
|
||||
(const Standard_Integer num) const
|
||||
{
|
||||
Standard_Integer n = RankFromNumber(num);
|
||||
Handle(IFSelect_ListEditor) led;
|
||||
if (n <= 0 || n > theorigs.Upper()) return led;
|
||||
if (!theeditor->IsList(n)) return led;
|
||||
led = theeditor->ListEditor (num);
|
||||
Handle(TColStd_HSequenceOfHAsciiString) lis = theeditor->ListValue(this,num);
|
||||
led->LoadModel (themodel);
|
||||
led->LoadValues (lis);
|
||||
return led;
|
||||
}
|
||||
|
||||
void IFSelect_EditForm::LoadValue
|
||||
(const Standard_Integer num, const Handle(TCollection_HAsciiString)& val)
|
||||
{
|
||||
Standard_Integer n = RankFromNumber(num);
|
||||
if (n <= 0 || n > theorigs.Upper()) return;
|
||||
theorigs.SetValue (n,val);
|
||||
}
|
||||
|
||||
void IFSelect_EditForm::LoadList
|
||||
(const Standard_Integer num, const Handle(TColStd_HSequenceOfHAsciiString)& list)
|
||||
{
|
||||
Standard_Integer n = RankFromNumber(num);
|
||||
if (n <= 0 || n > theorigs.Upper()) return;
|
||||
theorigs.SetValue (n,list);
|
||||
}
|
||||
|
||||
|
||||
Handle(TCollection_HAsciiString) IFSelect_EditForm::OriginalValue
|
||||
(const Standard_Integer num) const
|
||||
{
|
||||
Standard_Integer n = RankFromNumber(num);
|
||||
Handle(TCollection_HAsciiString) val;
|
||||
if (theorigs.Upper() == 0) return theeditor->StringValue (this,num);
|
||||
else return Handle(TCollection_HAsciiString)::DownCast(theorigs.Value(n));
|
||||
}
|
||||
|
||||
Handle(TColStd_HSequenceOfHAsciiString) IFSelect_EditForm::OriginalList
|
||||
(const Standard_Integer num) const
|
||||
{
|
||||
Standard_Integer n = RankFromNumber(num);
|
||||
Handle(TColStd_HSequenceOfHAsciiString) list;
|
||||
if (theorigs.Upper() == 0) return theeditor->ListValue (this,num);
|
||||
else return Handle(TColStd_HSequenceOfHAsciiString)::DownCast(theorigs.Value(n));
|
||||
}
|
||||
|
||||
Handle(TCollection_HAsciiString) IFSelect_EditForm::EditedValue
|
||||
(const Standard_Integer num) const
|
||||
{
|
||||
if (themodifs.Upper() == 0) return OriginalValue(num);
|
||||
if (!IsModified(num)) return OriginalValue(num);
|
||||
Standard_Integer n = RankFromNumber(num);
|
||||
return Handle(TCollection_HAsciiString)::DownCast(themodifs.Value(n));
|
||||
}
|
||||
|
||||
Handle(TColStd_HSequenceOfHAsciiString) IFSelect_EditForm::EditedList
|
||||
(const Standard_Integer num) const
|
||||
{
|
||||
if (themodifs.Upper() == 0) return OriginalList(num);
|
||||
if (!IsModified(num)) return OriginalList(num);
|
||||
Standard_Integer n = RankFromNumber(num);
|
||||
return Handle(TColStd_HSequenceOfHAsciiString)::DownCast(themodifs.Value(n));
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_EditForm::IsModified
|
||||
(const Standard_Integer num) const
|
||||
{
|
||||
if (thestatus.Upper() == 0) return Standard_False;
|
||||
Standard_Integer n = RankFromNumber(num);
|
||||
return (thestatus.Value(n) != 0);
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_EditForm::IsTouched
|
||||
(const Standard_Integer num) const
|
||||
{
|
||||
if (thestatus.Upper() == 0) return Standard_False;
|
||||
Standard_Integer n = RankFromNumber(num);
|
||||
return (thestatus.Value(n) == 2);
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_EditForm::Modify
|
||||
(const Standard_Integer num, const Handle(TCollection_HAsciiString)& newval,
|
||||
const Standard_Boolean enforce)
|
||||
{
|
||||
// Peut-on editer
|
||||
thetouched = 0;
|
||||
if (themodifs.Upper() == 0) return Standard_False;
|
||||
Standard_Integer tnum = RankFromNumber(num);
|
||||
if (tnum == 0) return Standard_False;
|
||||
IFSelect_EditValue acc = theeditor->EditMode (num);
|
||||
if (newval.IsNull() && acc != IFSelect_Optional) return Standard_False;
|
||||
if (!enforce && (acc == IFSelect_EditProtected || acc == IFSelect_EditComputed)) return Standard_False;
|
||||
|
||||
// Satisfies ?
|
||||
Handle(Interface_TypedValue) typval = theeditor->TypedValue(num);
|
||||
if (!typval->Satisfies(newval)) return Standard_False;
|
||||
Interface_ParamType pty = typval->Type();
|
||||
if (pty == Interface_ParamIdent && !newval.IsNull()) {
|
||||
if (themodel.IsNull()) return Standard_False;
|
||||
if (themodel->NextNumberForLabel(newval->ToCString(),0,Standard_False) <= 0)
|
||||
return Standard_False;
|
||||
}
|
||||
|
||||
// Update ?
|
||||
if (!theeditor->Update(this,num,newval,enforce)) return Standard_False;
|
||||
|
||||
thestatus.SetValue (tnum,1);
|
||||
themodifs.SetValue (tnum,newval);
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_EditForm::ModifyList
|
||||
(const Standard_Integer num, const Handle(IFSelect_ListEditor)& edited,
|
||||
const Standard_Boolean enforce)
|
||||
{
|
||||
// Faut-il prendre
|
||||
if (edited.IsNull()) return Standard_False;
|
||||
if (!edited->IsTouched()) return Standard_False;
|
||||
Handle(TColStd_HSequenceOfHAsciiString) newlist = edited->EditedValues();
|
||||
|
||||
// Peut-on editer
|
||||
thetouched = 0;
|
||||
if (themodifs.Upper() == 0) return Standard_False;
|
||||
Standard_Integer tnum = RankFromNumber(num);
|
||||
if (tnum == 0) return Standard_False;
|
||||
IFSelect_EditValue acc = theeditor->EditMode (num);
|
||||
if (acc == IFSelect_EditRead || acc == IFSelect_EditDynamic) return Standard_False;
|
||||
if (newlist.IsNull() && acc != IFSelect_Optional) return Standard_False;
|
||||
if (!enforce && (acc == IFSelect_EditProtected || acc == IFSelect_EditComputed)) return Standard_False;
|
||||
|
||||
// Update ?
|
||||
if (!theeditor->UpdateList(this,num,newlist,enforce)) return Standard_False;
|
||||
|
||||
thestatus.SetValue (tnum,1);
|
||||
themodifs.SetValue (tnum,newlist);
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_EditForm::ModifyListValue
|
||||
(const Standard_Integer num, const Handle(TColStd_HSequenceOfHAsciiString)& list,
|
||||
const Standard_Boolean enforce)
|
||||
{
|
||||
Handle(IFSelect_ListEditor) led = ListEditor (num);
|
||||
if (led.IsNull()) return Standard_False;
|
||||
if (!led->LoadEdited(list)) return Standard_False;
|
||||
return ModifyList (num,led,enforce);
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_EditForm::Touch
|
||||
(const Standard_Integer num, const Handle(TCollection_HAsciiString)& newval)
|
||||
{
|
||||
if (themodifs.Upper() == 0) return Standard_False;
|
||||
Standard_Integer tnum = RankFromNumber(num);
|
||||
if (tnum == 0) return Standard_False;
|
||||
|
||||
thestatus.SetValue (tnum,2);
|
||||
themodifs.SetValue (tnum,newval);
|
||||
thetouched ++;
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_EditForm::TouchList
|
||||
(const Standard_Integer num, const Handle(TColStd_HSequenceOfHAsciiString)& newlist)
|
||||
{
|
||||
if (themodifs.Upper() == 0) return Standard_False;
|
||||
Standard_Integer tnum = RankFromNumber(num);
|
||||
if (tnum == 0) return Standard_False;
|
||||
|
||||
thestatus.SetValue (tnum,2);
|
||||
themodifs.SetValue (tnum,newlist);
|
||||
thetouched ++;
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
|
||||
void IFSelect_EditForm::ClearEdit (const Standard_Integer num)
|
||||
{
|
||||
Standard_Integer i, nb = thestatus.Upper();
|
||||
if (num == 0) {
|
||||
for (i = 1; i <= nb; i ++) thestatus.SetValue (i,0);
|
||||
} else {
|
||||
Standard_Integer tnum = RankFromNumber(num);
|
||||
if (tnum > 0 && num <= nb) thestatus.SetValue (tnum,0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void IFSelect_EditForm::PrintDefs (const Handle(Message_Messenger)& S) const
|
||||
{
|
||||
Standard_Integer iv, nbv = NbValues(Standard_True);
|
||||
S<<"***** EditForm, Label : "<<Label()<<endl;
|
||||
if (IsComplete()) S<<"Complete, "<<nbv<<" Values"<<endl;
|
||||
else {
|
||||
S<<"Extraction on "<<nbv<<" Values : (extracted<-editor)"<<endl;
|
||||
for (iv = 1; iv <= nbv; iv ++) S<<" "<<iv<<"<-"<<NumberFromRank(iv);
|
||||
S<<endl;
|
||||
}
|
||||
S<<"*****"<<endl;
|
||||
}
|
||||
|
||||
|
||||
static void PrintList
|
||||
(const Handle(TColStd_HSequenceOfHAsciiString)& list,
|
||||
const Handle(Message_Messenger)& S, const Standard_Boolean alsolist)
|
||||
{
|
||||
if (list.IsNull()) { S<<"(NULL LIST)"<<endl; return; }
|
||||
|
||||
Standard_Integer i,nb = list->Length();
|
||||
S<<"(List : "<<nb<<" Items)"<<endl;
|
||||
if (!alsolist) return;
|
||||
|
||||
for (i = 1; i <= nb; i ++) {
|
||||
Handle(TCollection_HAsciiString) str = list->Value(i);
|
||||
S<<" ["<<i<<"] "<< (str.IsNull() ? "(NULL)" : str->ToCString())<<endl;
|
||||
}
|
||||
}
|
||||
|
||||
void IFSelect_EditForm::PrintValues
|
||||
(const Handle(Message_Messenger)& S, const Standard_Integer what,
|
||||
const Standard_Boolean names, const Standard_Boolean alsolist) const
|
||||
{
|
||||
Standard_Integer iv, nbv = NbValues(Standard_True);
|
||||
S<< "****************************************************"<<endl;
|
||||
S<<"***** "<<Label()<<Interface_MSG::Blanks(Label(),40)<<"*****"<<endl;
|
||||
S<<"***** *****"<<endl;
|
||||
if (!theloaded)
|
||||
S<<"***** Values are NOT loaded *****"<<endl;
|
||||
|
||||
else {
|
||||
// Donnees sur lesquelles on a travaille
|
||||
if (themodel.IsNull()) {
|
||||
if (theent.IsNull()) S<<"***** No loaded data";
|
||||
else S<<"***** No loaded Model. Loaded object : type "<<theent->DynamicType()->Name();
|
||||
} else {
|
||||
if (theent.IsNull()) S<<"***** No loaded entity";
|
||||
else { S<<"***** Loaded entity : "; themodel->PrintLabel (theent,S); }
|
||||
}
|
||||
}
|
||||
S<<endl<<"****************************************************"<<endl<<endl;
|
||||
|
||||
// Affichage des valeurs
|
||||
Standard_Boolean nams = names;
|
||||
Standard_Integer maxnam = theeditor->MaxNameLength (names ? 0 : -1);
|
||||
if (maxnam == 0) { maxnam = theeditor->MaxNameLength (0); nams = Standard_True; }
|
||||
Standard_Integer nbmod = 0;
|
||||
if (what != 0) S<<"Mod N0 Name Value"<<endl;
|
||||
else S<<" N0 Name Value"<<endl;
|
||||
|
||||
for (iv = 1; iv <= nbv; iv ++) {
|
||||
Standard_Integer jv = NumberFromRank(iv);
|
||||
Standard_CString name = theeditor->Name(jv,!nams);
|
||||
|
||||
// Original ou Final
|
||||
if (what != 0) {
|
||||
Handle(TCollection_HAsciiString) str;
|
||||
if (IsModified(jv)) S<<"* ";
|
||||
else S<<" ";
|
||||
S <<Interface_MSG::Blanks(iv,3)<<iv<<" "
|
||||
<<name<<Interface_MSG::Blanks(name,maxnam)<<" ";
|
||||
|
||||
if (theeditor->IsList(jv)) {
|
||||
Handle(TColStd_HSequenceOfHAsciiString) list;
|
||||
if (what < 0) list = OriginalList (jv);
|
||||
if (what > 0) list = EditedList (jv);
|
||||
PrintList (list,S,alsolist);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (what < 0) str = OriginalValue (jv);
|
||||
if (what > 0) str = EditedValue (jv);
|
||||
|
||||
S << (str.IsNull() ? "(NULL)" : str->ToCString()) <<endl;
|
||||
|
||||
// Modified only
|
||||
} else {
|
||||
if (!IsModified(jv)) continue;
|
||||
nbmod ++;
|
||||
if (theeditor->IsList(jv)) {
|
||||
Handle(TColStd_HSequenceOfHAsciiString) list= OriginalList (jv);
|
||||
S <<Interface_MSG::Blanks(iv,3)<<iv<<" "
|
||||
<<name<<Interface_MSG::Blanks(name,maxnam)<<" ORIG:";
|
||||
PrintList (list,S,alsolist);
|
||||
|
||||
list = EditedList (jv);
|
||||
S<<Interface_MSG::Blanks("",maxnam+5)<<"MOD :";
|
||||
PrintList (list,S,alsolist);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
Handle(TCollection_HAsciiString) str = OriginalValue (jv);
|
||||
S <<Interface_MSG::Blanks(iv,3)<<iv<<" "
|
||||
<<name<<Interface_MSG::Blanks(name,maxnam)<<" ORIG:"
|
||||
<< (str.IsNull() ? "(NULL)" : str->ToCString()) <<endl;
|
||||
str = EditedValue (jv);
|
||||
S<<Interface_MSG::Blanks("",maxnam+4)<<" MOD :"<< (str.IsNull() ? "(NULL)" : str->ToCString()) <<endl;
|
||||
}
|
||||
}
|
||||
if (what == 0) S<<"On "<<nbv<<" Values, "<<nbmod<<" Modified"<<endl;
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_EditForm::Apply ()
|
||||
{
|
||||
Standard_Boolean stat = ApplyData(theent,themodel);
|
||||
if (stat && !thekeepst) ClearEdit();
|
||||
return stat;
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_EditForm::Recognize () const
|
||||
{ return theeditor->Recognize(this); }
|
||||
|
||||
Standard_Boolean IFSelect_EditForm::ApplyData
|
||||
(const Handle(Standard_Transient)& ent,
|
||||
const Handle(Interface_InterfaceModel)& model)
|
||||
{ return theeditor->Apply (this,ent,model); }
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_EditForm::Undo ()
|
||||
{
|
||||
if (thestatus.Upper() == 0 || theorigs.Upper() == 0) return Standard_False;
|
||||
Standard_Integer i, nb = thestatus.Upper();
|
||||
for (i = 1; i <= nb; i ++) {
|
||||
if (thestatus.Value (i) != 0) themodifs.SetValue (i,theorigs.Value(i));
|
||||
}
|
||||
return Apply ();
|
||||
}
|
@@ -1,319 +0,0 @@
|
||||
// Created on: 1998-02-23
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1998-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_EditForm_HeaderFile
|
||||
#define _IFSelect_EditForm_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <Standard_Boolean.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
#include <TColStd_Array1OfInteger.hxx>
|
||||
#include <TColStd_Array1OfTransient.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <MMgt_TShared.hxx>
|
||||
#include <Standard_CString.hxx>
|
||||
#include <TColStd_SequenceOfInteger.hxx>
|
||||
#include <TColStd_HSequenceOfHAsciiString.hxx>
|
||||
class IFSelect_Editor;
|
||||
class Standard_Transient;
|
||||
class Interface_InterfaceModel;
|
||||
class IFSelect_ListEditor;
|
||||
class TCollection_HAsciiString;
|
||||
class Message_Messenger;
|
||||
|
||||
|
||||
class IFSelect_EditForm;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_EditForm, MMgt_TShared)
|
||||
|
||||
//! An EditForm is the way to apply an Editor on an Entity or on
|
||||
//! the Model
|
||||
//! It gives read-only or read-write access, with or without undo
|
||||
//!
|
||||
//! It can be complete (all the values of the Editor are present)
|
||||
//! or partial (a sub-list of these value are present)
|
||||
//! Anyway, all references to Number (argument <num>) refer to
|
||||
//! Number of Value for the Editor
|
||||
//! While references to Rank are for rank in the EditForm, which
|
||||
//! may differ if it is not Complete
|
||||
//! Two methods give the correspondance between this Number and
|
||||
//! the Rank in the EditForm : RankFromNumber and NumberFromRank
|
||||
class IFSelect_EditForm : public MMgt_TShared
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates a complete EditForm from an Editor
|
||||
//! A specific Label can be given
|
||||
Standard_EXPORT IFSelect_EditForm(const Handle(IFSelect_Editor)& editor, const Standard_Boolean readonly, const Standard_Boolean undoable, const Standard_CString label = "");
|
||||
|
||||
//! Creates an extracted EditForm from an Editor, limited to
|
||||
//! the values identified in <nums>
|
||||
//! A specific Label can be given
|
||||
Standard_EXPORT IFSelect_EditForm(const Handle(IFSelect_Editor)& editor, const TColStd_SequenceOfInteger& nums, const Standard_Boolean readonly, const Standard_Boolean undoable, const Standard_CString label = "");
|
||||
|
||||
//! Returns and may change the keep status on modif
|
||||
//! It starts as False
|
||||
//! If it is True, Apply does not clear modification status
|
||||
//! and the EditForm can be loaded again, modified value remain
|
||||
//! and may be applied again
|
||||
//! Remark that ApplyData does not clear the modification status,
|
||||
//! a call to ClearEdit does
|
||||
Standard_EXPORT Standard_Boolean& EditKeepStatus();
|
||||
|
||||
Standard_EXPORT Standard_CString Label() const;
|
||||
|
||||
//! Tells if the EditForm is loaded now
|
||||
Standard_EXPORT Standard_Boolean IsLoaded() const;
|
||||
|
||||
Standard_EXPORT void ClearData();
|
||||
|
||||
Standard_EXPORT void SetData (const Handle(Standard_Transient)& ent, const Handle(Interface_InterfaceModel)& model);
|
||||
|
||||
Standard_EXPORT void SetEntity (const Handle(Standard_Transient)& ent);
|
||||
|
||||
Standard_EXPORT void SetModel (const Handle(Interface_InterfaceModel)& model);
|
||||
|
||||
Standard_EXPORT Handle(Standard_Transient) Entity() const;
|
||||
|
||||
Standard_EXPORT Handle(Interface_InterfaceModel) Model() const;
|
||||
|
||||
Standard_EXPORT Handle(IFSelect_Editor) Editor() const;
|
||||
|
||||
//! Tells if an EditForm is complete or is an extract from Editor
|
||||
Standard_EXPORT Standard_Boolean IsComplete() const;
|
||||
|
||||
//! Returns the count of values
|
||||
//! <editable> True : count of editable values, i.e.
|
||||
//! For a complete EditForm, it is given by the Editor
|
||||
//! Else, it is the length of the extraction map
|
||||
//! <editable> False : all the values from the Editor
|
||||
Standard_EXPORT Standard_Integer NbValues (const Standard_Boolean editable) const;
|
||||
|
||||
//! Returns the Value Number in the Editor from a given Rank in
|
||||
//! the EditForm
|
||||
//! For a complete EditForm, both are equal
|
||||
//! Else, it is given by the extraction map
|
||||
//! Returns 0 if <rank> exceeds the count of editable values,
|
||||
Standard_EXPORT Standard_Integer NumberFromRank (const Standard_Integer rank) const;
|
||||
|
||||
//! Returns the Rank in the EditForm from a given Number of Value
|
||||
//! for the Editor
|
||||
//! For a complete EditForm, both are equal
|
||||
//! Else, it is given by the extraction map
|
||||
//! Returns 0 if <number> is not forecast to be edited, or is
|
||||
//! out of range
|
||||
Standard_EXPORT Standard_Integer RankFromNumber (const Standard_Integer number) const;
|
||||
|
||||
//! Returns the Value Number in the Editor for a given Name
|
||||
//! i.e. the true ValueNumber which can be used in various methods
|
||||
//! of EditForm
|
||||
//! If it is not complete, for a recorded (in the Editor) but
|
||||
//! non-loaded name, returns negative value (- number)
|
||||
Standard_EXPORT Standard_Integer NameNumber (const Standard_CString name) const;
|
||||
|
||||
//! Returns the Rank of Value in the EditForm for a given Name
|
||||
//! i.e. if it is not complete, for a recorded (in the Editor) but
|
||||
//! non-loaded name, returns 0
|
||||
Standard_EXPORT Standard_Integer NameRank (const Standard_CString name) const;
|
||||
|
||||
//! For a read-write undoable EditForm, loads original values
|
||||
//! from defaults stored in the Editor
|
||||
Standard_EXPORT void LoadDefault();
|
||||
|
||||
//! Loads modifications to data
|
||||
//! Default uses Editor. Can be redefined
|
||||
//! Remark that <ent> and/or <model> may be null, according to the
|
||||
//! kind of Editor. Shortcuts are available for these cases, but
|
||||
//! they finally call LoadData (hence, just ignore non-used args)
|
||||
Standard_EXPORT virtual Standard_Boolean LoadData (const Handle(Standard_Transient)& ent, const Handle(Interface_InterfaceModel)& model);
|
||||
|
||||
//! Shortcut for LoadData when <model> is not used
|
||||
Standard_EXPORT Standard_Boolean LoadEntity (const Handle(Standard_Transient)& ent);
|
||||
|
||||
//! Shortcut for LoadData when only the model is concerned
|
||||
Standard_EXPORT Standard_Boolean LoadModel (const Handle(Interface_InterfaceModel)& model);
|
||||
|
||||
//! Shortcut when both <ent> and <model> are not used
|
||||
//! (when the Editor works on fully static or global data)
|
||||
Standard_EXPORT Standard_Boolean LoadData();
|
||||
|
||||
//! Returns a ListEditor to edit the parameter <num> of the
|
||||
//! EditForm, if it is a List
|
||||
//! The Editor created it (by ListEditor) then loads it (by
|
||||
//! ListValue)
|
||||
//! For a single parameter, returns a Null Handle ...
|
||||
Standard_EXPORT Handle(IFSelect_ListEditor) ListEditor (const Standard_Integer num) const;
|
||||
|
||||
//! Loads an original value (single). Called by the Editor only
|
||||
Standard_EXPORT void LoadValue (const Standard_Integer num, const Handle(TCollection_HAsciiString)& val);
|
||||
|
||||
//! Loads an original value as a list. Called by the Editor only
|
||||
Standard_EXPORT void LoadList (const Standard_Integer num, const Handle(TColStd_HSequenceOfHAsciiString)& list);
|
||||
|
||||
//! From an edited value, returns its ... value (original one)
|
||||
//! Null means that this value is not defined
|
||||
//! <num> is for the EditForm, not the Editor
|
||||
//! It is for a single parameter. For a list, gives a Null Handle
|
||||
Standard_EXPORT Handle(TCollection_HAsciiString) OriginalValue (const Standard_Integer num) const;
|
||||
|
||||
//! Returns an original value, as a list
|
||||
//! <num> is for the EditForm, not the Editor
|
||||
//! For a single parameter, gives a Null Handle
|
||||
Standard_EXPORT Handle(TColStd_HSequenceOfHAsciiString) OriginalList (const Standard_Integer num) const;
|
||||
|
||||
//! Returns the Edited (i.e. Modified) Value (string for single)
|
||||
//! <num> reports to the EditForm
|
||||
//! If IsModified is False, returns OriginalValue
|
||||
//! Null with IsModified True : means that this value is not
|
||||
//! defined or has been removed
|
||||
//! It is for a single parameter. For a list, gives a Null Handle
|
||||
Standard_EXPORT Handle(TCollection_HAsciiString) EditedValue (const Standard_Integer num) const;
|
||||
|
||||
//! Returns the Edited Value as a list
|
||||
//! If IsModified is False, returns OriginalValue
|
||||
//! Null with IsModified True : means that this value is not
|
||||
//! defined or has been removed
|
||||
//! For a single parameter, gives a Null Handle
|
||||
Standard_EXPORT Handle(TColStd_HSequenceOfHAsciiString) EditedList (const Standard_Integer num) const;
|
||||
|
||||
//! Tells if a Value (of the EditForm) is modified (directly or
|
||||
//! through touching by Update)
|
||||
Standard_EXPORT Standard_Boolean IsModified (const Standard_Integer num) const;
|
||||
|
||||
//! Tells if a Value (of the EditForm) has been touched, i.e.
|
||||
//! not modified directly but by the modification of another one
|
||||
//! (by method Update from the Editor)
|
||||
Standard_EXPORT Standard_Boolean IsTouched (const Standard_Integer num) const;
|
||||
|
||||
//! Gives a new value for the item <num> of the EditForm, if
|
||||
//! it is a single parameter (for a list, just returns False)
|
||||
//! Null means to Remove it
|
||||
//! <enforce> True to overpass Protected or Computed Access Mode
|
||||
//! Calls the method Update from the Editor, which can touch other
|
||||
//! parameters (see NbTouched)
|
||||
//! Returns True if well recorded, False if this value is not
|
||||
//! allowed
|
||||
//! Warning : Does not apply immediately : will be applied by the method
|
||||
//! Apply
|
||||
Standard_EXPORT Standard_Boolean Modify (const Standard_Integer num, const Handle(TCollection_HAsciiString)& newval, const Standard_Boolean enforce = Standard_False);
|
||||
|
||||
//! Changes the value of an item of the EditForm, if it is a List
|
||||
//! (else, just returns False)
|
||||
//! The ListEditor contains the edited values of the list
|
||||
//! If no edition was recorded, just returns False
|
||||
//! Calls the method Update from the Editor, which can touch other
|
||||
//! parameters (see NbTouched)
|
||||
//! Returns True if well recorded, False if this value is not
|
||||
//! allowed
|
||||
//! Warning : Does not apply immediately : will be applied by the method
|
||||
//! Apply
|
||||
Standard_EXPORT Standard_Boolean ModifyList (const Standard_Integer num, const Handle(IFSelect_ListEditor)& edited, const Standard_Boolean enforce = Standard_False);
|
||||
|
||||
//! As ModifyList but the new value is given as such
|
||||
//! Creates a ListEditor, Loads it, then calls ModifyList
|
||||
Standard_EXPORT Standard_Boolean ModifyListValue (const Standard_Integer num, const Handle(TColStd_HSequenceOfHAsciiString)& list, const Standard_Boolean enforce = Standard_False);
|
||||
|
||||
//! Gives a new value computed by the Editor, if another parameter
|
||||
//! commands the value of <num>
|
||||
//! It is generally the case for a Computed Parameter for instance
|
||||
//! Increments the counter of touched parameters
|
||||
//! Warning : it gives no protection for ReadOnly etc... while it is the
|
||||
//! internal way of touching parameters
|
||||
//! Does not work (returns False) if <num> is for a list
|
||||
Standard_EXPORT Standard_Boolean Touch (const Standard_Integer num, const Handle(TCollection_HAsciiString)& newval);
|
||||
|
||||
//! Acts as Touch but for a list
|
||||
//! Does not work (returns False) if <num> is for a single param
|
||||
Standard_EXPORT Standard_Boolean TouchList (const Standard_Integer num, const Handle(TColStd_HSequenceOfHAsciiString)& newlist);
|
||||
|
||||
//! Returns the count of parameters touched by the last Modify
|
||||
//! (apart from the modified parameter itself)
|
||||
//! Normally it is zero
|
||||
Standard_EXPORT Standard_Integer NbTouched() const;
|
||||
|
||||
//! Clears modification status : by default all, or one by its
|
||||
//! numbers (in the Editor)
|
||||
Standard_EXPORT void ClearEdit (const Standard_Integer num = 0);
|
||||
|
||||
//! Prints Definitions, relative to the Editor
|
||||
Standard_EXPORT void PrintDefs (const Handle(Message_Messenger)& S) const;
|
||||
|
||||
//! Prints Values, according to what and alsolist
|
||||
//! <names> True : prints Long Names; False : prints Short Names
|
||||
//! <what> < 0 : prints Original Values (+ flag Modified)
|
||||
//! <what> > 0 : prints Final Values (+flag Modified)
|
||||
//! <what> = 0 : prints Modified Values (Original + Edited)
|
||||
//! <alsolist> False (D) : lists are printed only as their count
|
||||
//! <alsolist> True : lists are printed for all their items
|
||||
Standard_EXPORT void PrintValues (const Handle(Message_Messenger)& S, const Standard_Integer what, const Standard_Boolean names, const Standard_Boolean alsolist = Standard_False) const;
|
||||
|
||||
//! Applies modifications to own data
|
||||
//! Calls ApplyData then Clears Status according EditKeepStatus
|
||||
Standard_EXPORT Standard_Boolean Apply();
|
||||
|
||||
//! Tells if this EditForm can work with its Editor and its actual
|
||||
//! Data (Entity and Model)
|
||||
//! Default uses Editor. Can be redefined
|
||||
Standard_EXPORT virtual Standard_Boolean Recognize() const;
|
||||
|
||||
//! Applies modifications to data
|
||||
//! Default uses Editor. Can be redefined
|
||||
Standard_EXPORT virtual Standard_Boolean ApplyData (const Handle(Standard_Transient)& ent, const Handle(Interface_InterfaceModel)& model);
|
||||
|
||||
//! For an undoable EditForm, Applies ... origibal values !
|
||||
//! and clears modified ones
|
||||
//! Can be run only once
|
||||
Standard_EXPORT Standard_Boolean Undo();
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_EditForm,MMgt_TShared)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
Standard_Boolean thecomplete;
|
||||
Standard_Boolean theloaded;
|
||||
Standard_Boolean thekeepst;
|
||||
TCollection_AsciiString thelabel;
|
||||
TColStd_Array1OfInteger thenums;
|
||||
TColStd_Array1OfTransient theorigs;
|
||||
TColStd_Array1OfTransient themodifs;
|
||||
TColStd_Array1OfInteger thestatus;
|
||||
Handle(IFSelect_Editor) theeditor;
|
||||
Handle(Standard_Transient) theent;
|
||||
Handle(Interface_InterfaceModel) themodel;
|
||||
Standard_Integer thetouched;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_EditForm_HeaderFile
|
@@ -1,37 +0,0 @@
|
||||
// Created on: 1992-09-21
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1992-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_EditValue_HeaderFile
|
||||
#define _IFSelect_EditValue_HeaderFile
|
||||
|
||||
//! Controls access on Values by an Editor
|
||||
//! EditOptional : normal access, in addition may be removed
|
||||
//! Editable : normal access, must be present
|
||||
//! EditProtected : access must be validated
|
||||
//! EditComputed : why write it ? it will be recomputed
|
||||
//! EditRead : no way to write it, only for read
|
||||
//! EditDynamic : not a field, only to be displayed
|
||||
enum IFSelect_EditValue
|
||||
{
|
||||
IFSelect_Optional,
|
||||
IFSelect_Editable,
|
||||
IFSelect_EditProtected,
|
||||
IFSelect_EditComputed,
|
||||
IFSelect_EditRead,
|
||||
IFSelect_EditDynamic
|
||||
};
|
||||
|
||||
#endif // _IFSelect_EditValue_HeaderFile
|
@@ -1,231 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <Dico_DictionaryOfInteger.hxx>
|
||||
#include <IFSelect_EditForm.hxx>
|
||||
#include <IFSelect_Editor.hxx>
|
||||
#include <IFSelect_ListEditor.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Interface_MSG.hxx>
|
||||
#include <Interface_TypedValue.hxx>
|
||||
#include <Message_Messenger.hxx>
|
||||
#include <Standard_OutOfRange.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
#include <TCollection_HAsciiString.hxx>
|
||||
|
||||
#include <string.h>
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_Editor,MMgt_TShared)
|
||||
|
||||
IFSelect_Editor::IFSelect_Editor (const Standard_Integer nbval)
|
||||
: thenbval (nbval) , themaxsh (0) , themaxco (0) , themaxla (0) ,
|
||||
thevalues (1,nbval) , theshorts (1,nbval) , themodes (1,nbval) ,
|
||||
thelists (1,nbval)
|
||||
{ thenames = new Dico_DictionaryOfInteger; thelists.Init(-1); }
|
||||
|
||||
void IFSelect_Editor::SetNbValues (const Standard_Integer nbval)
|
||||
{
|
||||
if (nbval > thevalues.Upper()) Standard_OutOfRange::Raise("IFSelect_Editor:SetNbValues");
|
||||
thenbval = nbval;
|
||||
}
|
||||
|
||||
void IFSelect_Editor::SetValue
|
||||
(const Standard_Integer num, const Handle(Interface_TypedValue)& typval,
|
||||
const Standard_CString shortname, const IFSelect_EditValue editmode)
|
||||
{
|
||||
if (num < 1 || num > thenbval) return;
|
||||
TCollection_AsciiString shn (shortname);
|
||||
Standard_Integer lng = shn.Length();
|
||||
if (lng > 0) thenames->SetItem (shortname,num);
|
||||
if (lng > themaxsh) themaxsh = lng;
|
||||
lng = (Standard_Integer) strlen (typval->Name());
|
||||
if (lng > themaxco) themaxco = lng;
|
||||
lng = (Standard_Integer) strlen (typval->Label());
|
||||
if (lng > themaxla) themaxla = lng;
|
||||
|
||||
thenames->SetItem (typval->Name(),num);
|
||||
Standard_Integer edm = (Standard_Integer) editmode;
|
||||
thevalues.SetValue (num,typval);
|
||||
theshorts.SetValue (num,shn);
|
||||
themodes.SetValue (num,edm);
|
||||
}
|
||||
|
||||
void IFSelect_Editor::SetList
|
||||
(const Standard_Integer num, const Standard_Integer max)
|
||||
{
|
||||
if (num < 1 || num > thenbval) return;
|
||||
thelists.SetValue (num,max);
|
||||
}
|
||||
|
||||
Standard_Integer IFSelect_Editor::NbValues () const
|
||||
{ return thenbval; }
|
||||
|
||||
Handle(Interface_TypedValue) IFSelect_Editor::TypedValue
|
||||
(const Standard_Integer num) const
|
||||
{ return Handle(Interface_TypedValue)::DownCast(thevalues.Value(num)); }
|
||||
|
||||
Standard_Boolean IFSelect_Editor::IsList (const Standard_Integer num) const
|
||||
{
|
||||
if (num < 1 || num > thenbval) return Standard_False;
|
||||
return (thelists.Value(num) >= 0);
|
||||
}
|
||||
|
||||
Standard_Integer IFSelect_Editor::MaxList (const Standard_Integer num) const
|
||||
{
|
||||
if (num < 1 || num > thenbval) return -1;
|
||||
return thelists.Value(num);
|
||||
}
|
||||
|
||||
Standard_CString IFSelect_Editor::Name
|
||||
(const Standard_Integer num, const Standard_Boolean isshort) const
|
||||
{
|
||||
if (num < 1 || num > thenbval) return "";
|
||||
if (isshort) return theshorts.Value (num).ToCString();
|
||||
else return TypedValue (num)->Name();
|
||||
}
|
||||
|
||||
IFSelect_EditValue IFSelect_Editor::EditMode
|
||||
(const Standard_Integer num) const
|
||||
{
|
||||
if (num < 1 || num > thenbval) return IFSelect_EditDynamic;
|
||||
Standard_Integer edm = themodes.Value(num);
|
||||
return (IFSelect_EditValue) edm;
|
||||
}
|
||||
|
||||
void IFSelect_Editor::PrintNames (const Handle(Message_Messenger)& S) const
|
||||
{
|
||||
Standard_Integer i, nb = NbValues();
|
||||
S<<"**** Editor : "<<Label()<<endl;
|
||||
S<<"**** Nb Values = "<<nb<<" **** Names / Labels"<<endl;
|
||||
S<<" Num ";
|
||||
if (themaxsh > 0) S<<"Short"<<Interface_MSG::Blanks("Short",themaxsh)<<" ";
|
||||
S<<"Complete"<<Interface_MSG::Blanks("Complete",themaxco)<<" Label"<<endl;
|
||||
|
||||
for (i = 1; i <= nb; i ++) {
|
||||
Handle(Interface_TypedValue) tv = TypedValue(i);
|
||||
if (tv.IsNull()) continue;
|
||||
S<<Interface_MSG::Blanks(i,3)<<i<<" ";
|
||||
if (themaxsh > 0) {
|
||||
const TCollection_AsciiString& sho = theshorts(i);
|
||||
S<<sho<<Interface_MSG::Blanks(sho.ToCString(),themaxsh)<<" ";
|
||||
}
|
||||
S<<tv->Name()<<Interface_MSG::Blanks(tv->Name(),themaxco)<<" "<<tv->Label()<<endl;
|
||||
}
|
||||
}
|
||||
|
||||
void IFSelect_Editor::PrintDefs
|
||||
(const Handle(Message_Messenger)& S, const Standard_Boolean labels) const
|
||||
{
|
||||
Standard_Integer i, nb = NbValues();
|
||||
S<<"**** Editor : "<<Label()<<endl;
|
||||
S<<"**** Nb Values = "<<nb<<" **** "<<(labels ? "Labels" : "Names")<<" / Definitions"<<endl;
|
||||
S<<" Num ";
|
||||
if (labels) S<<"Label"<<Interface_MSG::Blanks("Label",themaxla);
|
||||
else {
|
||||
if (themaxsh > 0) S<<"Short"<<Interface_MSG::Blanks("Short",themaxsh+1);
|
||||
S<<"Complete"<<Interface_MSG::Blanks("Complete",themaxco);
|
||||
}
|
||||
S<<" Edit Mode & Definition"<<endl;
|
||||
|
||||
for (i = 1; i <= nb; i ++) {
|
||||
Handle(Interface_TypedValue) tv = TypedValue(i);
|
||||
if (tv.IsNull()) continue;
|
||||
S<<" "<<Interface_MSG::Blanks(i,3)<<i<<" ";
|
||||
if (labels) S<<tv->Label()<<Interface_MSG::Blanks(tv->Label(),themaxla);
|
||||
else {
|
||||
if (themaxsh > 0) {
|
||||
const TCollection_AsciiString& sho = theshorts(i);
|
||||
S<<sho<<Interface_MSG::Blanks(sho.ToCString(),themaxsh)<<" ";
|
||||
}
|
||||
S<<tv->Name()<<Interface_MSG::Blanks(tv->Name(),themaxco);
|
||||
}
|
||||
|
||||
S<<" ";
|
||||
Standard_Integer maxls = MaxList (i);
|
||||
if (maxls == 0) S<<" (List) ";
|
||||
else if (maxls > 0) S<<" (List <= "<<maxls<<" Items) ";
|
||||
else S<<" ";
|
||||
IFSelect_EditValue edm = EditMode (i);
|
||||
switch (edm) {
|
||||
case IFSelect_Optional : S<<"Optional "; break;
|
||||
case IFSelect_Editable : S<<"Editable "; break;
|
||||
case IFSelect_EditProtected : S<<"Protected"; break;
|
||||
case IFSelect_EditComputed : S<<"Computed "; break;
|
||||
case IFSelect_EditRead : S<<"ReadOnly "; break;
|
||||
case IFSelect_EditDynamic : S<<"Dynamic "; break;
|
||||
default : S<<"?????????"; break;
|
||||
}
|
||||
|
||||
S<<" "<<tv->Definition()<<endl;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Standard_Integer IFSelect_Editor::MaxNameLength
|
||||
(const Standard_Integer what) const
|
||||
{
|
||||
if (what == -1) return themaxsh;
|
||||
if (what == 0) return themaxco;
|
||||
if (what == 1) return themaxla;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Standard_Integer IFSelect_Editor::NameNumber
|
||||
(const Standard_CString name) const
|
||||
{
|
||||
Standard_Integer res;
|
||||
if (thenames->GetItem(name,res,Standard_False)) return res;
|
||||
res = atoi (name); // si c est un entier, on tente le coup
|
||||
if (res < 1 || res > NbValues()) res = 0;
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
Handle(IFSelect_EditForm) IFSelect_Editor::Form
|
||||
(const Standard_Boolean readonly, const Standard_Boolean undoable) const
|
||||
{
|
||||
return new IFSelect_EditForm (this,readonly,undoable,Label().ToCString());
|
||||
}
|
||||
|
||||
Handle(IFSelect_ListEditor) IFSelect_Editor::ListEditor
|
||||
(const Standard_Integer num) const
|
||||
{
|
||||
Handle(IFSelect_ListEditor) led;
|
||||
Standard_Integer max = MaxList (num);
|
||||
if (max < 0) return led;
|
||||
led = new IFSelect_ListEditor (TypedValue(num),max);
|
||||
return led;
|
||||
}
|
||||
|
||||
Handle(TColStd_HSequenceOfHAsciiString) IFSelect_Editor::ListValue
|
||||
(const Handle(IFSelect_EditForm)& /*form*/, const Standard_Integer /*num*/) const
|
||||
{
|
||||
Handle(TColStd_HSequenceOfHAsciiString) list;
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_Editor::Update
|
||||
(const Handle(IFSelect_EditForm)& /*form*/, const Standard_Integer /*num*/,
|
||||
const Handle(TCollection_HAsciiString)& /*newval*/,
|
||||
const Standard_Boolean /*enforce*/) const
|
||||
{ return Standard_True; }
|
||||
|
||||
Standard_Boolean IFSelect_Editor::UpdateList
|
||||
(const Handle(IFSelect_EditForm)& /*form*/, const Standard_Integer /*num*/,
|
||||
const Handle(TColStd_HSequenceOfHAsciiString)& /*newval*/,
|
||||
const Standard_Boolean /*enforce*/) const
|
||||
{ return Standard_True; }
|
@@ -1,200 +0,0 @@
|
||||
// Created on: 1998-02-23
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1998-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_Editor_HeaderFile
|
||||
#define _IFSelect_Editor_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <TColStd_Array1OfTransient.hxx>
|
||||
#include <TColStd_Array1OfAsciiString.hxx>
|
||||
#include <TColStd_Array1OfInteger.hxx>
|
||||
#include <MMgt_TShared.hxx>
|
||||
#include <Standard_CString.hxx>
|
||||
#include <IFSelect_EditValue.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
#include <TColStd_HSequenceOfHAsciiString.hxx>
|
||||
class Dico_DictionaryOfInteger;
|
||||
class Standard_OutOfRange;
|
||||
class Interface_TypedValue;
|
||||
class Message_Messenger;
|
||||
class TCollection_AsciiString;
|
||||
class IFSelect_EditForm;
|
||||
class TCollection_HAsciiString;
|
||||
class IFSelect_ListEditor;
|
||||
class Standard_Transient;
|
||||
class Interface_InterfaceModel;
|
||||
|
||||
|
||||
class IFSelect_Editor;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_Editor, MMgt_TShared)
|
||||
|
||||
//! An Editor defines a set of values and a way to edit them, on
|
||||
//! an entity or on the model (e.g. on its header)
|
||||
//!
|
||||
//! Each Value is controlled by a TypedValue, with a number (it is
|
||||
//! an Integer) and a name under two forms (complete and short)
|
||||
//! and an edit mode
|
||||
class IFSelect_Editor : public MMgt_TShared
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Sets a Typed Value for a given ident and short name, with an
|
||||
//! Edit Mode
|
||||
Standard_EXPORT void SetValue (const Standard_Integer num, const Handle(Interface_TypedValue)& typval, const Standard_CString shortname = "", const IFSelect_EditValue accessmode = IFSelect_Editable);
|
||||
|
||||
//! Sets a parameter to be a List
|
||||
//! max < 0 : not for a list (set when starting)
|
||||
//! max = 0 : list with no length limit (default for SetList)
|
||||
//! max > 0 : list limited to <max> items
|
||||
Standard_EXPORT void SetList (const Standard_Integer num, const Standard_Integer max = 0);
|
||||
|
||||
//! Returns the count of Typed Values
|
||||
Standard_EXPORT Standard_Integer NbValues() const;
|
||||
|
||||
//! Returns a Typed Value from its ident
|
||||
Standard_EXPORT Handle(Interface_TypedValue) TypedValue (const Standard_Integer num) const;
|
||||
|
||||
//! Tells if a parameter is a list
|
||||
Standard_EXPORT Standard_Boolean IsList (const Standard_Integer num) const;
|
||||
|
||||
//! Returns max length allowed for a list
|
||||
//! = 0 means : list with no limit
|
||||
//! < 0 means : not a list
|
||||
Standard_EXPORT Standard_Integer MaxList (const Standard_Integer num) const;
|
||||
|
||||
//! Returns the name of a Value (complete or short) from its ident
|
||||
//! Short Name can be empty
|
||||
Standard_EXPORT Standard_CString Name (const Standard_Integer num, const Standard_Boolean isshort = Standard_False) const;
|
||||
|
||||
//! Returns the edit mode of a Value
|
||||
Standard_EXPORT IFSelect_EditValue EditMode (const Standard_Integer num) const;
|
||||
|
||||
//! Returns the number (ident) of a Value, from its name, short or
|
||||
//! complete. If not found, returns 0
|
||||
Standard_EXPORT Standard_Integer NameNumber (const Standard_CString name) const;
|
||||
|
||||
Standard_EXPORT void PrintNames (const Handle(Message_Messenger)& S) const;
|
||||
|
||||
Standard_EXPORT void PrintDefs (const Handle(Message_Messenger)& S, const Standard_Boolean labels = Standard_False) const;
|
||||
|
||||
//! Returns the MaxLength of, according to what :
|
||||
//! <what> = -1 : length of short names
|
||||
//! <what> = 0 : length of complete names
|
||||
//! <what> = 1 : length of values labels
|
||||
Standard_EXPORT Standard_Integer MaxNameLength (const Standard_Integer what) const;
|
||||
|
||||
//! Returns the specific label
|
||||
Standard_EXPORT virtual TCollection_AsciiString Label() const = 0;
|
||||
|
||||
//! Builds and Returns an EditForm, empty (no data yet)
|
||||
//! Can be redefined to return a specific type of EditForm
|
||||
Standard_EXPORT virtual Handle(IFSelect_EditForm) Form (const Standard_Boolean readonly, const Standard_Boolean undoable = Standard_True) const;
|
||||
|
||||
//! Tells if this Editor can work on this EditForm and its content
|
||||
//! (model, entity ?)
|
||||
Standard_EXPORT virtual Standard_Boolean Recognize (const Handle(IFSelect_EditForm)& form) const = 0;
|
||||
|
||||
//! Returns the value of an EditForm, for a given item
|
||||
//! (if not a list. for a list, a Null String may be returned)
|
||||
Standard_EXPORT virtual Handle(TCollection_HAsciiString) StringValue (const Handle(IFSelect_EditForm)& form, const Standard_Integer num) const = 0;
|
||||
|
||||
//! Returns a ListEditor for a parameter which is a List
|
||||
//! Default returns a basic ListEditor for a List, a Null Handle
|
||||
//! if <num> is not for a List. Can be redefined
|
||||
Standard_EXPORT virtual Handle(IFSelect_ListEditor) ListEditor (const Standard_Integer num) const;
|
||||
|
||||
//! Returns the value of an EditForm as a List, for a given item
|
||||
//! If not a list, a Null Handle should be returned
|
||||
//! Default returns a Null Handle, because many Editors have
|
||||
//! no list to edit. To be redefined as required
|
||||
Standard_EXPORT virtual Handle(TColStd_HSequenceOfHAsciiString) ListValue (const Handle(IFSelect_EditForm)& form, const Standard_Integer num) const;
|
||||
|
||||
//! Loads original values from some data, to an EditForm
|
||||
//! Remark: <ent> may be Null, this means all <model> is concerned
|
||||
//! Also <model> may be Null, if no context applies for <ent>
|
||||
//! And both <ent> and <model> may be Null, for a full static
|
||||
//! editor
|
||||
Standard_EXPORT virtual Standard_Boolean Load (const Handle(IFSelect_EditForm)& form, const Handle(Standard_Transient)& ent, const Handle(Interface_InterfaceModel)& model) const = 0;
|
||||
|
||||
//! Updates the EditForm when a parameter is modified
|
||||
//! I.E. default does nothing, can be redefined, as follows :
|
||||
//! Returns True when done (even if does nothing), False in case
|
||||
//! of refuse (for instance, if the new value is not suitable)
|
||||
//! <num> is the rank of the parameter for the EDITOR itself
|
||||
//! <enforce> True means that protected parameters can be touched
|
||||
//!
|
||||
//! If a parameter commands the value of other ones, when it is
|
||||
//! modified, it is necessary to touch them by Touch from EditForm
|
||||
Standard_EXPORT virtual Standard_Boolean Update (const Handle(IFSelect_EditForm)& form, const Standard_Integer num, const Handle(TCollection_HAsciiString)& newval, const Standard_Boolean enforce) const;
|
||||
|
||||
//! Acts as Update, but when the value is a list
|
||||
Standard_EXPORT virtual Standard_Boolean UpdateList (const Handle(IFSelect_EditForm)& form, const Standard_Integer num, const Handle(TColStd_HSequenceOfHAsciiString)& newlist, const Standard_Boolean enforce) const;
|
||||
|
||||
//! Applies modified values of the EditForm with some data
|
||||
//! Remark: <ent> may be Null, this means all <model> is concerned
|
||||
//! Also <model> may be Null, if no context applies for <ent>
|
||||
//! And both <ent> and <model> may be Null, for a full static
|
||||
//! editor
|
||||
Standard_EXPORT virtual Standard_Boolean Apply (const Handle(IFSelect_EditForm)& form, const Handle(Standard_Transient)& ent, const Handle(Interface_InterfaceModel)& model) const = 0;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_Editor,MMgt_TShared)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
//! Prepares the list of Typed Values (gives its count)
|
||||
//! This count can be tuned later, to a LOWER value, this allows
|
||||
//! to initialize with a "maximum reservation" then cut the extra
|
||||
Standard_EXPORT IFSelect_Editor(const Standard_Integer nbval);
|
||||
|
||||
//! Adjusts the true count of values. It can be LOWER or equal to
|
||||
//! the initial size (which then acts as a reservation), but never
|
||||
//! greater
|
||||
Standard_EXPORT void SetNbValues (const Standard_Integer nbval);
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
Standard_Integer thenbval;
|
||||
Standard_Integer themaxsh;
|
||||
Standard_Integer themaxco;
|
||||
Standard_Integer themaxla;
|
||||
Handle(Dico_DictionaryOfInteger) thenames;
|
||||
TColStd_Array1OfTransient thevalues;
|
||||
TColStd_Array1OfAsciiString theshorts;
|
||||
TColStd_Array1OfInteger themodes;
|
||||
TColStd_Array1OfInteger thelists;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_Editor_HeaderFile
|
@@ -1,19 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
//#include <IFSelect_FileModifier.ixx>
|
||||
|
||||
|
||||
|
||||
IFSelect_FileModifier::IFSelect_FileModifier ()
|
||||
: IFSelect_GeneralModifier (Standard_False) { }
|
File diff suppressed because it is too large
Load Diff
@@ -1,56 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFSelect_Dispatch.hxx>
|
||||
#include <IFSelect_GeneralModifier.hxx>
|
||||
#include <IFSelect_Selection.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_GeneralModifier,MMgt_TShared)
|
||||
|
||||
IFSelect_GeneralModifier::IFSelect_GeneralModifier
|
||||
(const Standard_Boolean maychangegraph) { thechgr = maychangegraph; }
|
||||
|
||||
Standard_Boolean IFSelect_GeneralModifier::MayChangeGraph () const
|
||||
{ return thechgr; }
|
||||
|
||||
void IFSelect_GeneralModifier::SetDispatch
|
||||
(const Handle(IFSelect_Dispatch)& disp)
|
||||
{ thedisp = disp; }
|
||||
|
||||
Handle(IFSelect_Dispatch) IFSelect_GeneralModifier::Dispatch () const
|
||||
{ return thedisp; }
|
||||
|
||||
Standard_Boolean IFSelect_GeneralModifier::Applies
|
||||
(const Handle(IFSelect_Dispatch)& disp) const
|
||||
{
|
||||
if (thedisp.IsNull()) return Standard_True;
|
||||
if (thedisp != disp) return Standard_False;
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
|
||||
void IFSelect_GeneralModifier::SetSelection
|
||||
(const Handle(IFSelect_Selection)& sel)
|
||||
{ thesel = sel; }
|
||||
|
||||
void IFSelect_GeneralModifier::ResetSelection ()
|
||||
{ thesel.Nullify(); }
|
||||
|
||||
Standard_Boolean IFSelect_GeneralModifier::HasSelection () const
|
||||
{ return !thesel.IsNull(); }
|
||||
|
||||
Handle(IFSelect_Selection) IFSelect_GeneralModifier::Selection () const
|
||||
{ return thesel; }
|
@@ -1,138 +0,0 @@
|
||||
// Created on: 1993-10-19
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1993-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_GeneralModifier_HeaderFile
|
||||
#define _IFSelect_GeneralModifier_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <Standard_Boolean.hxx>
|
||||
#include <MMgt_TShared.hxx>
|
||||
class IFSelect_Selection;
|
||||
class IFSelect_Dispatch;
|
||||
class TCollection_AsciiString;
|
||||
|
||||
|
||||
class IFSelect_GeneralModifier;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_GeneralModifier, MMgt_TShared)
|
||||
|
||||
//! This class gives a frame for Actions which modify the effect
|
||||
//! of a Dispatch, i.e. :
|
||||
//! By Selections and Dispatches, an original Model can be
|
||||
//! splitted into one or more "target" Models : these Models
|
||||
//! contain Entities copied from the original one (that is, a
|
||||
//! part of it). Basically, these dispatched Entities are copied
|
||||
//! as identical to their original counterparts. Also the copied
|
||||
//! Models reproduce the Header of the original one.
|
||||
//!
|
||||
//! Modifiers allow to change this copied content : this is the
|
||||
//! way to be used for any kind of alterations, adaptations ...
|
||||
//! They are exploited by a ModelCopier, which firstly performs
|
||||
//! the copy operation described by Dispatches, then invokes the
|
||||
//! Modifiers to work on the result.
|
||||
//!
|
||||
//! Each GeneralModifier can be attached to :
|
||||
//! - all the Models produced
|
||||
//! - a Dispatch (it will be applied to all the Models obtained
|
||||
//! from this Dispatch) designated by its Ident in a ShareOut
|
||||
//! - in addition, to a Selection (facultative) : this adds a
|
||||
//! criterium, the Modifier is invoked on a produced Model only
|
||||
//! if this Model contains an Entity copied from one of the
|
||||
//! Entities designated by this Selection.
|
||||
//! (for special Modifiers from IFAdapt, while they must work on
|
||||
//! definite Entities, this Selection is mandatory to run)
|
||||
//!
|
||||
//! Remark : this class has no action attached, it only provides
|
||||
//! a frame to work on criteria. Then, sub-classes will define
|
||||
//! their kind of action, which can be applied at a precise step
|
||||
//! of the production of a File : see Modifier, and in the
|
||||
//! package IFAdapt, EntityModifier and EntityCopier
|
||||
class IFSelect_GeneralModifier : public MMgt_TShared
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Returns True if this modifier may change the graph of
|
||||
//! dependences (aknowledged at creation time)
|
||||
Standard_EXPORT Standard_Boolean MayChangeGraph() const;
|
||||
|
||||
//! Attaches to a Dispatch. If <disp> is Null, Resets it
|
||||
//! (to apply the Modifier on every Dispatch)
|
||||
Standard_EXPORT void SetDispatch (const Handle(IFSelect_Dispatch)& disp);
|
||||
|
||||
//! Returns the Dispatch to be matched, Null if not set
|
||||
Standard_EXPORT Handle(IFSelect_Dispatch) Dispatch() const;
|
||||
|
||||
//! Returns True if a Model obtained from the Dispatch <disp>
|
||||
//! is to be treated (apart from the Selection criterium)
|
||||
//! If Dispatch(me) is Null, returns True. Else, checks <disp>
|
||||
Standard_EXPORT Standard_Boolean Applies (const Handle(IFSelect_Dispatch)& disp) const;
|
||||
|
||||
//! Sets a Selection : a Model is treated if it contains one or
|
||||
//! more Entities designated by the Selection
|
||||
Standard_EXPORT void SetSelection (const Handle(IFSelect_Selection)& sel);
|
||||
|
||||
//! Resets the Selection : this criterium is not longer active
|
||||
Standard_EXPORT void ResetSelection();
|
||||
|
||||
//! Returns True if a Selection is set as an additionnal criterium
|
||||
Standard_EXPORT Standard_Boolean HasSelection() const;
|
||||
|
||||
//! Returns the Selection, or a Null Handle if not set
|
||||
Standard_EXPORT Handle(IFSelect_Selection) Selection() const;
|
||||
|
||||
//! Returns a short text which defines the operation performed
|
||||
Standard_EXPORT virtual TCollection_AsciiString Label() const = 0;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_GeneralModifier,MMgt_TShared)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
//! Sets the Modifier criteria to default Values
|
||||
//! (i.e. "always applies")
|
||||
//! <maychangegraph> must be provided at creation time, to :
|
||||
//! - False if this GeneralModifier surely lets the graph of
|
||||
//! dependencies unchanged (NO edition of any reference, BUT
|
||||
//! also NO entity added or replaced or removed)
|
||||
//! - True if there is a possibility of changing the graph of
|
||||
//! dependencies when this modifier is applied
|
||||
Standard_EXPORT IFSelect_GeneralModifier(const Standard_Boolean maychangegraph);
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
Handle(IFSelect_Selection) thesel;
|
||||
Handle(IFSelect_Dispatch) thedisp;
|
||||
Standard_Boolean thechgr;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_GeneralModifier_HeaderFile
|
@@ -1,210 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFSelect_ListEditor.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Interface_TypedValue.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_HAsciiString.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_ListEditor,MMgt_TShared)
|
||||
|
||||
IFSelect_ListEditor::IFSelect_ListEditor ()
|
||||
: themax (0) , thetouc (0) { }
|
||||
|
||||
IFSelect_ListEditor::IFSelect_ListEditor
|
||||
(const Handle(Interface_TypedValue)& def, const Standard_Integer max)
|
||||
: themax (max) , thedef (def) , thetouc (0) { }
|
||||
|
||||
|
||||
void IFSelect_ListEditor::LoadModel (const Handle(Interface_InterfaceModel)& model)
|
||||
{ themodl = model; }
|
||||
|
||||
void IFSelect_ListEditor::LoadValues (const Handle(TColStd_HSequenceOfHAsciiString)& vals)
|
||||
{
|
||||
theorig = vals;
|
||||
ClearEdit();
|
||||
}
|
||||
|
||||
|
||||
void IFSelect_ListEditor::SetTouched ()
|
||||
{ thetouc = 1; }
|
||||
|
||||
void IFSelect_ListEditor::ClearEdit ()
|
||||
{
|
||||
theedit = new TColStd_HSequenceOfHAsciiString();
|
||||
thestat = new TColStd_HSequenceOfInteger();
|
||||
if (theorig.IsNull()) return;
|
||||
Standard_Integer i,nb = theorig->Length();
|
||||
for (i = 1; i <= nb; i ++) {
|
||||
theedit->Append (theorig->Value(i));
|
||||
thestat->Append (0);
|
||||
}
|
||||
thetouc = 0;
|
||||
}
|
||||
|
||||
// ######## CHECK ########
|
||||
|
||||
static Standard_Boolean CheckValue
|
||||
(const Handle(TCollection_HAsciiString)& val,
|
||||
const Handle(Interface_InterfaceModel)& modl,
|
||||
const Handle(Interface_TypedValue)& thedef)
|
||||
{
|
||||
if (val.IsNull() || modl.IsNull() || thedef.IsNull()) return Standard_True;
|
||||
|
||||
Interface_ParamType pty = thedef->Type();
|
||||
if (!thedef->Satisfies(val)) return Standard_False;
|
||||
if (pty == Interface_ParamIdent && !val.IsNull()) {
|
||||
if (modl->NextNumberForLabel(val->ToCString(),0) <= 0)
|
||||
return Standard_False;
|
||||
}
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
// ######## EDITION ########
|
||||
|
||||
Standard_Boolean IFSelect_ListEditor::LoadEdited
|
||||
(const Handle(TColStd_HSequenceOfHAsciiString)& list)
|
||||
{
|
||||
if (list.IsNull()) return Standard_False;
|
||||
Standard_Integer i, nb = list->Length();
|
||||
if (nb > themax) return Standard_False;
|
||||
|
||||
// check values
|
||||
if (!thedef.IsNull()) {
|
||||
for (i = 1; i <= nb; i ++) {
|
||||
Handle(TCollection_HAsciiString) newval = list->Value(i);
|
||||
if (!CheckValue (newval,themodl,thedef)) return Standard_False;
|
||||
}
|
||||
}
|
||||
|
||||
// OK
|
||||
theedit = list;
|
||||
thestat = new TColStd_HSequenceOfInteger();
|
||||
for (i = 1; i <= nb; i ++) thestat->Append (1);
|
||||
thetouc = 1;
|
||||
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_ListEditor::SetValue
|
||||
(const Standard_Integer num, const Handle(TCollection_HAsciiString)& val)
|
||||
{
|
||||
if (theedit.IsNull()) return Standard_False;
|
||||
if (num < 1 || num > theedit->Length()) return Standard_False;
|
||||
|
||||
// check value
|
||||
if (!CheckValue(val,themodl,thedef)) return Standard_False;
|
||||
|
||||
// OK
|
||||
theedit->SetValue (num,val);
|
||||
thestat->SetValue (num,1);
|
||||
thetouc = 1;
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_ListEditor::AddValue
|
||||
(const Handle(TCollection_HAsciiString)& val, const Standard_Integer atnum)
|
||||
{
|
||||
if (theedit.IsNull()) return Standard_False;
|
||||
if (themax > 0 && theedit->Length() >= themax) return Standard_False;
|
||||
if (!CheckValue (val,themodl,thedef)) return Standard_False;
|
||||
if (atnum > 0) {
|
||||
theedit->InsertBefore (atnum,val);
|
||||
thestat->InsertBefore (atnum,2);
|
||||
} else {
|
||||
theedit->Append (val);
|
||||
thestat->Append (2);
|
||||
}
|
||||
thetouc = 2;
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_ListEditor::Remove
|
||||
(const Standard_Integer num, const Standard_Integer howmany)
|
||||
{
|
||||
if (theedit.IsNull()) return Standard_False;
|
||||
Standard_Integer nb = theedit->Length();
|
||||
if (num < 0) return Standard_False;
|
||||
if (num == 0) return Remove (nb-howmany,howmany);
|
||||
|
||||
if ((num+howmany) > nb) return Standard_False;
|
||||
theedit->Remove(num,howmany);
|
||||
thestat->Remove(num,howmany);
|
||||
thetouc = 3;
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
|
||||
// ######## QUERIES ########
|
||||
|
||||
Handle(TColStd_HSequenceOfHAsciiString) IFSelect_ListEditor::OriginalValues () const
|
||||
{ return theorig; }
|
||||
|
||||
Handle(TColStd_HSequenceOfHAsciiString) IFSelect_ListEditor::EditedValues () const
|
||||
{ return theedit; }
|
||||
|
||||
|
||||
Standard_Integer IFSelect_ListEditor::NbValues (const Standard_Boolean edited) const
|
||||
{
|
||||
if (edited) return (theedit.IsNull() ? 0 : theedit->Length());
|
||||
return (theorig.IsNull() ? 0 : theorig->Length());
|
||||
}
|
||||
|
||||
|
||||
Handle(TCollection_HAsciiString) IFSelect_ListEditor::Value
|
||||
(const Standard_Integer num, const Standard_Boolean edited) const
|
||||
{
|
||||
Handle(TCollection_HAsciiString) val;
|
||||
if (edited) {
|
||||
if (theedit.IsNull()) return val;
|
||||
if (num < 1 || num > theedit->Length()) return val;
|
||||
val = theedit->Value(num);
|
||||
} else {
|
||||
if (theorig.IsNull()) return val;
|
||||
if (num < 1 || num > theorig->Length()) return val;
|
||||
val = theorig->Value(num);
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_ListEditor::IsChanged (const Standard_Integer num) const
|
||||
{
|
||||
if (thestat.IsNull()) return Standard_False;
|
||||
if (num < 1 || num > thestat->Length()) return Standard_False;
|
||||
Standard_Integer stat = thestat->Value(num);
|
||||
return (stat != 0);
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_ListEditor::IsModified (const Standard_Integer num) const
|
||||
{
|
||||
if (thestat.IsNull()) return Standard_False;
|
||||
if (num < 1 || num > thestat->Length()) return Standard_False;
|
||||
Standard_Integer stat = thestat->Value(num);
|
||||
return (stat == 1);
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_ListEditor::IsAdded (const Standard_Integer num) const
|
||||
{
|
||||
if (thestat.IsNull()) return Standard_False;
|
||||
if (num < 1 || num > thestat->Length()) return Standard_False;
|
||||
Standard_Integer stat = thestat->Value(num);
|
||||
return (stat == 2);
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_ListEditor::IsTouched () const
|
||||
{ return (thetouc != 0); }
|
@@ -1,173 +0,0 @@
|
||||
// Created on: 1998-07-28
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1998-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_ListEditor_HeaderFile
|
||||
#define _IFSelect_ListEditor_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <TColStd_HSequenceOfHAsciiString.hxx>
|
||||
#include <TColStd_HSequenceOfInteger.hxx>
|
||||
#include <MMgt_TShared.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
class Interface_TypedValue;
|
||||
class Interface_InterfaceModel;
|
||||
class TCollection_HAsciiString;
|
||||
|
||||
|
||||
class IFSelect_ListEditor;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_ListEditor, MMgt_TShared)
|
||||
|
||||
//! A ListEditor is an auxiliary operator for Editor/EditForm
|
||||
//! I.E. it works on parameter values expressed as strings
|
||||
//!
|
||||
//! For a parameter which is a list, it may not be edited in once
|
||||
//! by just setting a new value (as a string)
|
||||
//!
|
||||
//! Firstly, a list can be long (and tedious to be accessed flat)
|
||||
//! then requires a better way of accessing
|
||||
//!
|
||||
//! Moreover, not only its VALUES may be changed (SetValue), but
|
||||
//! also its LENGTH : items may be added or removed ...
|
||||
//!
|
||||
//! Hence, the way of editing a parameter as a list is :
|
||||
//! - edit it separately, with the help of a ListEditor
|
||||
//! - it remains possible to prepare a new list of values apart
|
||||
//! - then give the new list in once to the EditForm
|
||||
//!
|
||||
//! An EditList is produced by the Editor, with a basic definition
|
||||
//! This definition (brought by this class) can be redefined
|
||||
//! Hence the Editor may produce a specific ListEditor as needed
|
||||
class IFSelect_ListEditor : public MMgt_TShared
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates a ListEditor with absolutely no constraint
|
||||
Standard_EXPORT IFSelect_ListEditor();
|
||||
|
||||
//! Creates a ListEditor, for which items of the list to edit are
|
||||
//! defined by <def>, and <max> describes max length :
|
||||
//! 0 (D) means no limit
|
||||
//! value > 0 means : no more the <max> items are allowed
|
||||
Standard_EXPORT IFSelect_ListEditor(const Handle(Interface_TypedValue)& def, const Standard_Integer max = 0);
|
||||
|
||||
//! Loads a Model. It is used to check items of type Entity(Ident)
|
||||
Standard_EXPORT void LoadModel (const Handle(Interface_InterfaceModel)& model);
|
||||
|
||||
//! Loads the original values for the list
|
||||
//! Remark : If its length is mor then MaxLength, editions remain
|
||||
//! allowed, except Add
|
||||
Standard_EXPORT void LoadValues (const Handle(TColStd_HSequenceOfHAsciiString)& vals);
|
||||
|
||||
//! Declares this ListEditor to have been touched (whatever action)
|
||||
Standard_EXPORT void SetTouched();
|
||||
|
||||
//! Clears all editions already recorded
|
||||
Standard_EXPORT void ClearEdit();
|
||||
|
||||
//! Loads a new list to replace the older one, in once !
|
||||
//! By default (can be redefined) checks the length of the list
|
||||
//! and the value of each item according to the def
|
||||
//! Items are all recorded as Modified
|
||||
//!
|
||||
//! If no def has been given at creation time, no check is done
|
||||
//! Returns True when done, False if checks have failed ... a
|
||||
//! specialisation may also lock it by returning always False ...
|
||||
Standard_EXPORT virtual Standard_Boolean LoadEdited (const Handle(TColStd_HSequenceOfHAsciiString)& list);
|
||||
|
||||
//! Sets a new value for the item <num> (in edited list)
|
||||
//! <val> may be a Null Handle, then the value will be cleared but
|
||||
//! not removed
|
||||
//! Returns True when done. False if <num> is out of range or if
|
||||
//! <val> does not satisfy the definition
|
||||
Standard_EXPORT virtual Standard_Boolean SetValue (const Standard_Integer num, const Handle(TCollection_HAsciiString)& val);
|
||||
|
||||
//! Adds a new item. By default appends (at the end of the list)
|
||||
//! Can insert before a given rank <num>, if positive
|
||||
//! Returns True when done. False if MaxLength may be overpassed
|
||||
//! or if <val> does not satisfy the definition
|
||||
Standard_EXPORT virtual Standard_Boolean AddValue (const Handle(TCollection_HAsciiString)& val, const Standard_Integer atnum = 0);
|
||||
|
||||
//! Removes items from the list
|
||||
//! By default removes one item. Else, count given by <howmany>
|
||||
//! Remove from rank <num> included. By default, from the end
|
||||
//! Returns True when done, False (and does not work) if case of
|
||||
//! out of range of if <howmany> is greater than current length
|
||||
Standard_EXPORT virtual Standard_Boolean Remove (const Standard_Integer num = 0, const Standard_Integer howmany = 1);
|
||||
|
||||
//! Returns the value from which the edition started
|
||||
Standard_EXPORT Handle(TColStd_HSequenceOfHAsciiString) OriginalValues() const;
|
||||
|
||||
//! Returns the result of the edition
|
||||
Standard_EXPORT Handle(TColStd_HSequenceOfHAsciiString) EditedValues() const;
|
||||
|
||||
//! Returns count of values, edited (D) or original
|
||||
Standard_EXPORT Standard_Integer NbValues (const Standard_Boolean edited = Standard_True) const;
|
||||
|
||||
//! Returns a value given its rank. Edited (D) or Original
|
||||
//! A Null String means the value is cleared but not removed
|
||||
Standard_EXPORT Handle(TCollection_HAsciiString) Value (const Standard_Integer num, const Standard_Boolean edited = Standard_True) const;
|
||||
|
||||
//! Tells if a value (in edited list) has been changed, i.e.
|
||||
//! either modified-value, or added
|
||||
Standard_EXPORT Standard_Boolean IsChanged (const Standard_Integer num) const;
|
||||
|
||||
//! Tells if a value (in edited list) has been modified-value
|
||||
//! (not added)
|
||||
Standard_EXPORT Standard_Boolean IsModified (const Standard_Integer num) const;
|
||||
|
||||
//! Tells if a value (in edited list) has been added (new one)
|
||||
Standard_EXPORT Standard_Boolean IsAdded (const Standard_Integer num) const;
|
||||
|
||||
//! Tells if at least one edition (SetValue-AddValue-Remove) has
|
||||
//! been recorded
|
||||
Standard_EXPORT Standard_Boolean IsTouched() const;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_ListEditor,MMgt_TShared)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
Standard_Integer themax;
|
||||
Handle(Interface_TypedValue) thedef;
|
||||
Standard_Integer thetouc;
|
||||
Handle(TColStd_HSequenceOfHAsciiString) theorig;
|
||||
Handle(TColStd_HSequenceOfHAsciiString) theedit;
|
||||
Handle(TColStd_HSequenceOfInteger) thestat;
|
||||
Handle(Interface_InterfaceModel) themodl;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_ListEditor_HeaderFile
|
@@ -1,539 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFSelect_AppliedModifiers.hxx>
|
||||
#include <IFSelect_ContextModif.hxx>
|
||||
#include <IFSelect_ContextWrite.hxx>
|
||||
#include <IFSelect_GeneralModifier.hxx>
|
||||
#include <IFSelect_ModelCopier.hxx>
|
||||
#include <IFSelect_Modifier.hxx>
|
||||
#include <IFSelect_Selection.hxx>
|
||||
#include <IFSelect_ShareOut.hxx>
|
||||
#include <IFSelect_ShareOutResult.hxx>
|
||||
#include <IFSelect_WorkLibrary.hxx>
|
||||
#include <Interface_Check.hxx>
|
||||
#include <Interface_CheckIterator.hxx>
|
||||
#include <Interface_CopyTool.hxx>
|
||||
#include <Interface_EntityIterator.hxx>
|
||||
#include <Interface_GeneralLib.hxx>
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Interface_Protocol.hxx>
|
||||
#include <Message.hxx>
|
||||
#include <Message_Messenger.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
#include <TCollection_HAsciiString.hxx>
|
||||
#include <TColStd_HSequenceOfInteger.hxx>
|
||||
|
||||
#include <stdio.h>
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_ModelCopier,MMgt_TShared)
|
||||
|
||||
//#define MISOPOINT
|
||||
IFSelect_ModelCopier::IFSelect_ModelCopier () { }
|
||||
|
||||
void IFSelect_ModelCopier::SetShareOut
|
||||
(const Handle(IFSelect_ShareOut)& sho)
|
||||
{ theshareout = sho; }
|
||||
|
||||
|
||||
// ########################################################################
|
||||
// ######## OPERATIONS DE TRANSFERT GLOBAL (memorise ou non) ########
|
||||
|
||||
|
||||
void IFSelect_ModelCopier::ClearResult ()
|
||||
{ thefilemodels.Clear(); thefilenames.Clear(); theapplieds.Clear();
|
||||
theremain.Nullify(); }
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_ModelCopier::AddFile
|
||||
(const TCollection_AsciiString& filename,
|
||||
const Handle(Interface_InterfaceModel)& content)
|
||||
{
|
||||
Standard_Integer nb = thefilenames.Length();
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
if (filename.IsEmpty()) continue;
|
||||
if (thefilenames(i).IsEqual(filename)) return Standard_False;
|
||||
}
|
||||
Handle(IFSelect_AppliedModifiers) nulapplied;
|
||||
thefilenames.Append (filename);
|
||||
thefilemodels.Append (content);
|
||||
theapplieds.Append (nulapplied);
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_ModelCopier::NameFile
|
||||
(const Standard_Integer num,
|
||||
const TCollection_AsciiString& filename)
|
||||
{
|
||||
Standard_Integer nb = thefilenames.Length();
|
||||
if (num <= 0 || num > nb) return Standard_False;
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
if (filename.IsEmpty()) continue;
|
||||
if (thefilenames(i).IsEqual(filename)) return Standard_False;
|
||||
}
|
||||
thefilenames.SetValue(num,filename);
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_ModelCopier::ClearFile
|
||||
(const Standard_Integer num)
|
||||
{
|
||||
Standard_Integer nb = thefilenames.Length();
|
||||
if (num <= 0 || num > nb) return Standard_False;
|
||||
thefilenames.ChangeValue(num).Clear();
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_ModelCopier::SetAppliedModifiers
|
||||
(const Standard_Integer num, const Handle(IFSelect_AppliedModifiers)& applied)
|
||||
{
|
||||
Standard_Integer nb = theapplieds.Length();
|
||||
if (num <= 0 || num > nb) return Standard_False;
|
||||
theapplieds.SetValue(num,applied);
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_ModelCopier::ClearAppliedModifiers
|
||||
(const Standard_Integer num)
|
||||
{
|
||||
Standard_Integer nb = theapplieds.Length();
|
||||
if (num <= 0 || num > nb) return Standard_False;
|
||||
theapplieds.ChangeValue(num).Nullify();
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
// .... Copy : Opere les Transferts, les Memorise (pas d envoi fichier ici)
|
||||
|
||||
Interface_CheckIterator IFSelect_ModelCopier::Copy
|
||||
(IFSelect_ShareOutResult& eval,
|
||||
const Handle(IFSelect_WorkLibrary)& WL,
|
||||
const Handle(Interface_Protocol)& protocol)
|
||||
{
|
||||
Interface_CopyTool TC (eval.Graph().Model(), protocol);
|
||||
return Copying (eval,WL,protocol,TC);
|
||||
}
|
||||
|
||||
// Copy Interne
|
||||
|
||||
Interface_CheckIterator IFSelect_ModelCopier::Copying
|
||||
(IFSelect_ShareOutResult& eval,
|
||||
const Handle(IFSelect_WorkLibrary)& WL,
|
||||
const Handle(Interface_Protocol)& protocol,
|
||||
Interface_CopyTool& TC)
|
||||
{
|
||||
Message::DefaultMessenger() <<
|
||||
"** WorkSession : Copying split data before sending"<<endl;
|
||||
const Interface_Graph& G = eval.Graph();
|
||||
Interface_CheckIterator checks;
|
||||
theshareout = eval.ShareOut();
|
||||
theremain = new TColStd_HArray1OfInteger(0,G.Size()); theremain->Init(0);
|
||||
for (eval.Evaluate(); eval.More(); eval.Next()) {
|
||||
Handle(Interface_InterfaceModel) model;
|
||||
TCollection_AsciiString filename = eval.FileName();
|
||||
Standard_Integer dispnum = eval.DispatchRank();
|
||||
Standard_Integer numod, nbmod;
|
||||
eval.PacketsInDispatch (numod,nbmod);
|
||||
Handle(IFSelect_AppliedModifiers) curapp;
|
||||
CopiedModel (G, WL,protocol, eval.PacketRoot(), filename,dispnum,numod, TC,
|
||||
model, curapp,checks);
|
||||
|
||||
AddFile (filename, model);
|
||||
theapplieds.SetValue (theapplieds.Length(), curapp);
|
||||
}
|
||||
theshareout->SetLastRun (theshareout->NbDispatches());
|
||||
checks.SetName ("X-STEP WorkSession : Split Copy (no Write)");
|
||||
return checks;
|
||||
}
|
||||
|
||||
// Send a deux arguments : Envoi Fichier du Resultat deja memorise
|
||||
|
||||
Interface_CheckIterator IFSelect_ModelCopier::SendCopied
|
||||
(const Handle(IFSelect_WorkLibrary)& WL,
|
||||
const Handle(Interface_Protocol)& protocol)
|
||||
{
|
||||
Message::DefaultMessenger() <<
|
||||
"** WorkSession : Sending split data already copied"<<endl;
|
||||
Standard_Integer nb = NbFiles();
|
||||
Interface_CheckIterator checks;
|
||||
if (nb > 0) {
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
if (FileName(i).Length() == 0) continue;
|
||||
Handle(IFSelect_AppliedModifiers) curapp = theapplieds.Value(i);
|
||||
IFSelect_ContextWrite ctx (FileModel(i),protocol,curapp,FileName(i).ToCString());
|
||||
Standard_Boolean res = WL->WriteFile (ctx);
|
||||
Interface_CheckIterator checklst = ctx.CheckList();
|
||||
checks.Merge(checklst);
|
||||
// (FileName(i).ToCString(), FileModel(i),protocol,curapp,checks);
|
||||
// if (!checks.IsEmpty(Standard_False)) {
|
||||
// sout<<" ** On Sending File n0."<<i<<", Check Messages : **"<<endl;
|
||||
// checks.Print (sout,Standard_False);
|
||||
// }
|
||||
if (!res) {
|
||||
char mess[100]; sprintf(mess,"Split Send (WriteFile) abandon on file n0.%d",i);
|
||||
checks.CCheck(0)->AddFail (mess);
|
||||
Message::DefaultMessenger() <<
|
||||
" ** Sending File n0."<<i<<" has failed, abandon **"<<endl;
|
||||
return checks;
|
||||
}
|
||||
AddSentFile (FileName(i).ToCString());
|
||||
}
|
||||
ClearResult();
|
||||
}
|
||||
checks.SetName ("X-STEP WorkSession : Split Send (Copy+Write)");
|
||||
return checks;
|
||||
}
|
||||
|
||||
|
||||
// .... Send a 4 arguments : Calcul du Transfert et Envoi sur Fichier
|
||||
|
||||
Interface_CheckIterator IFSelect_ModelCopier::Send
|
||||
(IFSelect_ShareOutResult& eval,
|
||||
const Handle(IFSelect_WorkLibrary)& WL,
|
||||
const Handle(Interface_Protocol)& protocol)
|
||||
{
|
||||
Interface_CopyTool TC (eval.Graph().Model(), protocol);
|
||||
return Sending (eval,WL,protocol,TC);
|
||||
}
|
||||
|
||||
Interface_CheckIterator IFSelect_ModelCopier::Sending
|
||||
(IFSelect_ShareOutResult& eval,
|
||||
const Handle(IFSelect_WorkLibrary)& WL,
|
||||
const Handle(Interface_Protocol)& protocol,
|
||||
Interface_CopyTool& TC)
|
||||
{
|
||||
const Interface_Graph& G = eval.Graph();
|
||||
Interface_CheckIterator checks;
|
||||
Standard_Integer i = 0;
|
||||
Message::DefaultMessenger() <<
|
||||
"** WorkSession : Copying then sending split data"<<endl;
|
||||
theshareout = eval.ShareOut();
|
||||
theremain = new TColStd_HArray1OfInteger(0,G.Size()); theremain->Init(0);
|
||||
for (eval.Evaluate(); eval.More(); eval.Next()) {
|
||||
i ++;
|
||||
Handle(Interface_InterfaceModel) model;
|
||||
TCollection_AsciiString filename = eval.FileName();
|
||||
Standard_Integer dispnum = eval.DispatchRank();
|
||||
Standard_Integer numod, nbmod;
|
||||
eval.PacketsInDispatch (numod,nbmod);
|
||||
Handle(IFSelect_AppliedModifiers) curapp;
|
||||
CopiedModel (G, WL,protocol, eval.PacketRoot(), filename,dispnum,numod, TC,
|
||||
model, curapp, checks);
|
||||
IFSelect_ContextWrite ctx (model,protocol,curapp,filename.ToCString());
|
||||
Standard_Boolean res = WL->WriteFile (ctx);
|
||||
Interface_CheckIterator checklst = ctx.CheckList();
|
||||
checks.Merge(checklst);
|
||||
// (filename.ToCString(), model, protocol, curapp, checks);
|
||||
// if (!checks.IsEmpty(Standard_False)) {
|
||||
// sout<<" ** On Sending File "<<filename<<", Check Messages : **"<<endl;
|
||||
// checks.Print (sout,model,Standard_False);
|
||||
// }
|
||||
if (!res) {
|
||||
char mess[100]; sprintf(mess,"Split Send (WriteFile) abandon on file n0.%d",i);
|
||||
checks.CCheck(0)->AddFail (mess);
|
||||
Message::DefaultMessenger() <<
|
||||
" ** Sending File "<<filename<<" has failed, abandon **"<<endl;
|
||||
checks.SetName ("X-STEP WorkSession : Split Send (only Write)");
|
||||
return checks;
|
||||
}
|
||||
AddSentFile (filename.ToCString());
|
||||
}
|
||||
theshareout->SetLastRun (theshareout->NbDispatches());
|
||||
checks.SetName ("X-STEP WorkSession : Split Send (only Write)");
|
||||
return checks;
|
||||
}
|
||||
|
||||
|
||||
// .... SendAll : Donnees a tranferer dans G, aucun split, envoi sur fichier
|
||||
|
||||
Interface_CheckIterator IFSelect_ModelCopier::SendAll
|
||||
(const Standard_CString filename, const Interface_Graph& G,
|
||||
const Handle(IFSelect_WorkLibrary)& WL,
|
||||
const Handle(Interface_Protocol)& protocol)
|
||||
{
|
||||
Interface_CheckIterator checks;
|
||||
checks.SetName ("X-STEP WorkSession : Send All");
|
||||
Message::DefaultMessenger() <<
|
||||
"** WorkSession : Sending all data"<<endl;
|
||||
Handle(Interface_InterfaceModel) model = G.Model();
|
||||
if (model.IsNull() || protocol.IsNull() || WL.IsNull()) return checks;
|
||||
|
||||
Interface_CopyTool TC (model, protocol);
|
||||
Standard_Integer i, nb = model->NbEntities();
|
||||
for (i = 1; i <= nb; i ++) TC.Bind (model->Value(i),model->Value(i));
|
||||
|
||||
Interface_EntityIterator pipo;
|
||||
Handle(Interface_InterfaceModel) newmod;
|
||||
Handle(IFSelect_AppliedModifiers) applied;
|
||||
CopiedModel (G, WL,protocol,pipo,TCollection_AsciiString(filename),
|
||||
0,0,TC,newmod, applied,checks);
|
||||
|
||||
IFSelect_ContextWrite ctx (model,protocol,applied,filename);
|
||||
Standard_Boolean res = WL->WriteFile (ctx);
|
||||
Interface_CheckIterator checklst = ctx.CheckList();
|
||||
checks.Merge(checklst);
|
||||
if (!res) checks.CCheck(0)->AddFail ("SendAll (WriteFile) has failed");
|
||||
// if (!checks.IsEmpty(Standard_False)) {
|
||||
// Message::DefaultMessenger() <<
|
||||
// " ** SendAll has produced Check Messages : **"<<endl;
|
||||
// checks.Print (sout,model,Standard_False);
|
||||
// }
|
||||
return checks;
|
||||
}
|
||||
|
||||
|
||||
// .... SendSelected : Donnees a tranferer dans G, filtrees par iter,
|
||||
// aucun split, envoi sur fichier
|
||||
|
||||
Interface_CheckIterator IFSelect_ModelCopier::SendSelected
|
||||
(const Standard_CString filename, const Interface_Graph& G,
|
||||
const Handle(IFSelect_WorkLibrary)& WL,
|
||||
const Handle(Interface_Protocol)& protocol,
|
||||
const Interface_EntityIterator& list)
|
||||
{
|
||||
Interface_CheckIterator checks;
|
||||
checks.SetName ("X-STEP WorkSession : Send Selected");
|
||||
Message::DefaultMessenger() <<
|
||||
"** WorkSession : Sending selected data"<<endl;
|
||||
Handle(Interface_InterfaceModel) original = G.Model();
|
||||
if (original.IsNull() || protocol.IsNull() || WL.IsNull()) return checks;
|
||||
Handle(Interface_InterfaceModel) newmod = original->NewEmptyModel();
|
||||
Interface_CopyTool TC (original, protocol);
|
||||
TC.FillModel(newmod); // pour Header ...
|
||||
|
||||
// Pas de copie : AddWithRefs plus declaration de Bind
|
||||
Interface_GeneralLib lib(protocol);
|
||||
for (list.Start(); list.More(); list.Next()) {
|
||||
newmod->AddWithRefs (list.Value(),lib);
|
||||
}
|
||||
Standard_Integer i, nb = newmod->NbEntities();
|
||||
for (i = 1; i <= nb; i ++) TC.Bind (newmod->Value(i),newmod->Value(i));
|
||||
if (theremain.IsNull())
|
||||
{ theremain = new TColStd_HArray1OfInteger(0,G.Size()); theremain->Init(0); }
|
||||
|
||||
Interface_EntityIterator pipo;
|
||||
Handle(IFSelect_AppliedModifiers) applied;
|
||||
CopiedModel (G, WL,protocol, pipo,TCollection_AsciiString(filename),
|
||||
0,0,TC,newmod, applied,checks);
|
||||
// Alimenter Remaining : les entites copiees sont a noter
|
||||
Handle(Standard_Transient) ent1,ent2;
|
||||
for (Standard_Integer ic = TC.LastCopiedAfter (0,ent1,ent2); ic > 0;
|
||||
ic = TC.LastCopiedAfter (ic,ent1,ent2) ) {
|
||||
if (ic <= theremain->Upper())
|
||||
theremain->SetValue(ic,theremain->Value(ic)+1);
|
||||
}
|
||||
IFSelect_ContextWrite ctx (newmod,protocol,applied,filename);
|
||||
Standard_Boolean res = WL->WriteFile (ctx);
|
||||
Interface_CheckIterator checklst = ctx.CheckList();
|
||||
checks.Merge(checklst);
|
||||
if (!res) checks.CCheck(0)->AddFail ("SendSelected (WriteFile) has failed");
|
||||
// if (!checks.IsEmpty(Standard_False)) {
|
||||
// Message::DefaultMessenger() <<
|
||||
// " ** SendSelected has produced Check Messages : **"<<endl;
|
||||
// checks.Print (sout,original,Standard_False);
|
||||
// }
|
||||
return checks;
|
||||
}
|
||||
|
||||
|
||||
// ##########################################################################
|
||||
// ######## UN TRANSFERT UNITAIRE (avec Modifications) ########
|
||||
|
||||
void IFSelect_ModelCopier::CopiedModel
|
||||
(const Interface_Graph& G,
|
||||
const Handle(IFSelect_WorkLibrary)& WL,
|
||||
const Handle(Interface_Protocol)& protocol,
|
||||
const Interface_EntityIterator& tocopy,
|
||||
const TCollection_AsciiString& filename,
|
||||
const Standard_Integer dispnum, const Standard_Integer /* numod */,
|
||||
Interface_CopyTool& TC,
|
||||
Handle(Interface_InterfaceModel)& newmod,
|
||||
Handle(IFSelect_AppliedModifiers)& applied,
|
||||
Interface_CheckIterator& checks) const
|
||||
{
|
||||
// ... Premiere partie "standard" : remplissage du modele ...
|
||||
// On cree le Modele, on le remplit avec les Entites, et avec le Header depart
|
||||
|
||||
// ATTENTION : dispnum = 0 signifie prendre modele original, ne rien copier
|
||||
// et aussi : pas de Dispatch (envoi en bloc)
|
||||
|
||||
applied.Nullify();
|
||||
Handle(Interface_InterfaceModel) original = G.Model();
|
||||
if (dispnum > 0) {
|
||||
newmod = original->NewEmptyModel();
|
||||
TC.Clear();
|
||||
WL->CopyModel (original,newmod,tocopy,TC);
|
||||
|
||||
Handle(Standard_Transient) ent1,ent2;
|
||||
// Alimenter Remaining : les entites copiees sont a noter
|
||||
for (Standard_Integer ic = TC.LastCopiedAfter (0,ent1,ent2); ic > 0;
|
||||
ic = TC.LastCopiedAfter (ic,ent1,ent2) ) {
|
||||
if (ic <= theremain->Upper())
|
||||
theremain->SetValue(ic,theremain->Value(ic)+1);
|
||||
}
|
||||
}
|
||||
else if (newmod.IsNull()) newmod = original;
|
||||
|
||||
// ... Ensuite : On prend en compte les Model Modifiers ...
|
||||
Standard_Integer nbmod = 0;
|
||||
if (!theshareout.IsNull()) nbmod = theshareout->NbModifiers(Standard_True);
|
||||
Standard_Integer i; // svv Jan11 2000 : porting on DEC
|
||||
for (i = 1; i <= nbmod; i ++) {
|
||||
Handle(IFSelect_Modifier) unmod = theshareout->ModelModifier(i);
|
||||
|
||||
// D abord, critere Dispatch/Packet
|
||||
if (dispnum > 0)
|
||||
if (!unmod->Applies (theshareout->Dispatch(dispnum))) continue;
|
||||
IFSelect_ContextModif ctx (G,TC,filename.ToCString());
|
||||
// Ensuite, la Selection
|
||||
Handle(IFSelect_Selection) sel = unmod->Selection();
|
||||
if (!sel.IsNull()) {
|
||||
Interface_EntityIterator entiter = sel->UniqueResult(G);
|
||||
ctx.Select (entiter);
|
||||
}
|
||||
if (ctx.IsForNone()) continue;
|
||||
unmod->Perform (ctx,newmod,protocol,TC);
|
||||
Interface_CheckIterator checklst = ctx.CheckList();
|
||||
checks.Merge (checklst);
|
||||
|
||||
// Faut-il enregistrer les erreurs dans newmod ? bonne question
|
||||
// if (!checks.IsEmpty(Standard_False)) {
|
||||
// Message::DefaultMessenger() <<
|
||||
// " Messages on Copied Model n0 "<<numod<<", Dispatch Rank "<<dispnum<<endl;
|
||||
// checks.Print(sout,newmod,Standard_False);
|
||||
// }
|
||||
}
|
||||
|
||||
// ... Puis les File Modifiers : en fait, on les enregistre ...
|
||||
nbmod = 0;
|
||||
if (!theshareout.IsNull()) nbmod = theshareout->NbModifiers(Standard_False);
|
||||
if (nbmod == 0) return;
|
||||
applied = new IFSelect_AppliedModifiers (nbmod,newmod->NbEntities());
|
||||
for (i = 1; i <= nbmod; i ++) {
|
||||
Handle(IFSelect_GeneralModifier) unmod = theshareout->GeneralModifier(Standard_False,i);
|
||||
|
||||
// D abord, critere Dispatch/Packet
|
||||
if (dispnum > 0)
|
||||
if (!unmod->Applies (theshareout->Dispatch(dispnum))) continue;
|
||||
// Ensuite, la Selection
|
||||
Handle(IFSelect_Selection) sel = unmod->Selection();
|
||||
if (sel.IsNull()) applied->AddModif (unmod); // vide -> on prend tout
|
||||
else {
|
||||
Interface_EntityIterator list = sel->UniqueResult(G);
|
||||
Handle(Standard_Transient) newent;
|
||||
|
||||
// Entites designees par la Selection et Copiees ?
|
||||
// -> s ilyena au moins une, le Modifier s applique, sinon il est rejete
|
||||
// -> et cette liste est exploitable par le Modifier ...
|
||||
for (list.Start(); list.More(); list.Next()) {
|
||||
if (TC.Search (list.Value(),newent))
|
||||
applied->AddNum (newmod->Number(newent));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void IFSelect_ModelCopier::CopiedRemaining
|
||||
(const Interface_Graph& G, const Handle(IFSelect_WorkLibrary)& WL,
|
||||
Interface_CopyTool& TC, Handle(Interface_InterfaceModel)& newmod)
|
||||
{
|
||||
Handle(Interface_InterfaceModel) original = G.Model();
|
||||
// Interface_CopyTool TC(original,protocol);
|
||||
newmod = original->NewEmptyModel();
|
||||
TC.Clear();
|
||||
Interface_EntityIterator tocopy;
|
||||
Standard_Integer nb = G.Size();
|
||||
theremain = new TColStd_HArray1OfInteger(0,nb+1); theremain->Init(0);
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
if (G.Status(i) == 0) tocopy.AddItem (original->Value(i));
|
||||
else theremain->SetValue(i,-1); // ?? -1
|
||||
}
|
||||
WL->CopyModel (original,newmod,tocopy,TC);
|
||||
|
||||
if (newmod->NbEntities() == 0) newmod.Nullify();
|
||||
else {
|
||||
// CE QUI SUIT NE DOIT PAS ETRE SUPPRIME ! cf theremain
|
||||
Handle(Standard_Transient) ent1,ent2;
|
||||
for (Standard_Integer ic = TC.LastCopiedAfter (0,ent1,ent2); ic > 0;
|
||||
ic = TC.LastCopiedAfter (ic,ent1,ent2) ) {
|
||||
if (ic <= theremain->Upper())
|
||||
theremain->SetValue(ic,1);
|
||||
}
|
||||
// qq impressions de mise au point
|
||||
#ifdef MISOPOINT
|
||||
cout << " Remaining Model : " << newmod->NbEntities() << " Entities"<<endl;
|
||||
Standard_Integer ne = 0;
|
||||
for (i = 1; i <= nb; i ++) {
|
||||
if (theremain->Value(i) == 0) {
|
||||
if (ne == 0) cout << " Refractaires : ";
|
||||
ne ++; cout << " " << i;
|
||||
}
|
||||
}
|
||||
if (ne > 0) cout << " -- " << ne << " Entities" << endl;
|
||||
else cout<<" -- Remaining data complete"<<endl;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_ModelCopier::SetRemaining
|
||||
(Interface_Graph& CG) const
|
||||
{
|
||||
Standard_Integer nb = CG.Size();
|
||||
if (theremain.IsNull()) return (nb == 0);
|
||||
if (nb != theremain->Upper()) return Standard_False;
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
if (CG.Status(i) >= 0) CG.SetStatus(i,CG.Status(i)+theremain->Value(i));
|
||||
}
|
||||
theremain->Init(0);
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
// ##########################################################################
|
||||
// ######## RESULTAT de la Memorisation des Transferts ########
|
||||
|
||||
Standard_Integer IFSelect_ModelCopier::NbFiles () const
|
||||
{ return thefilemodels.Length(); }
|
||||
|
||||
TCollection_AsciiString IFSelect_ModelCopier::FileName
|
||||
(const Standard_Integer num) const
|
||||
{ return thefilenames.Value(num); }
|
||||
|
||||
Handle(Interface_InterfaceModel) IFSelect_ModelCopier::FileModel
|
||||
(const Standard_Integer num) const
|
||||
{ return thefilemodels.Value(num); }
|
||||
|
||||
Handle(IFSelect_AppliedModifiers) IFSelect_ModelCopier::AppliedModifiers
|
||||
(const Standard_Integer num) const
|
||||
{ return theapplieds.Value(num); }
|
||||
|
||||
|
||||
void IFSelect_ModelCopier::BeginSentFiles
|
||||
(const Handle(IFSelect_ShareOut)& sho, const Standard_Boolean record)
|
||||
{
|
||||
thesentfiles.Nullify();
|
||||
if (record) thesentfiles = new TColStd_HSequenceOfHAsciiString();
|
||||
// et numerotation des fichiers par defaut : detenue par ShareOut
|
||||
if (sho.IsNull()) return;
|
||||
Standard_Integer lastrun = sho->LastRun();
|
||||
sho->ClearResult (Standard_True);
|
||||
sho->SetLastRun (lastrun); // on ne s interesse quaux numeros
|
||||
}
|
||||
|
||||
void IFSelect_ModelCopier::AddSentFile (const Standard_CString filename)
|
||||
{ if (!thesentfiles.IsNull())
|
||||
thesentfiles->Append(new TCollection_HAsciiString(filename)); }
|
||||
|
||||
Handle(TColStd_HSequenceOfHAsciiString) IFSelect_ModelCopier::SentFiles () const
|
||||
{ return thesentfiles; }
|
@@ -1,278 +0,0 @@
|
||||
// Created on: 1993-08-26
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1993-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_ModelCopier_HeaderFile
|
||||
#define _IFSelect_ModelCopier_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <IFSelect_SequenceOfInterfaceModel.hxx>
|
||||
#include <TColStd_SequenceOfAsciiString.hxx>
|
||||
#include <IFSelect_SequenceOfAppliedModifiers.hxx>
|
||||
#include <TColStd_HArray1OfInteger.hxx>
|
||||
#include <TColStd_HSequenceOfHAsciiString.hxx>
|
||||
#include <MMgt_TShared.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <Standard_CString.hxx>
|
||||
class IFSelect_ShareOut;
|
||||
class TCollection_AsciiString;
|
||||
class Interface_InterfaceModel;
|
||||
class IFSelect_AppliedModifiers;
|
||||
class Interface_CheckIterator;
|
||||
class IFSelect_ShareOutResult;
|
||||
class IFSelect_WorkLibrary;
|
||||
class Interface_Protocol;
|
||||
class Interface_CopyTool;
|
||||
class Interface_Graph;
|
||||
class Interface_EntityIterator;
|
||||
|
||||
|
||||
class IFSelect_ModelCopier;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_ModelCopier, MMgt_TShared)
|
||||
|
||||
//! This class performs the Copy operations involved by the
|
||||
//! description of a ShareOut (evaluated by a ShareOutResult)
|
||||
//! plus, if there are, the Modifications on the results, with
|
||||
//! the help of Modifiers. Each Modifier can work on one or more
|
||||
//! resulting packets, accoding its criteria : it operates on a
|
||||
//! Model once copied and filled with the content of the packet.
|
||||
//!
|
||||
//! Modifiers can be :
|
||||
//! - Model Modifiers, inheriting from the specific class Modifier
|
||||
//! able to run on the content of a Model (header or entities),
|
||||
//! activated by the ModelCopier itself
|
||||
//! - File Modifiers, inheriting directly from GeneralModifier,
|
||||
//! intended to be activated under the control of a WorkLibrary,
|
||||
//! once the Model has been produced (i.e. to act on output
|
||||
//! format, or other specific file features)
|
||||
//!
|
||||
//! The Copy operations can be :
|
||||
//! - immediately put to files : for each packet, a Model is
|
||||
//! created and filled, then the file is output, at that's all
|
||||
//! - memorized : for each packet, a Model is created and filled,
|
||||
//! it is memorized with the corresponding file name.
|
||||
//! it is possible to query the result of memorization (list of
|
||||
//! produced Models and their file names)
|
||||
//! -> it is also possible to send it into the files :
|
||||
//! once files are written, the result is cleared
|
||||
//!
|
||||
//! In addition, a list of really written files is managed :
|
||||
//! A first call to BeginSentFiles clears the list and commands,
|
||||
//! either to begin a new list, or to stop recording it. A call
|
||||
//! to SentFiles returns the list (if recording has been required)
|
||||
//! This list allows to globally exploit the set of produced files
|
||||
//!
|
||||
//! Remark : For operations which concern specific Entities, see
|
||||
//! also in package IFAdapt : a sub-class of ModelCopier allows
|
||||
//! to work with EntityModifier, in addition to Modifier itself
|
||||
//! which still applies to a whole copied Model.
|
||||
class IFSelect_ModelCopier : public MMgt_TShared
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates an empty ModelCopier
|
||||
Standard_EXPORT IFSelect_ModelCopier();
|
||||
|
||||
//! Sets the ShareOut, which is used to define Modifiers to apply
|
||||
Standard_EXPORT void SetShareOut (const Handle(IFSelect_ShareOut)& sho);
|
||||
|
||||
//! Clears the list of produced Models
|
||||
Standard_EXPORT void ClearResult();
|
||||
|
||||
//! Records a new File to be sent, as a couple
|
||||
//! (Name as AsciiString, Content as InterfaceModel)
|
||||
//! Returns True if Done, False if <filename> is already attached
|
||||
//! to another File
|
||||
Standard_EXPORT Standard_Boolean AddFile (const TCollection_AsciiString& filename, const Handle(Interface_InterfaceModel)& content);
|
||||
|
||||
//! Changes the Name attached to a File which was formerly defined
|
||||
//! by a call to AddFile
|
||||
//! Returns True if Done, False else : if <num> out of range or if
|
||||
//! the new <filename> is already attached to another File
|
||||
//! Remark : Giving an empty File Name is equivalent to ClearFile
|
||||
Standard_EXPORT Standard_Boolean NameFile (const Standard_Integer num, const TCollection_AsciiString& filename);
|
||||
|
||||
//! Clears the Name attached to a File which was formerly defined
|
||||
//! by a call to AddFile. This Clearing can be undone by a call to
|
||||
//! NameFile (with same <num>)
|
||||
//! Returns True if Done, False else : if <num> is out of range
|
||||
Standard_EXPORT Standard_Boolean ClearFile (const Standard_Integer num);
|
||||
|
||||
//! Sets a list of File Modifiers to be applied on a file
|
||||
Standard_EXPORT Standard_Boolean SetAppliedModifiers (const Standard_Integer num, const Handle(IFSelect_AppliedModifiers)& applied);
|
||||
|
||||
//! Clears the list of File Modifiers to be applied on a file
|
||||
Standard_EXPORT Standard_Boolean ClearAppliedModifiers (const Standard_Integer num);
|
||||
|
||||
//! Performs the Copy Operations, which include the Modifications
|
||||
//! defined by the list of Modifiers. Memorizes the result, as a
|
||||
//! list of InterfaceModels with the corresponding FileNames
|
||||
//! They can then be sent, by the method Send, or queried
|
||||
//! Copy calls internal method Copying.
|
||||
//! Returns the produced CheckList
|
||||
Standard_EXPORT Interface_CheckIterator Copy (IFSelect_ShareOutResult& eval, const Handle(IFSelect_WorkLibrary)& WL, const Handle(Interface_Protocol)& protocol);
|
||||
|
||||
//! Sends the formerly defined results (see method Copy) to files,
|
||||
//! then clears it
|
||||
//! Remark : A Null File Name cause file to be not produced
|
||||
Standard_EXPORT Interface_CheckIterator SendCopied (const Handle(IFSelect_WorkLibrary)& WL, const Handle(Interface_Protocol)& protocol);
|
||||
|
||||
//! Performs the Copy Operations (which include the Modifications)
|
||||
//! and Sends the result on files, without memorizing it.
|
||||
//! (the memorized result is ignored : neither queried not filled)
|
||||
Standard_EXPORT Interface_CheckIterator Send (IFSelect_ShareOutResult& eval, const Handle(IFSelect_WorkLibrary)& WL, const Handle(Interface_Protocol)& protocol);
|
||||
|
||||
//! Sends a model (defined in <G>) into one file, without managing
|
||||
//! remaining data, already sent files, etc. Applies the Model and
|
||||
//! File Modifiers.
|
||||
//! Returns True if well done, False else
|
||||
Standard_EXPORT Interface_CheckIterator SendAll (const Standard_CString filename, const Interface_Graph& G, const Handle(IFSelect_WorkLibrary)& WL, const Handle(Interface_Protocol)& protocol);
|
||||
|
||||
//! Sends a part of a model into one file. Model is gotten from
|
||||
//! <G>, the part is defined in <iter>.
|
||||
//! Remaining data are managed and can be later be worked on.
|
||||
//! Returns True if well done, False else
|
||||
Standard_EXPORT Interface_CheckIterator SendSelected (const Standard_CString filename, const Interface_Graph& G, const Handle(IFSelect_WorkLibrary)& WL, const Handle(Interface_Protocol)& protocol, const Interface_EntityIterator& iter);
|
||||
|
||||
//! Produces a Model copied from the Remaining List as <newmod>
|
||||
//! <newmod> is a Null Handle if this list is empty
|
||||
//! <WL> performs the copy by using <TC>
|
||||
//! <TC> is assumed to have been defined with the starting model
|
||||
//! same as defined by <G>.
|
||||
Standard_EXPORT void CopiedRemaining (const Interface_Graph& G, const Handle(IFSelect_WorkLibrary)& WL, Interface_CopyTool& TC, Handle(Interface_InterfaceModel)& newmod);
|
||||
|
||||
//! Updates Graph status for remaining data, for each entity :
|
||||
//! - Entities just Sent to file or Copied (by CopiedRemaining)
|
||||
//! have their status set to 1
|
||||
//! - the other keep their former status (1 for Send/Copied,
|
||||
//! 0 for Remaining)
|
||||
//! These status are computed by Copying/Sending/CopiedRemaining
|
||||
//! Then, SetRemaining updates graph status, and mustr be called
|
||||
//! just after one of these method has been called
|
||||
//! Returns True if done, False if remaining info if not in phase
|
||||
//! which the Graph (not same counts of items)
|
||||
Standard_EXPORT Standard_Boolean SetRemaining (Interface_Graph& CG) const;
|
||||
|
||||
//! Returns the count of Files produced, i.e. the count of Models
|
||||
//! memorized (produced by the mmethod Copy) with their file names
|
||||
Standard_EXPORT Standard_Integer NbFiles() const;
|
||||
|
||||
//! Returns the File Name for a file given its rank
|
||||
//! It is empty after a call to ClearFile on same <num>
|
||||
Standard_EXPORT TCollection_AsciiString FileName (const Standard_Integer num) const;
|
||||
|
||||
//! Returns the content of a file before sending, under the form
|
||||
//! of an InterfaceModel, given its rank
|
||||
Standard_EXPORT Handle(Interface_InterfaceModel) FileModel (const Standard_Integer num) const;
|
||||
|
||||
//! Returns the list of File Modifiers to be applied on a file
|
||||
//! when it will be sent, as computed by CopiedModel :
|
||||
//! If it is a null handle, no File Modifier has to be applied.
|
||||
Standard_EXPORT Handle(IFSelect_AppliedModifiers) AppliedModifiers (const Standard_Integer num) const;
|
||||
|
||||
//! Begins a sequence of recording the really sent files
|
||||
//! <sho> : the default file numbering is cleared
|
||||
//! If <record> is False, clears the list and stops recording
|
||||
//! If <record> is True, clears the list and commands recording
|
||||
//! Creation time corresponds to "stop recording"
|
||||
Standard_EXPORT void BeginSentFiles (const Handle(IFSelect_ShareOut)& sho, const Standard_Boolean record);
|
||||
|
||||
//! Adds the name of a just sent file, if BeginSentFiles
|
||||
//! has commanded recording; else does nothing
|
||||
//! It is called by methods SendCopied Sending
|
||||
Standard_EXPORT void AddSentFile (const Standard_CString filename);
|
||||
|
||||
//! Returns the list of recorded names of sent files. Can be empty
|
||||
//! (if no file has been sent). Returns a Null Handle if
|
||||
//! BeginSentFiles has stopped recording.
|
||||
Standard_EXPORT Handle(TColStd_HSequenceOfHAsciiString) SentFiles() const;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_ModelCopier,MMgt_TShared)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
//! Internal routine which does the effective Copy. It allows to
|
||||
//! work, either with a standard CopyTool, or a specialised one
|
||||
//! Copying itself is done by <WL> which uses a CopyTool
|
||||
Standard_EXPORT Interface_CheckIterator Copying (IFSelect_ShareOutResult& eval, const Handle(IFSelect_WorkLibrary)& WL, const Handle(Interface_Protocol)& protocol, Interface_CopyTool& TC);
|
||||
|
||||
//! Internal routine which does the effective Send. It allows to
|
||||
//! work, either with a standard CopyTool, or a specialised one
|
||||
Standard_EXPORT Interface_CheckIterator Sending (IFSelect_ShareOutResult& eval, const Handle(IFSelect_WorkLibrary)& WL, const Handle(Interface_Protocol)& protocol, Interface_CopyTool& TC);
|
||||
|
||||
//! Performs the Copy of a unitary Packet
|
||||
//! Input parameters are :
|
||||
//! <G> is the graph which defines the starting entities, it
|
||||
//! contains the original InterfaceModel
|
||||
//! <WL> performs the copy by using <TC>
|
||||
//! <protocol> is the used protocol (can be usefull for Modifiers)
|
||||
//! <topcopy> is the list of Entities which are the Roots of the
|
||||
//! packet to be copied
|
||||
//! <filename> is the name of the file which will receive it
|
||||
//! <dispid> is the Identifier of the Dispatch which have produced
|
||||
//! this packet, <numod> is the rank of the packet for this
|
||||
//! Dispatch
|
||||
//! <TC> is a CopyTool, which performs the copy
|
||||
//!
|
||||
//! Returned values (as arguments) are :
|
||||
//! <newmod> is the result of the copy, as a new InterfaceModel on
|
||||
//! which Model Modifiers have already been applied (if there are)
|
||||
//! <applied> determines the File Modifiers which remain to be
|
||||
//! applied (when the file itself will be output) : for each File
|
||||
//! Modifier recorded in <me>, <applied>'s Value is :
|
||||
//! - Null if this Modifier has not to be applied
|
||||
//! - an empty list if this Modifier has to be applied without
|
||||
//! distinguishing specific entities
|
||||
//! - a list of numbers of entities in <model> if this Modifier
|
||||
//! concerns particularly these entities (which are the results
|
||||
//! of copying the result of its input selection)
|
||||
//! <checks> is the produced Check List (by Modifiers as required)
|
||||
//!
|
||||
//! Warning : File Modifiers are evaluated at the time of Copy itself
|
||||
//! If their list is changed between this Copy and the Sending
|
||||
//! itself of the file, these changes are ignored
|
||||
Standard_EXPORT void CopiedModel (const Interface_Graph& G, const Handle(IFSelect_WorkLibrary)& WL, const Handle(Interface_Protocol)& protocol, const Interface_EntityIterator& topcopy, const TCollection_AsciiString& filename, const Standard_Integer dispnum, const Standard_Integer numod, Interface_CopyTool& TC, Handle(Interface_InterfaceModel)& newmod, Handle(IFSelect_AppliedModifiers)& applied, Interface_CheckIterator& checks) const;
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
IFSelect_SequenceOfInterfaceModel thefilemodels;
|
||||
TColStd_SequenceOfAsciiString thefilenames;
|
||||
IFSelect_SequenceOfAppliedModifiers theapplieds;
|
||||
Handle(IFSelect_ShareOut) theshareout;
|
||||
Handle(TColStd_HArray1OfInteger) theremain;
|
||||
Handle(TColStd_HSequenceOfHAsciiString) thesentfiles;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_ModelCopier_HeaderFile
|
@@ -1,41 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
//#include <IFSelect_ModelModifier.ixx>
|
||||
#include <Interface_Check.hxx>
|
||||
|
||||
IFSelect_ModelModifier::IFSelect_ModelModifier (const Standard_Boolean grf)
|
||||
: IFSelect_Modifier (grf) { }
|
||||
|
||||
void IFSelect_ModelModifier::Perform
|
||||
(IFSelect_ContextModif& ctx,
|
||||
const Handle(Interface_InterfaceModel)& target,
|
||||
const Handle(Interface_Protocol)& protocol,
|
||||
Interface_CopyTool& TC) const
|
||||
{
|
||||
ctx.TraceModifier(this);
|
||||
Handle(Model) targ = Handle(Model)::DownCast(target);
|
||||
Handle(Proto) prot = Handle(Proto)::DownCast(protocol);
|
||||
if (targ.IsNull()) {
|
||||
ctx.CCheck()->AddFail("Model to Modify : unproper type");
|
||||
return;
|
||||
}
|
||||
PerformProtocol (ctx,targ,prot,TC);
|
||||
}
|
||||
|
||||
void IFSelect_ModelModifier::PerformProtocol
|
||||
(IFSelect_ContextModif& ctx,
|
||||
const Handle(Model)& target,
|
||||
const Handle(Proto)& protocol,
|
||||
Interface_CopyTool& TC) const
|
||||
{ ctx.SetProtocol(protocol); Performing (ctx,target,TC); }
|
@@ -1,56 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFSelect_ContextModif.hxx>
|
||||
#include <IFSelect_EditForm.hxx>
|
||||
#include <IFSelect_ModifEditForm.hxx>
|
||||
#include <Interface_CopyTool.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Interface_Protocol.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_ModifEditForm,IFSelect_Modifier)
|
||||
|
||||
IFSelect_ModifEditForm::IFSelect_ModifEditForm
|
||||
(const Handle(IFSelect_EditForm)& editform)
|
||||
: IFSelect_Modifier (Standard_False) { theedit = editform; }
|
||||
|
||||
Handle(IFSelect_EditForm) IFSelect_ModifEditForm::EditForm () const
|
||||
{ return theedit; }
|
||||
|
||||
|
||||
void IFSelect_ModifEditForm::Perform
|
||||
(IFSelect_ContextModif& ctx,
|
||||
const Handle(Interface_InterfaceModel)& target,
|
||||
const Handle(Interface_Protocol)& /*protocol*/,
|
||||
Interface_CopyTool& /*TC*/) const
|
||||
{
|
||||
for (ctx.Start(); ctx.More(); ctx.Next()) {
|
||||
Standard_Boolean done = theedit->ApplyData(ctx.ValueResult(),target);
|
||||
if (done) ctx.Trace();
|
||||
else ctx.AddWarning (ctx.ValueResult(),"EditForm could not be applied");
|
||||
}
|
||||
}
|
||||
|
||||
TCollection_AsciiString IFSelect_ModifEditForm::Label () const
|
||||
{
|
||||
Standard_CString editlab = theedit->Label();
|
||||
TCollection_AsciiString lab ("Apply EditForm");
|
||||
if (editlab && editlab[0] != '\0') {
|
||||
lab.AssignCat (" : ");
|
||||
lab.AssignCat (editlab);
|
||||
}
|
||||
return lab;
|
||||
}
|
@@ -1,78 +0,0 @@
|
||||
// Created on: 1998-02-27
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1998-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_ModifEditForm_HeaderFile
|
||||
#define _IFSelect_ModifEditForm_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <IFSelect_Modifier.hxx>
|
||||
class IFSelect_EditForm;
|
||||
class IFSelect_ContextModif;
|
||||
class Interface_InterfaceModel;
|
||||
class Interface_Protocol;
|
||||
class Interface_CopyTool;
|
||||
class TCollection_AsciiString;
|
||||
|
||||
|
||||
class IFSelect_ModifEditForm;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_ModifEditForm, IFSelect_Modifier)
|
||||
|
||||
//! This modifier applies an EditForm on the entities selected
|
||||
class IFSelect_ModifEditForm : public IFSelect_Modifier
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates a ModifEditForm. It may not change the graph
|
||||
Standard_EXPORT IFSelect_ModifEditForm(const Handle(IFSelect_EditForm)& editform);
|
||||
|
||||
//! Returns the EditForm
|
||||
Standard_EXPORT Handle(IFSelect_EditForm) EditForm() const;
|
||||
|
||||
//! Acts by applying an EditForm to entities, selected or all model
|
||||
Standard_EXPORT void Perform (IFSelect_ContextModif& ctx, const Handle(Interface_InterfaceModel)& target, const Handle(Interface_Protocol)& protocol, Interface_CopyTool& TC) const Standard_OVERRIDE;
|
||||
|
||||
//! Returns Label as "Apply EditForm <+ label of EditForm>"
|
||||
Standard_EXPORT TCollection_AsciiString Label() const Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_ModifEditForm,IFSelect_Modifier)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
Handle(IFSelect_EditForm) theedit;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_ModifEditForm_HeaderFile
|
@@ -1,46 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFSelect_ContextModif.hxx>
|
||||
#include <IFSelect_ModifReorder.hxx>
|
||||
#include <Interface_CopyTool.hxx>
|
||||
#include <Interface_EntityIterator.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Interface_Protocol.hxx>
|
||||
#include <Interface_ShareTool.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_ModifReorder,IFSelect_Modifier)
|
||||
|
||||
IFSelect_ModifReorder::IFSelect_ModifReorder (const Standard_Boolean rootlast)
|
||||
: IFSelect_Modifier (Standard_True) { thertl = rootlast; }
|
||||
|
||||
void IFSelect_ModifReorder::Perform (IFSelect_ContextModif& ctx,
|
||||
const Handle(Interface_InterfaceModel)& target,
|
||||
const Handle(Interface_Protocol)& /*protocol*/,
|
||||
Interface_CopyTool& /*TC*/) const
|
||||
{
|
||||
Interface_ShareTool sht (ctx.OriginalGraph());
|
||||
Interface_EntityIterator list = sht.All (ctx.OriginalModel(),thertl);
|
||||
target->ClearEntities();
|
||||
for (list.Start(); list.More(); list.Next()) target->AddEntity (list.Value());
|
||||
}
|
||||
|
||||
TCollection_AsciiString IFSelect_ModifReorder::Label () const
|
||||
{
|
||||
Standard_CString astr = (Standard_CString ) ( thertl ? "Reorder, Roots last" : "Reorder, Roots first");
|
||||
return TCollection_AsciiString( astr ) ;
|
||||
// ( thertl ? "Reorder, Roots last" : "Reorder, Roots first");
|
||||
}
|
@@ -1,83 +0,0 @@
|
||||
// Created on: 1996-03-15
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1996-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_ModifReorder_HeaderFile
|
||||
#define _IFSelect_ModifReorder_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <Standard_Boolean.hxx>
|
||||
#include <IFSelect_Modifier.hxx>
|
||||
class IFSelect_ContextModif;
|
||||
class Interface_InterfaceModel;
|
||||
class Interface_Protocol;
|
||||
class Interface_CopyTool;
|
||||
class TCollection_AsciiString;
|
||||
|
||||
|
||||
class IFSelect_ModifReorder;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_ModifReorder, IFSelect_Modifier)
|
||||
|
||||
//! This modifier reorders a whole model from its roots, i.e.
|
||||
//! according to <rootlast> status, it considers each of its
|
||||
//! roots, then it orders all its shared entities at any level,
|
||||
//! the result begins by the lower level entities ... ends by
|
||||
//! the roots.
|
||||
class IFSelect_ModifReorder : public IFSelect_Modifier
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates a ModifReorder. It may change the graph (it does !)
|
||||
//! If <rootlast> is True (D), roots are set at the end of packets
|
||||
//! Else, they are set at beginning (as done by AddWithRefs)
|
||||
Standard_EXPORT IFSelect_ModifReorder(const Standard_Boolean rootlast = Standard_True);
|
||||
|
||||
//! Acts by computing orders (by method All from ShareTool) then
|
||||
//! forcing them in the model. Remark that selection is ignored :
|
||||
//! ALL the model is processed in once
|
||||
Standard_EXPORT void Perform (IFSelect_ContextModif& ctx, const Handle(Interface_InterfaceModel)& target, const Handle(Interface_Protocol)& protocol, Interface_CopyTool& TC) const Standard_OVERRIDE;
|
||||
|
||||
//! Returns Label as "Reorder, Roots (last or first)"
|
||||
Standard_EXPORT TCollection_AsciiString Label() const Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_ModifReorder,IFSelect_Modifier)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
Standard_Boolean thertl;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_ModifReorder_HeaderFile
|
@@ -1,25 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFSelect_ContextModif.hxx>
|
||||
#include <IFSelect_Modifier.hxx>
|
||||
#include <Interface_CopyTool.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Interface_Protocol.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_Modifier,IFSelect_GeneralModifier)
|
||||
|
||||
IFSelect_Modifier::IFSelect_Modifier (const Standard_Boolean grf)
|
||||
: IFSelect_GeneralModifier (grf) { }
|
@@ -1,87 +0,0 @@
|
||||
// Created on: 1993-08-26
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1993-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_Modifier_HeaderFile
|
||||
#define _IFSelect_Modifier_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <IFSelect_GeneralModifier.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
class IFSelect_ContextModif;
|
||||
class Interface_InterfaceModel;
|
||||
class Interface_Protocol;
|
||||
class Interface_CopyTool;
|
||||
|
||||
|
||||
class IFSelect_Modifier;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_Modifier, IFSelect_GeneralModifier)
|
||||
|
||||
//! This class gives a frame for Actions which can work globally
|
||||
//! on a File once completely defined (i.e. afterwards)
|
||||
//!
|
||||
//! Remark : if no Selection is set as criterium, the Modifier is
|
||||
//! set to work and should consider all the content of the Model
|
||||
//! produced.
|
||||
class IFSelect_Modifier : public IFSelect_GeneralModifier
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! This deferred method defines the action specific to each class
|
||||
//! of Modifier. It is called by a ModelCopier, once the Model
|
||||
//! generated and filled. ModelCopier has already checked the
|
||||
//! criteria (Dispatch, Model Rank, Selection) before calling it.
|
||||
//!
|
||||
//! <ctx> detains informations about original data and selection.
|
||||
//! The result of copying, on which modifications are to be done,
|
||||
//! is <target>.
|
||||
//! <TC> allows to run additional copies as required
|
||||
//!
|
||||
//! In case of Error, use methods CCheck from the ContextModif
|
||||
//! to aknowledge an entity Check or a Global Check with messages
|
||||
Standard_EXPORT virtual void Perform (IFSelect_ContextModif& ctx, const Handle(Interface_InterfaceModel)& target, const Handle(Interface_Protocol)& protocol, Interface_CopyTool& TC) const = 0;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_Modifier,IFSelect_GeneralModifier)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
//! Calls inherited Initialize, transmits to it the information
|
||||
//! <maychangegraph>
|
||||
Standard_EXPORT IFSelect_Modifier(const Standard_Boolean maychangegraph);
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_Modifier_HeaderFile
|
@@ -1,146 +0,0 @@
|
||||
// Created on: 1994-09-02
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1994-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFSelect_PacketList.hxx>
|
||||
#include <Interface_EntityIterator.hxx>
|
||||
#include <Interface_InterfaceError.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TColStd_HSequenceOfInteger.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_PacketList,MMgt_TShared)
|
||||
|
||||
IFSelect_PacketList::IFSelect_PacketList
|
||||
(const Handle(Interface_InterfaceModel)& model)
|
||||
: thedupls (0,model->NbEntities()) ,
|
||||
thepacks (100) ,
|
||||
theflags (0,model->NbEntities()) ,
|
||||
thename ("Packets")
|
||||
{
|
||||
themodel = model; thelast = 0; thebegin = Standard_False; // begin-begin
|
||||
thedupls.Init(0); theflags.Init(0);
|
||||
}
|
||||
|
||||
void IFSelect_PacketList::SetName (const Standard_CString name)
|
||||
{ thename.Clear(); thename.AssignCat (name); }
|
||||
|
||||
Standard_CString IFSelect_PacketList::Name () const
|
||||
{ return thename.ToCString(); }
|
||||
|
||||
Handle(Interface_InterfaceModel) IFSelect_PacketList::Model () const
|
||||
{ return themodel; }
|
||||
|
||||
void IFSelect_PacketList::AddPacket ()
|
||||
{
|
||||
Standard_Integer nbl = thepacks.NbEntities();
|
||||
Standard_Integer nbe = theflags.Upper();
|
||||
for (Standard_Integer i = 1; i <= nbe; i ++) theflags.SetValue(i,0);
|
||||
|
||||
if (thelast >= nbl) thepacks.SetNbEntities (nbl*2);
|
||||
|
||||
if (!thebegin) thelast ++;
|
||||
thepacks.SetNumber (thelast);
|
||||
thebegin = Standard_False;
|
||||
}
|
||||
|
||||
|
||||
void IFSelect_PacketList::Add
|
||||
(const Handle(Standard_Transient)& ent)
|
||||
{
|
||||
Standard_Integer num = themodel->Number(ent);
|
||||
if (num == 0) Interface_InterfaceError::Raise
|
||||
("PacketList:Add, Entity not in Model");
|
||||
if (thelast == 0) Interface_InterfaceError::Raise
|
||||
("PacketList:Add, no Packet yet added");
|
||||
if (theflags(num) != 0) return;
|
||||
theflags(num) = 1;
|
||||
thedupls(num) ++;
|
||||
thepacks.Add(num);
|
||||
thebegin = Standard_False;
|
||||
}
|
||||
|
||||
void IFSelect_PacketList::AddList
|
||||
(const Handle(TColStd_HSequenceOfTransient)& list)
|
||||
{
|
||||
if (list.IsNull()) return;
|
||||
Standard_Integer i , nb = list->Length();
|
||||
thepacks.Reservate (nb+1);
|
||||
for (i = 1; i <= nb; i ++) Add (list->Value(i));
|
||||
}
|
||||
|
||||
|
||||
Standard_Integer IFSelect_PacketList::NbPackets () const
|
||||
{ return (thebegin ? thelast-1 : thelast); }
|
||||
|
||||
Standard_Integer IFSelect_PacketList::NbEntities
|
||||
(const Standard_Integer numpack) const
|
||||
{
|
||||
if (numpack <= 0 || numpack > NbPackets()) return 0;
|
||||
Interface_IntList lisi(thepacks,Standard_False); lisi.SetNumber (numpack);
|
||||
return lisi.Length();
|
||||
}
|
||||
|
||||
Interface_EntityIterator IFSelect_PacketList::Entities
|
||||
(const Standard_Integer numpack) const
|
||||
{
|
||||
Interface_EntityIterator list;
|
||||
if (numpack <= 0 || numpack > NbPackets()) return list;
|
||||
Interface_IntList lisi(thepacks,Standard_False); lisi.SetNumber (numpack);
|
||||
Standard_Integer i , nb = lisi.Length();
|
||||
for (i = 1; i <= nb; i ++)
|
||||
list.AddItem(themodel->Value(lisi.Value(i)));
|
||||
return list;
|
||||
}
|
||||
|
||||
Standard_Integer IFSelect_PacketList::HighestDuplicationCount () const
|
||||
{
|
||||
Standard_Integer i , nb = themodel->NbEntities();
|
||||
Standard_Integer high = 0;
|
||||
for (i = 1; i <= nb; i ++) {
|
||||
Standard_Integer j = thedupls.Value(i);
|
||||
if (j > high) high = j;
|
||||
}
|
||||
return high;
|
||||
}
|
||||
|
||||
Standard_Integer IFSelect_PacketList::NbDuplicated
|
||||
(const Standard_Integer newcount, const Standard_Boolean andmore) const
|
||||
{
|
||||
Standard_Integer i, nb = themodel->NbEntities();
|
||||
Standard_Integer nbdu = 0;
|
||||
|
||||
for (i = 1; i <= nb; i ++) {
|
||||
Standard_Integer j = thedupls.Value(i);
|
||||
if (j == newcount || (j > newcount && andmore)) nbdu ++;
|
||||
}
|
||||
return nbdu;
|
||||
}
|
||||
|
||||
Interface_EntityIterator IFSelect_PacketList::Duplicated
|
||||
(const Standard_Integer newcount, const Standard_Boolean andmore) const
|
||||
{
|
||||
Standard_Integer nb = themodel->NbEntities();
|
||||
Interface_EntityIterator list;
|
||||
|
||||
Standard_Integer i;
|
||||
for (i = 1; i <= nb; i ++) {
|
||||
Standard_Integer j = thedupls.Value(i);
|
||||
if (j == newcount || (j > newcount && andmore)) list.AddItem(themodel->Value(i));
|
||||
}
|
||||
return list;
|
||||
}
|
@@ -1,136 +0,0 @@
|
||||
// Created on: 1994-09-02
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1994-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_PacketList_HeaderFile
|
||||
#define _IFSelect_PacketList_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <TColStd_Array1OfInteger.hxx>
|
||||
#include <Interface_IntList.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
#include <MMgt_TShared.hxx>
|
||||
#include <Standard_CString.hxx>
|
||||
#include <TColStd_HSequenceOfTransient.hxx>
|
||||
class Interface_InterfaceModel;
|
||||
class Interface_InterfaceError;
|
||||
class Standard_Transient;
|
||||
class Interface_EntityIterator;
|
||||
|
||||
|
||||
class IFSelect_PacketList;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_PacketList, MMgt_TShared)
|
||||
|
||||
//! This class gives a simple way to return then consult a
|
||||
//! list of packets, determined from the content of a Model,
|
||||
//! by various criteria.
|
||||
//!
|
||||
//! It allows to describe several lists with entities from a
|
||||
//! given model, possibly more than one list knowing every entity,
|
||||
//! and to determine the remaining list (entities in no lists) and
|
||||
//! the duplications (with their count).
|
||||
class IFSelect_PacketList : public MMgt_TShared
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates a PackList, empty, ready to receive entities from a
|
||||
//! given Model
|
||||
Standard_EXPORT IFSelect_PacketList(const Handle(Interface_InterfaceModel)& model);
|
||||
|
||||
//! Sets a name to a packet list : this makes easier a general
|
||||
//! routine to print it. Default is "Packets"
|
||||
Standard_EXPORT void SetName (const Standard_CString name);
|
||||
|
||||
//! Returns the recorded name for a packet list
|
||||
Standard_EXPORT Standard_CString Name() const;
|
||||
|
||||
//! Returns the Model of reference
|
||||
Standard_EXPORT Handle(Interface_InterfaceModel) Model() const;
|
||||
|
||||
//! Declares a new Packet, ready to be filled
|
||||
//! The entities to be added will be added to this Packet
|
||||
Standard_EXPORT void AddPacket();
|
||||
|
||||
//! Adds an entity from the Model into the current packet for Add
|
||||
Standard_EXPORT void Add (const Handle(Standard_Transient)& ent);
|
||||
|
||||
//! Adds an list of entities into the current packet for Add
|
||||
Standard_EXPORT void AddList (const Handle(TColStd_HSequenceOfTransient)& list);
|
||||
|
||||
//! Returns the count of non-empty packets
|
||||
Standard_EXPORT Standard_Integer NbPackets() const;
|
||||
|
||||
//! Returns the count of entities in a Packet given its rank, or 0
|
||||
Standard_EXPORT Standard_Integer NbEntities (const Standard_Integer numpack) const;
|
||||
|
||||
//! Returns the content of a Packet given its rank
|
||||
//! Null Handle if <numpack> is out of range
|
||||
Standard_EXPORT Interface_EntityIterator Entities (const Standard_Integer numpack) const;
|
||||
|
||||
//! Returns the highest number of packets which know a same entity
|
||||
//! For no duplication, should be one
|
||||
Standard_EXPORT Standard_Integer HighestDuplicationCount() const;
|
||||
|
||||
//! Returns the count of entities duplicated :
|
||||
//! <count> times, if <andmore> is False, or
|
||||
//! <count> or more times, if <andmore> is True
|
||||
//! See Duplicated for more details
|
||||
Standard_EXPORT Standard_Integer NbDuplicated (const Standard_Integer count, const Standard_Boolean andmore) const;
|
||||
|
||||
//! Returns a list of entities duplicated :
|
||||
//! <count> times, if <andmore> is False, or
|
||||
//! <count> or more times, if <andmore> is True
|
||||
//! Hence, count=2 & andmore=True gives all duplicated entities
|
||||
//! count=1 gives non-duplicated entities (in only one packet)
|
||||
//! count=0 gives remaining entities (in no packet at all)
|
||||
Standard_EXPORT Interface_EntityIterator Duplicated (const Standard_Integer count, const Standard_Boolean andmore) const;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_PacketList,MMgt_TShared)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
Handle(Interface_InterfaceModel) themodel;
|
||||
TColStd_Array1OfInteger thedupls;
|
||||
Interface_IntList thepacks;
|
||||
TColStd_Array1OfInteger theflags;
|
||||
Standard_Integer thelast;
|
||||
Standard_Boolean thebegin;
|
||||
TCollection_AsciiString thename;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_PacketList_HeaderFile
|
@@ -1,106 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFSelect_EditForm.hxx>
|
||||
#include <IFSelect_ParamEditor.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Interface_Static.hxx>
|
||||
#include <Interface_TypedValue.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
#include <TCollection_HAsciiString.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_ParamEditor,IFSelect_Editor)
|
||||
|
||||
IFSelect_ParamEditor::IFSelect_ParamEditor
|
||||
(const Standard_Integer nbmax, const Standard_CString label)
|
||||
: IFSelect_Editor (nbmax) , thelabel (label)
|
||||
{
|
||||
SetNbValues (0);
|
||||
if (thelabel.Length() == 0) thelabel.AssignCat ("Param Editor");
|
||||
}
|
||||
|
||||
void IFSelect_ParamEditor::AddValue
|
||||
(const Handle(Interface_TypedValue)& val, const Standard_CString shortname)
|
||||
{
|
||||
SetNbValues (NbValues() + 1);
|
||||
SetValue (NbValues(), val, shortname);
|
||||
}
|
||||
|
||||
void IFSelect_ParamEditor::AddConstantText
|
||||
(const Standard_CString val, const Standard_CString shortname,
|
||||
const Standard_CString longname)
|
||||
{
|
||||
Handle(Interface_TypedValue) tv = new Interface_TypedValue
|
||||
(longname[0] == '\0' ? shortname : longname);
|
||||
tv->SetCStringValue (val);
|
||||
SetNbValues (NbValues() + 1);
|
||||
SetValue (NbValues(), tv, shortname, IFSelect_EditRead);
|
||||
}
|
||||
|
||||
|
||||
TCollection_AsciiString IFSelect_ParamEditor::Label () const
|
||||
{ return thelabel; }
|
||||
|
||||
Standard_Boolean IFSelect_ParamEditor::Recognize
|
||||
(const Handle(IFSelect_EditForm)& /*form*/) const
|
||||
{ return Standard_True; } // pas de contrainte
|
||||
|
||||
Handle(TCollection_HAsciiString) IFSelect_ParamEditor::StringValue
|
||||
(const Handle(IFSelect_EditForm)& /*form*/,const Standard_Integer num) const
|
||||
{ return TypedValue(num)->HStringValue(); }
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_ParamEditor::Load
|
||||
(const Handle(IFSelect_EditForm)& form,
|
||||
const Handle(Standard_Transient)& /*ent*/,
|
||||
const Handle(Interface_InterfaceModel)& /*model*/) const
|
||||
{
|
||||
Standard_Integer i, nb = NbValues();
|
||||
for (i = 1; i <= nb; i ++) form->LoadValue (i,TypedValue(i)->HStringValue());
|
||||
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_ParamEditor::Apply
|
||||
(const Handle(IFSelect_EditForm)& form,
|
||||
const Handle(Standard_Transient)& /*ent*/,
|
||||
const Handle(Interface_InterfaceModel)& /*model*/) const
|
||||
{
|
||||
Standard_Integer i, nb = NbValues();
|
||||
for (i = 1; i <= nb; i ++)
|
||||
if (form->IsModified(i))
|
||||
TypedValue (i)->SetHStringValue (form->EditedValue(i));
|
||||
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
Handle(IFSelect_ParamEditor) IFSelect_ParamEditor::StaticEditor
|
||||
(const Handle(TColStd_HSequenceOfHAsciiString)& list,
|
||||
const Standard_CString label)
|
||||
{
|
||||
Handle(IFSelect_ParamEditor) editor;
|
||||
if (list.IsNull()) return editor;
|
||||
Standard_Integer i,nb = list->Length();
|
||||
// if (nb == 0) return editor;
|
||||
editor = new IFSelect_ParamEditor (nb+10,label);
|
||||
for (i = 1; i <= nb; i ++) {
|
||||
Handle(Interface_Static) val = Interface_Static::Static
|
||||
(list->Value(i)->ToCString());
|
||||
if (!val.IsNull()) editor->AddValue(val);
|
||||
}
|
||||
return editor;
|
||||
}
|
@@ -1,107 +0,0 @@
|
||||
// Created on: 1998-07-30
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1998-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_ParamEditor_HeaderFile
|
||||
#define _IFSelect_ParamEditor_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
#include <IFSelect_Editor.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <Standard_CString.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
#include <TColStd_HSequenceOfHAsciiString.hxx>
|
||||
class Interface_TypedValue;
|
||||
class TCollection_AsciiString;
|
||||
class IFSelect_EditForm;
|
||||
class TCollection_HAsciiString;
|
||||
class Standard_Transient;
|
||||
class Interface_InterfaceModel;
|
||||
|
||||
|
||||
class IFSelect_ParamEditor;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_ParamEditor, IFSelect_Editor)
|
||||
|
||||
//! A ParamEditor gives access for edition to a list of TypedValue
|
||||
//! (i.e. of Static too)
|
||||
//! Its definition is made of the TypedValue to edit themselves,
|
||||
//! and can add some constants, which can then be displayed but
|
||||
//! not changed (for instance, system name, processor version ...)
|
||||
//!
|
||||
//! I.E. it gives a way of editing or at least displaying
|
||||
//! parameters as global
|
||||
class IFSelect_ParamEditor : public IFSelect_Editor
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates a ParamEditor, empty, with a maximum count of params
|
||||
//! (default is 100)
|
||||
//! And a label, by default it will be "Param Editor"
|
||||
Standard_EXPORT IFSelect_ParamEditor(const Standard_Integer nbmax = 100, const Standard_CString label = "");
|
||||
|
||||
//! Adds a TypedValue
|
||||
//! By default, its short name equates its complete name, it can
|
||||
//! be explicited
|
||||
Standard_EXPORT void AddValue (const Handle(Interface_TypedValue)& val, const Standard_CString shortname = "");
|
||||
|
||||
//! Adds a Constant Text, it will be Read Only
|
||||
//! By default, its long name equates its shortname
|
||||
Standard_EXPORT void AddConstantText (const Standard_CString val, const Standard_CString shortname, const Standard_CString completename = "");
|
||||
|
||||
Standard_EXPORT TCollection_AsciiString Label() const Standard_OVERRIDE;
|
||||
|
||||
Standard_EXPORT Standard_Boolean Recognize (const Handle(IFSelect_EditForm)& form) const Standard_OVERRIDE;
|
||||
|
||||
Standard_EXPORT Handle(TCollection_HAsciiString) StringValue (const Handle(IFSelect_EditForm)& form, const Standard_Integer num) const Standard_OVERRIDE;
|
||||
|
||||
Standard_EXPORT Standard_Boolean Load (const Handle(IFSelect_EditForm)& form, const Handle(Standard_Transient)& ent, const Handle(Interface_InterfaceModel)& model) const Standard_OVERRIDE;
|
||||
|
||||
Standard_EXPORT Standard_Boolean Apply (const Handle(IFSelect_EditForm)& form, const Handle(Standard_Transient)& ent, const Handle(Interface_InterfaceModel)& model) const Standard_OVERRIDE;
|
||||
|
||||
//! Returns a ParamEditor to work on the Static Parameters of
|
||||
//! which names are listed in <list>
|
||||
//! Null Handle if <list> is null or empty
|
||||
Standard_EXPORT static Handle(IFSelect_ParamEditor) StaticEditor (const Handle(TColStd_HSequenceOfHAsciiString)& list, const Standard_CString label = "");
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_ParamEditor,IFSelect_Editor)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
TCollection_AsciiString thelabel;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_ParamEditor_HeaderFile
|
@@ -1,32 +0,0 @@
|
||||
// Created on: 1992-09-21
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1992-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_PrintFail_HeaderFile
|
||||
#define _IFSelect_PrintFail_HeaderFile
|
||||
|
||||
//! Indicates whether there will
|
||||
//! be information on warnings as well as on failures. The
|
||||
//! terms of this enumeration have the following semantics:
|
||||
//! - IFSelect_FailOnly gives information on failures only
|
||||
//! - IFSelect_FailAndWarn gives information on both
|
||||
//! failures and warnings. used to pilot PrintCheckList
|
||||
enum IFSelect_PrintFail
|
||||
{
|
||||
IFSelect_FailOnly,
|
||||
IFSelect_FailAndWarn
|
||||
};
|
||||
|
||||
#endif // _IFSelect_PrintFail_HeaderFile
|
@@ -1,29 +0,0 @@
|
||||
// Created on: 1992-09-21
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1992-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_RemainMode_HeaderFile
|
||||
#define _IFSelect_RemainMode_HeaderFile
|
||||
|
||||
|
||||
enum IFSelect_RemainMode
|
||||
{
|
||||
IFSelect_RemainForget,
|
||||
IFSelect_RemainCompute,
|
||||
IFSelect_RemainDisplay,
|
||||
IFSelect_RemainUndo
|
||||
};
|
||||
|
||||
#endif // _IFSelect_RemainMode_HeaderFile
|
@@ -12,7 +12,6 @@
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFGraph_Cumulate.hxx>
|
||||
#include <IFSelect_SelectCombine.hxx>
|
||||
#include <IFSelect_Selection.hxx>
|
||||
#include <IFSelect_SelectionIterator.hxx>
|
||||
@@ -21,7 +20,6 @@
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_SelectCombine,IFSelect_Selection)
|
||||
|
||||
IFSelect_SelectCombine::IFSelect_SelectCombine () { }
|
||||
// { thelist = new IFSelect_SequenceOfSelection(); }
|
||||
|
||||
Standard_Integer IFSelect_SelectCombine::NbInputs () const
|
||||
{ return thelist.Length(); }
|
||||
|
@@ -13,8 +13,6 @@
|
||||
|
||||
|
||||
#include <IFSelect_SelectPointed.hxx>
|
||||
#include <IFSelect_Transformer.hxx>
|
||||
#include <Interface_CopyControl.hxx>
|
||||
#include <Interface_EntityIterator.hxx>
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_InterfaceError.hxx>
|
||||
@@ -147,30 +145,6 @@ IFSelect_SelectPointed::IFSelect_SelectPointed ()
|
||||
return theitems.Value(num);
|
||||
}
|
||||
|
||||
void IFSelect_SelectPointed::Update
|
||||
(const Handle(Interface_CopyControl)& control)
|
||||
{
|
||||
Standard_Integer nb = theitems.Length();
|
||||
for (Standard_Integer i = nb; i > 0; i --) {
|
||||
Handle(Standard_Transient) enfr, ento;
|
||||
enfr = theitems.Value(i);
|
||||
if (!control->Search(enfr,ento)) theitems.Remove(i);
|
||||
else theitems.SetValue(i,ento);
|
||||
}
|
||||
}
|
||||
|
||||
void IFSelect_SelectPointed::Update
|
||||
(const Handle(IFSelect_Transformer)& trf)
|
||||
{
|
||||
Standard_Integer nb = theitems.Length();
|
||||
for (Standard_Integer i = nb; i > 0; i --) {
|
||||
Handle(Standard_Transient) enfr, ento;
|
||||
enfr = theitems.Value(i);
|
||||
if (!trf->Updated(enfr,ento)) theitems.Remove(i);
|
||||
else theitems.SetValue(i,ento);
|
||||
}
|
||||
}
|
||||
|
||||
// .... Actions Generales
|
||||
|
||||
Interface_EntityIterator IFSelect_SelectPointed::RootResult
|
||||
|
@@ -27,8 +27,6 @@
|
||||
#include <Standard_Integer.hxx>
|
||||
class Interface_InterfaceError;
|
||||
class Standard_Transient;
|
||||
class Interface_CopyControl;
|
||||
class IFSelect_Transformer;
|
||||
class Interface_EntityIterator;
|
||||
class Interface_Graph;
|
||||
class TCollection_AsciiString;
|
||||
@@ -107,14 +105,6 @@ public:
|
||||
//! Returns an item given its rank, or a Null Handle
|
||||
Standard_EXPORT Handle(Standard_Transient) Item (const Standard_Integer num) const;
|
||||
|
||||
//! Rebuilds the selected list. Any selected entity which has a
|
||||
//! bound result is replaced by this result, else it is removed.
|
||||
Standard_EXPORT void Update (const Handle(Interface_CopyControl)& control);
|
||||
|
||||
//! Rebuilds the selected list, by querying a Transformer
|
||||
//! (same principle as from a CopyControl)
|
||||
Standard_EXPORT void Update (const Handle(IFSelect_Transformer)& trf);
|
||||
|
||||
//! Returns the list of selected items. Only the selected entities
|
||||
//! which are present in the graph are given (this result assures
|
||||
//! uniqueness).
|
||||
@@ -124,29 +114,12 @@ public:
|
||||
//! It is "Pointed Entities"
|
||||
Standard_EXPORT TCollection_AsciiString Label() const Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_SelectPointed,IFSelect_SelectBase)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
private:
|
||||
|
||||
Standard_Boolean theset;
|
||||
TColStd_SequenceOfTransient theitems;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_SelectPointed_HeaderFile
|
||||
|
@@ -1,26 +0,0 @@
|
||||
// Created on: 1992-09-21
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1992-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef IFSelect_SequenceOfAppliedModifiers_HeaderFile
|
||||
#define IFSelect_SequenceOfAppliedModifiers_HeaderFile
|
||||
|
||||
#include <IFSelect_AppliedModifiers.hxx>
|
||||
#include <NCollection_Sequence.hxx>
|
||||
|
||||
typedef NCollection_Sequence<Handle(IFSelect_AppliedModifiers)> IFSelect_SequenceOfAppliedModifiers;
|
||||
|
||||
|
||||
#endif
|
@@ -1,26 +0,0 @@
|
||||
// Created on: 1992-09-21
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1992-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef IFSelect_SequenceOfGeneralModifier_HeaderFile
|
||||
#define IFSelect_SequenceOfGeneralModifier_HeaderFile
|
||||
|
||||
#include <IFSelect_GeneralModifier.hxx>
|
||||
#include <NCollection_Sequence.hxx>
|
||||
|
||||
typedef NCollection_Sequence<Handle(IFSelect_GeneralModifier)> IFSelect_SequenceOfGeneralModifier;
|
||||
|
||||
|
||||
#endif
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user