1
0
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 Message Date
szv
be7d96c7fa IGES reader fixing 2016-12-30 14:05:58 +03:00
szv
0fef9c4085 IGES simplification 2016-12-05 14:41:36 +03:00
szv
2a278ae90b Additional commit 2016-11-25 14:26:59 +03:00
szv
92d3c2487f Create TKXSSelect
Readers and Writers redesign
2016-11-23 15:05:02 +03:00
szv
c0676d7442 Additional commit 2016-10-06 12:28:00 +03:00
szv
6be3c72e8f Selections are moved to Draw 2016-10-06 10:57:20 +03:00
szv
a71d5ed391 Transfer packages cleaned 2016-09-27 15:55:30 +03:00
1136 changed files with 21709 additions and 98500 deletions

View File

@@ -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

View File

@@ -380,6 +380,7 @@ t TKXCAF
t TKXDEIGES
t TKXDESTEP
t TKXSBase
t TKXSSelect
t TKXmlXCAF
n BOPTest
n BRepTest

View File

@@ -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
~~~~~

View File

@@ -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.

View File

@@ -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*.

View File

@@ -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

View 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;
}

View File

@@ -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>

View File

@@ -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();

View File

@@ -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;

View File

@@ -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,

View File

@@ -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 )

View File

@@ -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:

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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

View File

@@ -1,4 +1,2 @@
APIHeaderSection_EditHeader.cxx
APIHeaderSection_EditHeader.hxx
APIHeaderSection_MakeHeader.cxx
APIHeaderSection_MakeHeader.hxx

View File

@@ -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);
}

View File

@@ -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 :

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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;
}
}

View File

@@ -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

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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); }

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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();

View File

@@ -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

View File

@@ -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();

View File

@@ -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

View File

@@ -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);
}
}
}
*/

View File

@@ -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

View File

@@ -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;

View File

@@ -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

View File

@@ -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()
{}

View File

@@ -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

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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

View File

@@ -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

View File

@@ -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); }

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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));
}

View File

@@ -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

View File

@@ -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());
}
}

View File

@@ -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

View File

@@ -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());
}
}

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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

View File

@@ -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);
}
}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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 ();
}

View File

@@ -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

View File

@@ -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

View File

@@ -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; }

View File

@@ -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

View File

@@ -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

View File

@@ -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; }

View File

@@ -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

View File

@@ -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); }

View File

@@ -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

View File

@@ -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; }

View File

@@ -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

View File

@@ -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); }

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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");
}

View File

@@ -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

View File

@@ -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) { }

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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(); }

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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