mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-09 13:22:24 +03:00
starting of hell
This commit is contained in:
@@ -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.
|
||||
~~~~{.cpp}
|
||||
IGESControl_Reader reader;
|
||||
IFSelect_ReturnStatus stat = reader.ReadFile(“filename.igs”);
|
||||
XSControl_ReturnStatus stat = reader.ReadFile(“filename.igs”);
|
||||
~~~~
|
||||
The loading operation only loads the IGES file into computer memory; it does not translate it.
|
||||
|
||||
@@ -1125,7 +1125,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:
|
||||
~~~~{.cpp}
|
||||
IGESCAFControl_Reader reader(XSDRAW::Session(), Standard_False);
|
||||
IFSelect_ReturnStatus stat = reader.ReadFile(“filename.igs”);
|
||||
XSControl_ReturnStatus stat = reader.ReadFile(“filename.igs”);
|
||||
~~~~
|
||||
Loading the file only memorizes, but does not translate the data.
|
||||
|
||||
@@ -1183,7 +1183,7 @@ aWriter.SetNameMode(mode);
|
||||
|
||||
You can perform the translation of a document by calling the function:
|
||||
~~~~{.cpp}
|
||||
IFSelect_ReturnStatus aRetSt = aWriter.Transfer(doc);
|
||||
XSControl_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 +1191,11 @@ where "doc" is a variable which contains a handle to the input document for tran
|
||||
|
||||
Write an IGES file with:
|
||||
~~~~{.cpp}
|
||||
IFSelect_ReturnStatus statw = aWriter.WriteFile("filename.igs");
|
||||
XSControl_ReturnStatus statw = aWriter.WriteFile("filename.igs");
|
||||
~~~~
|
||||
or
|
||||
~~~~{.cpp}
|
||||
IFSelect_ReturnStatus statw = writer.WriteFile (S);
|
||||
XSControl_ReturnStatus statw = writer.WriteFile (S);
|
||||
~~~~
|
||||
where S is OStream.
|
||||
|
||||
|
@@ -123,7 +123,7 @@ For further information see 2.4 Mapping STEP entities to Open CASCADE Technology
|
||||
Before performing any other operation you have to load the file with:
|
||||
~~~~{.cpp}
|
||||
STEPControl_Reader reader;
|
||||
IFSelect_ReturnStatus stat = reader.ReadFile("filename.stp");
|
||||
XSControl_ReturnStatus stat = reader.ReadFile("filename.stp");
|
||||
~~~~
|
||||
Loading the file only memorizes the data, it does not translate it.
|
||||
|
||||
@@ -1067,13 +1067,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.
|
||||
~~~~{.cpp}
|
||||
STEP214Control_StepModelTope mode = STEP214Control_ManifoldSolidBrep;
|
||||
IFSelect_ReturnStatus stat = writer.Transfer(shape,mode);
|
||||
XSControl_ReturnStatus stat = writer.Transfer(shape,mode);
|
||||
~~~~
|
||||
|
||||
@subsubsection occt_step_3_3_4 Writing the STEP file
|
||||
Write the STEP file with:
|
||||
~~~~{.cpp}
|
||||
IFSelect_ReturnStatus stat = writer.Write("filename.stp");
|
||||
XSControl_ReturnStatus stat = writer.Write("filename.stp");
|
||||
~~~~
|
||||
to give the file name.
|
||||
|
||||
@@ -1514,7 +1514,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:
|
||||
~~~~{.cpp}
|
||||
STEPCAFControl_Reader reader(XSDRAW::Session(), Standard_False);
|
||||
IFSelect_ReturnStatus stat = reader.ReadFile("filename.stp");
|
||||
XSControl_ReturnStatus stat = reader.ReadFile("filename.stp");
|
||||
~~~~
|
||||
Loading the file only memorizes the data, it does not translate it.
|
||||
|
||||
@@ -1678,7 +1678,7 @@ aWriter.SetNameMode(mode);
|
||||
|
||||
You can perform the translation of document by calling the function:
|
||||
~~~~{.cpp}
|
||||
IFSelect_ReturnStatus aRetSt = aWriter.Transfer(doc);
|
||||
XSControl_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)*.
|
||||
|
||||
@@ -1686,11 +1686,11 @@ where *doc* is a variable, which contains a handle to the input document for tr
|
||||
|
||||
Write a STEP file with:
|
||||
~~~~{.cpp}
|
||||
IFSelect_ReturnStatus statw = aWriter.WriteFile("filename.stp");
|
||||
XSControl_ReturnStatus statw = aWriter.WriteFile("filename.stp");
|
||||
~~~~
|
||||
or
|
||||
~~~~{.cpp}
|
||||
IFSelect_ReturnStatus statw = writer.WriteFile (S);
|
||||
XSControl_ReturnStatus statw = writer.WriteFile (S);
|
||||
~~~~
|
||||
where *S* is *OStream*.
|
||||
|
||||
|
@@ -1240,8 +1240,8 @@ To read a STEP file by itself, use:
|
||||
~~~~{.cpp}
|
||||
const char* theFilename = ...;
|
||||
STEPCAFControl_Reader aReader;
|
||||
IFSelect_ReturnStatus aReadStat = aReader.ReadFile (theFilename);
|
||||
if (aReadStat != IFSelect_RetDone) { .. reader/parser error .. }
|
||||
XSControl_ReturnStatus aReadStat = aReader.ReadFile (theFilename);
|
||||
if (aReadStat != XSControl_RetDone) { .. reader/parser error .. }
|
||||
// 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) aDoc = ...;
|
||||
@@ -1278,8 +1278,8 @@ if (!aWriter.Transfer (aDoc, aMode))
|
||||
|
||||
// writing the File
|
||||
const char* theFilename = ...;
|
||||
IFSelect_ReturnStatus aStat = aWriter.Write (theFilename);
|
||||
if (aStat != IFSelect_RetDone) { .. writing failed .. }
|
||||
XSControl_ReturnStatus aStat = aWriter.Write (theFilename);
|
||||
if (aStat != XSControl_RetDone) { .. writing failed .. }
|
||||
~~~~
|
||||
|
||||
@subsection occt_xde_2_11_3 Reading an IGES File
|
||||
|
@@ -1,186 +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_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;
|
||||
Standard_FALLTHROUGH
|
||||
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;
|
||||
Standard_FALLTHROUGH
|
||||
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;
|
||||
Standard_FALLTHROUGH
|
||||
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;
|
||||
Standard_FALLTHROUGH
|
||||
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;
|
||||
Standard_FALLTHROUGH
|
||||
case 18 : if (uncar < '0' || uncar > '5') return Standard_False;
|
||||
break;
|
||||
case 19 : if (uncar < '0' || uncar > '9') return Standard_False;
|
||||
break;
|
||||
default :
|
||||
break;
|
||||
}
|
||||
}
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
|
||||
APIHeaderSection_EditHeader::APIHeaderSection_EditHeader ()
|
||||
: IFSelect_Editor (10)
|
||||
{
|
||||
// Definition
|
||||
Handle(Interface_TypedValue) fn_name = new Interface_TypedValue("fn_name");
|
||||
SetValue (1,fn_name,"name");
|
||||
Handle(Interface_TypedValue) fn_time = new Interface_TypedValue("fn_time_stamp");
|
||||
fn_time->SetSatisfies (IsTimeStamp,"IsTimeStamp");
|
||||
SetValue (2,fn_time,"time");
|
||||
Handle(Interface_TypedValue) fn_author = new Interface_TypedValue("fn_author");
|
||||
SetValue (3,fn_author,"author"); // 1 seul (1er de liste)
|
||||
Handle(Interface_TypedValue) fn_org = new Interface_TypedValue("fn_organization");
|
||||
SetValue (4,fn_org,"org"); // 1 seul (1er de liste)
|
||||
Handle(Interface_TypedValue) fn_preproc = new Interface_TypedValue("fn_preprocessor_version");
|
||||
SetValue (5,fn_preproc,"preproc");
|
||||
Handle(Interface_TypedValue) fn_orig = new Interface_TypedValue("fn_originating_system");
|
||||
SetValue (6,fn_orig,"orig");
|
||||
Handle(Interface_TypedValue) fn_autorize = new Interface_TypedValue("fn_authorization");
|
||||
SetValue (7,fn_autorize,"autorize");
|
||||
|
||||
Handle(Interface_TypedValue) fs_schema = new Interface_TypedValue("fs_schema_identifiers");
|
||||
SetValue (8,fs_schema,"schema"); // 1 seul (1er de liste)
|
||||
|
||||
Handle(Interface_TypedValue) fd_descr = new Interface_TypedValue("fd_description");
|
||||
SetValue (9,fd_descr,"descr"); // 1 seul (1er de liste)
|
||||
|
||||
Handle(Interface_TypedValue) fd_level = new Interface_TypedValue("fd_implementation_level");
|
||||
SetValue (10,fd_level,"level");
|
||||
|
||||
}
|
||||
|
||||
TCollection_AsciiString APIHeaderSection_EditHeader::Label () const
|
||||
{ return TCollection_AsciiString ("Step Header"); }
|
||||
|
||||
Standard_Boolean APIHeaderSection_EditHeader::Recognize
|
||||
(const Handle(IFSelect_EditForm)& /*form*/) const
|
||||
{ return Standard_True; } // ??
|
||||
|
||||
Handle(TCollection_HAsciiString) APIHeaderSection_EditHeader::StringValue
|
||||
(const Handle(IFSelect_EditForm)& /*form*/, const Standard_Integer num) const
|
||||
{
|
||||
// Default Values
|
||||
return TypedValue(num)->HStringValue();
|
||||
}
|
||||
|
||||
Standard_Boolean APIHeaderSection_EditHeader::Load
|
||||
(const Handle(IFSelect_EditForm)& form,
|
||||
const Handle(Standard_Transient)& /*ent*/,
|
||||
const Handle(Interface_InterfaceModel)& model) const
|
||||
{
|
||||
Handle(StepData_StepModel) modl =
|
||||
Handle(StepData_StepModel)::DownCast(model);
|
||||
if (modl.IsNull()) return Standard_False;
|
||||
|
||||
APIHeaderSection_MakeHeader mkh (modl);
|
||||
|
||||
form->LoadValue (1 ,mkh.Name ());
|
||||
form->LoadValue (2 ,mkh.TimeStamp ());
|
||||
form->LoadValue (3 ,mkh.AuthorValue (1));
|
||||
form->LoadValue (4 ,mkh.OrganizationValue (1));
|
||||
form->LoadValue (5 ,mkh.PreprocessorVersion ());
|
||||
form->LoadValue (6 ,mkh.OriginatingSystem ());
|
||||
form->LoadValue (7 ,mkh.Authorisation ());
|
||||
|
||||
form->LoadValue (8 ,mkh.SchemaIdentifiersValue (1));
|
||||
|
||||
form->LoadValue (9 ,mkh.DescriptionValue (1));
|
||||
form->LoadValue (10,mkh.ImplementationLevel ());
|
||||
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
Standard_Boolean APIHeaderSection_EditHeader::Apply
|
||||
(const Handle(IFSelect_EditForm)& form,
|
||||
const Handle(Standard_Transient)& /*ent*/,
|
||||
const Handle(Interface_InterfaceModel)& model) const
|
||||
{
|
||||
Handle(StepData_StepModel) modl =
|
||||
Handle(StepData_StepModel)::DownCast(model);
|
||||
if (modl.IsNull()) return Standard_False;
|
||||
|
||||
APIHeaderSection_MakeHeader mkh (modl);
|
||||
|
||||
if (form->IsModified(1)) mkh.SetName (form->EditedValue(1));
|
||||
if (form->IsModified(2)) mkh.SetTimeStamp (form->EditedValue(2));
|
||||
if (form->IsModified(3)) mkh.SetAuthorValue (1,form->EditedValue(3));
|
||||
if (form->IsModified(4)) mkh.SetOrganizationValue (1,form->EditedValue(4));
|
||||
if (form->IsModified(5)) mkh.SetPreprocessorVersion (form->EditedValue(5));
|
||||
if (form->IsModified(6)) mkh.SetOriginatingSystem (form->EditedValue(6));
|
||||
if (form->IsModified(7)) mkh.SetAuthorisation (form->EditedValue(7));
|
||||
|
||||
if (form->IsModified(8)) mkh.SetSchemaIdentifiersValue (1,form->EditedValue(8));
|
||||
|
||||
if (form->IsModified(9)) mkh.SetDescriptionValue (1,form->EditedValue(9));
|
||||
if (form->IsModified(10)) mkh.SetImplementationLevel (form->EditedValue(10));
|
||||
|
||||
mkh.Apply( Handle(StepData_StepModel)::DownCast(model) );
|
||||
|
||||
return Standard_True;
|
||||
}
|
@@ -1,76 +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 <IFSelect_Editor.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
|
@@ -1,4 +0,0 @@
|
||||
APIHeaderSection_EditHeader.cxx
|
||||
APIHeaderSection_EditHeader.hxx
|
||||
APIHeaderSection_MakeHeader.cxx
|
||||
APIHeaderSection_MakeHeader.hxx
|
435
src/DE/DE_InterfaceParameters.cxx
Normal file
435
src/DE/DE_InterfaceParameters.cxx
Normal file
@@ -0,0 +1,435 @@
|
||||
// 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 <Interface_Static.hxx>
|
||||
|
||||
#include <OSD_Path.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_HAsciiString.hxx>
|
||||
|
||||
#include <stdio.h>
|
||||
IMPLEMENT_STANDARD_RTTIEXT(Interface_Static,Interface_TypedValue)
|
||||
|
||||
static char defmess[31];
|
||||
|
||||
// Fonctions Satisfies offertes en standard ...
|
||||
|
||||
//svv #2
|
||||
//static Standard_Boolean StaticPath(const Handle(TCollection_HAsciiString)& val)
|
||||
//{
|
||||
// OSD_Path apath;
|
||||
// return apath.IsValid (TCollection_AsciiString(val->ToCString()));
|
||||
//}
|
||||
|
||||
|
||||
Interface_Static::Interface_Static
|
||||
(const Standard_CString family, const Standard_CString name,
|
||||
const Interface_ParamType type, const Standard_CString init)
|
||||
: Interface_TypedValue (name,type,init) ,
|
||||
thefamily (family) ,
|
||||
theupdate (Standard_True) { }
|
||||
|
||||
Interface_Static::Interface_Static
|
||||
(const Standard_CString family, const Standard_CString name,
|
||||
const Handle(Interface_Static)& other)
|
||||
: Interface_TypedValue (name, other->Type(), "") ,
|
||||
thefamily (family) ,
|
||||
theupdate (Standard_True)
|
||||
{
|
||||
switch (Type()) {
|
||||
case Interface_ParamInteger : {
|
||||
Standard_Integer lim;
|
||||
if (other->IntegerLimit (Standard_True ,lim)) SetIntegerLimit (Standard_True ,lim);
|
||||
if (other->IntegerLimit (Standard_False,lim)) SetIntegerLimit (Standard_False,lim);
|
||||
}
|
||||
break;
|
||||
case Interface_ParamReal : {
|
||||
Standard_Real lim;
|
||||
if (other->RealLimit (Standard_True ,lim)) SetRealLimit (Standard_True ,lim);
|
||||
if (other->RealLimit (Standard_False,lim)) SetRealLimit (Standard_False,lim);
|
||||
SetUnitDef (other->UnitDef());
|
||||
}
|
||||
break;
|
||||
case Interface_ParamEnum : {
|
||||
Standard_Boolean match; Standard_Integer e0,e1,i;
|
||||
other->EnumDef (e0,e1,match);
|
||||
StartEnum (e0,match);
|
||||
// if (e1 >= e0) theenums = new TColStd_HArray1OfAsciiString(e0,e1);
|
||||
for (i = e0; i <= e1; i ++)
|
||||
AddEnum (other->EnumVal(i));
|
||||
}
|
||||
break;
|
||||
case Interface_ParamIdent :
|
||||
SetObjectType (other->ObjectType());
|
||||
break;
|
||||
default : break;
|
||||
}
|
||||
|
||||
if (other->IsSetValue()) SetCStringValue (other->CStringValue());
|
||||
}
|
||||
|
||||
|
||||
// ## Print ##
|
||||
|
||||
void Interface_Static::PrintStatic (Standard_OStream& S) const
|
||||
{
|
||||
S <<"--- Static Value : "<<Name()<<" Family:"<<Family();
|
||||
Print (S);
|
||||
if (!thewild.IsNull())
|
||||
S <<" -- Attached to wild-card : "<<thewild->Name()<<std::endl;
|
||||
S <<"--- Actual status : "<<(theupdate ? "" : "original")<<" Value : ";
|
||||
|
||||
if (thesatisf) S <<" -- Specific Function for Satisfies : "<<thesatisn.ToCString()<<std::endl;
|
||||
}
|
||||
|
||||
|
||||
// ######### COMPLEMENTS ##########
|
||||
|
||||
Standard_CString Interface_Static::Family () const
|
||||
{
|
||||
return thefamily.ToCString();
|
||||
}
|
||||
|
||||
|
||||
Handle(Interface_Static) Interface_Static::Wild () const
|
||||
{
|
||||
return thewild;
|
||||
}
|
||||
|
||||
|
||||
void Interface_Static::SetWild (const Handle(Interface_Static)& wild)
|
||||
{
|
||||
thewild = wild;
|
||||
}
|
||||
|
||||
|
||||
// ######### UPDATE ##########
|
||||
|
||||
void Interface_Static::SetUptodate ()
|
||||
{
|
||||
theupdate = Standard_True;
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean Interface_Static::UpdatedStatus () const
|
||||
{
|
||||
return theupdate;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// #######################################################################
|
||||
// ######### DICTIONNAIRE DES STATICS (static sur Static) ##########
|
||||
|
||||
Standard_Boolean Interface_Static::Init
|
||||
(const Standard_CString family, const Standard_CString name,
|
||||
const Interface_ParamType type, const Standard_CString init)
|
||||
{
|
||||
if (name[0] == '\0') return Standard_False;
|
||||
|
||||
if (MoniTool_TypedValue::Stats().IsBound(name)) return Standard_False;
|
||||
Handle(Interface_Static) item;
|
||||
if (type == Interface_ParamMisc) {
|
||||
Handle(Interface_Static) other = Interface_Static::Static(init);
|
||||
if (other.IsNull()) return Standard_False;
|
||||
item = new Interface_Static (family,name,other);
|
||||
}
|
||||
else item = new Interface_Static (family,name,type,init);
|
||||
|
||||
MoniTool_TypedValue::Stats().Bind (name,item);
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean Interface_Static::Init
|
||||
(const Standard_CString family, const Standard_CString name,
|
||||
const Standard_Character type, const Standard_CString init)
|
||||
{
|
||||
Interface_ParamType epyt;
|
||||
switch (type) {
|
||||
case 'e' : epyt = Interface_ParamEnum; break;
|
||||
case 'i' : epyt = Interface_ParamInteger; break;
|
||||
case 'o' : epyt = Interface_ParamIdent; break;
|
||||
case 'p' : epyt = Interface_ParamText; break;
|
||||
case 'r' : epyt = Interface_ParamReal; break;
|
||||
case 't' : epyt = Interface_ParamText; break;
|
||||
case '=' : epyt = Interface_ParamMisc; break;
|
||||
case '&' : {
|
||||
Handle(Interface_Static) unstat = Interface_Static::Static(name);
|
||||
if (unstat.IsNull()) return Standard_False;
|
||||
// Editions : init donne un petit texte d edition, en 2 termes "cmd var" :
|
||||
// imin <ival> imax <ival> rmin <rval> rmax <rval> unit <def>
|
||||
// enum <from> ematch <from> eval <cval>
|
||||
Standard_Integer i,iblc = 0;
|
||||
for (i = 0; init[i] != '\0'; i ++) if (init[i] == ' ') iblc = i+1;
|
||||
// Reconnaissance du sous-cas et aiguillage
|
||||
if (init[0] == 'i' && init[2] == 'i')
|
||||
unstat->SetIntegerLimit (Standard_False,atoi(&init[iblc]));
|
||||
else if (init[0] == 'i' && init[2] == 'a')
|
||||
unstat->SetIntegerLimit (Standard_True ,atoi(&init[iblc]));
|
||||
else if (init[0] == 'r' && init[2] == 'i')
|
||||
unstat->SetRealLimit (Standard_False,Atof(&init[iblc]));
|
||||
else if (init[0] == 'r' && init[2] == 'a')
|
||||
unstat->SetRealLimit (Standard_True ,Atof(&init[iblc]));
|
||||
else if (init[0] == 'u')
|
||||
unstat->SetUnitDef (&init[iblc]);
|
||||
else if (init[0] == 'e' && init[1] == 'm')
|
||||
unstat->StartEnum (atoi(&init[iblc]),Standard_True);
|
||||
else if (init[0] == 'e' && init[1] == 'n')
|
||||
unstat->StartEnum (atoi(&init[iblc]),Standard_False);
|
||||
else if (init[0] == 'e' && init[1] == 'v')
|
||||
unstat->AddEnum (&init[iblc]);
|
||||
else return Standard_False;
|
||||
return Standard_True;
|
||||
}
|
||||
default : return Standard_False;
|
||||
}
|
||||
if (!Interface_Static::Init (family,name,epyt,init)) return Standard_False;
|
||||
if (type != 'p') return Standard_True;
|
||||
Handle(Interface_Static) stat = Interface_Static::Static(name);
|
||||
//NT stat->SetSatisfies (StaticPath,"Path");
|
||||
if (!stat->Satisfies(stat->HStringValue())) stat->SetCStringValue("");
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
|
||||
Handle(Interface_Static) Interface_Static::Static
|
||||
(const Standard_CString name)
|
||||
{
|
||||
Handle(Standard_Transient) result;
|
||||
MoniTool_TypedValue::Stats().Find(name, result);
|
||||
return Handle(Interface_Static)::DownCast(result);
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean Interface_Static::IsPresent (const Standard_CString name)
|
||||
{
|
||||
return MoniTool_TypedValue::Stats().IsBound (name);
|
||||
}
|
||||
|
||||
|
||||
Standard_CString Interface_Static::CDef
|
||||
(const Standard_CString name, const Standard_CString part)
|
||||
{
|
||||
if (!part || part[0] == '\0') return "";
|
||||
Handle(Interface_Static) stat = Interface_Static::Static(name);
|
||||
if (stat.IsNull()) return "";
|
||||
if (part[0] == 'f' && part[1] == 'a') return stat->Family();
|
||||
if (part[0] == 'l' && part[1] == 'a') return stat->Label();
|
||||
if (part[0] == 's' && part[1] == 'a') return stat->SatisfiesName();
|
||||
if (part[0] == 't' && part[1] == 'y') {
|
||||
Interface_ParamType typ = stat->Type();
|
||||
if (typ == Interface_ParamInteger) return "integer";
|
||||
if (typ == Interface_ParamReal) return "real";
|
||||
if (typ == Interface_ParamText) return "text";
|
||||
if (typ == Interface_ParamEnum) return "enum";
|
||||
return "?type?";
|
||||
}
|
||||
if (part[0] == 'e') {
|
||||
Standard_Integer nume = 0;
|
||||
sscanf (part,"%30s %d",defmess,&nume);
|
||||
return stat->EnumVal(nume);
|
||||
}
|
||||
if (part[0] == 'i') {
|
||||
Standard_Integer ilim;
|
||||
if (!stat->IntegerLimit((part[2] == 'a'),ilim)) return "";
|
||||
Sprintf(defmess,"%d",ilim); return defmess;
|
||||
}
|
||||
if (part[0] == 'r') {
|
||||
Standard_Real rlim;
|
||||
if (!stat->RealLimit((part[2] == 'a'),rlim)) return "";
|
||||
Sprintf(defmess,"%f",rlim); return defmess;
|
||||
}
|
||||
if (part[0] == 'u') return stat->UnitDef();
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
Standard_Integer Interface_Static::IDef
|
||||
(const Standard_CString name, const Standard_CString part)
|
||||
{
|
||||
if (!part || part[0] == '\0') return 0;
|
||||
Handle(Interface_Static) stat = Interface_Static::Static(name);
|
||||
if (stat.IsNull()) return 0;
|
||||
if (part[0] == 'i') {
|
||||
Standard_Integer ilim;
|
||||
if (!stat->IntegerLimit((part[2] == 'a'),ilim)) return 0;
|
||||
return ilim;
|
||||
}
|
||||
if (part[0] == 'e') {
|
||||
Standard_Integer startcase,endcase; Standard_Boolean match;
|
||||
stat->EnumDef (startcase,endcase,match);
|
||||
if (part[1] == 's') return startcase;
|
||||
if (part[1] == 'c') return (endcase - startcase + 1);
|
||||
if (part[1] == 'm') return (match ? 1 : 0);
|
||||
if (part[1] == 'v') {
|
||||
char vale[51];
|
||||
sscanf (part,"%30s %50s",defmess,vale);
|
||||
return stat->EnumCase (vale);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// ########## VALEUR COURANTE ###########
|
||||
|
||||
Standard_Boolean Interface_Static::IsSet
|
||||
(const Standard_CString name, const Standard_Boolean proper)
|
||||
{
|
||||
Handle(Interface_Static) item = Interface_Static::Static(name);
|
||||
if (item.IsNull()) return Standard_False;
|
||||
if (item->IsSetValue()) return Standard_True;
|
||||
if (proper) return Standard_False;
|
||||
item = item->Wild();
|
||||
return item->IsSetValue();
|
||||
}
|
||||
|
||||
|
||||
Standard_CString Interface_Static::CVal (const Standard_CString name)
|
||||
{
|
||||
Handle(Interface_Static) item = Interface_Static::Static(name);
|
||||
if (item.IsNull()) {
|
||||
#ifdef OCCT_DEBUG
|
||||
std::cout << "Warning: Interface_Static::CVal: incorrect parameter " << name << std::endl;
|
||||
#endif
|
||||
return "";
|
||||
}
|
||||
return item->CStringValue();
|
||||
}
|
||||
|
||||
|
||||
Standard_Integer Interface_Static::IVal (const Standard_CString name)
|
||||
{
|
||||
Handle(Interface_Static) item = Interface_Static::Static(name);
|
||||
if (item.IsNull()) {
|
||||
#ifdef OCCT_DEBUG
|
||||
std::cout << "Warning: Interface_Static::IVal: incorrect parameter " << name << std::endl;
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
return item->IntegerValue();
|
||||
}
|
||||
|
||||
|
||||
Standard_Real Interface_Static::RVal (const Standard_CString name)
|
||||
{
|
||||
Handle(Interface_Static) item = Interface_Static::Static(name);
|
||||
if (item.IsNull()) {
|
||||
#ifdef OCCT_DEBUG
|
||||
std::cout << "Warning: Interface_Static::RVal: incorrect parameter " << name << std::endl;
|
||||
#endif
|
||||
return 0.0;
|
||||
}
|
||||
return item->RealValue();
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean Interface_Static::SetCVal
|
||||
(const Standard_CString name, const Standard_CString val)
|
||||
{
|
||||
Handle(Interface_Static) item = Interface_Static::Static(name);
|
||||
if (item.IsNull()) return Standard_False;
|
||||
return item->SetCStringValue(val);
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean Interface_Static::SetIVal
|
||||
(const Standard_CString name, const Standard_Integer val)
|
||||
{
|
||||
Handle(Interface_Static) item = Interface_Static::Static(name);
|
||||
if (item.IsNull()) return Standard_False;
|
||||
if (!item->SetIntegerValue(val)) return Standard_False;
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean Interface_Static::SetRVal
|
||||
(const Standard_CString name, const Standard_Real val)
|
||||
{
|
||||
Handle(Interface_Static) item = Interface_Static::Static(name);
|
||||
if (item.IsNull()) return Standard_False;
|
||||
return item->SetRealValue(val);
|
||||
}
|
||||
|
||||
// UPDATE
|
||||
|
||||
Standard_Boolean Interface_Static::Update (const Standard_CString name)
|
||||
{
|
||||
Handle(Interface_Static) item = Interface_Static::Static(name);
|
||||
if (item.IsNull()) return Standard_False;
|
||||
item->SetUptodate();
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
Standard_Boolean Interface_Static::IsUpdated (const Standard_CString name)
|
||||
{
|
||||
Handle(Interface_Static) item = Interface_Static::Static(name);
|
||||
if (item.IsNull()) return Standard_False;
|
||||
return item->UpdatedStatus();
|
||||
}
|
||||
|
||||
Handle(TColStd_HSequenceOfHAsciiString) Interface_Static::Items
|
||||
(const Standard_Integer mode, const Standard_CString criter)
|
||||
{
|
||||
Standard_Integer modup = (mode / 100); // 0 any, 1 non-update, 2 update
|
||||
Handle(TColStd_HSequenceOfHAsciiString) list =
|
||||
new TColStd_HSequenceOfHAsciiString();
|
||||
NCollection_DataMap<TCollection_AsciiString, Handle(Standard_Transient)>::Iterator iter(MoniTool_TypedValue::Stats());
|
||||
for (; iter.More(); iter.Next()) {
|
||||
Handle(Interface_Static) item =
|
||||
Handle(Interface_Static)::DownCast(iter.Value());
|
||||
if (item.IsNull()) continue;
|
||||
Standard_Boolean ok = Standard_True;
|
||||
if (criter[0] == '$' && criter[1] == '\0') {
|
||||
if ( (item->Family())[0] != '$') ok = Standard_False;
|
||||
} else if (criter[0] != '\0') {
|
||||
if (strcmp(criter, item->Family())) continue;
|
||||
ok = Standard_True;
|
||||
} else { // tous ... sauf famille a $
|
||||
if (item->Family()[0] == '$') continue;
|
||||
}
|
||||
if (ok && (modup == 1)) ok = !item->UpdatedStatus();
|
||||
if (ok && (modup == 2)) ok = item->UpdatedStatus();
|
||||
|
||||
if (ok) list->Append (new TCollection_HAsciiString (iter.Key()) );
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
// function : FillMap
|
||||
// purpose : Fills given string-to-string map with all static data
|
||||
//=======================================================================
|
||||
void Interface_Static::FillMap (NCollection_DataMap<TCollection_AsciiString, TCollection_AsciiString, TCollection_AsciiString>& theMap)
|
||||
{
|
||||
theMap.Clear();
|
||||
|
||||
NCollection_DataMap<TCollection_AsciiString, Handle(Standard_Transient)>& aMap = MoniTool_TypedValue::Stats();
|
||||
|
||||
for (NCollection_DataMap<TCollection_AsciiString, Handle(Standard_Transient)>::Iterator anIt(aMap); anIt.More(); anIt.Next())
|
||||
{
|
||||
Handle(Interface_Static) aValue = Handle(Interface_Static)::DownCast(anIt.Value());
|
||||
if (aValue.IsNull())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (aValue->HStringValue().IsNull())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
theMap.Bind (anIt.Key(), aValue->HStringValue()->String());
|
||||
}
|
||||
}
|
291
src/DE/DE_InterfaceParameters.hxx
Normal file
291
src/DE/DE_InterfaceParameters.hxx
Normal file
@@ -0,0 +1,291 @@
|
||||
// Created on: 1995-12-08
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1995-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 _Interface_Static_HeaderFile
|
||||
#define _Interface_Static_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <Standard_Real.hxx>
|
||||
#include <Interface_StaticSatisfies.hxx>
|
||||
#include <Interface_TypedValue.hxx>
|
||||
#include <TColStd_HSequenceOfHAsciiString.hxx>
|
||||
class TCollection_HAsciiString;
|
||||
|
||||
class Interface_Static;
|
||||
DEFINE_STANDARD_HANDLE(Interface_Static, Interface_TypedValue)
|
||||
|
||||
//! This class gives a way to manage meaningful static variables,
|
||||
//! used as "global" parameters in various procedures.
|
||||
//!
|
||||
//! A Static brings a specification (its type, constraints if any)
|
||||
//! and a value. Its basic form is a string, it can be specified
|
||||
//! as integer or real or enumerative string, and queried as such.
|
||||
//! Its string content, which is a Handle(HAsciiString) can be
|
||||
//! shared by other data structures, hence gives a direct on line
|
||||
//! access to its value.
|
||||
//!
|
||||
//! All this description is inherited from TypedValue
|
||||
//!
|
||||
//! A Static can be given an initial value, it can be filled from,
|
||||
//! either a set of Resources (an applicative feature which
|
||||
//! accesses and manages parameter files), or environment or
|
||||
//! internal definition : these define families of Static.
|
||||
//! In addition, it supports a status for reinitialisation : an
|
||||
//! initialisation procedure can ask if the value of the Static
|
||||
//! has changed from its last call, in this case does something
|
||||
//! then marks the Status "uptodate", else it does nothing.
|
||||
//!
|
||||
//! Statics are named and recorded then accessed in an alphabetic
|
||||
//! dictionary
|
||||
class Interface_Static : public Interface_TypedValue
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates and records a Static, with a family and a name
|
||||
//! family can report to a name of resource or to a system or
|
||||
//! internal definition. The name must be unique.
|
||||
//!
|
||||
//! type gives the type of the parameter, default is free text
|
||||
//! Also available : Integer, Real, Enum, Entity (i.e. Object)
|
||||
//! More precise specifications, titles, can be given to the
|
||||
//! Static once created
|
||||
//!
|
||||
//! init gives an initial value. If it is not given, the Static
|
||||
//! begin as "not set", its value is empty
|
||||
Standard_EXPORT Interface_Static(const Standard_CString family, const Standard_CString name, const Interface_ParamType type = Interface_ParamText, const Standard_CString init = "");
|
||||
|
||||
//! Creates a new Static with same definition as another one
|
||||
//! (value is copied, except for Entity : it remains null)
|
||||
Standard_EXPORT Interface_Static(const Standard_CString family, const Standard_CString name, const Handle(Interface_Static)& other);
|
||||
|
||||
//! Writes the properties of a
|
||||
//! parameter in the diagnostic file. These include:
|
||||
//! - Name
|
||||
//! - Family,
|
||||
//! - Wildcard (if it has one)
|
||||
//! - Current status (empty string if it was updated or
|
||||
//! if it is the original one)
|
||||
//! - Value
|
||||
Standard_EXPORT void PrintStatic (Standard_OStream& S) const;
|
||||
|
||||
//! Returns the family. It can be : a resource name for applis,
|
||||
//! an internal name between : $e (environment variables),
|
||||
//! $l (other, purely local)
|
||||
Standard_EXPORT Standard_CString Family() const;
|
||||
|
||||
//! Sets a "wild-card" static : its value will be considered
|
||||
//! if <me> is not properly set. (reset by set a null one)
|
||||
Standard_EXPORT void SetWild (const Handle(Interface_Static)& wildcard);
|
||||
|
||||
//! Returns the wildcard static, which can be (is most often) null
|
||||
Standard_EXPORT Handle(Interface_Static) Wild() const;
|
||||
|
||||
//! Records a Static has "uptodate", i.e. its value has been taken
|
||||
//! into account by a reinitialisation procedure
|
||||
//! This flag is reset at each successful SetValue
|
||||
Standard_EXPORT void SetUptodate();
|
||||
|
||||
//! Returns the status "uptodate"
|
||||
Standard_EXPORT Standard_Boolean UpdatedStatus() const;
|
||||
|
||||
//! Declares a new Static (by calling its constructor)
|
||||
//! If this name is already taken, does nothing and returns False
|
||||
//! Else, creates it and returns True
|
||||
//! For additional definitions, get the Static then edit it
|
||||
Standard_EXPORT static Standard_Boolean Init (const Standard_CString family, const Standard_CString name, const Interface_ParamType type, const Standard_CString init = "");
|
||||
|
||||
//! As Init with ParamType, but type is given as a character
|
||||
//! This allows a simpler call
|
||||
//! Types : 'i' Integer, 'r' Real, 't' Text, 'e' Enum, 'o' Object
|
||||
//! '=' for same definition as, <init> gives the initial Static
|
||||
//! Returns False if <type> does not match this list
|
||||
Standard_EXPORT static Standard_Boolean Init (const Standard_CString family, const Standard_CString name, const Standard_Character type, const Standard_CString init = "");
|
||||
|
||||
//! Returns a Static from its name. Null Handle if not present
|
||||
Standard_EXPORT static Handle(Interface_Static) Static (const Standard_CString name);
|
||||
|
||||
//! Returns True if a Static named <name> is present, False else
|
||||
Standard_EXPORT static Standard_Boolean IsPresent (const Standard_CString name);
|
||||
|
||||
//! Returns a part of the definition of a Static, as a CString
|
||||
//! The part is designated by its name, as a CString
|
||||
//! If the required value is not a string, it is converted to a
|
||||
//! CString then returned
|
||||
//! If <name> is not present, or <part> not defined for <name>,
|
||||
//! this function returns an empty string
|
||||
//!
|
||||
//! Allowed parts for CDef :
|
||||
//! family : the family
|
||||
//! type : the type ("integer","real","text","enum")
|
||||
//! label : the label
|
||||
//! satis : satisfy function name if any
|
||||
//! rmin : minimum real value
|
||||
//! rmax : maximum real value
|
||||
//! imin : minimum integer value
|
||||
//! imax : maximum integer value
|
||||
//! enum nn (nn : value of an integer) : enum value for nn
|
||||
//! unit : unit definition for a real
|
||||
Standard_EXPORT static Standard_CString CDef (const Standard_CString name, const Standard_CString part);
|
||||
|
||||
//! Returns a part of the definition of a Static, as an Integer
|
||||
//! The part is designated by its name, as a CString
|
||||
//! If the required value is not a string, returns zero
|
||||
//! For a Boolean, 0 for false, 1 for true
|
||||
//! If <name> is not present, or <part> not defined for <name>,
|
||||
//! this function returns zero
|
||||
//!
|
||||
//! Allowed parts for IDef :
|
||||
//! imin, imax : minimum or maximum integer value
|
||||
//! estart : starting number for enum
|
||||
//! ecount : count of enum values (starting from estart)
|
||||
//! ematch : exact match status
|
||||
//! eval val : case determined from a string
|
||||
Standard_EXPORT static Standard_Integer IDef (const Standard_CString name, const Standard_CString part);
|
||||
|
||||
//! Returns True if <name> is present AND set
|
||||
//! <proper> True (D) : considers this item only
|
||||
//! <proper> False : if not set and attached to a wild-card,
|
||||
//! considers this wild-card
|
||||
Standard_EXPORT static Standard_Boolean IsSet (const Standard_CString name, const Standard_Boolean proper = Standard_True);
|
||||
|
||||
//! Returns the value of the
|
||||
//! parameter identified by the string name.
|
||||
//! If the specified parameter does not exist, an empty
|
||||
//! string is returned.
|
||||
//! Example
|
||||
//! Interface_Static::CVal("write.step.schema");
|
||||
//! which could return:
|
||||
//! "AP214"
|
||||
Standard_EXPORT static Standard_CString CVal (const Standard_CString name);
|
||||
|
||||
//! Returns the integer value of
|
||||
//! the translation parameter identified by the string name.
|
||||
//! Returns the value 0 if the parameter does not exist.
|
||||
//! Example
|
||||
//! Interface_Static::IVal("write.step.schema");
|
||||
//! which could return: 3
|
||||
Standard_EXPORT static Standard_Integer IVal (const Standard_CString name);
|
||||
|
||||
//! Returns the value of a static
|
||||
//! translation parameter identified by the string name.
|
||||
//! Returns the value 0.0 if the parameter does not exist.
|
||||
Standard_EXPORT static Standard_Real RVal (const Standard_CString name);
|
||||
|
||||
//! Modifies the value of the
|
||||
//! parameter identified by name. The modification is specified
|
||||
//! by the string val. false is returned if the parameter does not exist.
|
||||
//! Example
|
||||
//! Interface_Static::SetCVal
|
||||
//! ("write.step.schema","AP203")
|
||||
//! This syntax specifies a switch from the default STEP 214 mode to STEP 203 mode.
|
||||
Standard_EXPORT static Standard_Boolean SetCVal (const Standard_CString name, const Standard_CString val);
|
||||
|
||||
//! Modifies the value of the
|
||||
//! parameter identified by name. The modification is specified
|
||||
//! by the integer value val. false is returned if the
|
||||
//! parameter does not exist.
|
||||
//! Example
|
||||
//! Interface_Static::SetIVal
|
||||
//! ("write.step.schema", 3)
|
||||
//! This syntax specifies a switch from the default STEP 214 mode to STEP 203 mode.S
|
||||
Standard_EXPORT static Standard_Boolean SetIVal (const Standard_CString name, const Standard_Integer val);
|
||||
|
||||
//! Modifies the value of a
|
||||
//! translation parameter. false is returned if the
|
||||
//! parameter does not exist. The modification is specified
|
||||
//! by the real number value val.
|
||||
Standard_EXPORT static Standard_Boolean SetRVal (const Standard_CString name, const Standard_Real val);
|
||||
|
||||
//! Sets a Static to be "uptodate"
|
||||
//! Returns False if <name> is not present
|
||||
//! This status can be used by a reinitialisation procedure to
|
||||
//! rerun if a value has been changed
|
||||
Standard_EXPORT static Standard_Boolean Update (const Standard_CString name);
|
||||
|
||||
//! Returns the status "uptodate" from a Static
|
||||
//! Returns False if <name> is not present
|
||||
Standard_EXPORT static Standard_Boolean IsUpdated (const Standard_CString name);
|
||||
|
||||
//! Returns a list of names of statics :
|
||||
//! <mode> = 0 (D) : criter is for family
|
||||
//! <mode> = 1 : criter is regexp on names, takes final items
|
||||
//! (ignore wild cards)
|
||||
//! <mode> = 2 : idem but take only wilded, not final items
|
||||
//! <mode> = 3 : idem, take all items matching criter
|
||||
//! idem + 100 : takes only non-updated items
|
||||
//! idem + 200 : takes only updated items
|
||||
//! criter empty (D) : returns all names
|
||||
//! else returns names which match the given criter
|
||||
//! Remark : families beginning by '$' are not listed by criter ""
|
||||
//! they are listed only by criter "$"
|
||||
//!
|
||||
//! This allows for instance to set new values after having loaded
|
||||
//! or reloaded a resource, then to update them as required
|
||||
Standard_EXPORT static Handle(TColStd_HSequenceOfHAsciiString) Items (const Standard_Integer mode = 0, const Standard_CString criter = "");
|
||||
|
||||
//! Initializes all standard static parameters, which can be used
|
||||
//! by every function. statics specific of a norm or a function
|
||||
//! must be defined around it
|
||||
Standard_EXPORT static void Standards();
|
||||
|
||||
//! Fills given string-to-string map with all static data
|
||||
Standard_EXPORT static void FillMap(NCollection_DataMap<TCollection_AsciiString, TCollection_AsciiString, TCollection_AsciiString>& theMap);
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(Interface_Static,Interface_TypedValue)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
TCollection_AsciiString thefamily;
|
||||
TCollection_AsciiString thename;
|
||||
TCollection_AsciiString thelabel;
|
||||
Interface_ParamType thetype;
|
||||
Handle(Standard_Type) theotyp;
|
||||
Handle(Interface_Static) thewild;
|
||||
Standard_Integer thelims;
|
||||
Standard_Integer theintlow;
|
||||
Standard_Integer theintup;
|
||||
Standard_Real therealow;
|
||||
Standard_Real therealup;
|
||||
TCollection_AsciiString theunidef;
|
||||
Handle(TColStd_HArray1OfAsciiString) theenums;
|
||||
NCollection_DataMap<TCollection_AsciiString, Standard_Integer> theeadds;
|
||||
Interface_StaticSatisfies thesatisf;
|
||||
TCollection_AsciiString thesatisn;
|
||||
Standard_Boolean theupdate;
|
||||
Standard_Integer theival;
|
||||
Handle(TCollection_HAsciiString) thehval;
|
||||
Handle(Standard_Transient) theoval;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _Interface_Static_HeaderFile
|
@@ -24,13 +24,13 @@
|
||||
//! RetError : error in command or input data, no execution
|
||||
//! RetFail : execution was run and has failed
|
||||
//! RetStop : indicates end or stop (such as Raise)
|
||||
enum IFSelect_ReturnStatus
|
||||
enum XSControl_ReturnStatus
|
||||
{
|
||||
IFSelect_RetVoid,
|
||||
IFSelect_RetDone,
|
||||
IFSelect_RetError,
|
||||
IFSelect_RetFail,
|
||||
IFSelect_RetStop
|
||||
XSControl_RetVoid,
|
||||
XSControl_RetDone,
|
||||
XSControl_RetError,
|
||||
XSControl_RetFail,
|
||||
XSControl_RetStop
|
||||
};
|
||||
|
||||
#endif // _IFSelect_ReturnStatus_HeaderFile
|
502
src/DE/DE_WorkSession.cxx
Normal file
502
src/DE/DE_WorkSession.cxx
Normal file
@@ -0,0 +1,502 @@
|
||||
// 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 <XSControl_WorkSession.hxx>
|
||||
|
||||
#include <Interface_Check.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Interface_Macros.hxx>
|
||||
#include <Message_Messenger.hxx>
|
||||
#include <Message_ProgressScope.hxx>
|
||||
#include <TColStd_HSequenceOfTransient.hxx>
|
||||
#include <Transfer_ResultFromModel.hxx>
|
||||
#include <Transfer_ResultFromTransient.hxx>
|
||||
#include <Transfer_SimpleBinderOfTransient.hxx>
|
||||
#include <Transfer_TransientProcess.hxx>
|
||||
#include <XSControl_Controller.hxx>
|
||||
#include <XSControl_TransferReader.hxx>
|
||||
#include <XSControl_TransferWriter.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(XSControl_WorkSession, Standard_Transient)
|
||||
|
||||
//=======================================================================
|
||||
//function : XSControl_WorkSession
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
XSControl_WorkSession::XSControl_WorkSession() :
|
||||
myTransferReader(new XSControl_TransferReader),
|
||||
myTransferWriter(new XSControl_TransferWriter)
|
||||
{}
|
||||
|
||||
//=======================================================================
|
||||
//function : XSControl_WorkSession
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
XSControl_WorkSession::~XSControl_WorkSession()
|
||||
{
|
||||
clearBinders();
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : ClearData
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
void XSControl_WorkSession::ClearData(const Standard_Integer mode)
|
||||
{
|
||||
// 1-2-3-4 : standard IFSelect
|
||||
if (mode >= 1 && mode <= 4) IFSelect_WorkSession::ClearData(mode);
|
||||
|
||||
// 5 : Transferts seuls
|
||||
// 6 : Resultats forces seuls
|
||||
// 7 : Management, y compris tous transferts (forces/calcules), views
|
||||
|
||||
if (mode == 5 || mode == 7)
|
||||
{
|
||||
myTransferReader->Clear(-1);
|
||||
myTransferWriter->Clear(-1);
|
||||
}
|
||||
if (mode == 6 && !myTransferReader.IsNull()) myTransferReader->Clear(1);
|
||||
myTransferReader->SetGraph(HGraph());
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : SelectNorm
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Standard_Boolean XSControl_WorkSession::SelectNorm(const Standard_CString normname)
|
||||
{
|
||||
// Old norm and results
|
||||
myTransferReader->Clear(-1);
|
||||
// ???? En toute rigueur, menage a faire dans XWS : virer les items
|
||||
// ( a la limite, pourquoi pas, refaire XWS en entier)
|
||||
|
||||
Handle(XSControl_Controller) newadapt = XSControl_Controller::Recorded(normname);
|
||||
if (newadapt.IsNull()) return Standard_False;
|
||||
if (newadapt == myController) return Standard_True;
|
||||
SetController(newadapt);
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : SetController
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
void XSControl_WorkSession::SetController(const Handle(XSControl_Controller)& ctl)
|
||||
{
|
||||
myController = ctl;
|
||||
|
||||
SetLibrary(myController->WorkLibrary());
|
||||
SetProtocol(myController->Protocol());
|
||||
|
||||
ClearItems();
|
||||
ClearFinalModifiers();
|
||||
ClearShareOut(Standard_False);
|
||||
ClearFile();
|
||||
|
||||
myTransferReader->SetController(myController);
|
||||
myTransferWriter->SetController(myController);
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : SelectedNorm
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Standard_CString XSControl_WorkSession::SelectedNorm(const Standard_Boolean rsc) const
|
||||
{
|
||||
//JR/Hp :
|
||||
Standard_CString astr = (Standard_CString)(myController.IsNull() ? "" : myController->Name(rsc));
|
||||
return astr;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : SelectedNorm
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
void XSControl_WorkSession::AppendReferenceWS(const TCollection_AsciiString& theName,
|
||||
const Handle(XSControl_WorkSession)& theWS)
|
||||
{
|
||||
myReferenceWS.Bind(theName, theWS);
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : PrintTransferStatus
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Standard_Boolean XSControl_WorkSession::PrintTransferStatus(const Standard_Integer num,
|
||||
const Standard_Boolean wri,
|
||||
Standard_OStream& S) const
|
||||
{
|
||||
const Handle(Transfer_FinderProcess)& FP = myTransferWriter->FinderProcess();
|
||||
Handle(Transfer_TransientProcess) TP = myTransferReader->TransientProcess();
|
||||
|
||||
Handle(Transfer_Binder) binder;
|
||||
Handle(Transfer_Finder) finder;
|
||||
Handle(Standard_Transient) ent;
|
||||
|
||||
// *** WRITE ***
|
||||
if (wri)
|
||||
{
|
||||
if (FP.IsNull()) return Standard_False;
|
||||
if (num == 0) return Standard_False;
|
||||
|
||||
Standard_Integer ne = 0, nr = 0, max = FP->NbMapped(), maxr = FP->NbRoots();
|
||||
if (num > 0)
|
||||
{
|
||||
if (num > max) return Standard_False;
|
||||
ne = num;
|
||||
finder = FP->Mapped(ne);
|
||||
nr = FP->RootIndex(finder);
|
||||
}
|
||||
else if (num < 0)
|
||||
{
|
||||
nr = -num;
|
||||
if (nr > maxr) return Standard_False;
|
||||
finder = FP->Root(nr);
|
||||
ne = FP->MapIndex(finder);
|
||||
}
|
||||
|
||||
S << "Transfer Write item n0." << ne << " of " << max;
|
||||
if (nr > 0)
|
||||
{
|
||||
S << " ** Transfer Root n0." << ne;
|
||||
}
|
||||
S << std::endl;
|
||||
ent = FP->FindTransient(finder);
|
||||
S << " -> Type " << finder->DynamicType()->Name() << std::endl;
|
||||
FP->StartTrace(binder, finder, 0, 0); // pb sout/S
|
||||
if (!ent.IsNull())
|
||||
{
|
||||
S << " ** Resultat Transient, type " << ent->DynamicType()->Name();
|
||||
const Handle(Interface_InterfaceModel)& model = Model();
|
||||
if (!model.IsNull())
|
||||
{
|
||||
S << " In output Model, Entity "; model->Print(ent, S);
|
||||
}
|
||||
S << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
// *** READ ***
|
||||
else
|
||||
{
|
||||
if (TP.IsNull()) return Standard_False;
|
||||
Handle(Interface_InterfaceModel) model = TP->Model();
|
||||
if (model.IsNull()) std::cout << "No Model" << std::endl;
|
||||
else if (model != Model()) std::cout << "Model different from the session" << std::endl;
|
||||
if (num == 0) return Standard_False;
|
||||
|
||||
Standard_Integer ne = 0, nr = 0, max = TP->NbMapped(), maxr = TP->NbRoots();
|
||||
if (num > 0)
|
||||
{
|
||||
if (num > max) return Standard_False;
|
||||
ne = num;
|
||||
ent = TP->Mapped(ne);
|
||||
nr = TP->RootIndex(finder);
|
||||
}
|
||||
else if (num < 0)
|
||||
{
|
||||
nr = -num;
|
||||
if (nr > maxr) return Standard_False;
|
||||
ent = TP->Root(nr);
|
||||
ne = TP->MapIndex(ent);
|
||||
}
|
||||
|
||||
S << "Transfer Read item n0." << ne << " of " << max;
|
||||
if (nr > 0)
|
||||
{
|
||||
S << " ** Transfer Root n0." << ne;
|
||||
}
|
||||
S << std::endl;
|
||||
if (!model.IsNull()) { S << " In Model, Entity "; model->Print(ent, S); }
|
||||
binder = TP->MapItem(ne);
|
||||
S << std::endl;
|
||||
TP->StartTrace(binder, ent, 0, 0);
|
||||
|
||||
}
|
||||
|
||||
// *** CHECK (commun READ+WRITE) ***
|
||||
if (!binder.IsNull())
|
||||
{
|
||||
const Handle(Interface_Check) ch = binder->Check();
|
||||
Standard_Integer i, nbw = ch->NbWarnings(), nbf = ch->NbFails();
|
||||
if (nbw > 0)
|
||||
{
|
||||
S << " - Warnings : " << nbw << " :\n";
|
||||
for (i = 1; i <= nbw; i++) S << ch->CWarning(i) << std::endl;
|
||||
}
|
||||
if (nbf > 0)
|
||||
{
|
||||
S << " - Fails : " << nbf << " :\n";
|
||||
for (i = 1; i <= nbf; i++) S << ch->CFail(i) << std::endl;
|
||||
}
|
||||
}
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : InitTransferReader
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
void XSControl_WorkSession::InitTransferReader(const Standard_Integer mode)
|
||||
{
|
||||
if (mode == 0 || mode == 5) myTransferReader->Clear(-1); // full clear
|
||||
if (myTransferReader.IsNull()) SetTransferReader(new XSControl_TransferReader);
|
||||
else SetTransferReader(myTransferReader);
|
||||
|
||||
// mode = 0 fait par SetTransferReader suite a Nullify
|
||||
if (mode == 1)
|
||||
{
|
||||
if (!myTransferReader.IsNull()) myTransferReader->Clear(-1);
|
||||
else SetTransferReader(new XSControl_TransferReader);
|
||||
}
|
||||
if (mode == 2)
|
||||
{
|
||||
Handle(Transfer_TransientProcess) TP = myTransferReader->TransientProcess();
|
||||
if (TP.IsNull())
|
||||
{
|
||||
TP = new Transfer_TransientProcess;
|
||||
myTransferReader->SetTransientProcess(TP);
|
||||
TP->SetGraph(HGraph());
|
||||
}
|
||||
Handle(TColStd_HSequenceOfTransient) lis = myTransferReader->RecordedList();
|
||||
Standard_Integer i, nb = lis->Length();
|
||||
for (i = 1; i <= nb; i++) TP->SetRoot(lis->Value(i));
|
||||
}
|
||||
if (mode == 3)
|
||||
{
|
||||
Handle(Transfer_TransientProcess) TP = myTransferReader->TransientProcess();
|
||||
if (TP.IsNull()) return;
|
||||
Standard_Integer i, nb = TP->NbRoots();
|
||||
for (i = 1; i <= nb; i++) myTransferReader->RecordResult(TP->Root(i));
|
||||
}
|
||||
if (mode == 4 || mode == 5) myTransferReader->BeginTransfer();
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : SetTransferReader
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
void XSControl_WorkSession::SetTransferReader(const Handle(XSControl_TransferReader)& TR)
|
||||
{
|
||||
if (myTransferReader != TR) //i1 pdn 03.04.99 BUC60301
|
||||
myTransferReader = TR;
|
||||
if (TR.IsNull()) return;
|
||||
TR->SetController(myController);
|
||||
TR->SetGraph(HGraph());
|
||||
if (!TR->TransientProcess().IsNull()) return;
|
||||
Handle(Transfer_TransientProcess) TP = new Transfer_TransientProcess
|
||||
(Model().IsNull() ? 100 : Model()->NbEntities() + 100);
|
||||
TP->SetGraph(HGraph());
|
||||
TP->SetErrorHandle(Standard_True);
|
||||
TR->SetTransientProcess(TP);
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : MapReader
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Handle(Transfer_TransientProcess) XSControl_WorkSession::MapReader() const
|
||||
{
|
||||
return myTransferReader->TransientProcess();
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : SetMapReader
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Standard_Boolean XSControl_WorkSession::SetMapReader(const Handle(Transfer_TransientProcess)& TP)
|
||||
{
|
||||
if (TP.IsNull()) return Standard_False;
|
||||
if (TP->Model().IsNull()) TP->SetModel(Model());
|
||||
TP->SetGraph(HGraph());
|
||||
if (TP->Model() != Model()) return Standard_False;
|
||||
// TR ne doit pas bouger, c est un "crochet" pour signatures, selections ...
|
||||
// En revanche, mieux vaut le RAZ
|
||||
// Handle(XSControl_TransferReader) TR = new XSControl_TransferReader;
|
||||
Handle(XSControl_TransferReader) TR = myTransferReader;
|
||||
TR->Clear(-1);
|
||||
|
||||
SetTransferReader(TR); // avec le meme mais le reinitialise
|
||||
TR->SetTransientProcess(TP); // et prend le nouveau TP
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : Result
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Handle(Standard_Transient) XSControl_WorkSession::Result(const Handle(Standard_Transient)& ent,
|
||||
const Standard_Integer mode) const
|
||||
{
|
||||
Standard_Integer ouca = (mode % 10);
|
||||
Standard_Integer kica = (mode / 10);
|
||||
|
||||
Handle(Transfer_Binder) binder;
|
||||
Handle(Transfer_ResultFromModel) resu;
|
||||
|
||||
if (ouca != 1) resu = myTransferReader->FinalResult(ent);
|
||||
if (mode == 20) return resu;
|
||||
|
||||
if (!resu.IsNull()) binder = resu->MainResult()->Binder();
|
||||
if (binder.IsNull() && ouca > 0)
|
||||
binder = myTransferReader->TransientProcess()->Find(ent);
|
||||
|
||||
if (kica == 1) return binder;
|
||||
DeclareAndCast(Transfer_SimpleBinderOfTransient, trb, binder);
|
||||
if (!trb.IsNull()) return trb->Result();
|
||||
return binder;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : TransferReadOne
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Standard_Integer XSControl_WorkSession::TransferReadOne(const Handle(Standard_Transient)& ent,
|
||||
const Message_ProgressRange& theProgress)
|
||||
{
|
||||
Handle(Interface_InterfaceModel) model = Model();
|
||||
if (ent == model) return TransferReadRoots(theProgress);
|
||||
|
||||
Handle(TColStd_HSequenceOfTransient) list = GiveList(ent);
|
||||
if (list->Length() == 1)
|
||||
return myTransferReader->TransferOne(list->Value(1), Standard_True, theProgress);
|
||||
else
|
||||
return myTransferReader->TransferList(list, Standard_True, theProgress);
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : TransferReadRoots
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Standard_Integer XSControl_WorkSession::TransferReadRoots(const Message_ProgressRange& theProgress)
|
||||
{
|
||||
return myTransferReader->TransferRoots(Graph(), theProgress);
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : NewModel
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Handle(Interface_InterfaceModel) XSControl_WorkSession::NewModel()
|
||||
{
|
||||
Handle(Interface_InterfaceModel) newmod;
|
||||
if (myController.IsNull()) return newmod;
|
||||
newmod = myController->NewModel();
|
||||
|
||||
SetModel(newmod);
|
||||
if (!myTransferReader->TransientProcess().IsNull())
|
||||
myTransferReader->TransientProcess()->Clear();
|
||||
//clear all contains of WS
|
||||
myTransferReader->Clear(3);
|
||||
myTransferWriter->Clear(-1);
|
||||
|
||||
return newmod;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : TransferWriter
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
const Handle(XSControl_TransferWriter)& XSControl_WorkSession::TransferWriter() const
|
||||
{
|
||||
return myTransferWriter;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : SetMapWriter
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Standard_Boolean XSControl_WorkSession::SetMapWriter(const Handle(Transfer_FinderProcess)& theFP)
|
||||
{
|
||||
if (theFP.IsNull()) return Standard_False;
|
||||
myTransferWriter->SetFinderProcess(theFP);
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : TransferWriteShape
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
XSControl_ReturnStatus XSControl_WorkSession::TransferWriteShape(const TopoDS_Shape& shape,
|
||||
const Standard_Boolean compgraph,
|
||||
const Message_ProgressRange& theProgress)
|
||||
{
|
||||
XSControl_ReturnStatus status;
|
||||
if (myController.IsNull()) return XSControl_RetError;
|
||||
const Handle(Interface_InterfaceModel)& model = Model();
|
||||
if (model.IsNull() || shape.IsNull())
|
||||
{
|
||||
return XSControl_RetVoid;
|
||||
}
|
||||
|
||||
status = myTransferWriter->TransferWriteShape(model, shape, theProgress);
|
||||
if (theProgress.UserBreak())
|
||||
return XSControl_RetStop;
|
||||
// qui s occupe de tout, try/catch inclus
|
||||
|
||||
//skl insert param compgraph for XDE writing 10.12.2003
|
||||
if (compgraph) ComputeGraph(Standard_True);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : TransferWriteCheckList
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Interface_CheckIterator XSControl_WorkSession::TransferWriteCheckList() const
|
||||
{
|
||||
return myTransferWriter->ResultCheckList(Model());
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : clearBinders
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
void XSControl_WorkSession::clearBinders()
|
||||
{
|
||||
const Handle(Transfer_FinderProcess)& FP = myTransferWriter->FinderProcess();
|
||||
//Due to big number of chains of binders it is necessary to
|
||||
//collect head binders of each chain in the sequence
|
||||
TColStd_SequenceOfTransient aSeqBnd;
|
||||
TColStd_SequenceOfTransient aSeqShapes;
|
||||
Standard_Integer i = 1;
|
||||
for (; i <= FP->NbMapped(); i++)
|
||||
{
|
||||
Handle(Transfer_Binder) bnd = FP->MapItem(i);
|
||||
if (!bnd.IsNull())
|
||||
aSeqBnd.Append(bnd);
|
||||
Handle(Standard_Transient) ash(FP->Mapped(i));
|
||||
aSeqShapes.Append(ash);
|
||||
}
|
||||
//removing finder process containing result of translation.
|
||||
FP->Clear();
|
||||
ClearData(1);
|
||||
ClearData(5);
|
||||
|
||||
//removing each chain of binders
|
||||
while (aSeqBnd.Length() > 0)
|
||||
{
|
||||
Handle(Transfer_Binder) aBnd = Handle(Transfer_Binder)::DownCast(aSeqBnd.Value(1));
|
||||
Handle(Standard_Transient) ash = aSeqShapes.Value(1);
|
||||
aSeqBnd.Remove(1);
|
||||
aSeqShapes.Remove(1);
|
||||
ash.Nullify();
|
||||
while (!aBnd.IsNull())
|
||||
{
|
||||
Handle(Transfer_Binder) aBndNext = aBnd->NextResult();
|
||||
aBnd.Nullify();
|
||||
aBnd = aBndNext;
|
||||
}
|
||||
}
|
||||
}
|
190
src/DE/DE_WorkSession.hxx
Normal file
190
src/DE/DE_WorkSession.hxx
Normal file
@@ -0,0 +1,190 @@
|
||||
// Created on: 1995-06-01
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1995-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 _XSControl_WorkSession_HeaderFile
|
||||
#define _XSControl_WorkSession_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <IFSelect_WorkSession.hxx>
|
||||
#include <Message_ProgressRange.hxx>
|
||||
|
||||
class XSControl_Controller;
|
||||
class XSControl_TransferReader;
|
||||
class XSControl_TransferWriter;
|
||||
class Transfer_TransientProcess;
|
||||
class Interface_InterfaceModel;
|
||||
class Transfer_FinderProcess;
|
||||
class TopoDS_Shape;
|
||||
class Interface_CheckIterator;
|
||||
|
||||
class XSControl_WorkSession;
|
||||
DEFINE_STANDARD_HANDLE(XSControl_WorkSession, IFSelect_WorkSession)
|
||||
|
||||
typedef NCollection_DataMap<TCollection_AsciiString, Handle(XSControl_WorkSession)> XSControl_WorkSessionMap;
|
||||
|
||||
//! This WorkSession completes the basic one, by adding :
|
||||
//! - use of Controller, with norm selection...
|
||||
//! - management of transfers (both ways) with auxiliary classes
|
||||
//! TransferReader and TransferWriter
|
||||
//! -> these transfers may work with a Context List : its items
|
||||
//! are given by the user, according to the transfer to be
|
||||
//! i.e. it is interpreted by the Actors
|
||||
//! Each item is accessed by a Name
|
||||
class XSControl_WorkSession : public IFSelect_WorkSession
|
||||
{
|
||||
public:
|
||||
|
||||
Standard_EXPORT XSControl_WorkSession();
|
||||
|
||||
Standard_EXPORT ~XSControl_WorkSession();
|
||||
|
||||
//! In addition to basic ClearData, clears Transfer and Management
|
||||
//! for interactive use, for mode = 0,1,2 and over 4
|
||||
//! Plus : mode = 5 to clear Transfers (both ways) only
|
||||
//! mode = 6 to clear enforced results
|
||||
//! mode = 7 to clear transfers, results
|
||||
Standard_EXPORT virtual void ClearData(const Standard_Integer theMode) Standard_OVERRIDE;
|
||||
|
||||
//! Selects a Norm defined by its name.
|
||||
//! A Norm is described and handled by a Controller
|
||||
//! Returns True if done, False if <normname> is unknown
|
||||
//!
|
||||
//! The current Profile for this Norm is taken.
|
||||
Standard_EXPORT Standard_Boolean SelectNorm(const Standard_CString theNormName);
|
||||
|
||||
//! Selects a Norm defined by its Controller itself
|
||||
Standard_EXPORT void SetController(const Handle(XSControl_Controller)& theCtl);
|
||||
|
||||
//! Returns the name of the last Selected Norm. If none is
|
||||
//! defined, returns an empty string
|
||||
//! By default, returns the complete name of the norm
|
||||
//! If <rsc> is True, returns the short name used for resource
|
||||
Standard_EXPORT Standard_CString SelectedNorm(const Standard_Boolean theRsc = Standard_False) const;
|
||||
|
||||
//! Returns the norm controller itself
|
||||
const Handle(XSControl_Controller)& NormAdaptor() const { return myController; }
|
||||
|
||||
//! Returns the current reference WS List, empty if not defined
|
||||
const XSControl_WorkSessionMap& ReferenceWS() const { return myReferenceWS; }
|
||||
|
||||
//! Appends new refrence Work Session
|
||||
Standard_EXPORT void AppendReferenceWS(const TCollection_AsciiString& theName,
|
||||
const Handle(XSControl_WorkSession)& theWS);
|
||||
|
||||
//! Prints the transfer status of a transferred item, as being
|
||||
//! the Mapped n0 <num>, from MapWriter if <wri> is True, or
|
||||
//! from MapReader if <wri> is False
|
||||
//! Returns True when done, False else (i.e. num out of range)
|
||||
Standard_EXPORT Standard_Boolean PrintTransferStatus(const Standard_Integer theNum,
|
||||
const Standard_Boolean theWri,
|
||||
Standard_OStream& theS) const;
|
||||
|
||||
//! Sets a Transfer Reader, by internal ways, according mode :
|
||||
//! 0 recreates it clear, 1 clears it (does not recreate)
|
||||
//! 2 aligns Roots of TransientProcess from final Results
|
||||
//! 3 aligns final Results from Roots of TransientProcess
|
||||
//! 4 begins a new transfer (by BeginTransfer)
|
||||
//! 5 recreates TransferReader then begins a new transfer
|
||||
Standard_EXPORT void InitTransferReader(const Standard_Integer theMode);
|
||||
|
||||
//! Sets a Transfer Reader, which manages transfers on reading
|
||||
Standard_EXPORT void SetTransferReader(const Handle(XSControl_TransferReader)& theTR);
|
||||
|
||||
//! Returns the Transfer Reader, Null if not set
|
||||
const Handle(XSControl_TransferReader)& TransferReader() const { return myTransferReader; }
|
||||
|
||||
//! Returns the TransientProcess(internal data for TransferReader)
|
||||
Standard_EXPORT Handle(Transfer_TransientProcess) MapReader() const;
|
||||
|
||||
//! Changes the Map Reader, i.e. considers that the new one
|
||||
//! defines the relevant read results (forgets the former ones)
|
||||
//! Returns True when done, False in case of bad definition, i.e.
|
||||
//! if Model from TP differs from that of Session
|
||||
Standard_EXPORT Standard_Boolean SetMapReader(const Handle(Transfer_TransientProcess)& theTP);
|
||||
|
||||
//! Returns the result attached to a starting entity
|
||||
//! If <mode> = 0, returns Final Result
|
||||
//! If <mode> = 1, considers Last Result
|
||||
//! If <mode> = 2, considers Final, else if absent, Last
|
||||
//! returns it as Transient, if result is not transient returns
|
||||
//! the Binder
|
||||
//! <mode> = 10,11,12 idem but returns the Binder itself
|
||||
//! (if it is not, e.g. Shape, returns the Binder)
|
||||
//! <mode> = 20, returns the ResultFromModel
|
||||
Standard_EXPORT Handle(Standard_Transient) Result(const Handle(Standard_Transient)& theEnt,
|
||||
const Standard_Integer theMode) const;
|
||||
|
||||
//! Commands the transfer of, either one entity, or a list
|
||||
//! I.E. calls the TransferReader after having analysed <ents>
|
||||
//! It is cumulated from the last BeginTransfer
|
||||
//! <ents> is processed by GiveList, hence :
|
||||
//! - <ents> a Selection : its SelectionResult
|
||||
//! - <ents> a HSequenceOfTransient : this list
|
||||
//! - <ents> the Model : in this specific case, all the roots,
|
||||
//! with no cumulation of former transfers (TransferReadRoots)
|
||||
Standard_EXPORT Standard_Integer TransferReadOne(const Handle(Standard_Transient)& theEnts,
|
||||
const Message_ProgressRange& theProgress = Message_ProgressRange());
|
||||
|
||||
//! Commands the transfer of all the root entities of the model
|
||||
//! i.e. calls TransferRoot from the TransferReader with the Graph
|
||||
//! No cumulation with former calls to TransferReadOne
|
||||
Standard_EXPORT Standard_Integer TransferReadRoots(const Message_ProgressRange& theProgress = Message_ProgressRange());
|
||||
|
||||
//! produces and returns a new Model well conditioned
|
||||
//! It is produced by the Norm Controller
|
||||
//! It can be Null (if this function is not implemented)
|
||||
Standard_EXPORT Handle(Interface_InterfaceModel) NewModel();
|
||||
|
||||
//! Returns the Transfer Reader, Null if not set
|
||||
Standard_EXPORT const Handle(XSControl_TransferWriter)& TransferWriter() const;
|
||||
|
||||
//! Changes the Map Reader, i.e. considers that the new one
|
||||
//! defines the relevant read results (forgets the former ones)
|
||||
//! Returns True when done, False if <FP> is Null
|
||||
Standard_EXPORT Standard_Boolean SetMapWriter(const Handle(Transfer_FinderProcess)& theFP);
|
||||
|
||||
//! Transfers a Shape from CasCade to a model of current norm,
|
||||
//! according to the last call to SetModeWriteShape
|
||||
//! Returns status :Done if OK, Fail if error during transfer,
|
||||
//! Error if transfer badly initialised
|
||||
Standard_EXPORT XSControl_ReturnStatus TransferWriteShape(const TopoDS_Shape& theShape,
|
||||
const Standard_Boolean theCompGraph = Standard_True,
|
||||
const Message_ProgressRange& theProgress = Message_ProgressRange());
|
||||
|
||||
//! Returns the check-list of last transfer (write)
|
||||
//! It is recorded in the FinderProcess, but it must be bound with
|
||||
//! resulting entities (in the resulting file model) rather than
|
||||
//! with original objects (in fact, their mappers)
|
||||
Standard_EXPORT Interface_CheckIterator TransferWriteCheckList() const;
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(XSControl_WorkSession, IFSelect_WorkSession)
|
||||
|
||||
protected:
|
||||
|
||||
//! Clears binders
|
||||
void clearBinders();
|
||||
|
||||
private:
|
||||
|
||||
Handle(XSControl_Controller) myController;
|
||||
Handle(XSControl_TransferReader) myTransferReader;
|
||||
Handle(XSControl_TransferWriter) myTransferWriter;
|
||||
XSControl_WorkSessionMap myReferenceWS;
|
||||
};
|
||||
|
||||
#endif // _XSControl_WorkSession_HeaderFile
|
@@ -2,7 +2,14 @@ DE_ConfigurationContext.cxx
|
||||
DE_ConfigurationContext.hxx
|
||||
DE_ConfigurationNode.cxx
|
||||
DE_ConfigurationNode.hxx
|
||||
DE_DataModel.cxx
|
||||
DE_DataModel.hxx
|
||||
DE_InterfaceParameters.cxx
|
||||
DE_InterfaceParameters.hxx
|
||||
DE_Provider.cxx
|
||||
DE_Provider.hxx
|
||||
DE_ReturnStatus.hxx
|
||||
DE_WorkSession.cxx
|
||||
DE_WorkSession.hxx
|
||||
DE_Wrapper.cxx
|
||||
DE_Wrapper.hxx
|
||||
|
@@ -6,5 +6,7 @@ HeaderSection_FileName.cxx
|
||||
HeaderSection_FileName.hxx
|
||||
HeaderSection_FileSchema.cxx
|
||||
HeaderSection_FileSchema.hxx
|
||||
HeaderSection_MakeHeader.cxx
|
||||
HeaderSection_MakeHeader.hxx
|
||||
HeaderSection_Protocol.cxx
|
||||
HeaderSection_Protocol.hxx
|
||||
|
@@ -17,7 +17,7 @@
|
||||
//#58 rln 28.12.98 STEP header fields (NOTE: more parameterization is necessary)
|
||||
//pdn 11.01.99 including <stdio.h> for compilation on NT
|
||||
|
||||
#include <APIHeaderSection_MakeHeader.hxx>
|
||||
#include <HeaderSection_MakeHeader.hxx>
|
||||
#include <HeaderSection_FileDescription.hxx>
|
||||
#include <HeaderSection_FileName.hxx>
|
||||
#include <HeaderSection_FileSchema.hxx>
|
||||
@@ -35,7 +35,7 @@
|
||||
static Handle(TCollection_HAsciiString) nulstr;
|
||||
static Handle(Interface_HArray1OfHAsciiString) nularr;
|
||||
|
||||
APIHeaderSection_MakeHeader::APIHeaderSection_MakeHeader
|
||||
HeaderSection_MakeHeader::HeaderSection_MakeHeader
|
||||
(const Handle(StepData_StepModel)& model)
|
||||
{
|
||||
done = Standard_True;
|
||||
@@ -56,7 +56,7 @@ APIHeaderSection_MakeHeader::APIHeaderSection_MakeHeader
|
||||
else done = Standard_False;
|
||||
}
|
||||
|
||||
APIHeaderSection_MakeHeader::APIHeaderSection_MakeHeader
|
||||
HeaderSection_MakeHeader::HeaderSection_MakeHeader
|
||||
(const Standard_Integer shapetype)
|
||||
{
|
||||
switch(shapetype) {
|
||||
@@ -68,7 +68,7 @@ APIHeaderSection_MakeHeader::APIHeaderSection_MakeHeader
|
||||
}
|
||||
}
|
||||
|
||||
void APIHeaderSection_MakeHeader::Init (const Standard_CString nameval)
|
||||
void HeaderSection_MakeHeader::Init (const Standard_CString nameval)
|
||||
{
|
||||
done = Standard_True;
|
||||
|
||||
@@ -134,12 +134,12 @@ void APIHeaderSection_MakeHeader::Init (const Standard_CString nameval)
|
||||
|
||||
}
|
||||
|
||||
Standard_Boolean APIHeaderSection_MakeHeader::IsDone() const
|
||||
Standard_Boolean HeaderSection_MakeHeader::IsDone() const
|
||||
{
|
||||
return done;
|
||||
}
|
||||
|
||||
void APIHeaderSection_MakeHeader::Apply
|
||||
void HeaderSection_MakeHeader::Apply
|
||||
(const Handle(StepData_StepModel)& model) const
|
||||
{
|
||||
Interface_EntityIterator header = model->Header();
|
||||
@@ -177,7 +177,7 @@ void APIHeaderSection_MakeHeader::Apply
|
||||
// FileName
|
||||
// ========
|
||||
|
||||
Handle(StepData_StepModel) APIHeaderSection_MakeHeader::NewModel
|
||||
Handle(StepData_StepModel) HeaderSection_MakeHeader::NewModel
|
||||
(const Handle(Interface_Protocol)& protocol) const
|
||||
{
|
||||
Handle(StepData_StepModel) stepmodel = new StepData_StepModel;
|
||||
@@ -195,16 +195,16 @@ Handle(StepData_StepModel) APIHeaderSection_MakeHeader::NewModel
|
||||
// FileName
|
||||
// ========
|
||||
|
||||
Standard_Boolean APIHeaderSection_MakeHeader::HasFn() const
|
||||
Standard_Boolean HeaderSection_MakeHeader::HasFn() const
|
||||
{ return (!fn.IsNull()); }
|
||||
|
||||
Handle(HeaderSection_FileName) APIHeaderSection_MakeHeader::FnValue() const
|
||||
Handle(HeaderSection_FileName) HeaderSection_MakeHeader::FnValue() const
|
||||
{
|
||||
return fn;
|
||||
}
|
||||
|
||||
/*
|
||||
void APIHeaderSection_MakeHeader::SetNameFromShapeType(const Standard_Integer shapetype)
|
||||
void HeaderSection_MakeHeader::SetNameFromShapeType(const Standard_Integer shapetype)
|
||||
{
|
||||
Handle(TCollection_HAsciiString) name;
|
||||
switch(shapetype)
|
||||
@@ -230,106 +230,106 @@ void APIHeaderSection_MakeHeader::SetNameFromShapeType(const Standard_Integer sh
|
||||
}
|
||||
*/
|
||||
|
||||
void APIHeaderSection_MakeHeader::SetName(const Handle(TCollection_HAsciiString)& aName)
|
||||
void HeaderSection_MakeHeader::SetName(const Handle(TCollection_HAsciiString)& aName)
|
||||
{
|
||||
if (!fn.IsNull()) fn->SetName(aName);
|
||||
}
|
||||
|
||||
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::Name() const
|
||||
Handle(TCollection_HAsciiString) HeaderSection_MakeHeader::Name() const
|
||||
{
|
||||
return (fn.IsNull() ? nulstr : fn->Name());
|
||||
}
|
||||
|
||||
void APIHeaderSection_MakeHeader::SetTimeStamp(const Handle(TCollection_HAsciiString)& aTimeStamp)
|
||||
void HeaderSection_MakeHeader::SetTimeStamp(const Handle(TCollection_HAsciiString)& aTimeStamp)
|
||||
{
|
||||
if (!fn.IsNull()) fn->SetTimeStamp(aTimeStamp);
|
||||
}
|
||||
|
||||
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::TimeStamp() const
|
||||
Handle(TCollection_HAsciiString) HeaderSection_MakeHeader::TimeStamp() const
|
||||
{
|
||||
return (fn.IsNull() ? nulstr : fn->TimeStamp());
|
||||
}
|
||||
|
||||
void APIHeaderSection_MakeHeader::SetAuthor(const Handle(Interface_HArray1OfHAsciiString)& aAuthor)
|
||||
void HeaderSection_MakeHeader::SetAuthor(const Handle(Interface_HArray1OfHAsciiString)& aAuthor)
|
||||
{
|
||||
if (!fn.IsNull()) fn->SetAuthor(aAuthor);
|
||||
}
|
||||
|
||||
void APIHeaderSection_MakeHeader::SetAuthorValue(const Standard_Integer num, const Handle(TCollection_HAsciiString)& aAuthor)
|
||||
void HeaderSection_MakeHeader::SetAuthorValue(const Standard_Integer num, const Handle(TCollection_HAsciiString)& aAuthor)
|
||||
{
|
||||
if (fn.IsNull()) return;
|
||||
Handle(Interface_HArray1OfHAsciiString) li = fn->Author();
|
||||
if (num >= li->Lower() && num <= li->Upper()) li->SetValue(num,aAuthor);
|
||||
}
|
||||
|
||||
Handle(Interface_HArray1OfHAsciiString) APIHeaderSection_MakeHeader::Author() const
|
||||
Handle(Interface_HArray1OfHAsciiString) HeaderSection_MakeHeader::Author() const
|
||||
{
|
||||
return (fn.IsNull() ? nularr : fn->Author());
|
||||
}
|
||||
|
||||
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::AuthorValue(const Standard_Integer num) const
|
||||
Handle(TCollection_HAsciiString) HeaderSection_MakeHeader::AuthorValue(const Standard_Integer num) const
|
||||
{
|
||||
return (fn.IsNull() ? nulstr : fn->AuthorValue(num));
|
||||
}
|
||||
|
||||
Standard_Integer APIHeaderSection_MakeHeader::NbAuthor () const
|
||||
Standard_Integer HeaderSection_MakeHeader::NbAuthor () const
|
||||
{
|
||||
return (fn.IsNull() ? 0 : fn->NbAuthor());
|
||||
}
|
||||
|
||||
void APIHeaderSection_MakeHeader::SetOrganization(const Handle(Interface_HArray1OfHAsciiString)& aOrganization)
|
||||
void HeaderSection_MakeHeader::SetOrganization(const Handle(Interface_HArray1OfHAsciiString)& aOrganization)
|
||||
{
|
||||
if (!fn.IsNull()) fn->SetOrganization(aOrganization);
|
||||
}
|
||||
|
||||
void APIHeaderSection_MakeHeader::SetOrganizationValue(const Standard_Integer num, const Handle(TCollection_HAsciiString)& aOrgan)
|
||||
void HeaderSection_MakeHeader::SetOrganizationValue(const Standard_Integer num, const Handle(TCollection_HAsciiString)& aOrgan)
|
||||
{
|
||||
if (fn.IsNull()) return;
|
||||
Handle(Interface_HArray1OfHAsciiString) li = fn->Organization();
|
||||
if (num >= li->Lower() && num <= li->Upper()) li->SetValue(num,aOrgan);
|
||||
}
|
||||
|
||||
Handle(Interface_HArray1OfHAsciiString) APIHeaderSection_MakeHeader::Organization() const
|
||||
Handle(Interface_HArray1OfHAsciiString) HeaderSection_MakeHeader::Organization() const
|
||||
{
|
||||
return (fn.IsNull() ? nularr : fn->Organization());
|
||||
}
|
||||
|
||||
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::OrganizationValue(const Standard_Integer num) const
|
||||
Handle(TCollection_HAsciiString) HeaderSection_MakeHeader::OrganizationValue(const Standard_Integer num) const
|
||||
{
|
||||
return (fn.IsNull() ? nulstr : fn->OrganizationValue(num));
|
||||
}
|
||||
|
||||
Standard_Integer APIHeaderSection_MakeHeader::NbOrganization () const
|
||||
Standard_Integer HeaderSection_MakeHeader::NbOrganization () const
|
||||
{
|
||||
return (fn.IsNull() ? 0 : fn->NbOrganization());
|
||||
}
|
||||
|
||||
void APIHeaderSection_MakeHeader::SetPreprocessorVersion(const Handle(TCollection_HAsciiString)& aPreprocessorVersion)
|
||||
void HeaderSection_MakeHeader::SetPreprocessorVersion(const Handle(TCollection_HAsciiString)& aPreprocessorVersion)
|
||||
{
|
||||
if (!fn.IsNull()) fn->SetPreprocessorVersion(aPreprocessorVersion);
|
||||
}
|
||||
|
||||
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::PreprocessorVersion() const
|
||||
Handle(TCollection_HAsciiString) HeaderSection_MakeHeader::PreprocessorVersion() const
|
||||
{
|
||||
return (fn.IsNull() ? nulstr : fn->PreprocessorVersion());
|
||||
}
|
||||
|
||||
void APIHeaderSection_MakeHeader::SetOriginatingSystem(const Handle(TCollection_HAsciiString)& aOriginatingSystem)
|
||||
void HeaderSection_MakeHeader::SetOriginatingSystem(const Handle(TCollection_HAsciiString)& aOriginatingSystem)
|
||||
{
|
||||
if (!fn.IsNull()) fn->SetOriginatingSystem(aOriginatingSystem);
|
||||
}
|
||||
|
||||
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::OriginatingSystem() const
|
||||
Handle(TCollection_HAsciiString) HeaderSection_MakeHeader::OriginatingSystem() const
|
||||
{
|
||||
return (fn.IsNull() ? nulstr : fn->OriginatingSystem());
|
||||
}
|
||||
|
||||
void APIHeaderSection_MakeHeader::SetAuthorisation(const Handle(TCollection_HAsciiString)& aAuthorisation)
|
||||
void HeaderSection_MakeHeader::SetAuthorisation(const Handle(TCollection_HAsciiString)& aAuthorisation)
|
||||
{
|
||||
if (!fn.IsNull()) fn->SetAuthorisation(aAuthorisation);
|
||||
}
|
||||
|
||||
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::Authorisation() const
|
||||
Handle(TCollection_HAsciiString) HeaderSection_MakeHeader::Authorisation() const
|
||||
{
|
||||
return (fn.IsNull() ? nulstr : fn->Authorisation());
|
||||
}
|
||||
@@ -338,37 +338,37 @@ Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::Authorisation() co
|
||||
// File Schema
|
||||
// ===========
|
||||
|
||||
Standard_Boolean APIHeaderSection_MakeHeader::HasFs() const
|
||||
Standard_Boolean HeaderSection_MakeHeader::HasFs() const
|
||||
{ return (!fs.IsNull()); }
|
||||
|
||||
Handle(HeaderSection_FileSchema) APIHeaderSection_MakeHeader::FsValue() const
|
||||
Handle(HeaderSection_FileSchema) HeaderSection_MakeHeader::FsValue() const
|
||||
{
|
||||
return fs;
|
||||
}
|
||||
|
||||
void APIHeaderSection_MakeHeader::SetSchemaIdentifiers(const Handle(Interface_HArray1OfHAsciiString)& aSchemaIdentifiers)
|
||||
void HeaderSection_MakeHeader::SetSchemaIdentifiers(const Handle(Interface_HArray1OfHAsciiString)& aSchemaIdentifiers)
|
||||
{
|
||||
if (!fs.IsNull()) fs->SetSchemaIdentifiers(aSchemaIdentifiers);
|
||||
}
|
||||
|
||||
void APIHeaderSection_MakeHeader::SetSchemaIdentifiersValue(const Standard_Integer num, const Handle(TCollection_HAsciiString)& aSchem)
|
||||
void HeaderSection_MakeHeader::SetSchemaIdentifiersValue(const Standard_Integer num, const Handle(TCollection_HAsciiString)& aSchem)
|
||||
{
|
||||
if (fs.IsNull()) return;
|
||||
Handle(Interface_HArray1OfHAsciiString) li = fs->SchemaIdentifiers();
|
||||
if (num >= li->Lower() && num <= li->Upper()) li->SetValue(num,aSchem);
|
||||
}
|
||||
|
||||
Handle(Interface_HArray1OfHAsciiString) APIHeaderSection_MakeHeader::SchemaIdentifiers() const
|
||||
Handle(Interface_HArray1OfHAsciiString) HeaderSection_MakeHeader::SchemaIdentifiers() const
|
||||
{
|
||||
return (fs.IsNull() ? nularr : fs->SchemaIdentifiers());
|
||||
}
|
||||
|
||||
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::SchemaIdentifiersValue(const Standard_Integer num) const
|
||||
Handle(TCollection_HAsciiString) HeaderSection_MakeHeader::SchemaIdentifiersValue(const Standard_Integer num) const
|
||||
{
|
||||
return (fs.IsNull() ? nulstr : fs->SchemaIdentifiersValue(num));
|
||||
}
|
||||
|
||||
Standard_Integer APIHeaderSection_MakeHeader::NbSchemaIdentifiers () const
|
||||
Standard_Integer HeaderSection_MakeHeader::NbSchemaIdentifiers () const
|
||||
{
|
||||
return (fs.IsNull() ? 0 : fs->NbSchemaIdentifiers());
|
||||
}
|
||||
@@ -378,7 +378,7 @@ Standard_Integer APIHeaderSection_MakeHeader::NbSchemaIdentifiers () const
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void APIHeaderSection_MakeHeader::AddSchemaIdentifier(const Handle(TCollection_HAsciiString)& aSchem)
|
||||
void HeaderSection_MakeHeader::AddSchemaIdentifier(const Handle(TCollection_HAsciiString)& aSchem)
|
||||
{
|
||||
if ( fs.IsNull() ) fs = new HeaderSection_FileSchema;
|
||||
Handle(Interface_HArray1OfHAsciiString) idents = fs->SchemaIdentifiers();
|
||||
@@ -404,47 +404,47 @@ void APIHeaderSection_MakeHeader::AddSchemaIdentifier(const Handle(TCollection_H
|
||||
// File Description
|
||||
// ================
|
||||
|
||||
Standard_Boolean APIHeaderSection_MakeHeader::HasFd() const
|
||||
Standard_Boolean HeaderSection_MakeHeader::HasFd() const
|
||||
{ return (!fd.IsNull()); }
|
||||
|
||||
Handle(HeaderSection_FileDescription) APIHeaderSection_MakeHeader::FdValue() const
|
||||
Handle(HeaderSection_FileDescription) HeaderSection_MakeHeader::FdValue() const
|
||||
{
|
||||
return fd;
|
||||
}
|
||||
|
||||
void APIHeaderSection_MakeHeader::SetDescription(const Handle(Interface_HArray1OfHAsciiString)& aDescription)
|
||||
void HeaderSection_MakeHeader::SetDescription(const Handle(Interface_HArray1OfHAsciiString)& aDescription)
|
||||
{
|
||||
if (!fs.IsNull()) fd->SetDescription(aDescription);
|
||||
}
|
||||
|
||||
void APIHeaderSection_MakeHeader::SetDescriptionValue(const Standard_Integer num, const Handle(TCollection_HAsciiString)& aDescr)
|
||||
void HeaderSection_MakeHeader::SetDescriptionValue(const Standard_Integer num, const Handle(TCollection_HAsciiString)& aDescr)
|
||||
{
|
||||
if (fd.IsNull()) return;
|
||||
Handle(Interface_HArray1OfHAsciiString) li = fd->Description();
|
||||
if (num >= li->Lower() && num <= li->Upper()) li->SetValue(num,aDescr);
|
||||
}
|
||||
|
||||
Handle(Interface_HArray1OfHAsciiString) APIHeaderSection_MakeHeader::Description() const
|
||||
Handle(Interface_HArray1OfHAsciiString) HeaderSection_MakeHeader::Description() const
|
||||
{
|
||||
return (fd.IsNull() ? nularr : fd->Description());
|
||||
}
|
||||
|
||||
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::DescriptionValue(const Standard_Integer num) const
|
||||
Handle(TCollection_HAsciiString) HeaderSection_MakeHeader::DescriptionValue(const Standard_Integer num) const
|
||||
{
|
||||
return (fd.IsNull() ? nulstr : fd->DescriptionValue(num));
|
||||
}
|
||||
|
||||
Standard_Integer APIHeaderSection_MakeHeader::NbDescription () const
|
||||
Standard_Integer HeaderSection_MakeHeader::NbDescription () const
|
||||
{
|
||||
return (fd.IsNull() ? 0 : fd->NbDescription());
|
||||
}
|
||||
|
||||
void APIHeaderSection_MakeHeader::SetImplementationLevel(const Handle(TCollection_HAsciiString)& aImplementationLevel)
|
||||
void HeaderSection_MakeHeader::SetImplementationLevel(const Handle(TCollection_HAsciiString)& aImplementationLevel)
|
||||
{
|
||||
if (!fd.IsNull()) fd->SetImplementationLevel(aImplementationLevel);
|
||||
}
|
||||
|
||||
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::ImplementationLevel() const
|
||||
Handle(TCollection_HAsciiString) HeaderSection_MakeHeader::ImplementationLevel() const
|
||||
{
|
||||
return (fd.IsNull() ? nulstr : fd->ImplementationLevel());
|
||||
}
|
@@ -14,8 +14,8 @@
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _APIHeaderSection_MakeHeader_HeaderFile
|
||||
#define _APIHeaderSection_MakeHeader_HeaderFile
|
||||
#ifndef _HeaderSection_MakeHeader_HeaderFile
|
||||
#define _HeaderSection_MakeHeader_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_DefineAlloc.hxx>
|
||||
@@ -34,7 +34,7 @@ class TCollection_HAsciiString;
|
||||
|
||||
//! This class allows to consult and prepare/edit data stored in
|
||||
//! a Step Model Header
|
||||
class APIHeaderSection_MakeHeader
|
||||
class HeaderSection_MakeHeader
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -42,11 +42,11 @@ public:
|
||||
|
||||
|
||||
//! Prepares a new MakeHeader from scratch
|
||||
Standard_EXPORT APIHeaderSection_MakeHeader(const Standard_Integer shapetype = 0);
|
||||
Standard_EXPORT HeaderSection_MakeHeader(const Standard_Integer shapetype = 0);
|
||||
|
||||
//! Prepares a MakeHeader from the content of a StepModel
|
||||
//! See IsDone to know if the Header is well defined
|
||||
Standard_EXPORT APIHeaderSection_MakeHeader(const Handle(StepData_StepModel)& model);
|
||||
Standard_EXPORT HeaderSection_MakeHeader(const Handle(StepData_StepModel)& model);
|
||||
|
||||
//! Cancels the former definition and gives a FileName
|
||||
//! To be used when a Model has no well defined Header
|
||||
@@ -199,4 +199,4 @@ private:
|
||||
|
||||
|
||||
|
||||
#endif // _APIHeaderSection_MakeHeader_HeaderFile
|
||||
#endif // _HeaderSection_MakeHeader_HeaderFile
|
@@ -1,22 +0,0 @@
|
||||
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
|
||||
IFGraph_ConnectedComponants.hxx
|
||||
IFGraph_Cumulate.cxx
|
||||
IFGraph_Cumulate.hxx
|
||||
IFGraph_Cycles.cxx
|
||||
IFGraph_Cycles.hxx
|
||||
IFGraph_ExternalSources.cxx
|
||||
IFGraph_ExternalSources.hxx
|
||||
IFGraph_SCRoots.cxx
|
||||
IFGraph_SCRoots.hxx
|
||||
IFGraph_StrongComponants.cxx
|
||||
IFGraph_StrongComponants.hxx
|
||||
IFGraph_SubPartsIterator.cxx
|
||||
IFGraph_SubPartsIterator.hxx
|
@@ -1,52 +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_AllConnected.hxx>
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
|
||||
// AllConnected prend toutes les Entites connectees a une Entite donnee
|
||||
// c-a-d toutes les "Shared" + toutes les "Sharings" et on recommence
|
||||
// Autrement dit le contenu du "Composant Connexe" du graphe d'ensemble
|
||||
// qui contient cette entite
|
||||
// Le calcul est effectue par GetFromEntity (Evaluate n'a rien a faire)
|
||||
IFGraph_AllConnected::IFGraph_AllConnected (const Interface_Graph& agraph)
|
||||
: thegraph (agraph) { }
|
||||
|
||||
|
||||
IFGraph_AllConnected::IFGraph_AllConnected
|
||||
(const Interface_Graph& agraph, const Handle(Standard_Transient)& ent)
|
||||
: thegraph (agraph)
|
||||
{ GetFromEntity(ent); }
|
||||
|
||||
void IFGraph_AllConnected::GetFromEntity
|
||||
(const Handle(Standard_Transient)& ent)
|
||||
{
|
||||
if (!thegraph.IsPresent(thegraph.EntityNumber(ent))) return;
|
||||
thegraph.GetFromEntity(ent,Standard_False);
|
||||
|
||||
for (Interface_EntityIterator shareds = thegraph.Shareds(ent);
|
||||
shareds.More(); shareds.Next())
|
||||
GetFromEntity(shareds.Value());
|
||||
|
||||
for (Interface_EntityIterator sharings = thegraph.Sharings(ent);
|
||||
sharings.More(); sharings.Next())
|
||||
GetFromEntity(sharings.Value());
|
||||
}
|
||||
|
||||
void IFGraph_AllConnected::ResetData ()
|
||||
{ Reset(); thegraph.Reset(); }
|
||||
|
||||
void IFGraph_AllConnected::Evaluate()
|
||||
{ GetFromGraph(thegraph); } // GetFromEntity a tout fait
|
@@ -1,85 +0,0 @@
|
||||
// Created on: 1992-10-02
|
||||
// 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_AllConnected_HeaderFile
|
||||
#define _IFGraph_AllConnected_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_DefineAlloc.hxx>
|
||||
#include <Standard_Handle.hxx>
|
||||
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_GraphContent.hxx>
|
||||
class Standard_Transient;
|
||||
|
||||
|
||||
//! this class gives content of the CONNECTED COMPONENT(S)
|
||||
//! which include specific Entity(ies)
|
||||
class IFGraph_AllConnected : public Interface_GraphContent
|
||||
{
|
||||
public:
|
||||
|
||||
DEFINE_STANDARD_ALLOC
|
||||
|
||||
|
||||
//! creates an AllConnected from a graph, empty ready to be filled
|
||||
Standard_EXPORT IFGraph_AllConnected(const Interface_Graph& agraph);
|
||||
|
||||
//! creates an AllConnected which memorizes Entities Connected to
|
||||
//! a given one, at any level : that is, itself, all Entities
|
||||
//! Shared by it and Sharing it, and so on.
|
||||
//! In other terms, this is the content of the CONNECTED COMPONENT
|
||||
//! which include a specific Entity
|
||||
Standard_EXPORT IFGraph_AllConnected(const Interface_Graph& agraph, const Handle(Standard_Transient)& ent);
|
||||
|
||||
//! adds an entity and its Connected ones to the list (allows to
|
||||
//! cumulate all Entities Connected by some ones)
|
||||
//! Note that if "ent" is in the already computed list,, no entity
|
||||
//! will be added, but if "ent" is not already in the list, a new
|
||||
//! Connected Component will be cumulated
|
||||
Standard_EXPORT void GetFromEntity (const Handle(Standard_Transient)& ent);
|
||||
|
||||
//! Allows to restart on a new data set
|
||||
Standard_EXPORT void ResetData();
|
||||
|
||||
//! does the specific evaluation (Connected entities atall levels)
|
||||
Standard_EXPORT virtual void Evaluate() Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
Interface_Graph thegraph;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFGraph_AllConnected_HeaderFile
|
@@ -1,47 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFGraph_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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
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); }
|
@@ -1,85 +0,0 @@
|
||||
// Created on: 1992-09-30
|
||||
// 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_AllShared_HeaderFile
|
||||
#define _IFGraph_AllShared_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_DefineAlloc.hxx>
|
||||
#include <Standard_Handle.hxx>
|
||||
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_GraphContent.hxx>
|
||||
class Standard_Transient;
|
||||
class Interface_EntityIterator;
|
||||
|
||||
|
||||
//! this class determines all Entities shared by some specific
|
||||
//! ones, at any level (those which will be lead in a Transfer
|
||||
//! for instance)
|
||||
class IFGraph_AllShared : public Interface_GraphContent
|
||||
{
|
||||
public:
|
||||
|
||||
DEFINE_STANDARD_ALLOC
|
||||
|
||||
|
||||
//! creates an AllShared from a graph, empty ready to be filled
|
||||
Standard_EXPORT IFGraph_AllShared(const Interface_Graph& agraph);
|
||||
|
||||
//! creates an AllShared which memrizes Entities shared by a given
|
||||
//! one, at any level, including itself
|
||||
Standard_EXPORT IFGraph_AllShared(const Interface_Graph& agraph, const Handle(Standard_Transient)& ent);
|
||||
|
||||
//! 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);
|
||||
|
||||
//! 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();
|
||||
|
||||
//! does the specific evaluation (shared entities atall levels)
|
||||
Standard_EXPORT virtual void Evaluate() Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
Interface_Graph thegraph;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFGraph_AllShared_HeaderFile
|
@@ -1,82 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFGraph_Articulations.hxx>
|
||||
#include <Interface_EntityIterator.hxx>
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
|
||||
// Points d'Articulation d'un Graphe : ce sont les "passages obliges" du graphe
|
||||
// Algorithme tire du Sedgewick, p 392
|
||||
IFGraph_Articulations::IFGraph_Articulations
|
||||
(const Interface_Graph& agraph, const Standard_Boolean whole)
|
||||
: thegraph (agraph)
|
||||
{ if (whole) thegraph.GetFromModel(); }
|
||||
|
||||
|
||||
void IFGraph_Articulations::GetFromEntity
|
||||
(const Handle(Standard_Transient)& ent)
|
||||
{ thegraph.GetFromEntity(ent,Standard_True); }
|
||||
|
||||
void IFGraph_Articulations::GetFromIter(const Interface_EntityIterator& iter)
|
||||
{ thegraph.GetFromIter(iter,0); }
|
||||
|
||||
|
||||
void IFGraph_Articulations::ResetData ()
|
||||
{ Reset(); thegraph.Reset(); thelist = new TColStd_HSequenceOfInteger(); }
|
||||
|
||||
void IFGraph_Articulations::Evaluate ()
|
||||
{
|
||||
// Algorithme, cf Sedgewick "Algorithms", p 392
|
||||
thelist = new TColStd_HSequenceOfInteger();
|
||||
// Utilisation de Visit
|
||||
Standard_Integer nb = thegraph.Size();
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
thenow = 0;
|
||||
if (thegraph.IsPresent(i)) Visit(i);
|
||||
}
|
||||
// Resultat dans thelist
|
||||
Reset();
|
||||
Standard_Integer nbres = thelist->Length();
|
||||
for (Standard_Integer ires = 1; ires <= nbres; ires ++) {
|
||||
Standard_Integer num = thelist->Value(ires);
|
||||
GetOneItem(thegraph.Model()->Value(num));
|
||||
}
|
||||
}
|
||||
|
||||
Standard_Integer IFGraph_Articulations::Visit (const Standard_Integer num)
|
||||
{
|
||||
thenow ++;
|
||||
thegraph.SetStatus(num,thenow);
|
||||
Standard_Integer min = thenow;
|
||||
|
||||
for (Interface_EntityIterator iter = thegraph.Shareds(thegraph.Entity(num));
|
||||
iter.More(); iter.Next()) {
|
||||
Handle(Standard_Transient) ent = iter.Value();
|
||||
Standard_Integer nument = thegraph.EntityNumber(ent);
|
||||
if (!thegraph.IsPresent(num)) {
|
||||
thegraph.GetFromEntity(ent,Standard_False);
|
||||
nument = thegraph.EntityNumber(ent);
|
||||
}
|
||||
Standard_Integer statent = thegraph.Status(nument); // pas reevalue
|
||||
if (statent == 0) {
|
||||
Standard_Integer mm = Visit(nument);
|
||||
if (mm < min) min = mm;
|
||||
if (mm > thegraph.Status(num)) thelist->Append(num); // ON EN A UN : num
|
||||
}
|
||||
else if (statent < min) min = statent;
|
||||
}
|
||||
return min;
|
||||
}
|
@@ -1,75 +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 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 splitting 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;
|
||||
|
||||
private:
|
||||
|
||||
//! basic routine of computation
|
||||
//! (see book Sedgewick "Algorithms", p 392)
|
||||
Standard_EXPORT Standard_Integer Visit (const Standard_Integer num);
|
||||
|
||||
private:
|
||||
|
||||
Interface_Graph thegraph;
|
||||
Standard_Integer thenow;
|
||||
Handle(TColStd_HSequenceOfInteger) thelist;
|
||||
|
||||
};
|
||||
|
||||
#endif // _IFGraph_Articulations_HeaderFile
|
@@ -1,78 +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_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)
|
||||
{
|
||||
IFGraph_AllShared iter(thegraph.Model(),ent);
|
||||
GetFromIter(iter,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 ()
|
||||
{
|
||||
thegraph.ChangeStatus (2,1);
|
||||
thegraph.ChangeStatus (3,1);
|
||||
}
|
||||
|
||||
void IFGraph_Compare::RemoveSecond ()
|
||||
{
|
||||
thegraph.ChangeStatus (3,1);
|
||||
thegraph.RemoveStatus (2);
|
||||
}
|
||||
|
||||
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 ()
|
||||
{
|
||||
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); }
|
@@ -1,105 +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_Compare_HeaderFile
|
||||
#define _IFGraph_Compare_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_DefineAlloc.hxx>
|
||||
#include <Standard_Handle.hxx>
|
||||
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_GraphContent.hxx>
|
||||
class Standard_Transient;
|
||||
class Interface_EntityIterator;
|
||||
|
||||
|
||||
//! this class evaluates effect of two compared sub-parts :
|
||||
//! cumulation (union), common part (intersection-overlapping)
|
||||
//! part specific to first sub-part or to the second one
|
||||
//! Results are kept in a Graph, several question can be set
|
||||
//! Basic Iteration gives Cumulation (union)
|
||||
class IFGraph_Compare : public Interface_GraphContent
|
||||
{
|
||||
public:
|
||||
|
||||
DEFINE_STANDARD_ALLOC
|
||||
|
||||
|
||||
//! creates empty Compare, ready to work
|
||||
Standard_EXPORT IFGraph_Compare(const Interface_Graph& agraph);
|
||||
|
||||
//! adds an entity and its shared ones to the list :
|
||||
//! first True means adds to the first sub-list, else to the 2nd
|
||||
Standard_EXPORT void GetFromEntity (const Handle(Standard_Transient)& ent, const Standard_Boolean first);
|
||||
|
||||
//! adds a list of entities (as an iterator) as such, that is,
|
||||
//! their shared entities are not considered (use AllShared to
|
||||
//! have them)
|
||||
//! first True means adds to the first sub-list, else to the 2nd
|
||||
Standard_EXPORT void GetFromIter (const Interface_EntityIterator& iter, const Standard_Boolean first);
|
||||
|
||||
//! merges the second list into the first one, hence the second
|
||||
//! list is empty
|
||||
Standard_EXPORT void Merge();
|
||||
|
||||
//! Removes the contents of second list
|
||||
Standard_EXPORT void RemoveSecond();
|
||||
|
||||
//! Keeps only Common part, sets it as First list and clears
|
||||
//! second list
|
||||
Standard_EXPORT void KeepCommon();
|
||||
|
||||
//! Allows to restart on a new data set
|
||||
Standard_EXPORT void ResetData();
|
||||
|
||||
//! 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;
|
||||
|
||||
//! returns entities which are exclusively in the first list
|
||||
Standard_EXPORT Interface_EntityIterator FirstOnly() const;
|
||||
|
||||
//! returns entities which are exclusively in the second part
|
||||
Standard_EXPORT Interface_EntityIterator SecondOnly() const;
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
Interface_Graph thegraph;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFGraph_Compare_HeaderFile
|
@@ -1,44 +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_AllConnected.hxx>
|
||||
#include <IFGraph_ConnectedComponants.hxx>
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
|
||||
// Pour travailler, ConnectedComponants exploite AllConnected :
|
||||
// On prend un 1er Vertex, on determine ses AllConnected -> voila un 1er
|
||||
// Connected Component
|
||||
// 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()
|
||||
{
|
||||
// On part des "loaded"
|
||||
// Pour chacun : s il est note dans le graphe, on passe
|
||||
// Sinon, on ajoute les AllConnected en tant que sub-part
|
||||
Interface_EntityIterator loaded = Loaded();
|
||||
Reset();
|
||||
for (loaded.Start(); loaded.More(); loaded.Next()) {
|
||||
Handle(Standard_Transient) ent = loaded.Value();
|
||||
if (IsInPart(ent)) continue;
|
||||
IFGraph_AllConnected connect(Model(),ent);
|
||||
AddPart();
|
||||
GetFromIter (connect);
|
||||
}
|
||||
}
|
@@ -1,44 +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_ConnectedComponants_HeaderFile
|
||||
#define _IFGraph_ConnectedComponants_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_DefineAlloc.hxx>
|
||||
|
||||
#include <IFGraph_SubPartsIterator.hxx>
|
||||
class Interface_Graph;
|
||||
|
||||
//! determines Connected Components in a Graph.
|
||||
//! They define disjoined sets of Entities.
|
||||
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);
|
||||
|
||||
//! does the computation
|
||||
Standard_EXPORT virtual void Evaluate() Standard_OVERRIDE;
|
||||
|
||||
};
|
||||
|
||||
#endif // _IFGraph_ConnectedComponants_HeaderFile
|
@@ -1,107 +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_AllShared.hxx>
|
||||
#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
|
||||
// on a le cumul lui-meme, et comme infos derivees, les doubles et les oublis
|
||||
// Chaque recouvrement correspond a une augmentation de UN du status
|
||||
// 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)
|
||||
{
|
||||
IFGraph_AllShared iter(thegraph.Model(),ent);
|
||||
GetFromIter (iter);
|
||||
}
|
||||
|
||||
void IFGraph_Cumulate::ResetData ()
|
||||
{ Reset(); thegraph.Reset(); }
|
||||
|
||||
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 ()
|
||||
{
|
||||
Reset(); GetFromGraph(thegraph); // evaluation deja faite dans le graphe
|
||||
}
|
||||
|
||||
Interface_EntityIterator IFGraph_Cumulate::Overlapped () const
|
||||
{
|
||||
Interface_EntityIterator iter;
|
||||
Standard_Integer nb = thegraph.Size();
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
if (thegraph.IsPresent(i) && thegraph.Status(i) > 2)
|
||||
iter.GetOneItem(thegraph.Entity(i));
|
||||
}
|
||||
return iter;
|
||||
}
|
||||
|
||||
Interface_EntityIterator IFGraph_Cumulate::Forgotten () const
|
||||
{
|
||||
Interface_EntityIterator iter;
|
||||
Standard_Integer nb = thegraph.Size();
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
if (!thegraph.IsPresent(i))
|
||||
iter.GetOneItem(thegraph.Model()->Value(i));
|
||||
}
|
||||
return iter;
|
||||
}
|
||||
|
||||
Interface_EntityIterator IFGraph_Cumulate::PerCount
|
||||
(const Standard_Integer count) const
|
||||
{
|
||||
Interface_EntityIterator iter;
|
||||
Standard_Integer nb = thegraph.Size();
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
if (thegraph.IsPresent(i) && thegraph.Status(i) == (count + 1))
|
||||
iter.GetOneItem(thegraph.Model()->Value(i));
|
||||
}
|
||||
return iter;
|
||||
}
|
||||
|
||||
|
||||
Standard_Integer IFGraph_Cumulate::NbTimes
|
||||
(const Handle(Standard_Transient)& ent) const
|
||||
{
|
||||
Standard_Integer num = thegraph.EntityNumber(ent);
|
||||
if (num == 0) return 0;
|
||||
Standard_Integer stat = thegraph.Status(num);
|
||||
return stat-1;
|
||||
}
|
||||
|
||||
Standard_Integer IFGraph_Cumulate::HighestNbTimes () const
|
||||
{
|
||||
Standard_Integer max = 0;
|
||||
Standard_Integer nb = thegraph.Size();
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
if (!thegraph.IsPresent(i)) continue;
|
||||
Standard_Integer count = thegraph.Status(i) - 1;
|
||||
if (count > max) max = count;
|
||||
}
|
||||
return max;
|
||||
}
|
@@ -1,100 +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_Cumulate_HeaderFile
|
||||
#define _IFGraph_Cumulate_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_DefineAlloc.hxx>
|
||||
#include <Standard_Handle.hxx>
|
||||
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_GraphContent.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
class Standard_Transient;
|
||||
class Interface_EntityIterator;
|
||||
|
||||
|
||||
//! this class evaluates effect of cumulated sub-parts :
|
||||
//! overlapping, forgotten entities
|
||||
//! Results are kept in a Graph, several question can be set
|
||||
//! Basic Iteration gives entities which are part of Cumulation
|
||||
class IFGraph_Cumulate : public Interface_GraphContent
|
||||
{
|
||||
public:
|
||||
|
||||
DEFINE_STANDARD_ALLOC
|
||||
|
||||
|
||||
//! creates empty Cumulate, ready to work
|
||||
Standard_EXPORT IFGraph_Cumulate(const Interface_Graph& agraph);
|
||||
|
||||
//! 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) as such, that is,
|
||||
//! without their shared entities (use AllShared to have them)
|
||||
Standard_EXPORT void GetFromIter (const Interface_EntityIterator& iter);
|
||||
|
||||
//! Allows to restart on a new data set
|
||||
Standard_EXPORT void ResetData();
|
||||
|
||||
//! Evaluates the result of cumulation
|
||||
Standard_EXPORT virtual void Evaluate() Standard_OVERRIDE;
|
||||
|
||||
//! returns entities which are taken several times
|
||||
Standard_EXPORT Interface_EntityIterator Overlapped() const;
|
||||
|
||||
//! returns entities which are not taken
|
||||
Standard_EXPORT Interface_EntityIterator Forgotten() const;
|
||||
|
||||
//! Returns entities taken a given count of times
|
||||
//! (0 : same as Forgotten, 1 : same as no Overlap : default)
|
||||
Standard_EXPORT Interface_EntityIterator PerCount (const Standard_Integer count = 1) const;
|
||||
|
||||
//! returns number of times an Entity has been counted
|
||||
//! (0 means forgotten, more than 1 means overlap, 1 is normal)
|
||||
Standard_EXPORT Standard_Integer NbTimes (const Handle(Standard_Transient)& ent) const;
|
||||
|
||||
//! Returns the highest number of times recorded for every Entity
|
||||
//! (0 means empty, 1 means no overlap)
|
||||
Standard_EXPORT Standard_Integer HighestNbTimes() const;
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
Interface_Graph thegraph;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFGraph_Cumulate_HeaderFile
|
@@ -1,39 +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_Cycles.hxx>
|
||||
#include <IFGraph_StrongComponants.hxx>
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_GraphContent.hxx>
|
||||
|
||||
// Cycles utilise les services de StrongComponants :
|
||||
// Il retient les Strong Componants qui ne sont pas Single
|
||||
IFGraph_Cycles::IFGraph_Cycles
|
||||
(const Interface_Graph& agraph, const Standard_Boolean whole)
|
||||
: IFGraph_SubPartsIterator (agraph,whole) { }
|
||||
|
||||
IFGraph_Cycles::IFGraph_Cycles (IFGraph_StrongComponants& subparts)
|
||||
: IFGraph_SubPartsIterator (subparts) { }
|
||||
|
||||
|
||||
void IFGraph_Cycles::Evaluate ()
|
||||
{
|
||||
IFGraph_StrongComponants complist(Model(),Standard_False);
|
||||
complist.GetFromIter(Loaded());
|
||||
for (complist.Start(); complist.More(); complist.Next()) {
|
||||
if (complist.IsSingle()) continue;
|
||||
AddPart();
|
||||
GetFromIter(complist.Entities());
|
||||
}
|
||||
}
|
@@ -1,73 +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_Cycles_HeaderFile
|
||||
#define _IFGraph_Cycles_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_DefineAlloc.hxx>
|
||||
#include <Standard_Handle.hxx>
|
||||
|
||||
#include <IFGraph_SubPartsIterator.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
class Interface_Graph;
|
||||
class IFGraph_StrongComponants;
|
||||
|
||||
|
||||
//! determines strong components in a graph which are Cycles
|
||||
class IFGraph_Cycles : 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_Cycles(const Interface_Graph& agraph, const Standard_Boolean whole);
|
||||
|
||||
//! creates from a StrongComponants which was already computed
|
||||
Standard_EXPORT IFGraph_Cycles(IFGraph_StrongComponants& subparts);
|
||||
|
||||
//! does the computation. Cycles are StrongComponants which are
|
||||
//! not Single
|
||||
Standard_EXPORT virtual void Evaluate() Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFGraph_Cycles_HeaderFile
|
@@ -1,64 +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_ExternalSources.hxx>
|
||||
#include <Interface_EntityIterator.hxx>
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
|
||||
// ExternalSources exploite les resultats stockes dans le Graphe sur Sharings
|
||||
// Soit les "Sharings" des entites notees par GetFromEntity et GetFromIter
|
||||
// Celles des "Sharings" qui n etaient pas deja notees sont ExternalSources
|
||||
// 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 ()
|
||||
{
|
||||
Reset();
|
||||
thegraph.RemoveStatus(1);
|
||||
Standard_Integer nb = thegraph.Size();
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
if (thegraph.IsPresent(i) && thegraph.Status(i) == 0)
|
||||
thegraph.GetFromIter ( thegraph.Sharings(thegraph.Entity(i)), 1 );
|
||||
}
|
||||
GetFromGraph(thegraph,1);
|
||||
}
|
||||
|
||||
Standard_Boolean IFGraph_ExternalSources::IsEmpty ()
|
||||
{
|
||||
Evaluate();
|
||||
Standard_Integer nb = thegraph.Size();
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
if (thegraph.IsPresent(i) || thegraph.Status(i) == 1)
|
||||
return Standard_False;
|
||||
}
|
||||
return Standard_True;
|
||||
}
|
@@ -1,84 +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_ExternalSources_HeaderFile
|
||||
#define _IFGraph_ExternalSources_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_DefineAlloc.hxx>
|
||||
#include <Standard_Handle.hxx>
|
||||
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_GraphContent.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
class Standard_Transient;
|
||||
class Interface_EntityIterator;
|
||||
|
||||
|
||||
//! this class gives entities which are Source of entities of
|
||||
//! a sub-part, but are not contained by this sub-part
|
||||
class IFGraph_ExternalSources : public Interface_GraphContent
|
||||
{
|
||||
public:
|
||||
|
||||
DEFINE_STANDARD_ALLOC
|
||||
|
||||
|
||||
//! creates empty ExternalSources, ready to work
|
||||
Standard_EXPORT IFGraph_ExternalSources(const Interface_Graph& agraph);
|
||||
|
||||
//! 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) with shared ones
|
||||
Standard_EXPORT void GetFromIter (const Interface_EntityIterator& iter);
|
||||
|
||||
//! Allows to restart on a new data set
|
||||
Standard_EXPORT void ResetData();
|
||||
|
||||
//! Evaluates external sources of a set of entities
|
||||
Standard_EXPORT virtual void Evaluate() Standard_OVERRIDE;
|
||||
|
||||
//! Returns True if no External Source are found
|
||||
//! It means that we have a "root" set
|
||||
//! (performs an Evaluation as necessary)
|
||||
Standard_EXPORT Standard_Boolean IsEmpty();
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
Interface_Graph thegraph;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFGraph_ExternalSources_HeaderFile
|
@@ -1,69 +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_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 ()
|
||||
{
|
||||
IFGraph_StrongComponants complist (Model(),Standard_False);
|
||||
complist.GetFromIter(Loaded());
|
||||
// Interface_Graph G(Model());
|
||||
Interface_Graph G(thegraph);
|
||||
#ifdef OCCT_DEBUG
|
||||
std::cout<<" SCRoots:"<<std::endl;
|
||||
#endif
|
||||
G.ResetStatus();
|
||||
for (complist.Start(); complist.More(); complist.Next()) {
|
||||
Handle(Standard_Transient) ent = complist.FirstEntity();
|
||||
Standard_Integer num = G.EntityNumber(ent);
|
||||
#ifdef OCCT_DEBUG
|
||||
std::cout<<" Iteration,num="<<num<<(G.IsPresent(num) ? " Pris" : " A prendre")<<std::endl;
|
||||
#endif
|
||||
if (!G.IsPresent(num)) { // enregistrer pour suivants
|
||||
G.GetFromEntity(ent,Standard_True);
|
||||
Interface_EntityIterator list = complist.Entities();
|
||||
AddPart();
|
||||
GetFromIter(list);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
@@ -1,69 +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_SCRoots_HeaderFile
|
||||
#define _IFGraph_SCRoots_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_DefineAlloc.hxx>
|
||||
|
||||
#include <IFGraph_StrongComponants.hxx>
|
||||
class Interface_Graph;
|
||||
|
||||
|
||||
//! determines strong components in a graph which are Roots
|
||||
class IFGraph_SCRoots : public IFGraph_StrongComponants
|
||||
{
|
||||
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_SCRoots(const Interface_Graph& agraph, const Standard_Boolean whole);
|
||||
|
||||
//! creates from a StrongComponants which was already computed
|
||||
Standard_EXPORT IFGraph_SCRoots(IFGraph_StrongComponants& subparts);
|
||||
|
||||
//! does the computation
|
||||
Standard_EXPORT virtual void Evaluate() Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFGraph_SCRoots_HeaderFile
|
@@ -1,34 +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_StrongComponants.hxx>
|
||||
#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 ()
|
||||
{
|
||||
Interface_GraphContent iter = Loaded();
|
||||
Interface_Graph G(thegraph); G.GetFromIter(iter,0);
|
||||
Standard_Integer nb = G.Size();
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
if (!G.IsPresent(i)) continue;
|
||||
AddPart();
|
||||
GetFromEntity (G.Entity(i),Standard_False);
|
||||
}
|
||||
}
|
@@ -1,69 +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_StrongComponants_HeaderFile
|
||||
#define _IFGraph_StrongComponants_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_DefineAlloc.hxx>
|
||||
#include <Standard_Handle.hxx>
|
||||
|
||||
#include <IFGraph_SubPartsIterator.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
class Interface_Graph;
|
||||
|
||||
|
||||
//! determines strong components of a graph, that is
|
||||
//! isolated entities (single components) or loops
|
||||
class IFGraph_StrongComponants : 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_StrongComponants(const Interface_Graph& agraph, const Standard_Boolean whole);
|
||||
|
||||
//! does the computation
|
||||
Standard_EXPORT virtual void Evaluate() Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFGraph_StrongComponants_HeaderFile
|
@@ -1,254 +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 <Interface_Graph.hxx>
|
||||
#include <Interface_GraphContent.hxx>
|
||||
#include <Interface_InterfaceError.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Standard_NoSuchObject.hxx>
|
||||
#include <Standard_OutOfRange.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
#include <TColStd_Array1OfInteger.hxx>
|
||||
|
||||
// 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)
|
||||
{
|
||||
if (whole) thegraph.GetFromModel();
|
||||
theparts = new TColStd_HSequenceOfInteger();
|
||||
thefirsts = new TColStd_HSequenceOfInteger();
|
||||
thepart = 0;
|
||||
thecurr = 0;
|
||||
}
|
||||
|
||||
IFGraph_SubPartsIterator::IFGraph_SubPartsIterator
|
||||
(IFGraph_SubPartsIterator& other)
|
||||
: thegraph (other.Graph())
|
||||
{
|
||||
Standard_Integer nb = thegraph.Size();
|
||||
theparts = new TColStd_HSequenceOfInteger();
|
||||
thepart = 0;
|
||||
for (other.Start(); other.More(); other.Next()) {
|
||||
thepart ++;
|
||||
Standard_Integer nbent = 0;
|
||||
GetFromIter (other.Entities());
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
if (thegraph.Status(i) == thepart) nbent ++;
|
||||
}
|
||||
theparts->Append(nbent); // compte vide
|
||||
}
|
||||
thepart = 0;
|
||||
thecurr = 1;
|
||||
}
|
||||
|
||||
void IFGraph_SubPartsIterator::GetParts
|
||||
(IFGraph_SubPartsIterator& other)
|
||||
{
|
||||
if (Model() != other.Model()) throw Interface_InterfaceError("SubPartsIterator : GetParts");
|
||||
// On AJOUTE les Parts de other, sans perdre les siennes propres
|
||||
// (meme principe que le constructeur ci-dessus)
|
||||
Standard_Integer nb = thegraph.Size();
|
||||
thepart = theparts->Length();
|
||||
for (other.Start(); other.More(); other.Next()) {
|
||||
thepart ++;
|
||||
Standard_Integer nbent = 0;
|
||||
GetFromIter (other.Entities());
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
if (thegraph.Status(i) == thepart) nbent ++;
|
||||
}
|
||||
theparts->Append(nbent); // compte vide
|
||||
}
|
||||
}
|
||||
|
||||
const Interface_Graph& IFGraph_SubPartsIterator::Graph () const
|
||||
{ return thegraph; }
|
||||
|
||||
// .... Gestion Interne (remplissage, etc...) .... //
|
||||
|
||||
Handle(Interface_InterfaceModel) IFGraph_SubPartsIterator::Model() const
|
||||
{ return thegraph.Model(); }
|
||||
|
||||
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::PartNum () const
|
||||
{ return thepart; }
|
||||
|
||||
void IFGraph_SubPartsIterator::SetLoad ()
|
||||
{ thepart = 0; }
|
||||
|
||||
void IFGraph_SubPartsIterator::SetPartNum (const Standard_Integer num)
|
||||
{
|
||||
if (num <= 0 || num > theparts->Length()) throw Standard_OutOfRange("IFGraph_SubPartsIterator : SetPartNum");
|
||||
thepart = num;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
thegraph.GetFromIter(iter, thepart,thepart, Standard_False);
|
||||
}
|
||||
|
||||
void IFGraph_SubPartsIterator::Reset ()
|
||||
{
|
||||
thegraph.Reset();
|
||||
theparts->Clear();
|
||||
thepart = 0;
|
||||
thecurr = 0;
|
||||
}
|
||||
|
||||
|
||||
// .... Resultat (Evaluation, Iterations) .... //
|
||||
|
||||
void IFGraph_SubPartsIterator::Evaluate ()
|
||||
{ } // par defaut, ne fait rien; redefinie par les sous-classes
|
||||
|
||||
Interface_GraphContent IFGraph_SubPartsIterator::Loaded () const
|
||||
{
|
||||
Interface_EntityIterator iter;
|
||||
// Standard_Integer nb = thegraph.Size();
|
||||
return Interface_GraphContent(thegraph,0);
|
||||
}
|
||||
|
||||
Interface_Graph IFGraph_SubPartsIterator::LoadedGraph () const
|
||||
{
|
||||
Interface_Graph G(Model());
|
||||
Standard_Integer nb = thegraph.Size();
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
if (thegraph.IsPresent(i) && thegraph.Status(i) == 0)
|
||||
G.GetFromEntity(thegraph.Entity(i),Standard_False);
|
||||
}
|
||||
return G;
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean IFGraph_SubPartsIterator::IsLoaded
|
||||
(const Handle(Standard_Transient)& ent) const
|
||||
{ return thegraph.IsPresent(thegraph.EntityNumber(ent)); }
|
||||
|
||||
Standard_Boolean IFGraph_SubPartsIterator::IsInPart
|
||||
(const Handle(Standard_Transient)& ent) const
|
||||
{
|
||||
Standard_Integer num = thegraph.EntityNumber(ent);
|
||||
if (!thegraph.IsPresent(num)) return Standard_False;
|
||||
return (thegraph.Status(num) != 0);
|
||||
}
|
||||
|
||||
Standard_Integer IFGraph_SubPartsIterator::EntityPartNum
|
||||
(const Handle(Standard_Transient)& ent) const
|
||||
{
|
||||
Standard_Integer num = thegraph.EntityNumber(ent);
|
||||
if (!thegraph.IsPresent(num)) return 0;
|
||||
return thegraph.Status(num);
|
||||
}
|
||||
|
||||
|
||||
void IFGraph_SubPartsIterator::Start ()
|
||||
{
|
||||
Evaluate();
|
||||
// On evalue les tailles des contenus des Parts
|
||||
Standard_Integer nb = thegraph.Size();
|
||||
Standard_Integer nbp = theparts->Length();
|
||||
if (thepart > nbp) thepart = nbp;
|
||||
if (nbp == 0) { thecurr = 1; return; } // L Iteration s arrete de suite
|
||||
|
||||
// - On fait les comptes (via tableaux pour performances)
|
||||
TColStd_Array1OfInteger partcounts (1,nbp); partcounts.Init(0);
|
||||
TColStd_Array1OfInteger partfirsts (1,nbp); partfirsts.Init(0);
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
if (!thegraph.IsPresent(i)) continue;
|
||||
Standard_Integer nump = thegraph.Status(i);
|
||||
if (nump < 1 || nump > nbp) continue;
|
||||
Standard_Integer nbent = partcounts.Value(nump);
|
||||
partcounts.SetValue(nump,nbent+1);
|
||||
if (nbent == 0) partfirsts.SetValue(nump,i);
|
||||
}
|
||||
// - On les met en forme (c-a-d dans les sequences)
|
||||
theparts->Clear(); thefirsts->Clear();
|
||||
Standard_Integer lastp = 0;
|
||||
for (Standard_Integer np = 1; np <= nbp; np ++) {
|
||||
Standard_Integer nbent = partcounts.Value(np);
|
||||
if (np != 0) lastp = np;
|
||||
theparts->Append (nbent);
|
||||
thefirsts->Append (partfirsts.Value(np));
|
||||
}
|
||||
if (lastp < nbp) theparts->Remove(lastp+1,nbp);
|
||||
// Enfin, on se prepare a iterer
|
||||
thecurr = 1;
|
||||
}
|
||||
|
||||
Standard_Boolean IFGraph_SubPartsIterator::More ()
|
||||
{
|
||||
if (thecurr == 0) Start();
|
||||
return (thecurr <= theparts->Length());
|
||||
}
|
||||
|
||||
void IFGraph_SubPartsIterator::Next ()
|
||||
{
|
||||
thecurr ++; if (thecurr > theparts->Length()) return;
|
||||
if (theparts->Value(thecurr) == 0) Next(); // sauter parties vides
|
||||
}
|
||||
|
||||
Standard_Boolean IFGraph_SubPartsIterator::IsSingle () const
|
||||
{
|
||||
if (thecurr < 1 || thecurr > theparts->Length()) throw Standard_NoSuchObject("IFGraph_SubPartsIterator : IsSingle");
|
||||
return (theparts->Value(thecurr) == 1);
|
||||
}
|
||||
|
||||
Handle(Standard_Transient) IFGraph_SubPartsIterator::FirstEntity
|
||||
() const
|
||||
{
|
||||
if (thecurr < 1 || thecurr > theparts->Length()) throw Standard_NoSuchObject("IFGraph_SubPartsIterator : FirstEntity");
|
||||
Standard_Integer nument = thefirsts->Value(thecurr);
|
||||
if (nument == 0) throw Standard_NoSuchObject("IFGraph_SubPartsIterator : FirstEntity (current part is empty)");
|
||||
return thegraph.Entity(nument);
|
||||
}
|
||||
|
||||
Interface_EntityIterator IFGraph_SubPartsIterator::Entities () const
|
||||
{
|
||||
if (thecurr < 1 || thecurr > theparts->Length()) throw Standard_NoSuchObject("IFGraph_SubPartsIterator : Entities");
|
||||
Interface_EntityIterator iter;
|
||||
Standard_Integer nb = thegraph.Size();
|
||||
Standard_Integer nument = thefirsts->Value(thecurr);
|
||||
if (nument == 0) return iter;
|
||||
if (theparts->Value(thecurr) == 1) nb = nument; // evident : 1 seule Entite
|
||||
for (Standard_Integer i = nument; i <= nb; i ++) {
|
||||
if (thegraph.Status(i) == thecurr && thegraph.IsPresent(i))
|
||||
iter.GetOneItem(thegraph.Entity(i));
|
||||
}
|
||||
return iter;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : ~IFGraph_SubPartsIterator
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
IFGraph_SubPartsIterator::~IFGraph_SubPartsIterator()
|
||||
{}
|
@@ -1,180 +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_SubPartsIterator_HeaderFile
|
||||
#define _IFGraph_SubPartsIterator_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_DefineAlloc.hxx>
|
||||
#include <Standard_Handle.hxx>
|
||||
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <TColStd_HSequenceOfInteger.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
class Interface_InterfaceModel;
|
||||
class Standard_Transient;
|
||||
class Interface_EntityIterator;
|
||||
class Interface_GraphContent;
|
||||
|
||||
|
||||
//! defines general form for graph classes of which result is
|
||||
//! not a single iteration on Entities, but a nested one :
|
||||
//! External iteration works on sub-parts, identified by each
|
||||
//! class (according to its algorithm)
|
||||
//! Internal Iteration concerns Entities of a sub-part
|
||||
//! Sub-Parts are assumed to be disjoined; if they are not,
|
||||
//! the first one has priority
|
||||
//!
|
||||
//! A SubPartsIterator can work in two steps : first, load
|
||||
//! entities which have to be processed
|
||||
//! then, analyse to set those entities into sub-parts
|
||||
class IFGraph_SubPartsIterator
|
||||
{
|
||||
public:
|
||||
|
||||
DEFINE_STANDARD_ALLOC
|
||||
|
||||
|
||||
//! Creates with a Graph, whole or parts of it
|
||||
//! whole True : works on the entire Model
|
||||
//! whole False : empty, ready to be filled
|
||||
//! SubPartIterator is set to load entities
|
||||
Standard_EXPORT IFGraph_SubPartsIterator(const Interface_Graph& agraph, const Standard_Boolean whole);
|
||||
|
||||
//! Creates a SubPartIterator from another one and gets its Data
|
||||
//! Note that only non-empty sub-parts are taken into account
|
||||
//! PartNum is set to the last one
|
||||
Standard_EXPORT IFGraph_SubPartsIterator(IFGraph_SubPartsIterator& other);
|
||||
|
||||
//! Gets Parts from another SubPartsIterator (in addition to the
|
||||
//! ones already recorded)
|
||||
//! Error if both SubPartsIterators are not based on the same Model
|
||||
Standard_EXPORT void GetParts (IFGraph_SubPartsIterator& other);
|
||||
|
||||
//! Returns the Model with which this Iterator was created
|
||||
Standard_EXPORT Handle(Interface_InterfaceModel) Model() const;
|
||||
|
||||
//! Adds an empty part and sets it to receive entities
|
||||
Standard_EXPORT void AddPart();
|
||||
|
||||
//! Returns count of registered parts
|
||||
Standard_EXPORT Standard_Integer NbParts() const;
|
||||
|
||||
//! Returns numero of part which currently receives entities
|
||||
//! (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
|
||||
Standard_EXPORT void SetLoad();
|
||||
|
||||
//! Sets numero of receiving part to a new value
|
||||
//! Error if not in range (1-NbParts)
|
||||
Standard_EXPORT void SetPartNum (const Standard_Integer num);
|
||||
|
||||
//! Adds an Entity : into load status if in Load mode, to the
|
||||
//! current part if there is one. If shared is True, adds
|
||||
//! also its shared ones (shared at all levels)
|
||||
Standard_EXPORT void GetFromEntity (const Handle(Standard_Transient)& ent, const Standard_Boolean shared);
|
||||
|
||||
//! Adds a list of Entities (into Load mode or to a Part),
|
||||
//! given as an Iterator
|
||||
Standard_EXPORT void GetFromIter (const Interface_EntityIterator& iter);
|
||||
|
||||
//! Erases data (parts, entities) : "me" becomes empty and in
|
||||
//! load status
|
||||
Standard_EXPORT void Reset();
|
||||
|
||||
//! Called by Clear, this method allows evaluation just before
|
||||
//! iteration; its default is doing nothing, it is designed to
|
||||
//! be redefined
|
||||
Standard_EXPORT virtual void Evaluate();
|
||||
|
||||
//! Returns entities which where loaded (not set into a sub-part)
|
||||
Standard_EXPORT Interface_GraphContent Loaded() const;
|
||||
|
||||
//! Same as above, but under the form of a Graph
|
||||
Standard_EXPORT Interface_Graph LoadedGraph() const;
|
||||
|
||||
//! Returns True if an Entity is loaded (either set into a
|
||||
//! sub-part or not)
|
||||
Standard_EXPORT Standard_Boolean IsLoaded (const Handle(Standard_Transient)& ent) const;
|
||||
|
||||
//! Returns True if an Entity is Present in a sub-part
|
||||
Standard_EXPORT Standard_Boolean IsInPart (const Handle(Standard_Transient)& ent) const;
|
||||
|
||||
//! Returns number of the sub-part in which an Entity has been set
|
||||
//! if it is not in a sub-part (or not loaded at all), Returns 0
|
||||
Standard_EXPORT Standard_Integer EntityPartNum (const Handle(Standard_Transient)& ent) const;
|
||||
|
||||
//! Sets iteration to its beginning; calls Evaluate
|
||||
Standard_EXPORT void Start();
|
||||
|
||||
//! Returns True if there are more sub-parts to iterate on
|
||||
//! Note : an empty sub-part is not taken in account by Iteration
|
||||
Standard_EXPORT Standard_Boolean More();
|
||||
|
||||
//! Sets iteration to the next sub-part
|
||||
//! if there is not, IsSingle-Entities will raises an exception
|
||||
Standard_EXPORT void Next();
|
||||
|
||||
//! Returns True if current sub-part is single (has only one Entity)
|
||||
//! Error if there is no sub-part to iterate now
|
||||
Standard_EXPORT Standard_Boolean IsSingle() const;
|
||||
|
||||
//! Returns the first entity of current sub-part, that is for a
|
||||
//! Single one, the only one it contains
|
||||
//! Error : same as above (end of iteration)
|
||||
Standard_EXPORT Handle(Standard_Transient) FirstEntity() const;
|
||||
|
||||
//! Returns current sub-part, not as a "Value", but as an Iterator
|
||||
//! on Entities it contains
|
||||
//! Error : same as above (end of iteration)
|
||||
Standard_EXPORT Interface_EntityIterator Entities() const;
|
||||
|
||||
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;
|
||||
|
||||
|
||||
Handle(TColStd_HSequenceOfInteger) theparts;
|
||||
Handle(TColStd_HSequenceOfInteger) thefirsts;
|
||||
Standard_Integer thepart;
|
||||
Standard_Integer thecurr;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFGraph_SubPartsIterator_HeaderFile
|
@@ -1,159 +0,0 @@
|
||||
IFSelect.cxx
|
||||
IFSelect.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_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
|
||||
IFSelect_SelectAnyType.hxx
|
||||
IFSelect_SelectBase.cxx
|
||||
IFSelect_SelectBase.hxx
|
||||
IFSelect_SelectCombine.cxx
|
||||
IFSelect_SelectCombine.hxx
|
||||
IFSelect_SelectControl.cxx
|
||||
IFSelect_SelectControl.hxx
|
||||
IFSelect_SelectDeduct.cxx
|
||||
IFSelect_SelectDeduct.hxx
|
||||
IFSelect_SelectDiff.cxx
|
||||
IFSelect_SelectDiff.hxx
|
||||
IFSelect_SelectEntityNumber.cxx
|
||||
IFSelect_SelectEntityNumber.hxx
|
||||
IFSelect_SelectErrorEntities.cxx
|
||||
IFSelect_SelectErrorEntities.hxx
|
||||
IFSelect_SelectExplore.cxx
|
||||
IFSelect_SelectExplore.hxx
|
||||
IFSelect_SelectExtract.cxx
|
||||
IFSelect_SelectExtract.hxx
|
||||
IFSelect_SelectFlag.cxx
|
||||
IFSelect_SelectFlag.hxx
|
||||
IFSelect_SelectIncorrectEntities.cxx
|
||||
IFSelect_SelectIncorrectEntities.hxx
|
||||
IFSelect_SelectInList.cxx
|
||||
IFSelect_SelectInList.hxx
|
||||
IFSelect_SelectIntersection.cxx
|
||||
IFSelect_SelectIntersection.hxx
|
||||
IFSelect_Selection.cxx
|
||||
IFSelect_Selection.hxx
|
||||
IFSelect_SelectionIterator.cxx
|
||||
IFSelect_SelectionIterator.hxx
|
||||
IFSelect_SelectModelEntities.cxx
|
||||
IFSelect_SelectModelEntities.hxx
|
||||
IFSelect_SelectModelRoots.cxx
|
||||
IFSelect_SelectModelRoots.hxx
|
||||
IFSelect_SelectPointed.cxx
|
||||
IFSelect_SelectPointed.hxx
|
||||
IFSelect_SelectRange.cxx
|
||||
IFSelect_SelectRange.hxx
|
||||
IFSelect_SelectRootComps.cxx
|
||||
IFSelect_SelectRootComps.hxx
|
||||
IFSelect_SelectRoots.cxx
|
||||
IFSelect_SelectRoots.hxx
|
||||
IFSelect_SelectSent.cxx
|
||||
IFSelect_SelectSent.hxx
|
||||
IFSelect_SelectShared.cxx
|
||||
IFSelect_SelectShared.hxx
|
||||
IFSelect_SelectSharing.cxx
|
||||
IFSelect_SelectSharing.hxx
|
||||
IFSelect_SelectSignature.cxx
|
||||
IFSelect_SelectSignature.hxx
|
||||
IFSelect_SelectSignedShared.cxx
|
||||
IFSelect_SelectSignedShared.hxx
|
||||
IFSelect_SelectSignedSharing.cxx
|
||||
IFSelect_SelectSignedSharing.hxx
|
||||
IFSelect_SelectSuite.cxx
|
||||
IFSelect_SelectSuite.hxx
|
||||
IFSelect_SelectType.cxx
|
||||
IFSelect_SelectType.hxx
|
||||
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_ShareOut.cxx
|
||||
IFSelect_ShareOut.hxx
|
||||
IFSelect_ShareOutResult.cxx
|
||||
IFSelect_ShareOutResult.hxx
|
||||
IFSelect_SignAncestor.cxx
|
||||
IFSelect_SignAncestor.hxx
|
||||
IFSelect_Signature.cxx
|
||||
IFSelect_Signature.hxx
|
||||
IFSelect_SignatureList.cxx
|
||||
IFSelect_SignatureList.hxx
|
||||
IFSelect_SignCategory.cxx
|
||||
IFSelect_SignCategory.hxx
|
||||
IFSelect_SignCounter.cxx
|
||||
IFSelect_SignCounter.hxx
|
||||
IFSelect_SignMultiple.cxx
|
||||
IFSelect_SignMultiple.hxx
|
||||
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_WorkSession.cxx
|
||||
IFSelect_WorkSession.hxx
|
@@ -1,33 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFSelect.hxx>
|
||||
#include <IFSelect_SessionFile.hxx>
|
||||
#include <IFSelect_WorkSession.hxx>
|
||||
|
||||
// Methodes de confort, evitant de devoir connaitre SessionFile, qui est un
|
||||
// Tool non destine a l export (en particulier, pas un Handle)
|
||||
Standard_Boolean IFSelect::SaveSession
|
||||
(const Handle(IFSelect_WorkSession)& WS, const Standard_CString file)
|
||||
{
|
||||
IFSelect_SessionFile sesfile(WS,file);
|
||||
return sesfile.IsDone();
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect::RestoreSession
|
||||
(const Handle(IFSelect_WorkSession)& WS, const Standard_CString file)
|
||||
{
|
||||
IFSelect_SessionFile sesfile(WS);
|
||||
return (sesfile.Read(file) == 0);
|
||||
}
|
@@ -1,60 +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>
|
||||
class IFSelect_WorkSession;
|
||||
|
||||
|
||||
//! 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);
|
||||
|
||||
};
|
||||
|
||||
#endif // _IFSelect_HeaderFile
|
@@ -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,Standard_Transient)
|
||||
|
||||
IFSelect_AppliedModifiers::IFSelect_AppliedModifiers
|
||||
(const Standard_Integer nbmax, const Standard_Integer nbent)
|
||||
: thelists (nbmax+1)
|
||||
{
|
||||
thenbent = nbent; theentcnt = 0;
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_AppliedModifiers::AddModif
|
||||
(const Handle(IFSelect_GeneralModifier)& modif)
|
||||
{
|
||||
if (themodifs.Length() >= thelists.NbEntities()) return Standard_False;
|
||||
themodifs.Append(modif);
|
||||
thelists.SetNumber (themodifs.Length());
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_AppliedModifiers::AddNum
|
||||
(const Standard_Integer nument)
|
||||
{
|
||||
thelists.Add (nument);
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
|
||||
Standard_Integer IFSelect_AppliedModifiers::Count () const
|
||||
{ return themodifs.Length(); }
|
||||
|
||||
Standard_Boolean IFSelect_AppliedModifiers::Item
|
||||
(const Standard_Integer num,
|
||||
Handle(IFSelect_GeneralModifier)& modif,
|
||||
Standard_Integer& entcount)
|
||||
{
|
||||
if (num < 1 || num > themodifs.Length()) return Standard_False;
|
||||
modif = themodifs.Value(num);
|
||||
thelists.SetNumber (num);
|
||||
theentcnt = thelists.Length();
|
||||
entcount = (theentcnt > 0 ? theentcnt : thenbent);
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
Standard_Integer IFSelect_AppliedModifiers::ItemNum
|
||||
(const Standard_Integer nument) const
|
||||
{ return (theentcnt > 0 ? thelists.Value(nument) : nument); }
|
||||
|
||||
Handle(TColStd_HSequenceOfInteger) IFSelect_AppliedModifiers::ItemList () const
|
||||
{
|
||||
Handle(TColStd_HSequenceOfInteger) list = new TColStd_HSequenceOfInteger();
|
||||
Standard_Integer i, nb = (theentcnt > 0 ? theentcnt : thenbent);
|
||||
for (i = 1; i <= nb; i ++) list->Append (ItemNum(i));
|
||||
return list;
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_AppliedModifiers::IsForAll () const
|
||||
{ return (theentcnt == 0); }
|
@@ -1,110 +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 <IFSelect_SequenceOfGeneralModifier.hxx>
|
||||
#include <Interface_IntList.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
#include <TColStd_HSequenceOfInteger.hxx>
|
||||
class IFSelect_GeneralModifier;
|
||||
|
||||
class IFSelect_AppliedModifiers;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_AppliedModifiers, Standard_Transient)
|
||||
|
||||
//! 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 (optional) : 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 Standard_Transient
|
||||
{
|
||||
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,Standard_Transient)
|
||||
|
||||
private:
|
||||
|
||||
IFSelect_SequenceOfGeneralModifier themodifs;
|
||||
Interface_IntList thelists;
|
||||
Standard_Integer thenbent;
|
||||
Standard_Integer theentcnt;
|
||||
|
||||
};
|
||||
|
||||
#endif // _IFSelect_AppliedModifiers_HeaderFile
|
@@ -1,188 +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_TransformStandard.hxx>
|
||||
#include <IFSelect_WorkSession.hxx>
|
||||
#include <Interface_Macros.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_BasicDumper,IFSelect_SessionDumper)
|
||||
|
||||
//#include <IFSelect_SelectTextType.hxx>
|
||||
#define FIRSTCHAR 1
|
||||
// Param litteral "own" sous la forme :"<val>" -> first = 3
|
||||
// A present, forme simplifiee : <val> directement -> first = 1
|
||||
|
||||
|
||||
|
||||
IFSelect_BasicDumper::IFSelect_BasicDumper () { }
|
||||
|
||||
Standard_Boolean IFSelect_BasicDumper::WriteOwn
|
||||
(IFSelect_SessionFile& file, const Handle(Standard_Transient)& item) const
|
||||
{
|
||||
Handle(Standard_Type) type = item->DynamicType();
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectModelRoots)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectModelEntities)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectEntityNumber)) {
|
||||
DeclareAndCast(IFSelect_SelectEntityNumber,sen,item);
|
||||
file.SendItem(sen->Number());
|
||||
return Standard_True;
|
||||
}
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectPointed)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectUnion)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectIntersection)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectDiff)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectUnknownEntities)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectErrorEntities)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectIncorrectEntities)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectRoots)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectRootComps)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectRange)) {
|
||||
DeclareAndCast(IFSelect_SelectRange,sra,item);
|
||||
file.SendItem(sra->Lower());
|
||||
file.SendItem(sra->Upper());
|
||||
return Standard_True;
|
||||
}
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectShared)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_SelectSharing)) return Standard_True;
|
||||
|
||||
if (type == STANDARD_TYPE(IFSelect_DispPerOne)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_DispGlobal)) return Standard_True;
|
||||
if (type == STANDARD_TYPE(IFSelect_DispPerCount)) {
|
||||
DeclareAndCast(IFSelect_DispPerCount,dpc,item);
|
||||
file.SendItem(dpc->Count());
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
if (type == STANDARD_TYPE(IFSelect_TransformStandard)) {
|
||||
DeclareAndCast(IFSelect_TransformStandard,trs,item);
|
||||
if (trs->CopyOption()) file.SendText("copy");
|
||||
else file.SendText("onthespot");
|
||||
Standard_Integer nbm = trs->NbModifiers();
|
||||
for (Standard_Integer i = 1; i <= nbm; i ++)
|
||||
file.SendItem(trs->Modifier(i));
|
||||
}
|
||||
|
||||
return Standard_False;
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_BasicDumper::ReadOwn
|
||||
(IFSelect_SessionFile& file, const TCollection_AsciiString& type,
|
||||
Handle(Standard_Transient)& item) const
|
||||
{
|
||||
if (type.IsEqual("IFSelect_SelectModelRoots"))
|
||||
{ item = new IFSelect_SelectModelRoots (); return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_SelectModelEntities"))
|
||||
{ item = new IFSelect_SelectModelEntities (); return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_SelectEntityNumber")) {
|
||||
Handle(IFSelect_SelectEntityNumber) sen =
|
||||
new IFSelect_SelectEntityNumber ();
|
||||
sen->SetNumber (GetCasted(IFSelect_IntParam,file.ItemValue(1)));
|
||||
item = sen;
|
||||
return Standard_True;
|
||||
}
|
||||
if (type.IsEqual("IFSelect_SelectPointed"))
|
||||
{ item = new IFSelect_SelectPointed; return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_SelectUnion"))
|
||||
{ item = new IFSelect_SelectUnion; return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_SelectIntersection"))
|
||||
{ item = new IFSelect_SelectIntersection; return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_SelectDiff"))
|
||||
{ item = new IFSelect_SelectDiff; return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_SelectUnknownEntities"))
|
||||
{ item = new IFSelect_SelectUnknownEntities; return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_SelectErrorEntities"))
|
||||
{ item = new IFSelect_SelectErrorEntities; return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_SelectIncorrectEntities"))
|
||||
{ item = new IFSelect_SelectIncorrectEntities; return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_SelectRoots"))
|
||||
{ item = new IFSelect_SelectRoots; return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_SelectRootComps"))
|
||||
{ item = new IFSelect_SelectRootComps; return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_SelectRange")) {
|
||||
Handle(IFSelect_SelectRange) sra = new IFSelect_SelectRange;
|
||||
sra->SetRange (GetCasted(IFSelect_IntParam,file.ItemValue(1)),
|
||||
GetCasted(IFSelect_IntParam,file.ItemValue(2)) );
|
||||
item = sra;
|
||||
return Standard_True;
|
||||
}
|
||||
if (type.IsEqual("IFSelect_SelectTextType")) {
|
||||
const TCollection_AsciiString exname = file.ParamValue(1);
|
||||
if (exname.Length() < FIRSTCHAR) return Standard_False;
|
||||
if (exname.Value(FIRSTCHAR) == 'e') {}
|
||||
else if (exname.Value(FIRSTCHAR) == 'c') {}
|
||||
else return Standard_False;
|
||||
// item = new IFSelect_SelectTextType (file.TextValue(2).ToCString(),exact);
|
||||
// return Standard_True;
|
||||
}
|
||||
if (type.IsEqual("IFSelect_SelectShared"))
|
||||
{ item = new IFSelect_SelectShared; return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_SelectSharing"))
|
||||
{ item = new IFSelect_SelectSharing; return Standard_True; }
|
||||
|
||||
if (type.IsEqual("IFSelect_DispPerOne"))
|
||||
{ item = new IFSelect_DispPerOne; return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_DispGlobal"))
|
||||
{ item = new IFSelect_DispGlobal; return Standard_True; }
|
||||
if (type.IsEqual("IFSelect_DispPerCount")) {
|
||||
Handle(IFSelect_DispPerCount) dpc = new IFSelect_DispPerCount;
|
||||
dpc->SetCount (GetCasted(IFSelect_IntParam,file.ItemValue(1)) );
|
||||
item = dpc;
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
if (type.IsEqual("IFSelect_TransformStandard")) {
|
||||
Standard_Boolean copyoption;
|
||||
const TCollection_AsciiString copyname = file.ParamValue(1);
|
||||
if (copyname.Length() < FIRSTCHAR) return Standard_False;
|
||||
if (copyname.Value(FIRSTCHAR) == 'c') copyoption = Standard_True;
|
||||
else if (copyname.Value(FIRSTCHAR) == 'o') copyoption = Standard_False;
|
||||
else return Standard_False;
|
||||
Handle(IFSelect_TransformStandard) trs = new IFSelect_TransformStandard;
|
||||
trs->SetCopyOption(copyoption);
|
||||
Standard_Integer nbp = file.NbParams();
|
||||
for (Standard_Integer i = 2; i <= nbp; i ++) {
|
||||
DeclareAndCast(IFSelect_Modifier,modif,file.ItemValue(i));
|
||||
if (!modif.IsNull()) trs->AddModifier(modif);
|
||||
}
|
||||
item = trs;
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
return Standard_False;
|
||||
}
|
@@ -1,75 +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>
|
||||
class IFSelect_SessionFile;
|
||||
class Standard_Transient;
|
||||
class TCollection_AsciiString;
|
||||
|
||||
|
||||
class IFSelect_BasicDumper;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_BasicDumper, IFSelect_SessionDumper)
|
||||
|
||||
//! BasicDumper takes into account, for SessionFile, all the
|
||||
//! classes defined in the package IFSelect : Selections,
|
||||
//! Dispatches (there is no Modifier)
|
||||
class IFSelect_BasicDumper : public IFSelect_SessionDumper
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates a BasicDumper and puts it into the Library of Dumper
|
||||
Standard_EXPORT IFSelect_BasicDumper();
|
||||
|
||||
//! Write the Own Parameters of Types defined in package IFSelect
|
||||
//! Returns True if <item> has been processed, False else
|
||||
Standard_EXPORT Standard_Boolean WriteOwn (IFSelect_SessionFile& file, const Handle(Standard_Transient)& item) const Standard_OVERRIDE;
|
||||
|
||||
//! Recognizes and Read Own Parameters for Types of package
|
||||
//! IFSelect. Returns True if done and <item> created, False else
|
||||
Standard_EXPORT Standard_Boolean ReadOwn (IFSelect_SessionFile& file, const TCollection_AsciiString& type, Handle(Standard_Transient)& item) const Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_BasicDumper,IFSelect_SessionDumper)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_BasicDumper_HeaderFile
|
@@ -1,99 +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_CheckCounter.hxx>
|
||||
#include <Interface_CheckIterator.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <MoniTool_SignText.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <stdio.h>
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_CheckCounter,IFSelect_SignatureList)
|
||||
|
||||
//=======================================================================
|
||||
//function : IFSelect_CheckCounter
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
IFSelect_CheckCounter::IFSelect_CheckCounter(const Standard_Boolean withlist)
|
||||
: IFSelect_SignatureList (withlist)
|
||||
{
|
||||
SetName("Check");
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : SetSignature
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_CheckCounter::SetSignature(const Handle(MoniTool_SignText)& sign)
|
||||
{
|
||||
thesign = sign;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : Signature
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(MoniTool_SignText) IFSelect_CheckCounter::Signature () const
|
||||
{
|
||||
return thesign;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : Analyse
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_CheckCounter::Analyse(const Interface_CheckIterator& list,
|
||||
const Handle(Interface_InterfaceModel)& model,
|
||||
const Standard_Boolean original,
|
||||
const Standard_Boolean failsonly)
|
||||
{
|
||||
Standard_Integer i,nb,num, nbe = (model.IsNull() ? 0 : model->NbEntities());
|
||||
char mess[300];
|
||||
sprintf (mess,"Check %s",list.Name());
|
||||
SetName (mess);
|
||||
for (list.Start(); list.More(); list.Next()) {
|
||||
num = list.Number();
|
||||
Handle(Standard_Transient) ent;
|
||||
const Handle(Interface_Check) check = list.Value();
|
||||
ent = check->Entity();
|
||||
if (ent.IsNull() && num > 0 && num <= nbe) ent = model->Value(num);
|
||||
nb = check->NbFails();
|
||||
Standard_CString tystr = NULL;
|
||||
if (!ent.IsNull()) {
|
||||
if (!thesign.IsNull()) tystr = thesign->Text (ent,model).ToCString();
|
||||
else if (!model.IsNull()) tystr = model->TypeName (ent);
|
||||
else tystr =
|
||||
Interface_InterfaceModel::ClassName(ent->DynamicType()->Name());
|
||||
}
|
||||
for (i = 1; i <= nb; i ++) {
|
||||
if (ent.IsNull()) sprintf(mess,"F: %s",check->CFail(i,original));
|
||||
else sprintf(mess,"F:%s: %s",tystr,check->CFail(i,original));
|
||||
Add (ent,mess);
|
||||
}
|
||||
nb = 0;
|
||||
if (!failsonly) nb = check->NbWarnings();
|
||||
for (i = 1; i <= nb; i ++) {
|
||||
if (ent.IsNull()) sprintf(mess,"W: %s",check->CWarning(i,original));
|
||||
else sprintf(mess,"W:%s: %s",tystr,check->CWarning(i,original));
|
||||
Add (ent,mess);
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,85 +0,0 @@
|
||||
// Created on: 1994-11-07
|
||||
// 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_CheckCounter_HeaderFile
|
||||
#define _IFSelect_CheckCounter_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
|
||||
#include <IFSelect_SignatureList.hxx>
|
||||
class MoniTool_SignText;
|
||||
class Interface_CheckIterator;
|
||||
class Interface_InterfaceModel;
|
||||
|
||||
|
||||
class IFSelect_CheckCounter;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_CheckCounter, IFSelect_SignatureList)
|
||||
|
||||
//! A CheckCounter allows to see a CheckList (i.e. CheckIterator)
|
||||
//! not per entity, its messages, but per message, the entities
|
||||
//! attached (count and list). Because many messages can be
|
||||
//! repeated if they are due to systematic errors
|
||||
class IFSelect_CheckCounter : public IFSelect_SignatureList
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates a CheckCounter, empty ready to work
|
||||
Standard_EXPORT IFSelect_CheckCounter(const Standard_Boolean withlist = Standard_False);
|
||||
|
||||
//! Sets a specific signature
|
||||
//! Else, the current SignType (in the model) is used
|
||||
Standard_EXPORT void SetSignature (const Handle(MoniTool_SignText)& sign);
|
||||
|
||||
//! Returns the Signature;
|
||||
Standard_EXPORT Handle(MoniTool_SignText) Signature() const;
|
||||
|
||||
//! Analyses a CheckIterator according a Model (which detains the
|
||||
//! entities for which the CheckIterator has messages), i.e.
|
||||
//! counts messages for entities
|
||||
//! If <original> is True, does not consider final messages but
|
||||
//! those before interpretation (such as inserting variables :
|
||||
//! integers, reals, strings)
|
||||
//! If <failsonly> is True, only Fails are considered
|
||||
//! Remark : global messages are recorded with a Null entity
|
||||
Standard_EXPORT void Analyse (const Interface_CheckIterator& list, const Handle(Interface_InterfaceModel)& model, const Standard_Boolean original = Standard_False, const Standard_Boolean failsonly = Standard_False);
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_CheckCounter,IFSelect_SignatureList)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
Handle(MoniTool_SignText) thesign;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_CheckCounter_HeaderFile
|
@@ -1,464 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFSelect_ContextModif.hxx>
|
||||
#include <IFSelect_GeneralModifier.hxx>
|
||||
#include <IFSelect_Selection.hxx>
|
||||
#include <Interface_Check.hxx>
|
||||
#include <Interface_CheckIterator.hxx>
|
||||
#include <Interface_CopyControl.hxx>
|
||||
#include <Interface_CopyTool.hxx>
|
||||
#include <Interface_EntityIterator.hxx>
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Interface_Protocol.hxx>
|
||||
#include <Message.hxx>
|
||||
#include <Message_Messenger.hxx>
|
||||
#include <Standard_NoSuchObject.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
|
||||
//=======================================================================
|
||||
//function : IFSelect_ContextModif
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
IFSelect_ContextModif::IFSelect_ContextModif(const Interface_Graph& graph,
|
||||
const Interface_CopyTool& TC,
|
||||
const Standard_CString filename)
|
||||
: thegraf (graph,Standard_False) , thefile (filename) ,
|
||||
thelist (graph.Size(),' ')
|
||||
{
|
||||
themap = TC.Control(); thesel = Standard_False; thecurr = thecurt = 0;
|
||||
Standard_Integer nb = thelist.Length();
|
||||
Handle(Standard_Transient) newent;
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
if (themap->Search(graph.Entity(i),newent)) thelist.SetValue(i,'1');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : IFSelect_ContextModif
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
IFSelect_ContextModif::IFSelect_ContextModif(const Interface_Graph& graph,
|
||||
const Standard_CString filename)
|
||||
: thegraf (graph,Standard_False) , thefile (filename) ,
|
||||
thelist (graph.Size(),' ')
|
||||
{
|
||||
thesel = Standard_False; thecurr = thecurt = 0;
|
||||
Standard_Integer nb = thelist.Length();
|
||||
Handle(Standard_Transient) newent;
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) thelist.SetValue(i,'1');
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : Select
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_ContextModif::Select (Interface_EntityIterator& list)
|
||||
{
|
||||
thesel = Standard_True;
|
||||
Standard_Integer nb = thelist.Length();
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) thelist.SetValue(i,' ');
|
||||
for (list.Start(); list.More(); list.Next()) {
|
||||
Handle(Standard_Transient) start,newent;
|
||||
start = list.Value();
|
||||
Standard_Integer num = thegraf.EntityNumber(start);
|
||||
if (num > nb || num < 0) num = 0;
|
||||
if (themap.IsNull() && num > 0) thelist.SetValue(num,'1');
|
||||
else if (themap->Search (start,newent)) {
|
||||
if (num > 0) thelist.SetValue(num,'1');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : OriginalGraph
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
const Interface_Graph& IFSelect_ContextModif::OriginalGraph () const
|
||||
{
|
||||
return thegraf;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : OriginalModel
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(Interface_InterfaceModel) IFSelect_ContextModif::OriginalModel() const
|
||||
{
|
||||
return thegraf.Model();
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : SetProtocol
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_ContextModif::SetProtocol(const Handle(Interface_Protocol)& prot)
|
||||
{
|
||||
theprot = prot;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : Protocol
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(Interface_Protocol) IFSelect_ContextModif::Protocol() const
|
||||
{
|
||||
return theprot;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : HasFileName
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Standard_Boolean IFSelect_ContextModif::HasFileName() const
|
||||
{
|
||||
return (thefile.Length() > 0);
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : FileName
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Standard_CString IFSelect_ContextModif::FileName () const
|
||||
{
|
||||
return thefile.ToCString();
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : Control
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(Interface_CopyControl) IFSelect_ContextModif::Control () const
|
||||
{
|
||||
return themap;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : IsForNone
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Standard_Boolean IFSelect_ContextModif::IsForNone () const
|
||||
{
|
||||
if (!thesel) return Standard_False;
|
||||
Standard_Integer nb = thelist.Length();
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
if (thelist.Value(i) != ' ') return Standard_False;
|
||||
}
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : IsForAll
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Standard_Boolean IFSelect_ContextModif::IsForAll () const
|
||||
{
|
||||
return (!thesel);
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : IsTransferred
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Standard_Boolean IFSelect_ContextModif::IsTransferred
|
||||
(const Handle(Standard_Transient)& ent) const
|
||||
{
|
||||
if (themap.IsNull()) return Standard_True;
|
||||
Handle(Standard_Transient) newent;
|
||||
return themap->Search(ent,newent);
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : IsSelected
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Standard_Boolean IFSelect_ContextModif::IsSelected
|
||||
(const Handle(Standard_Transient)& ent) const
|
||||
{
|
||||
// Select a deja verifie "IsTransferred"
|
||||
Standard_Integer num = thegraf.EntityNumber(ent);
|
||||
if (num == 0) return Standard_False;
|
||||
return (thelist.Value(num) != ' ');
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : SelectedOriginal
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Interface_EntityIterator IFSelect_ContextModif::SelectedOriginal () const
|
||||
{
|
||||
Interface_EntityIterator list;
|
||||
Standard_Integer nb = thelist.Length();
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
if (thelist.Value(i) != ' ') list.GetOneItem (thegraf.Entity(i));
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : SelectedResult
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Interface_EntityIterator IFSelect_ContextModif::SelectedResult () const
|
||||
{
|
||||
Interface_EntityIterator list;
|
||||
Standard_Integer nb = thelist.Length();
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
Handle(Standard_Transient) newent;
|
||||
if (themap.IsNull()) newent = thegraf.Entity(i);
|
||||
else if (thelist.Value(i) != ' ') themap->Search (thegraf.Entity(i),newent);
|
||||
if (!newent.IsNull()) list.GetOneItem (newent);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : SelectedCount
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Standard_Integer IFSelect_ContextModif::SelectedCount () const
|
||||
{
|
||||
Standard_Integer nb = thelist.Length();
|
||||
Standard_Integer ns = 0;
|
||||
for (Standard_Integer i = 1; i <= nb; i ++)
|
||||
{ if (thelist.Value(i) != ' ') ns ++; }
|
||||
return ns;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : Start
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_ContextModif::Start ()
|
||||
{
|
||||
thecurr = thecurt = 0;
|
||||
Next();
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : More
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Standard_Boolean IFSelect_ContextModif::More () const
|
||||
{
|
||||
return (thecurr > 0);
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : Next
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_ContextModif::Next()
|
||||
{
|
||||
Standard_Integer nb = thelist.Length();
|
||||
// thecurr = thecurt;
|
||||
// if (thecurr <= 0 && thecurt >= 0) return;
|
||||
for (Standard_Integer i = thecurr+1; i <= nb; i ++) {
|
||||
if (thelist.Value(i) != ' ') { thecurr = i; thecurt ++; return; }
|
||||
}
|
||||
thecurr = thecurt = 0;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : ValueOriginal
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(Standard_Transient) IFSelect_ContextModif::ValueOriginal () const
|
||||
{
|
||||
if (thecurr <= 0) throw Standard_NoSuchObject("IFSelect_ContextModif");
|
||||
return thegraf.Entity(thecurr);
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : ValueResult
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(Standard_Transient) IFSelect_ContextModif::ValueResult () const
|
||||
{
|
||||
if (thecurr <= 0) throw Standard_NoSuchObject("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;
|
||||
|
||||
Message_Messenger::StreamBuffer sout = Message::SendInfo();
|
||||
sout << "--- Run Modifier:" << std::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)"<<std::endl;
|
||||
else sout<<" Entities,Total:"<<nb<<" Concerned:"<<ne<<std::endl;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : Trace
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_ContextModif::Trace (const Standard_CString mess)
|
||||
{
|
||||
// Trace courante
|
||||
if (thecurr <= 0) return;
|
||||
Message_Messenger::StreamBuffer sout = Message::SendInfo();
|
||||
if (ValueOriginal() == ValueResult())
|
||||
sout<<"-- ContextModif. Entity n0 "<<thecurr<<std::endl;
|
||||
else
|
||||
sout<<"-- ContextModif. Entity in Original, n0 "<<thecurr<<" in Result, n0 "
|
||||
<<thecurt<<std::endl;
|
||||
if (mess[0] != '\0') sout<<"-- Message:"<<mess<<std::endl;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : AddCheck
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_ContextModif::AddCheck(const Handle(Interface_Check)& check)
|
||||
{
|
||||
if (check->NbFails() + check->NbWarnings() == 0) return;
|
||||
const Handle(Standard_Transient)& ent = check->Entity();
|
||||
Standard_Integer num = thegraf.EntityNumber(ent);
|
||||
if (num == 0 && !ent.IsNull()) num = -1; // force enregistrement
|
||||
thechek.Add(check,num);
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : AddWarning
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_ContextModif::AddWarning(const Handle(Standard_Transient)& start,
|
||||
const Standard_CString mess,
|
||||
const Standard_CString orig)
|
||||
{
|
||||
thechek.CCheck(thegraf.EntityNumber(start))->AddWarning(mess,orig);
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : AddFail
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_ContextModif::AddFail(const Handle(Standard_Transient)& start,
|
||||
const Standard_CString mess,
|
||||
const Standard_CString orig)
|
||||
{
|
||||
thechek.CCheck(thegraf.EntityNumber(start))->AddFail(mess,orig);
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : CCheck
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(Interface_Check) IFSelect_ContextModif::CCheck(const Standard_Integer num)
|
||||
{
|
||||
Handle(Interface_Check) ach = thechek.CCheck(num);
|
||||
if (num > 0 && num <= thegraf.Size()) ach->SetEntity(thegraf.Entity(num));
|
||||
return ach;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : CCheck
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(Interface_Check) IFSelect_ContextModif::CCheck
|
||||
(const Handle(Standard_Transient)& ent)
|
||||
{
|
||||
Standard_Integer num = thegraf.EntityNumber(ent);
|
||||
if (num == 0) num = -1; // force l enregistrement
|
||||
Handle(Interface_Check)& ach = thechek.CCheck(num);
|
||||
ach->SetEntity(ent);
|
||||
return ach;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : CheckList
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Interface_CheckIterator IFSelect_ContextModif::CheckList () const
|
||||
{
|
||||
return thechek;
|
||||
}
|
@@ -1,218 +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>
|
||||
class Interface_Protocol;
|
||||
class Interface_CopyControl;
|
||||
class Interface_CopyTool;
|
||||
class Interface_EntityIterator;
|
||||
class Interface_InterfaceModel;
|
||||
class Standard_Transient;
|
||||
class IFSelect_GeneralModifier;
|
||||
class Interface_Check;
|
||||
|
||||
|
||||
//! This class gathers various information used by Model Modifiers
|
||||
//! apart from the target model itself, and the CopyTool which
|
||||
//! must be passed directly.
|
||||
//!
|
||||
//! These information 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 information :
|
||||
//! - 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 information :
|
||||
//! - 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 individual entity really modified
|
||||
//! <mess> is an optional 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;
|
||||
|
||||
private:
|
||||
|
||||
Interface_Graph thegraf;
|
||||
Handle(Interface_Protocol) theprot;
|
||||
Handle(Interface_CopyControl) themap;
|
||||
TCollection_AsciiString thefile;
|
||||
TCollection_AsciiString thelist;
|
||||
Interface_CheckIterator thechek;
|
||||
Standard_Boolean thesel;
|
||||
Standard_Integer thecurr;
|
||||
Standard_Integer thecurt;
|
||||
|
||||
};
|
||||
|
||||
#endif // _IFSelect_ContextModif_HeaderFile
|
@@ -1,297 +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_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)
|
||||
throw Standard_NoSuchObject("IFSelect_ContextWrite:Value");
|
||||
Standard_Integer num = theapply->ItemNum (thecurr);
|
||||
return themodel->Value(num);
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : AddCheck
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_ContextWrite::AddCheck (const Handle(Interface_Check)& check)
|
||||
{
|
||||
if (check->NbFails() + check->NbWarnings() == 0) return;
|
||||
const Handle(Standard_Transient)& ent = check->Entity();
|
||||
Standard_Integer num = themodel->Number(ent);
|
||||
if (num == 0 && !ent.IsNull()) num = -1; // force enregistrement
|
||||
thecheck.Add(check,num);
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : AddWarning
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_ContextWrite::AddWarning(const Handle(Standard_Transient)& start,
|
||||
const Standard_CString mess,
|
||||
const Standard_CString orig)
|
||||
{
|
||||
thecheck.CCheck(themodel->Number(start))->AddWarning(mess,orig);
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : AddFail
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
void IFSelect_ContextWrite::AddFail(const Handle(Standard_Transient)& start,
|
||||
const Standard_CString mess,
|
||||
const Standard_CString orig)
|
||||
{
|
||||
thecheck.CCheck(themodel->Number(start))->AddFail(mess,orig);
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : CCheck
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(Interface_Check) IFSelect_ContextWrite::CCheck (const Standard_Integer num)
|
||||
{
|
||||
Handle(Interface_Check) ach = thecheck.CCheck(num);
|
||||
if (num > 0 && num <= themodel->NbEntities()) ach->SetEntity(themodel->Value(num));
|
||||
return ach;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : CCheck
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(Interface_Check) IFSelect_ContextWrite::CCheck(const Handle(Standard_Transient)& ent)
|
||||
{
|
||||
Standard_Integer num = themodel->Number(ent);
|
||||
if (num == 0) num = -1; // force l enregistrement
|
||||
Handle(Interface_Check) ach = thecheck.CCheck(num);
|
||||
ach->SetEntity(ent);
|
||||
return ach;
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : CheckList
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Interface_CheckIterator IFSelect_ContextWrite::CheckList () const
|
||||
{
|
||||
return thecheck;
|
||||
}
|
@@ -1,181 +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 <Interface_CheckIterator.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <Standard_CString.hxx>
|
||||
class Interface_InterfaceModel;
|
||||
class Interface_Protocol;
|
||||
class IFSelect_AppliedModifiers;
|
||||
class Interface_HGraph;
|
||||
class IFSelect_GeneralModifier;
|
||||
class Interface_Graph;
|
||||
class Standard_Transient;
|
||||
class Interface_Check;
|
||||
|
||||
|
||||
//! This class gathers various information used by File Modifiers
|
||||
//! apart from the writer object, which is specific of the norm
|
||||
//! and of the physical format
|
||||
//!
|
||||
//! These information 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 information :
|
||||
//! - the model which is to be written
|
||||
//! - the protocol to be used
|
||||
//! - the filename
|
||||
//! - an object AppliedModifiers to work. It gives a list of
|
||||
//! FileModifiers to be ran, and for each one it can give
|
||||
//! a restricted list of entities (in the model), else all
|
||||
//! the model is considered
|
||||
Standard_EXPORT IFSelect_ContextWrite(const Handle(Interface_InterfaceModel)& model, const Handle(Interface_Protocol)& proto, const Handle(IFSelect_AppliedModifiers)& applieds, const Standard_CString filename);
|
||||
|
||||
//! Same as above but with an already computed Graph
|
||||
Standard_EXPORT IFSelect_ContextWrite(const Handle(Interface_HGraph)& hgraph, const Handle(Interface_Protocol)& proto, const Handle(IFSelect_AppliedModifiers)& applieds, const Standard_CString filename);
|
||||
|
||||
//! Returns the Model
|
||||
Standard_EXPORT Handle(Interface_InterfaceModel) Model() const;
|
||||
|
||||
//! Returns the Protocol;
|
||||
Standard_EXPORT Handle(Interface_Protocol) Protocol() const;
|
||||
|
||||
//! Returns the File Name
|
||||
Standard_EXPORT Standard_CString FileName() const;
|
||||
|
||||
//! Returns the object AppliedModifiers
|
||||
Standard_EXPORT Handle(IFSelect_AppliedModifiers) AppliedModifiers() const;
|
||||
|
||||
//! Returns the Graph, either given when created, else created
|
||||
//! the first time it is queried
|
||||
Standard_EXPORT const Interface_Graph& Graph();
|
||||
|
||||
//! Returns the count of recorded File Modifiers
|
||||
Standard_EXPORT Standard_Integer NbModifiers() const;
|
||||
|
||||
//! Sets active the File Modifier n0 <numod>
|
||||
//! Then, it prepares the list of entities to consider, if any
|
||||
//! Returns False if <numod> out of range
|
||||
Standard_EXPORT Standard_Boolean SetModifier (const Standard_Integer numod);
|
||||
|
||||
//! Returns the currently active File Modifier. Cast to be done
|
||||
//! Null if not properly set : must be test IsNull after casting
|
||||
Standard_EXPORT Handle(IFSelect_GeneralModifier) FileModifier() const;
|
||||
|
||||
//! Returns True if no modifier is currently set
|
||||
Standard_EXPORT Standard_Boolean IsForNone() const;
|
||||
|
||||
//! Returns True if the current modifier is to be applied to
|
||||
//! the whole model. Else, a restricted list of selected entities
|
||||
//! is defined, it can be exploited by the File Modifier
|
||||
Standard_EXPORT Standard_Boolean IsForAll() const;
|
||||
|
||||
//! Returns the total count of selected entities
|
||||
Standard_EXPORT Standard_Integer NbEntities() const;
|
||||
|
||||
//! Starts an iteration on selected items. It takes into account
|
||||
//! IsForAll/IsForNone, by really iterating on all selected items.
|
||||
Standard_EXPORT void Start();
|
||||
|
||||
//! Returns True until the iteration has finished
|
||||
Standard_EXPORT Standard_Boolean More() const;
|
||||
|
||||
//! Advances the iteration
|
||||
Standard_EXPORT void Next();
|
||||
|
||||
//! Returns the current selected entity in the model
|
||||
Standard_EXPORT Handle(Standard_Transient) Value() const;
|
||||
|
||||
//! Adds a Check to the CheckList. If it is empty, nothing is done
|
||||
//! If it concerns an Entity from the Model (by SetEntity)
|
||||
//! to which another Check is attached, it is merged to it.
|
||||
//! Else, it is added or merged as to GlobalCheck.
|
||||
Standard_EXPORT void AddCheck (const Handle(Interface_Check)& check);
|
||||
|
||||
//! Adds a Warning Message for an Entity from the Model
|
||||
//! If <start> is not an Entity from the model (e.g. the
|
||||
//! model itself) this message is added to Global Check.
|
||||
Standard_EXPORT void AddWarning (const Handle(Standard_Transient)& start, const Standard_CString mess, const Standard_CString orig = "");
|
||||
|
||||
//! Adds a Fail Message for an Entity from the Model
|
||||
//! If <start> is not an Entity from the model (e.g. the
|
||||
//! model itself) this message is added to Global Check.
|
||||
Standard_EXPORT void AddFail (const Handle(Standard_Transient)& start, const Standard_CString mess, const Standard_CString orig = "");
|
||||
|
||||
//! Returns a Check given an Entity number (in the Model)
|
||||
//! by default a Global Check. Creates it the first time.
|
||||
//! It can then be acknowledged on the spot, in condition that the
|
||||
//! caller works by reference ("Interface_Check& check = ...")
|
||||
Standard_EXPORT Handle(Interface_Check) CCheck (const Standard_Integer num = 0);
|
||||
|
||||
//! Returns a Check attached to an Entity from the Model
|
||||
//! It can then be acknowledged on the spot, in condition that the
|
||||
//! caller works by reference ("Interface_Check& check = ...")
|
||||
Standard_EXPORT Handle(Interface_Check) CCheck (const Handle(Standard_Transient)& start);
|
||||
|
||||
//! Returns the complete CheckList
|
||||
Standard_EXPORT Interface_CheckIterator CheckList() const;
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
Handle(Interface_InterfaceModel) themodel;
|
||||
Handle(Interface_Protocol) theproto;
|
||||
TCollection_AsciiString thefile;
|
||||
Handle(IFSelect_AppliedModifiers) theapply;
|
||||
Handle(Interface_HGraph) thehgraf;
|
||||
Interface_CheckIterator thecheck;
|
||||
Standard_Integer thenumod;
|
||||
Standard_Integer thenbent;
|
||||
Standard_Integer thecurr;
|
||||
Handle(IFSelect_GeneralModifier) themodif;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_ContextWrite_HeaderFile
|
@@ -1,41 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFGraph_SubPartsIterator.hxx>
|
||||
#include <IFSelect_DispGlobal.hxx>
|
||||
#include <IFSelect_Selection.hxx>
|
||||
#include <Interface_EntityIterator.hxx>
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_DispGlobal,IFSelect_Dispatch)
|
||||
|
||||
// Genere un seul paquet avec la sortie finale
|
||||
IFSelect_DispGlobal::IFSelect_DispGlobal () { }
|
||||
|
||||
TCollection_AsciiString IFSelect_DispGlobal::Label () const
|
||||
{ return TCollection_AsciiString ("One File for All Input"); }
|
||||
|
||||
Standard_Boolean IFSelect_DispGlobal::LimitedMax
|
||||
(const Standard_Integer /* nbent */, Standard_Integer& pcount) const
|
||||
{ pcount = 1; return Standard_True; }
|
||||
|
||||
// 1 packet ( a partir de UniqueResult)
|
||||
void IFSelect_DispGlobal::Packets
|
||||
(const Interface_Graph& G, IFGraph_SubPartsIterator& packs) const
|
||||
{
|
||||
packs.AddPart();
|
||||
packs.GetFromIter(FinalSelection()->UniqueResult(G));
|
||||
}
|
@@ -1,78 +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_Integer.hxx>
|
||||
class TCollection_AsciiString;
|
||||
class Interface_Graph;
|
||||
class IFGraph_SubPartsIterator;
|
||||
|
||||
|
||||
class IFSelect_DispGlobal;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_DispGlobal, IFSelect_Dispatch)
|
||||
|
||||
//! A DispGlobal gathers all the input Entities into only one
|
||||
//! global Packet
|
||||
class IFSelect_DispGlobal : public IFSelect_Dispatch
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates a DispGlobal
|
||||
Standard_EXPORT IFSelect_DispGlobal();
|
||||
|
||||
//! Returns as Label, "One File for all Input"
|
||||
Standard_EXPORT TCollection_AsciiString Label() const Standard_OVERRIDE;
|
||||
|
||||
//! Returns True : maximum equates 1
|
||||
Standard_EXPORT virtual Standard_Boolean LimitedMax (const Standard_Integer nbent, Standard_Integer& max) const Standard_OVERRIDE;
|
||||
|
||||
//! Computes the list of produced Packets. It is made of only ONE
|
||||
//! Packet, which gets the RootResult from the Final Selection.
|
||||
//! Remark : the inherited exception raising is never activated.
|
||||
Standard_EXPORT void Packets (const Interface_Graph& G, IFGraph_SubPartsIterator& packs) const Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_DispGlobal,IFSelect_Dispatch)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_DispGlobal_HeaderFile
|
@@ -1,80 +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_InterfaceModel.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_DispPerCount,IFSelect_Dispatch)
|
||||
|
||||
IFSelect_DispPerCount::IFSelect_DispPerCount () { }
|
||||
|
||||
Handle(IFSelect_IntParam) IFSelect_DispPerCount::Count () const
|
||||
{ return thecount; }
|
||||
|
||||
void IFSelect_DispPerCount::SetCount
|
||||
(const Handle(IFSelect_IntParam)& pcount)
|
||||
{ thecount = pcount; }
|
||||
|
||||
Standard_Integer IFSelect_DispPerCount::CountValue () const
|
||||
{
|
||||
Standard_Integer pcount = 0;
|
||||
if (!thecount.IsNull()) pcount = thecount->Value();
|
||||
if (pcount <= 0) pcount = 1; // option prise par defaut
|
||||
return pcount;
|
||||
}
|
||||
|
||||
TCollection_AsciiString IFSelect_DispPerCount::Label () const
|
||||
{
|
||||
TCollection_AsciiString lab(CountValue());
|
||||
lab.Insert(1,"One File per ");
|
||||
lab.AssignCat(" Entities");
|
||||
return lab;
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_DispPerCount::LimitedMax
|
||||
(const Standard_Integer nbent, Standard_Integer& pcount) const
|
||||
{
|
||||
pcount = 1 + nbent / CountValue();
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
void IFSelect_DispPerCount::Packets
|
||||
(const Interface_Graph& G, IFGraph_SubPartsIterator& packs) const
|
||||
{
|
||||
// Ressemble a DispPerOne, mais fait un AddPart tous les "count" racines
|
||||
Standard_Integer pcount = CountValue();
|
||||
|
||||
IFGraph_SCRoots roots(G,Standard_False);
|
||||
roots.SetLoad();
|
||||
roots.GetFromIter(FinalSelection()->UniqueResult(G));
|
||||
// SCRoots a initie la resolution : decoupage en StrongComponants + selection
|
||||
// des racines. Un paquet correspond des lors a <count> racines
|
||||
// Donc, il faut iterer sur les Parts de roots et les prendre par <count>
|
||||
|
||||
Standard_Integer i = 0;
|
||||
for (roots.Start(); roots.More(); roots.Next()) {
|
||||
if (i == 0) packs.AddPart();
|
||||
i ++; if (i >= pcount) i = 0; // regroupement selon "count"
|
||||
packs.GetFromIter(roots.Entities());
|
||||
}
|
||||
}
|
@@ -1,92 +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>
|
||||
class IFSelect_IntParam;
|
||||
class TCollection_AsciiString;
|
||||
class Interface_Graph;
|
||||
class IFGraph_SubPartsIterator;
|
||||
|
||||
|
||||
class IFSelect_DispPerCount;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_DispPerCount, IFSelect_Dispatch)
|
||||
|
||||
//! A DispPerCount gathers all the input Entities into one or
|
||||
//! several Packets, each containing a defined count of Entity
|
||||
//! This count is a Parameter of the DispPerCount, given as an
|
||||
//! IntParam, thus allowing external control of its Value
|
||||
class IFSelect_DispPerCount : public IFSelect_Dispatch
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates a DispPerCount with no Count (default value 1)
|
||||
Standard_EXPORT IFSelect_DispPerCount();
|
||||
|
||||
//! Returns the Count Parameter used for splitting
|
||||
Standard_EXPORT Handle(IFSelect_IntParam) Count() const;
|
||||
|
||||
//! Sets a new Parameter for Count
|
||||
Standard_EXPORT void SetCount (const Handle(IFSelect_IntParam)& count);
|
||||
|
||||
//! Returns the effective value of the count parameter
|
||||
//! (if Count Parameter not Set or value not positive, returns 1)
|
||||
Standard_EXPORT Standard_Integer CountValue() const;
|
||||
|
||||
//! Returns as Label, "One File per <count> Input Entities"
|
||||
Standard_EXPORT TCollection_AsciiString Label() const Standard_OVERRIDE;
|
||||
|
||||
//! Returns True, maximum count is given as <nbent>
|
||||
Standard_EXPORT virtual Standard_Boolean LimitedMax (const Standard_Integer nbent, Standard_Integer& max) const Standard_OVERRIDE;
|
||||
|
||||
//! Computes the list of produced Packets. It defines Packets in
|
||||
//! order to have at most <Count> Entities per Packet, Entities
|
||||
//! are given by RootResult from the Final Selection.
|
||||
Standard_EXPORT void Packets (const Interface_Graph& G, IFGraph_SubPartsIterator& packs) const Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_DispPerCount,IFSelect_Dispatch)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
Handle(IFSelect_IntParam) thecount;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_DispPerCount_HeaderFile
|
@@ -1,83 +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_InterfaceModel.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_DispPerFiles,IFSelect_Dispatch)
|
||||
|
||||
IFSelect_DispPerFiles::IFSelect_DispPerFiles () { }
|
||||
|
||||
Handle(IFSelect_IntParam) IFSelect_DispPerFiles::Count () const
|
||||
{ return thecount; }
|
||||
|
||||
void IFSelect_DispPerFiles::SetCount
|
||||
(const Handle(IFSelect_IntParam)& pcount)
|
||||
{ thecount = pcount; }
|
||||
|
||||
Standard_Integer IFSelect_DispPerFiles::CountValue () const
|
||||
{
|
||||
Standard_Integer pcount = 0;
|
||||
if (!thecount.IsNull()) pcount = thecount->Value();
|
||||
if (pcount <= 0) pcount = 1; // option prise par defaut
|
||||
return pcount;
|
||||
}
|
||||
|
||||
TCollection_AsciiString IFSelect_DispPerFiles::Label () const
|
||||
{
|
||||
TCollection_AsciiString lab(CountValue());
|
||||
lab.Insert(1,"Maximum ");
|
||||
lab.AssignCat(" Files");
|
||||
return lab;
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_DispPerFiles::LimitedMax
|
||||
(const Standard_Integer /* nbent */, Standard_Integer& pcount) const
|
||||
{
|
||||
pcount = CountValue();
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
void IFSelect_DispPerFiles::Packets
|
||||
(const Interface_Graph& G, IFGraph_SubPartsIterator& packs) const
|
||||
{
|
||||
// Ressemble a DispPerOne, mais fait "count" AddPart racines
|
||||
Standard_Integer pcount = CountValue();
|
||||
|
||||
IFGraph_SCRoots roots(G,Standard_False);
|
||||
roots.SetLoad();
|
||||
roots.GetFromIter(FinalSelection()->UniqueResult(G));
|
||||
// SCRoots a initie la resolution : decoupage en StrongComponants + selection
|
||||
// des racines. Un paquet correspond des lors a <count> racines
|
||||
// Donc, il faut iterer sur les Parts de roots et les prendre par <count>
|
||||
roots.Start(); // Start fait Evaluate specifique
|
||||
Standard_Integer nb = roots.NbParts();
|
||||
if (pcount > 0) pcount = (nb-1) / pcount +1; // par packet
|
||||
|
||||
Standard_Integer i = 0;
|
||||
for (; roots.More(); roots.Next()) { // Start deja fait
|
||||
if (i == 0) packs.AddPart();
|
||||
i ++; if (i >= pcount) i = 0; // regroupement selon "count"
|
||||
packs.GetFromIter(roots.Entities());
|
||||
}
|
||||
}
|
@@ -1,96 +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>
|
||||
class IFSelect_IntParam;
|
||||
class TCollection_AsciiString;
|
||||
class Interface_Graph;
|
||||
class IFGraph_SubPartsIterator;
|
||||
|
||||
|
||||
class IFSelect_DispPerFiles;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_DispPerFiles, IFSelect_Dispatch)
|
||||
|
||||
//! A DispPerFiles produces a determined count of Packets from the
|
||||
//! input Entities. It divides, as equally as possible, the input
|
||||
//! list into a count of files. This count is the parameter of the
|
||||
//! DispPerFiles. If the input list has less than this count, of
|
||||
//! course there will be one packet per input entity.
|
||||
//! This count is a Parameter of the DispPerFiles, given as an
|
||||
//! IntParam, thus allowing external control of its Value
|
||||
class IFSelect_DispPerFiles : public IFSelect_Dispatch
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates a DispPerFiles with no Count (default value 1 file)
|
||||
Standard_EXPORT IFSelect_DispPerFiles();
|
||||
|
||||
//! Returns the Count Parameter used for splitting
|
||||
Standard_EXPORT Handle(IFSelect_IntParam) Count() const;
|
||||
|
||||
//! Sets a new Parameter for Count
|
||||
Standard_EXPORT void SetCount (const Handle(IFSelect_IntParam)& count);
|
||||
|
||||
//! Returns the effective value of the count parameter
|
||||
//! (if Count Parameter not Set or value not positive, returns 1)
|
||||
Standard_EXPORT Standard_Integer CountValue() const;
|
||||
|
||||
//! Returns as Label, "Maximum <count> Files"
|
||||
Standard_EXPORT TCollection_AsciiString Label() const Standard_OVERRIDE;
|
||||
|
||||
//! Returns True, maximum count is given as CountValue
|
||||
Standard_EXPORT virtual Standard_Boolean LimitedMax (const Standard_Integer nbent, Standard_Integer& max) const Standard_OVERRIDE;
|
||||
|
||||
//! Computes the list of produced Packets. It defines Packets in
|
||||
//! order to have <Count> Packets, except if the input count of
|
||||
//! Entities is lower. Entities are given by RootResult from the
|
||||
//! Final Selection.
|
||||
Standard_EXPORT void Packets (const Interface_Graph& G, IFGraph_SubPartsIterator& packs) const Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_DispPerFiles,IFSelect_Dispatch)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
Handle(IFSelect_IntParam) thecount;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_DispPerFiles_HeaderFile
|
@@ -1,47 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFGraph_SCRoots.hxx>
|
||||
#include <IFGraph_SubPartsIterator.hxx>
|
||||
#include <IFSelect_DispPerOne.hxx>
|
||||
#include <IFSelect_Selection.hxx>
|
||||
#include <Interface_EntityIterator.hxx>
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_DispPerOne,IFSelect_Dispatch)
|
||||
|
||||
// Genere un paquet par racine (strong comp.) locale a la liste transmise
|
||||
IFSelect_DispPerOne::IFSelect_DispPerOne () { }
|
||||
|
||||
TCollection_AsciiString IFSelect_DispPerOne::Label () const
|
||||
{ return TCollection_AsciiString ("One File per Input Entity"); }
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_DispPerOne::LimitedMax
|
||||
(const Standard_Integer nbent, Standard_Integer& pcount) const
|
||||
{ pcount = nbent; return Standard_True; }
|
||||
|
||||
void IFSelect_DispPerOne::Packets
|
||||
(const Interface_Graph& G, IFGraph_SubPartsIterator& packs) const
|
||||
{
|
||||
IFGraph_SCRoots packsc(G,Standard_False); // OK pour SubPartsIterator
|
||||
packsc.SetLoad();
|
||||
packsc.GetFromIter(FinalSelection()->UniqueResult(G));
|
||||
// SCRoots a initie la resolution : decoupage en StrongComponants + selection
|
||||
// des Racines. Chaque Racine correspond a un Packet. CQFD
|
||||
packs.GetParts(packsc);
|
||||
}
|
@@ -1,78 +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_Integer.hxx>
|
||||
class TCollection_AsciiString;
|
||||
class Interface_Graph;
|
||||
class IFGraph_SubPartsIterator;
|
||||
|
||||
|
||||
class IFSelect_DispPerOne;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_DispPerOne, IFSelect_Dispatch)
|
||||
|
||||
//! A DispPerOne gathers all the input Entities into as many
|
||||
//! Packets as there Root Entities from the Final Selection,
|
||||
//! that is, one Packet per Entity
|
||||
class IFSelect_DispPerOne : public IFSelect_Dispatch
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates a DispPerOne
|
||||
Standard_EXPORT IFSelect_DispPerOne();
|
||||
|
||||
//! Returns as Label, "One File per Input Entity"
|
||||
Standard_EXPORT TCollection_AsciiString Label() const Standard_OVERRIDE;
|
||||
|
||||
//! Returns True, maximum limit is given as <nbent>
|
||||
Standard_EXPORT virtual Standard_Boolean LimitedMax (const Standard_Integer nbent, Standard_Integer& max) const Standard_OVERRIDE;
|
||||
|
||||
//! Returns the list of produced Packets. It defines one Packet
|
||||
//! per Entity given by RootResult from the Final Selection.
|
||||
Standard_EXPORT void Packets (const Interface_Graph& G, IFGraph_SubPartsIterator& packs) const Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_DispPerOne,IFSelect_Dispatch)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_DispPerOne_HeaderFile
|
@@ -1,80 +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 <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
#include <TCollection_HAsciiString.hxx>
|
||||
#include <TColStd_HSequenceOfHAsciiString.hxx>
|
||||
#include <TColStd_HSequenceOfTransient.hxx>
|
||||
|
||||
#include <stdio.h>
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_DispPerSignature,IFSelect_Dispatch)
|
||||
|
||||
IFSelect_DispPerSignature::IFSelect_DispPerSignature () { }
|
||||
|
||||
Handle(IFSelect_SignCounter) IFSelect_DispPerSignature::SignCounter () const
|
||||
{ return thesign; }
|
||||
|
||||
void IFSelect_DispPerSignature::SetSignCounter
|
||||
(const Handle(IFSelect_SignCounter)& sign)
|
||||
{ thesign = sign; thesign->SetList (Standard_True); }
|
||||
|
||||
Standard_CString IFSelect_DispPerSignature::SignName () const
|
||||
{ return (Standard_CString ) (thesign.IsNull() ? "???" : thesign->Name()); }
|
||||
|
||||
TCollection_AsciiString IFSelect_DispPerSignature::Label () const
|
||||
{
|
||||
char lab[50];
|
||||
sprintf (lab,"One File per Signature %s",SignName());
|
||||
return TCollection_AsciiString(lab);
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_DispPerSignature::LimitedMax
|
||||
(const Standard_Integer nbent, Standard_Integer& max) const
|
||||
{
|
||||
max = nbent;
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
void IFSelect_DispPerSignature::Packets
|
||||
(const Interface_Graph& G, IFGraph_SubPartsIterator& packs) const
|
||||
{
|
||||
if (thesign.IsNull()) {
|
||||
packs.AddPart();
|
||||
packs.GetFromIter (FinalSelection()->RootResult(G));
|
||||
return;
|
||||
}
|
||||
|
||||
thesign->Clear();
|
||||
thesign->AddList (FinalSelection()->RootResult(G).Content(),G.Model());
|
||||
Handle(TColStd_HSequenceOfHAsciiString) list = thesign->List();
|
||||
Standard_Integer i,nb,is,nbs = list->Length();
|
||||
Handle(TCollection_HAsciiString) asign;
|
||||
Handle(TColStd_HSequenceOfTransient) ents;
|
||||
for (is = 1; is <= nbs; is ++) {
|
||||
asign = list->Value(is);
|
||||
ents = thesign->Entities (asign->ToCString());
|
||||
if (ents.IsNull()) continue;
|
||||
packs.AddPart();
|
||||
nb = ents->Length();
|
||||
for (i = 1; i <= nb; i ++)
|
||||
packs.GetFromEntity (ents->Value(i),Standard_False);
|
||||
}
|
||||
}
|
@@ -1,92 +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_Integer.hxx>
|
||||
class IFSelect_SignCounter;
|
||||
class TCollection_AsciiString;
|
||||
class Interface_Graph;
|
||||
class IFGraph_SubPartsIterator;
|
||||
|
||||
|
||||
class IFSelect_DispPerSignature;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_DispPerSignature, IFSelect_Dispatch)
|
||||
|
||||
//! A DispPerSignature sorts input Entities according to a
|
||||
//! Signature : it works with a SignCounter to do this.
|
||||
class IFSelect_DispPerSignature : public IFSelect_Dispatch
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates a DispPerSignature with no SignCounter (by default,
|
||||
//! produces only one packet)
|
||||
Standard_EXPORT IFSelect_DispPerSignature();
|
||||
|
||||
//! Returns the SignCounter used for splitting
|
||||
Standard_EXPORT Handle(IFSelect_SignCounter) SignCounter() const;
|
||||
|
||||
//! Sets a SignCounter for sort
|
||||
//! Remark : it is set to record lists of entities, not only counts
|
||||
Standard_EXPORT void SetSignCounter (const Handle(IFSelect_SignCounter)& sign);
|
||||
|
||||
//! Returns the name of the SignCounter, which caracterises the
|
||||
//! sorting criterium for this Dispatch
|
||||
Standard_EXPORT Standard_CString SignName() const;
|
||||
|
||||
//! Returns as Label, "One File per Signature <name>"
|
||||
Standard_EXPORT TCollection_AsciiString Label() const Standard_OVERRIDE;
|
||||
|
||||
//! Returns True, maximum count is given as <nbent>
|
||||
Standard_EXPORT virtual Standard_Boolean LimitedMax (const Standard_Integer nbent, Standard_Integer& max) const Standard_OVERRIDE;
|
||||
|
||||
//! Computes the list of produced Packets. It defines Packets from
|
||||
//! the SignCounter, which sirts the input Entities per Signature
|
||||
//! (specific of the SignCounter).
|
||||
Standard_EXPORT void Packets (const Interface_Graph& G, IFGraph_SubPartsIterator& packs) const Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_DispPerSignature,IFSelect_Dispatch)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
Handle(IFSelect_SignCounter) thesign;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_DispPerSignature_HeaderFile
|
@@ -1,83 +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_SelectionIterator.hxx>
|
||||
#include <Interface_EntityIterator.hxx>
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
#include <TCollection_HAsciiString.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_Dispatch,Standard_Transient)
|
||||
|
||||
void IFSelect_Dispatch::SetRootName
|
||||
(const Handle(TCollection_HAsciiString)& name)
|
||||
{
|
||||
thename = name;
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_Dispatch::HasRootName () const
|
||||
{ return (!thename.IsNull()); }
|
||||
|
||||
const Handle(TCollection_HAsciiString)& IFSelect_Dispatch::RootName () const
|
||||
{ return thename; }
|
||||
|
||||
void IFSelect_Dispatch::SetFinalSelection
|
||||
(const Handle(IFSelect_Selection)& sel)
|
||||
{ thefinal = sel; }
|
||||
|
||||
Handle(IFSelect_Selection) IFSelect_Dispatch::FinalSelection () const
|
||||
{ return thefinal; }
|
||||
|
||||
IFSelect_SelectionIterator IFSelect_Dispatch::Selections () const
|
||||
{
|
||||
IFSelect_SelectionIterator iter;
|
||||
iter.AddItem(thefinal);
|
||||
for(; iter.More(); iter.Next()) {
|
||||
iter.Value()->FillIterator(iter); // Iterateur qui se court apres
|
||||
}
|
||||
return iter;
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_Dispatch::CanHaveRemainder () const
|
||||
{ return Standard_False; }
|
||||
|
||||
Standard_Boolean IFSelect_Dispatch::LimitedMax
|
||||
(const Standard_Integer , Standard_Integer& max) const
|
||||
{ max = 0; return Standard_False; }
|
||||
|
||||
Interface_EntityIterator IFSelect_Dispatch::GetEntities
|
||||
(const Interface_Graph& G) const
|
||||
{ return thefinal->UniqueResult(G); }
|
||||
|
||||
Interface_EntityIterator IFSelect_Dispatch::Packeted
|
||||
(const Interface_Graph& G) const
|
||||
{
|
||||
Interface_EntityIterator total = GetEntities(G);
|
||||
Interface_EntityIterator remain = Remainder(G);
|
||||
if (remain.NbEntities() == 0) return total;
|
||||
// sinon, faire la difference !
|
||||
IFGraph_Compare GC(G);
|
||||
GC.GetFromIter (total, Standard_True);
|
||||
GC.GetFromIter (remain,Standard_False);
|
||||
return GC.FirstOnly();
|
||||
}
|
||||
|
||||
Interface_EntityIterator IFSelect_Dispatch::Remainder
|
||||
(const Interface_Graph& ) const
|
||||
{ Interface_EntityIterator iter; return iter; } // par defaut vide
|
@@ -1,151 +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 <Standard_Transient.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
class TCollection_HAsciiString;
|
||||
class IFSelect_Selection;
|
||||
class IFSelect_SelectionIterator;
|
||||
class TCollection_AsciiString;
|
||||
class Interface_EntityIterator;
|
||||
class Interface_Graph;
|
||||
class IFGraph_SubPartsIterator;
|
||||
|
||||
|
||||
class IFSelect_Dispatch;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_Dispatch, Standard_Transient)
|
||||
|
||||
//! 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 Standard_Transient
|
||||
{
|
||||
|
||||
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,Standard_Transient)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
Handle(TCollection_HAsciiString) thename;
|
||||
Handle(IFSelect_Selection) thefinal;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_Dispatch_HeaderFile
|
@@ -1,546 +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 <Standard_Transient.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_HAsciiString.hxx>
|
||||
#include <TColStd_HSequenceOfHAsciiString.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_EditForm,Standard_Transient)
|
||||
|
||||
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 (Standard_OStream& S) const
|
||||
{
|
||||
Standard_Integer iv, nbv = NbValues(Standard_True);
|
||||
S<<"***** EditForm, Label : "<<Label()<<std::endl;
|
||||
if (IsComplete()) S<<"Complete, "<<nbv<<" Values"<<std::endl;
|
||||
else {
|
||||
S<<"Extraction on "<<nbv<<" Values : (extracted<-editor)"<<std::endl;
|
||||
for (iv = 1; iv <= nbv; iv ++) S<<" "<<iv<<"<-"<<NumberFromRank(iv);
|
||||
S<<std::endl;
|
||||
}
|
||||
S<<"*****"<<std::endl;
|
||||
}
|
||||
|
||||
|
||||
static void PrintList
|
||||
(const Handle(TColStd_HSequenceOfHAsciiString)& list,
|
||||
Standard_OStream& S, const Standard_Boolean alsolist)
|
||||
{
|
||||
if (list.IsNull()) { S<<"(NULL LIST)"<<std::endl; return; }
|
||||
|
||||
Standard_Integer i,nb = list->Length();
|
||||
S<<"(List : "<<nb<<" Items)"<<std::endl;
|
||||
if (!alsolist) return;
|
||||
|
||||
for (i = 1; i <= nb; i ++) {
|
||||
Handle(TCollection_HAsciiString) str = list->Value(i);
|
||||
S<<" ["<<i<<"] "<< (str.IsNull() ? "(NULL)" : str->ToCString())<<std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void IFSelect_EditForm::PrintValues
|
||||
(Standard_OStream& S, const Standard_Integer what,
|
||||
const Standard_Boolean names, const Standard_Boolean alsolist) const
|
||||
{
|
||||
Standard_Integer iv, nbv = NbValues(Standard_True);
|
||||
S<< "****************************************************"<<std::endl;
|
||||
S<<"***** "<<Label()<<Interface_MSG::Blanks(Label(),40)<<"*****"<<std::endl;
|
||||
S<<"***** *****"<<std::endl;
|
||||
if (!theloaded)
|
||||
S<<"***** Values are NOT loaded *****"<<std::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<<std::endl<<"****************************************************"<<std::endl<<std::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"<<std::endl;
|
||||
else S<<" N0 Name Value"<<std::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()) <<std::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()) <<std::endl;
|
||||
str = EditedValue (jv);
|
||||
S<<Interface_MSG::Blanks("",maxnam+4)<<" MOD :"<< (str.IsNull() ? "(NULL)" : str->ToCString()) <<std::endl;
|
||||
}
|
||||
}
|
||||
if (what == 0) S<<"On "<<nbv<<" Values, "<<nbmod<<" Modified"<<std::endl;
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_EditForm::Apply ()
|
||||
{
|
||||
Standard_Boolean stat = ApplyData(theent,themodel);
|
||||
if (stat && !thekeepst) ClearEdit();
|
||||
return stat;
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_EditForm::Recognize () const
|
||||
{ return theeditor->Recognize(this); }
|
||||
|
||||
Standard_Boolean IFSelect_EditForm::ApplyData
|
||||
(const Handle(Standard_Transient)& ent,
|
||||
const Handle(Interface_InterfaceModel)& model)
|
||||
{ return theeditor->Apply (this,ent,model); }
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_EditForm::Undo ()
|
||||
{
|
||||
if (thestatus.Upper() == 0 || theorigs.Upper() == 0) return Standard_False;
|
||||
Standard_Integer i, nb = thestatus.Upper();
|
||||
for (i = 1; i <= nb; i ++) {
|
||||
if (thestatus.Value (i) != 0) themodifs.SetValue (i,theorigs.Value(i));
|
||||
}
|
||||
return Apply ();
|
||||
}
|
@@ -1,294 +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 <TColStd_Array1OfInteger.hxx>
|
||||
#include <TColStd_Array1OfTransient.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
#include <TColStd_SequenceOfInteger.hxx>
|
||||
#include <TColStd_HSequenceOfHAsciiString.hxx>
|
||||
class IFSelect_Editor;
|
||||
class Interface_InterfaceModel;
|
||||
class IFSelect_ListEditor;
|
||||
class TCollection_HAsciiString;
|
||||
|
||||
class IFSelect_EditForm;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_EditForm, Standard_Transient)
|
||||
|
||||
//! 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 correspondence between this Number and
|
||||
//! the Rank in the EditForm : RankFromNumber and NumberFromRank
|
||||
class IFSelect_EditForm : public Standard_Transient
|
||||
{
|
||||
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 (Standard_OStream& 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 (Standard_OStream& 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,Standard_Transient)
|
||||
|
||||
private:
|
||||
|
||||
Standard_Boolean thecomplete;
|
||||
Standard_Boolean theloaded;
|
||||
Standard_Boolean thekeepst;
|
||||
TCollection_AsciiString thelabel;
|
||||
TColStd_Array1OfInteger thenums;
|
||||
TColStd_Array1OfTransient theorigs;
|
||||
TColStd_Array1OfTransient themodifs;
|
||||
TColStd_Array1OfInteger thestatus;
|
||||
Handle(IFSelect_Editor) theeditor;
|
||||
Handle(Standard_Transient) theent;
|
||||
Handle(Interface_InterfaceModel) themodel;
|
||||
Standard_Integer thetouched;
|
||||
|
||||
};
|
||||
|
||||
#endif // _IFSelect_EditForm_HeaderFile
|
@@ -1,37 +0,0 @@
|
||||
// Created on: 1992-09-21
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1992-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_EditValue_HeaderFile
|
||||
#define _IFSelect_EditValue_HeaderFile
|
||||
|
||||
//! Controls access on Values by an Editor
|
||||
//! EditOptional : normal access, in addition may be removed
|
||||
//! Editable : normal access, must be present
|
||||
//! EditProtected : access must be validated
|
||||
//! EditComputed : why write it ? it will be recomputed
|
||||
//! EditRead : no way to write it, only for read
|
||||
//! EditDynamic : not a field, only to be displayed
|
||||
enum IFSelect_EditValue
|
||||
{
|
||||
IFSelect_Optional,
|
||||
IFSelect_Editable,
|
||||
IFSelect_EditProtected,
|
||||
IFSelect_EditComputed,
|
||||
IFSelect_EditRead,
|
||||
IFSelect_EditDynamic
|
||||
};
|
||||
|
||||
#endif // _IFSelect_EditValue_HeaderFile
|
@@ -1,230 +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 <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,Standard_Transient)
|
||||
|
||||
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)
|
||||
{ thelists.Init(-1); }
|
||||
|
||||
void IFSelect_Editor::SetNbValues (const Standard_Integer nbval)
|
||||
{
|
||||
if (nbval > thevalues.Upper()) throw Standard_OutOfRange("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.Bind (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.Bind (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 (Standard_OStream& S) const
|
||||
{
|
||||
Standard_Integer i, nb = NbValues();
|
||||
S<<"**** Editor : "<<Label()<<std::endl;
|
||||
S<<"**** Nb Values = "<<nb<<" **** Names / Labels"<<std::endl;
|
||||
S<<" Num ";
|
||||
if (themaxsh > 0) S<<"Short"<<Interface_MSG::Blanks("Short",themaxsh)<<" ";
|
||||
S<<"Complete"<<Interface_MSG::Blanks("Complete",themaxco)<<" Label"<<std::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()<<std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void IFSelect_Editor::PrintDefs
|
||||
(Standard_OStream& S, const Standard_Boolean labels) const
|
||||
{
|
||||
Standard_Integer i, nb = NbValues();
|
||||
S<<"**** Editor : "<<Label()<<std::endl;
|
||||
S<<"**** Nb Values = "<<nb<<" **** "<<(labels ? "Labels" : "Names")<<" / Definitions"<<std::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"<<std::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()<<std::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.Find(name,res))
|
||||
return res;
|
||||
res = atoi (name); // si c est un entier, on tente le coup
|
||||
if (res < 1 || res > NbValues()) res = 0;
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
Handle(IFSelect_EditForm) IFSelect_Editor::Form
|
||||
(const Standard_Boolean readonly, const Standard_Boolean undoable) const
|
||||
{
|
||||
return new IFSelect_EditForm (this,readonly,undoable,Label().ToCString());
|
||||
}
|
||||
|
||||
Handle(IFSelect_ListEditor) IFSelect_Editor::ListEditor
|
||||
(const Standard_Integer num) const
|
||||
{
|
||||
Handle(IFSelect_ListEditor) led;
|
||||
Standard_Integer max = MaxList (num);
|
||||
if (max < 0) return led;
|
||||
led = new IFSelect_ListEditor (TypedValue(num),max);
|
||||
return led;
|
||||
}
|
||||
|
||||
Handle(TColStd_HSequenceOfHAsciiString) IFSelect_Editor::ListValue
|
||||
(const Handle(IFSelect_EditForm)& /*form*/, const Standard_Integer /*num*/) const
|
||||
{
|
||||
Handle(TColStd_HSequenceOfHAsciiString) list;
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_Editor::Update
|
||||
(const Handle(IFSelect_EditForm)& /*form*/, const Standard_Integer /*num*/,
|
||||
const Handle(TCollection_HAsciiString)& /*newval*/,
|
||||
const Standard_Boolean /*enforce*/) const
|
||||
{ return Standard_True; }
|
||||
|
||||
Standard_Boolean IFSelect_Editor::UpdateList
|
||||
(const Handle(IFSelect_EditForm)& /*form*/, const Standard_Integer /*num*/,
|
||||
const Handle(TColStd_HSequenceOfHAsciiString)& /*newval*/,
|
||||
const Standard_Boolean /*enforce*/) const
|
||||
{ return Standard_True; }
|
@@ -1,195 +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 <Standard_Transient.hxx>
|
||||
#include <IFSelect_EditValue.hxx>
|
||||
#include <TColStd_HSequenceOfHAsciiString.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
#include <NCollection_DataMap.hxx>
|
||||
class Interface_TypedValue;
|
||||
class IFSelect_EditForm;
|
||||
class TCollection_HAsciiString;
|
||||
class IFSelect_ListEditor;
|
||||
class Interface_InterfaceModel;
|
||||
|
||||
|
||||
class IFSelect_Editor;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_Editor, Standard_Transient)
|
||||
|
||||
//! 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 Standard_Transient
|
||||
{
|
||||
|
||||
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 (Standard_OStream& S) const;
|
||||
|
||||
Standard_EXPORT void PrintDefs (Standard_OStream& 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,Standard_Transient)
|
||||
|
||||
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;
|
||||
NCollection_DataMap<TCollection_AsciiString, Standard_Integer> thenames;
|
||||
TColStd_Array1OfTransient thevalues;
|
||||
TColStd_Array1OfAsciiString theshorts;
|
||||
TColStd_Array1OfInteger themodes;
|
||||
TColStd_Array1OfInteger thelists;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_Editor_HeaderFile
|
@@ -1,19 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
//#include <IFSelect_FileModifier.ixx>
|
||||
|
||||
|
||||
|
||||
IFSelect_FileModifier::IFSelect_FileModifier ()
|
||||
: IFSelect_GeneralModifier (Standard_False) { }
|
@@ -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,Standard_Transient)
|
||||
|
||||
IFSelect_GeneralModifier::IFSelect_GeneralModifier
|
||||
(const Standard_Boolean maychangegraph) { thechgr = maychangegraph; }
|
||||
|
||||
Standard_Boolean IFSelect_GeneralModifier::MayChangeGraph () const
|
||||
{ return thechgr; }
|
||||
|
||||
void IFSelect_GeneralModifier::SetDispatch
|
||||
(const Handle(IFSelect_Dispatch)& disp)
|
||||
{ thedisp = disp; }
|
||||
|
||||
Handle(IFSelect_Dispatch) IFSelect_GeneralModifier::Dispatch () const
|
||||
{ return thedisp; }
|
||||
|
||||
Standard_Boolean IFSelect_GeneralModifier::Applies
|
||||
(const Handle(IFSelect_Dispatch)& disp) const
|
||||
{
|
||||
if (thedisp.IsNull()) return Standard_True;
|
||||
if (thedisp != disp) return Standard_False;
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
|
||||
void IFSelect_GeneralModifier::SetSelection
|
||||
(const Handle(IFSelect_Selection)& sel)
|
||||
{ thesel = sel; }
|
||||
|
||||
void IFSelect_GeneralModifier::ResetSelection ()
|
||||
{ thesel.Nullify(); }
|
||||
|
||||
Standard_Boolean IFSelect_GeneralModifier::HasSelection () const
|
||||
{ return !thesel.IsNull(); }
|
||||
|
||||
Handle(IFSelect_Selection) IFSelect_GeneralModifier::Selection () const
|
||||
{ return thesel; }
|
@@ -1,121 +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_Transient.hxx>
|
||||
class IFSelect_Selection;
|
||||
class IFSelect_Dispatch;
|
||||
class TCollection_AsciiString;
|
||||
|
||||
class IFSelect_GeneralModifier;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_GeneralModifier, Standard_Transient)
|
||||
|
||||
//! 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
|
||||
//! split 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 Standard_Transient
|
||||
{
|
||||
|
||||
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 additional 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,Standard_Transient)
|
||||
|
||||
protected:
|
||||
|
||||
//! Sets the Modifier criteria to default Values
|
||||
//! (i.e. "always applies")
|
||||
//! <maychangegraph> must be provided at creation time, to :
|
||||
//! - False if this GeneralModifier surely lets the graph of
|
||||
//! dependencies unchanged (NO edition of any reference, BUT
|
||||
//! also NO entity added or replaced or removed)
|
||||
//! - True if there is a possibility of changing the graph of
|
||||
//! dependencies when this modifier is applied
|
||||
Standard_EXPORT IFSelect_GeneralModifier(const Standard_Boolean maychangegraph);
|
||||
|
||||
private:
|
||||
|
||||
Handle(IFSelect_Selection) thesel;
|
||||
Handle(IFSelect_Dispatch) thedisp;
|
||||
Standard_Boolean thechgr;
|
||||
|
||||
};
|
||||
|
||||
#endif // _IFSelect_GeneralModifier_HeaderFile
|
@@ -1,66 +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_GraphCounter.hxx>
|
||||
#include <IFSelect_SelectDeduct.hxx>
|
||||
#include <IFSelect_SelectPointed.hxx>
|
||||
#include <Interface_EntityIterator.hxx>
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <stdio.h>
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_GraphCounter,IFSelect_SignCounter)
|
||||
|
||||
IFSelect_GraphCounter::IFSelect_GraphCounter
|
||||
(const Standard_Boolean withmap, const Standard_Boolean withlist)
|
||||
: IFSelect_SignCounter (withmap,withlist) { }
|
||||
|
||||
Handle(IFSelect_SelectDeduct) IFSelect_GraphCounter::Applied () const
|
||||
{ return theapplied; }
|
||||
|
||||
void IFSelect_GraphCounter::SetApplied
|
||||
(const Handle(IFSelect_SelectDeduct)& applied)
|
||||
{ theapplied = applied; }
|
||||
|
||||
void IFSelect_GraphCounter::AddWithGraph
|
||||
(const Handle(TColStd_HSequenceOfTransient)& list,
|
||||
const Interface_Graph& graph)
|
||||
{
|
||||
if (theapplied.IsNull()) { AddList (list,graph.Model()); return; }
|
||||
if (list.IsNull()) return;
|
||||
Standard_Integer i, nb = list->Length();
|
||||
for (i = 1; i <= nb; i ++) {
|
||||
char val[12];
|
||||
Handle(Standard_Transient) ent = list->Value(i);
|
||||
theapplied->Alternate()->SetEntity (ent);
|
||||
Interface_EntityIterator iter = theapplied->UniqueResult(graph);
|
||||
Standard_Integer n = iter.NbEntities();
|
||||
switch (n) {
|
||||
case 0: Add (ent,"0"); break;
|
||||
case 1: Add (ent,"1"); break;
|
||||
case 2: Add (ent,"2"); break;
|
||||
case 3: Add (ent,"3"); break;
|
||||
case 4: Add (ent,"4"); break;
|
||||
case 5: Add (ent,"5"); break;
|
||||
case 6: Add (ent,"6"); break;
|
||||
case 7: Add (ent,"7"); break;
|
||||
case 8: Add (ent,"8"); break;
|
||||
case 9: Add (ent,"9"); break;
|
||||
default :
|
||||
sprintf (val,"%d",n);
|
||||
Add (ent,val);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,82 +0,0 @@
|
||||
// Created on: 1998-10-15
|
||||
// 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_GraphCounter_HeaderFile
|
||||
#define _IFSelect_GraphCounter_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
|
||||
#include <IFSelect_SignCounter.hxx>
|
||||
#include <TColStd_HSequenceOfTransient.hxx>
|
||||
class IFSelect_SelectDeduct;
|
||||
class Interface_Graph;
|
||||
|
||||
|
||||
class IFSelect_GraphCounter;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_GraphCounter, IFSelect_SignCounter)
|
||||
|
||||
//! A GraphCounter computes values to be sorted with the help of
|
||||
//! a Graph. I.E. not from a Signature
|
||||
//!
|
||||
//! The default GraphCounter works with an Applied Selection (a
|
||||
//! SelectDeduct), the value is the count of selected entities
|
||||
//! from each input entities)
|
||||
class IFSelect_GraphCounter : public IFSelect_SignCounter
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates a GraphCounter, without applied selection
|
||||
Standard_EXPORT IFSelect_GraphCounter(const Standard_Boolean withmap = Standard_True, const Standard_Boolean withlist = Standard_False);
|
||||
|
||||
//! Returns the applied selection
|
||||
Standard_EXPORT Handle(IFSelect_SelectDeduct) Applied() const;
|
||||
|
||||
//! Sets a new applied selection
|
||||
Standard_EXPORT void SetApplied (const Handle(IFSelect_SelectDeduct)& sel);
|
||||
|
||||
//! Adds a list of entities in the context given by the graph
|
||||
//! Default takes the count of entities selected by the applied
|
||||
//! selection, when it is given each entity of the list
|
||||
//! Can be redefined
|
||||
Standard_EXPORT virtual void AddWithGraph (const Handle(TColStd_HSequenceOfTransient)& list, const Interface_Graph& graph) Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_GraphCounter,IFSelect_SignCounter)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
Handle(IFSelect_SelectDeduct) theapplied;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_GraphCounter_HeaderFile
|
@@ -1,26 +0,0 @@
|
||||
// Created on: 1992-09-21
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1992-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef IFSelect_HSeqOfSelection_HeaderFile
|
||||
#define IFSelect_HSeqOfSelection_HeaderFile
|
||||
|
||||
#include <IFSelect_TSeqOfSelection.hxx>
|
||||
#include <NCollection_DefineHSequence.hxx>
|
||||
|
||||
DEFINE_HSEQUENCE(IFSelect_HSeqOfSelection, IFSelect_TSeqOfSelection)
|
||||
|
||||
|
||||
#endif
|
@@ -1,40 +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_IntParam.hxx>
|
||||
#include <Interface_Static.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_IntParam,Standard_Transient)
|
||||
|
||||
IFSelect_IntParam::IFSelect_IntParam ()
|
||||
{ theval = 0; }
|
||||
|
||||
void IFSelect_IntParam::SetStaticName (const Standard_CString statname)
|
||||
{ thestn.Clear(); thestn.AssignCat (statname); }
|
||||
|
||||
Standard_Integer IFSelect_IntParam::Value () const
|
||||
{
|
||||
if (thestn.Length() == 0) return theval;
|
||||
if (!Interface_Static::IsSet(thestn.ToCString()) ) return theval;
|
||||
return Interface_Static::IVal(thestn.ToCString());
|
||||
}
|
||||
|
||||
void IFSelect_IntParam::SetValue (const Standard_Integer val)
|
||||
{
|
||||
theval = val;
|
||||
if (thestn.Length() == 0) return;
|
||||
if (!Interface_Static::IsPresent(thestn.ToCString()) ) return;
|
||||
Interface_Static::SetIVal (thestn.ToCString(),theval);
|
||||
}
|
@@ -1,84 +0,0 @@
|
||||
// Created on: 1992-11-30
|
||||
// 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_IntParam_HeaderFile
|
||||
#define _IFSelect_IntParam_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
|
||||
class IFSelect_IntParam;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_IntParam, Standard_Transient)
|
||||
|
||||
//! This class simply allows to access an Integer value through a
|
||||
//! Handle, as a String can be (by using HString).
|
||||
//! Hence, this value can be accessed : read and modified, without
|
||||
//! passing through the specific object which detains it. Thus,
|
||||
//! parameters of a Selection or a Dispatch (according its type)
|
||||
//! can be controlled directly from the ShareOut which contains them
|
||||
//!
|
||||
//! Additionally, an IntParam can be bound to a Static.
|
||||
//! Remember that for a String, binding is immediate, because the
|
||||
//! string value of a Static is a HAsciiString, it then suffices
|
||||
//! to get its Handle.
|
||||
//! For an Integer, an IntParam can designate (by its name) a
|
||||
//! Static : each time its value is required or set, the Static
|
||||
//! is aknowledged
|
||||
class IFSelect_IntParam : public Standard_Transient
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
//! Creates an IntParam. Initial value is set to zer
|
||||
Standard_EXPORT IFSelect_IntParam();
|
||||
|
||||
//! Commands this IntParam to be bound to a Static
|
||||
//! Hence, Value will return the value if this Static if it is set
|
||||
//! Else, Value works on the locally stored value
|
||||
//! SetValue also will set the value of the Static
|
||||
//! This works only for a present static of type integer or enum
|
||||
//! Else, it is ignored
|
||||
//!
|
||||
//! If <statname> is empty, disconnects the IntParam from Static
|
||||
Standard_EXPORT void SetStaticName (const Standard_CString statname);
|
||||
|
||||
//! Returns the name of static parameter to which this IntParam
|
||||
//! is bound, empty if none
|
||||
Standard_EXPORT Standard_CString StaticName() const;
|
||||
|
||||
//! Reads Integer Value of the IntParam. If a StaticName is
|
||||
//! defined and the Static is set, looks in priority the value
|
||||
//! of the static
|
||||
Standard_EXPORT Standard_Integer Value() const;
|
||||
|
||||
//! Sets a new Integer Value for the IntParam. If a StaticName is
|
||||
//! defined and the Static is set, also sets the value of the static
|
||||
Standard_EXPORT void SetValue (const Standard_Integer val);
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_IntParam,Standard_Transient)
|
||||
|
||||
private:
|
||||
|
||||
Standard_Integer theval;
|
||||
TCollection_AsciiString thestn;
|
||||
|
||||
};
|
||||
|
||||
#endif // _IFSelect_IntParam_HeaderFile
|
@@ -1,210 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFSelect_ListEditor.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Interface_TypedValue.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_HAsciiString.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_ListEditor,Standard_Transient)
|
||||
|
||||
IFSelect_ListEditor::IFSelect_ListEditor ()
|
||||
: themax (0) , thetouc (0) { }
|
||||
|
||||
IFSelect_ListEditor::IFSelect_ListEditor
|
||||
(const Handle(Interface_TypedValue)& def, const Standard_Integer max)
|
||||
: themax (max) , thedef (def) , thetouc (0) { }
|
||||
|
||||
|
||||
void IFSelect_ListEditor::LoadModel (const Handle(Interface_InterfaceModel)& model)
|
||||
{ themodl = model; }
|
||||
|
||||
void IFSelect_ListEditor::LoadValues (const Handle(TColStd_HSequenceOfHAsciiString)& vals)
|
||||
{
|
||||
theorig = vals;
|
||||
ClearEdit();
|
||||
}
|
||||
|
||||
|
||||
void IFSelect_ListEditor::SetTouched ()
|
||||
{ thetouc = 1; }
|
||||
|
||||
void IFSelect_ListEditor::ClearEdit ()
|
||||
{
|
||||
theedit = new TColStd_HSequenceOfHAsciiString();
|
||||
thestat = new TColStd_HSequenceOfInteger();
|
||||
if (theorig.IsNull()) return;
|
||||
Standard_Integer i,nb = theorig->Length();
|
||||
for (i = 1; i <= nb; i ++) {
|
||||
theedit->Append (theorig->Value(i));
|
||||
thestat->Append (0);
|
||||
}
|
||||
thetouc = 0;
|
||||
}
|
||||
|
||||
// ######## CHECK ########
|
||||
|
||||
static Standard_Boolean CheckValue
|
||||
(const Handle(TCollection_HAsciiString)& val,
|
||||
const Handle(Interface_InterfaceModel)& modl,
|
||||
const Handle(Interface_TypedValue)& thedef)
|
||||
{
|
||||
if (val.IsNull() || modl.IsNull() || thedef.IsNull()) return Standard_True;
|
||||
|
||||
Interface_ParamType pty = thedef->Type();
|
||||
if (!thedef->Satisfies(val)) return Standard_False;
|
||||
if (pty == Interface_ParamIdent && !val.IsNull()) {
|
||||
if (modl->NextNumberForLabel(val->ToCString(),0) <= 0)
|
||||
return Standard_False;
|
||||
}
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
// ######## EDITION ########
|
||||
|
||||
Standard_Boolean IFSelect_ListEditor::LoadEdited
|
||||
(const Handle(TColStd_HSequenceOfHAsciiString)& list)
|
||||
{
|
||||
if (list.IsNull()) return Standard_False;
|
||||
Standard_Integer i, nb = list->Length();
|
||||
if (nb > themax) return Standard_False;
|
||||
|
||||
// check values
|
||||
if (!thedef.IsNull()) {
|
||||
for (i = 1; i <= nb; i ++) {
|
||||
Handle(TCollection_HAsciiString) newval = list->Value(i);
|
||||
if (!CheckValue (newval,themodl,thedef)) return Standard_False;
|
||||
}
|
||||
}
|
||||
|
||||
// OK
|
||||
theedit = list;
|
||||
thestat = new TColStd_HSequenceOfInteger();
|
||||
for (i = 1; i <= nb; i ++) thestat->Append (1);
|
||||
thetouc = 1;
|
||||
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_ListEditor::SetValue
|
||||
(const Standard_Integer num, const Handle(TCollection_HAsciiString)& val)
|
||||
{
|
||||
if (theedit.IsNull()) return Standard_False;
|
||||
if (num < 1 || num > theedit->Length()) return Standard_False;
|
||||
|
||||
// check value
|
||||
if (!CheckValue(val,themodl,thedef)) return Standard_False;
|
||||
|
||||
// OK
|
||||
theedit->SetValue (num,val);
|
||||
thestat->SetValue (num,1);
|
||||
thetouc = 1;
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_ListEditor::AddValue
|
||||
(const Handle(TCollection_HAsciiString)& val, const Standard_Integer atnum)
|
||||
{
|
||||
if (theedit.IsNull()) return Standard_False;
|
||||
if (themax > 0 && theedit->Length() >= themax) return Standard_False;
|
||||
if (!CheckValue (val,themodl,thedef)) return Standard_False;
|
||||
if (atnum > 0) {
|
||||
theedit->InsertBefore (atnum,val);
|
||||
thestat->InsertBefore (atnum,2);
|
||||
} else {
|
||||
theedit->Append (val);
|
||||
thestat->Append (2);
|
||||
}
|
||||
thetouc = 2;
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_ListEditor::Remove
|
||||
(const Standard_Integer num, const Standard_Integer howmany)
|
||||
{
|
||||
if (theedit.IsNull()) return Standard_False;
|
||||
Standard_Integer nb = theedit->Length();
|
||||
if (num < 0) return Standard_False;
|
||||
if (num == 0) return Remove (nb-howmany,howmany);
|
||||
|
||||
if ((num+howmany) > nb) return Standard_False;
|
||||
theedit->Remove(num,howmany);
|
||||
thestat->Remove(num,howmany);
|
||||
thetouc = 3;
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
|
||||
// ######## QUERIES ########
|
||||
|
||||
Handle(TColStd_HSequenceOfHAsciiString) IFSelect_ListEditor::OriginalValues () const
|
||||
{ return theorig; }
|
||||
|
||||
Handle(TColStd_HSequenceOfHAsciiString) IFSelect_ListEditor::EditedValues () const
|
||||
{ return theedit; }
|
||||
|
||||
|
||||
Standard_Integer IFSelect_ListEditor::NbValues (const Standard_Boolean edited) const
|
||||
{
|
||||
if (edited) return (theedit.IsNull() ? 0 : theedit->Length());
|
||||
return (theorig.IsNull() ? 0 : theorig->Length());
|
||||
}
|
||||
|
||||
|
||||
Handle(TCollection_HAsciiString) IFSelect_ListEditor::Value
|
||||
(const Standard_Integer num, const Standard_Boolean edited) const
|
||||
{
|
||||
Handle(TCollection_HAsciiString) val;
|
||||
if (edited) {
|
||||
if (theedit.IsNull()) return val;
|
||||
if (num < 1 || num > theedit->Length()) return val;
|
||||
val = theedit->Value(num);
|
||||
} else {
|
||||
if (theorig.IsNull()) return val;
|
||||
if (num < 1 || num > theorig->Length()) return val;
|
||||
val = theorig->Value(num);
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_ListEditor::IsChanged (const Standard_Integer num) const
|
||||
{
|
||||
if (thestat.IsNull()) return Standard_False;
|
||||
if (num < 1 || num > thestat->Length()) return Standard_False;
|
||||
Standard_Integer stat = thestat->Value(num);
|
||||
return (stat != 0);
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_ListEditor::IsModified (const Standard_Integer num) const
|
||||
{
|
||||
if (thestat.IsNull()) return Standard_False;
|
||||
if (num < 1 || num > thestat->Length()) return Standard_False;
|
||||
Standard_Integer stat = thestat->Value(num);
|
||||
return (stat == 1);
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_ListEditor::IsAdded (const Standard_Integer num) const
|
||||
{
|
||||
if (thestat.IsNull()) return Standard_False;
|
||||
if (num < 1 || num > thestat->Length()) return Standard_False;
|
||||
Standard_Integer stat = thestat->Value(num);
|
||||
return (stat == 2);
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_ListEditor::IsTouched () const
|
||||
{ return (thetouc != 0); }
|
@@ -1,152 +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_Integer.hxx>
|
||||
#include <TColStd_HSequenceOfHAsciiString.hxx>
|
||||
#include <TColStd_HSequenceOfInteger.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
class Interface_TypedValue;
|
||||
class Interface_InterfaceModel;
|
||||
class TCollection_HAsciiString;
|
||||
|
||||
class IFSelect_ListEditor;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_ListEditor, Standard_Transient)
|
||||
|
||||
//! 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 Standard_Transient
|
||||
{
|
||||
|
||||
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 more 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,Standard_Transient)
|
||||
|
||||
private:
|
||||
|
||||
Standard_Integer themax;
|
||||
Handle(Interface_TypedValue) thedef;
|
||||
Standard_Integer thetouc;
|
||||
Handle(TColStd_HSequenceOfHAsciiString) theorig;
|
||||
Handle(TColStd_HSequenceOfHAsciiString) theedit;
|
||||
Handle(TColStd_HSequenceOfInteger) thestat;
|
||||
Handle(Interface_InterfaceModel) themodl;
|
||||
|
||||
};
|
||||
|
||||
#endif // _IFSelect_ListEditor_HeaderFile
|
@@ -1,531 +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 <stdio.h>
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_ModelCopier,Standard_Transient)
|
||||
|
||||
//#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::SendInfo() << "** WorkSession : Copying split data before sending"<<std::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::SendInfo() << "** WorkSession : Sending split data already copied"<<std::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 : **"<<std::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::SendInfo() << " ** Sending File n0."<<i<<" has failed, abandon **"<<std::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::SendInfo() << "** WorkSession : Copying then sending split data"<<std::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 : **"<<std::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::SendInfo() << " ** Sending File "<<filename<<" has failed, abandon **"<<std::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::SendInfo() << "** WorkSession : Sending all data"<<std::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::SendWarning() <<
|
||||
// " ** SendAll has produced Check Messages : **"<<std::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::SendInfo() << "** WorkSession : Sending selected data"<<std::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::SendWarning() <<
|
||||
// " ** SendSelected has produced Check Messages : **"<<std::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::SendWarning() <<
|
||||
// " Messages on Copied Model n0 "<<numod<<", Dispatch Rank "<<dispnum<<std::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
|
||||
std::cout << " Remaining Model : " << newmod->NbEntities() << " Entities"<<std::endl;
|
||||
Standard_Integer ne = 0;
|
||||
for (i = 1; i <= nb; i ++) {
|
||||
if (theremain->Value(i) == 0) {
|
||||
if (ne == 0) std::cout << " Refractaires : ";
|
||||
ne ++; std::cout << " " << i;
|
||||
}
|
||||
}
|
||||
if (ne > 0) std::cout << " -- " << ne << " Entities" << std::endl;
|
||||
else std::cout<<" -- Remaining data complete"<<std::endl;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_ModelCopier::SetRemaining
|
||||
(Interface_Graph& CG) const
|
||||
{
|
||||
Standard_Integer nb = CG.Size();
|
||||
if (theremain.IsNull()) return (nb == 0);
|
||||
if (nb != theremain->Upper()) return Standard_False;
|
||||
for (Standard_Integer i = 1; i <= nb; i ++) {
|
||||
if (CG.Status(i) >= 0) CG.SetStatus(i,CG.Status(i)+theremain->Value(i));
|
||||
}
|
||||
theremain->Init(0);
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
// ##########################################################################
|
||||
// ######## RESULTAT de la Memorisation des Transferts ########
|
||||
|
||||
Standard_Integer IFSelect_ModelCopier::NbFiles () const
|
||||
{ return thefilemodels.Length(); }
|
||||
|
||||
TCollection_AsciiString IFSelect_ModelCopier::FileName
|
||||
(const Standard_Integer num) const
|
||||
{ return thefilenames.Value(num); }
|
||||
|
||||
Handle(Interface_InterfaceModel) IFSelect_ModelCopier::FileModel
|
||||
(const Standard_Integer num) const
|
||||
{ return thefilemodels.Value(num); }
|
||||
|
||||
Handle(IFSelect_AppliedModifiers) IFSelect_ModelCopier::AppliedModifiers
|
||||
(const Standard_Integer num) const
|
||||
{ return theapplieds.Value(num); }
|
||||
|
||||
|
||||
void IFSelect_ModelCopier::BeginSentFiles
|
||||
(const Handle(IFSelect_ShareOut)& sho, const Standard_Boolean record)
|
||||
{
|
||||
thesentfiles.Nullify();
|
||||
if (record) thesentfiles = new TColStd_HSequenceOfHAsciiString();
|
||||
// et numerotation des fichiers par defaut : detenue par ShareOut
|
||||
if (sho.IsNull()) return;
|
||||
Standard_Integer lastrun = sho->LastRun();
|
||||
sho->ClearResult (Standard_True);
|
||||
sho->SetLastRun (lastrun); // on ne s interesse quaux numeros
|
||||
}
|
||||
|
||||
void IFSelect_ModelCopier::AddSentFile (const Standard_CString filename)
|
||||
{ if (!thesentfiles.IsNull())
|
||||
thesentfiles->Append(new TCollection_HAsciiString(filename)); }
|
||||
|
||||
Handle(TColStd_HSequenceOfHAsciiString) IFSelect_ModelCopier::SentFiles () const
|
||||
{ return thesentfiles; }
|
@@ -1,260 +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 <Standard_Transient.hxx>
|
||||
#include <Standard_Integer.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, Standard_Transient)
|
||||
|
||||
//! 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, according to 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 Standard_Transient
|
||||
{
|
||||
|
||||
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,Standard_Transient)
|
||||
|
||||
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 useful for Modifiers)
|
||||
//! <topcopy> is the list of Entities which are the Roots of the
|
||||
//! packet to be copied
|
||||
//! <filename> is the name of the file which will receive it
|
||||
//! <dispid> is the Identifier of the Dispatch which have produced
|
||||
//! this packet, <numod> is the rank of the packet for this
|
||||
//! Dispatch
|
||||
//! <TC> is a CopyTool, which performs the copy
|
||||
//!
|
||||
//! Returned values (as arguments) are :
|
||||
//! <newmod> is the result of the copy, as a new InterfaceModel on
|
||||
//! which Model Modifiers have already been applied (if there are)
|
||||
//! <applied> determines the File Modifiers which remain to be
|
||||
//! applied (when the file itself will be output) : for each File
|
||||
//! Modifier recorded in <me>, <applied>'s Value is :
|
||||
//! - Null if this Modifier has not to be applied
|
||||
//! - an empty list if this Modifier has to be applied without
|
||||
//! distinguishing specific entities
|
||||
//! - a list of numbers of entities in <model> if this Modifier
|
||||
//! concerns particularly these entities (which are the results
|
||||
//! of copying the result of its input selection)
|
||||
//! <checks> is the produced Check List (by Modifiers as required)
|
||||
//!
|
||||
//! Warning : File Modifiers are evaluated at the time of Copy itself
|
||||
//! If their list is changed between this Copy and the Sending
|
||||
//! itself of the file, these changes are ignored
|
||||
Standard_EXPORT void CopiedModel (const Interface_Graph& G, const Handle(IFSelect_WorkLibrary)& WL, const Handle(Interface_Protocol)& protocol, const Interface_EntityIterator& topcopy, const TCollection_AsciiString& filename, const Standard_Integer dispnum, const Standard_Integer numod, Interface_CopyTool& TC, Handle(Interface_InterfaceModel)& newmod, Handle(IFSelect_AppliedModifiers)& applied, Interface_CheckIterator& checks) const;
|
||||
|
||||
private:
|
||||
|
||||
IFSelect_SequenceOfInterfaceModel thefilemodels;
|
||||
TColStd_SequenceOfAsciiString thefilenames;
|
||||
IFSelect_SequenceOfAppliedModifiers theapplieds;
|
||||
Handle(IFSelect_ShareOut) theshareout;
|
||||
Handle(TColStd_HArray1OfInteger) theremain;
|
||||
Handle(TColStd_HSequenceOfHAsciiString) thesentfiles;
|
||||
|
||||
};
|
||||
|
||||
#endif // _IFSelect_ModelCopier_HeaderFile
|
@@ -1,41 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
//#include <IFSelect_ModelModifier.ixx>
|
||||
#include <Interface_Check.hxx>
|
||||
|
||||
IFSelect_ModelModifier::IFSelect_ModelModifier (const Standard_Boolean grf)
|
||||
: IFSelect_Modifier (grf) { }
|
||||
|
||||
void IFSelect_ModelModifier::Perform
|
||||
(IFSelect_ContextModif& ctx,
|
||||
const Handle(Interface_InterfaceModel)& target,
|
||||
const Handle(Interface_Protocol)& protocol,
|
||||
Interface_CopyTool& TC) const
|
||||
{
|
||||
ctx.TraceModifier(this);
|
||||
Handle(Model) targ = Handle(Model)::DownCast(target);
|
||||
Handle(Proto) prot = Handle(Proto)::DownCast(protocol);
|
||||
if (targ.IsNull()) {
|
||||
ctx.CCheck()->AddFail("Model to Modify : unproper type");
|
||||
return;
|
||||
}
|
||||
PerformProtocol (ctx,targ,prot,TC);
|
||||
}
|
||||
|
||||
void IFSelect_ModelModifier::PerformProtocol
|
||||
(IFSelect_ContextModif& ctx,
|
||||
const Handle(Model)& target,
|
||||
const Handle(Proto)& protocol,
|
||||
Interface_CopyTool& TC) const
|
||||
{ ctx.SetProtocol(protocol); Performing (ctx,target,TC); }
|
@@ -1,56 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFSelect_ContextModif.hxx>
|
||||
#include <IFSelect_EditForm.hxx>
|
||||
#include <IFSelect_ModifEditForm.hxx>
|
||||
#include <Interface_CopyTool.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Interface_Protocol.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_ModifEditForm,IFSelect_Modifier)
|
||||
|
||||
IFSelect_ModifEditForm::IFSelect_ModifEditForm
|
||||
(const Handle(IFSelect_EditForm)& editform)
|
||||
: IFSelect_Modifier (Standard_False) { theedit = editform; }
|
||||
|
||||
Handle(IFSelect_EditForm) IFSelect_ModifEditForm::EditForm () const
|
||||
{ return theedit; }
|
||||
|
||||
|
||||
void IFSelect_ModifEditForm::Perform
|
||||
(IFSelect_ContextModif& ctx,
|
||||
const Handle(Interface_InterfaceModel)& target,
|
||||
const Handle(Interface_Protocol)& /*protocol*/,
|
||||
Interface_CopyTool& /*TC*/) const
|
||||
{
|
||||
for (ctx.Start(); ctx.More(); ctx.Next()) {
|
||||
Standard_Boolean done = theedit->ApplyData(ctx.ValueResult(),target);
|
||||
if (done) ctx.Trace();
|
||||
else ctx.AddWarning (ctx.ValueResult(),"EditForm could not be applied");
|
||||
}
|
||||
}
|
||||
|
||||
TCollection_AsciiString IFSelect_ModifEditForm::Label () const
|
||||
{
|
||||
Standard_CString editlab = theedit->Label();
|
||||
TCollection_AsciiString lab ("Apply EditForm");
|
||||
if (editlab && editlab[0] != '\0') {
|
||||
lab.AssignCat (" : ");
|
||||
lab.AssignCat (editlab);
|
||||
}
|
||||
return lab;
|
||||
}
|
@@ -1,78 +0,0 @@
|
||||
// Created on: 1998-02-27
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1998-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_ModifEditForm_HeaderFile
|
||||
#define _IFSelect_ModifEditForm_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <IFSelect_Modifier.hxx>
|
||||
class IFSelect_EditForm;
|
||||
class IFSelect_ContextModif;
|
||||
class Interface_InterfaceModel;
|
||||
class Interface_Protocol;
|
||||
class Interface_CopyTool;
|
||||
class TCollection_AsciiString;
|
||||
|
||||
|
||||
class IFSelect_ModifEditForm;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_ModifEditForm, IFSelect_Modifier)
|
||||
|
||||
//! This modifier applies an EditForm on the entities selected
|
||||
class IFSelect_ModifEditForm : public IFSelect_Modifier
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates a ModifEditForm. It may not change the graph
|
||||
Standard_EXPORT IFSelect_ModifEditForm(const Handle(IFSelect_EditForm)& editform);
|
||||
|
||||
//! Returns the EditForm
|
||||
Standard_EXPORT Handle(IFSelect_EditForm) EditForm() const;
|
||||
|
||||
//! Acts by applying an EditForm to entities, selected or all model
|
||||
Standard_EXPORT void Perform (IFSelect_ContextModif& ctx, const Handle(Interface_InterfaceModel)& target, const Handle(Interface_Protocol)& protocol, Interface_CopyTool& TC) const Standard_OVERRIDE;
|
||||
|
||||
//! Returns Label as "Apply EditForm <+ label of EditForm>"
|
||||
Standard_EXPORT TCollection_AsciiString Label() const Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_ModifEditForm,IFSelect_Modifier)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
Handle(IFSelect_EditForm) theedit;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_ModifEditForm_HeaderFile
|
@@ -1,46 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFSelect_ContextModif.hxx>
|
||||
#include <IFSelect_ModifReorder.hxx>
|
||||
#include <Interface_CopyTool.hxx>
|
||||
#include <Interface_EntityIterator.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Interface_Protocol.hxx>
|
||||
#include <Interface_ShareTool.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_ModifReorder,IFSelect_Modifier)
|
||||
|
||||
IFSelect_ModifReorder::IFSelect_ModifReorder (const Standard_Boolean rootlast)
|
||||
: IFSelect_Modifier (Standard_True) { thertl = rootlast; }
|
||||
|
||||
void IFSelect_ModifReorder::Perform (IFSelect_ContextModif& ctx,
|
||||
const Handle(Interface_InterfaceModel)& target,
|
||||
const Handle(Interface_Protocol)& /*protocol*/,
|
||||
Interface_CopyTool& /*TC*/) const
|
||||
{
|
||||
Interface_ShareTool sht (ctx.OriginalGraph());
|
||||
Interface_EntityIterator list = sht.All (ctx.OriginalModel(),thertl);
|
||||
target->ClearEntities();
|
||||
for (list.Start(); list.More(); list.Next()) target->AddEntity (list.Value());
|
||||
}
|
||||
|
||||
TCollection_AsciiString IFSelect_ModifReorder::Label () const
|
||||
{
|
||||
Standard_CString astr = (Standard_CString ) ( thertl ? "Reorder, Roots last" : "Reorder, Roots first");
|
||||
return TCollection_AsciiString( astr ) ;
|
||||
// ( thertl ? "Reorder, Roots last" : "Reorder, Roots first");
|
||||
}
|
@@ -1,82 +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 <IFSelect_Modifier.hxx>
|
||||
class IFSelect_ContextModif;
|
||||
class Interface_InterfaceModel;
|
||||
class Interface_Protocol;
|
||||
class Interface_CopyTool;
|
||||
class TCollection_AsciiString;
|
||||
|
||||
|
||||
class IFSelect_ModifReorder;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_ModifReorder, IFSelect_Modifier)
|
||||
|
||||
//! This modifier reorders a whole model from its roots, i.e.
|
||||
//! according to <rootlast> status, it considers each of its
|
||||
//! roots, then it orders all its shared entities at any level,
|
||||
//! the result begins by the lower level entities ... ends by
|
||||
//! the roots.
|
||||
class IFSelect_ModifReorder : public IFSelect_Modifier
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Creates a ModifReorder. It may change the graph (it does !)
|
||||
//! If <rootlast> is True (D), roots are set at the end of packets
|
||||
//! Else, they are set at beginning (as done by AddWithRefs)
|
||||
Standard_EXPORT IFSelect_ModifReorder(const Standard_Boolean rootlast = Standard_True);
|
||||
|
||||
//! Acts by computing orders (by method All from ShareTool) then
|
||||
//! forcing them in the model. Remark that selection is ignored :
|
||||
//! ALL the model is processed in once
|
||||
Standard_EXPORT void Perform (IFSelect_ContextModif& ctx, const Handle(Interface_InterfaceModel)& target, const Handle(Interface_Protocol)& protocol, Interface_CopyTool& TC) const Standard_OVERRIDE;
|
||||
|
||||
//! Returns Label as "Reorder, Roots (last or first)"
|
||||
Standard_EXPORT TCollection_AsciiString Label() const Standard_OVERRIDE;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_ModifReorder,IFSelect_Modifier)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
Standard_Boolean thertl;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_ModifReorder_HeaderFile
|
@@ -1,25 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFSelect_ContextModif.hxx>
|
||||
#include <IFSelect_Modifier.hxx>
|
||||
#include <Interface_CopyTool.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Interface_Protocol.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_Modifier,IFSelect_GeneralModifier)
|
||||
|
||||
IFSelect_Modifier::IFSelect_Modifier (const Standard_Boolean grf)
|
||||
: IFSelect_GeneralModifier (grf) { }
|
@@ -1,86 +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>
|
||||
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 information about original data and selection.
|
||||
//! The result of copying, on which modifications are to be done,
|
||||
//! is <target>.
|
||||
//! <TC> allows to run additional copies as required
|
||||
//!
|
||||
//! In case of Error, use methods CCheck from the ContextModif
|
||||
//! to aknowledge an entity Check or a Global Check with messages
|
||||
Standard_EXPORT virtual void Perform (IFSelect_ContextModif& ctx, const Handle(Interface_InterfaceModel)& target, const Handle(Interface_Protocol)& protocol, Interface_CopyTool& TC) const = 0;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_Modifier,IFSelect_GeneralModifier)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
//! Calls inherited Initialize, transmits to it the information
|
||||
//! <maychangegraph>
|
||||
Standard_EXPORT IFSelect_Modifier(const Standard_Boolean maychangegraph);
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_Modifier_HeaderFile
|
@@ -1,144 +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,Standard_Transient)
|
||||
|
||||
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) throw Interface_InterfaceError("PacketList:Add, Entity not in Model");
|
||||
if (thelast == 0) throw Interface_InterfaceError("PacketList:Add, no Packet yet added");
|
||||
if (theflags(num) != 0) return;
|
||||
theflags(num) = 1;
|
||||
thedupls(num) ++;
|
||||
thepacks.Add(num);
|
||||
thebegin = Standard_False;
|
||||
}
|
||||
|
||||
void IFSelect_PacketList::AddList
|
||||
(const Handle(TColStd_HSequenceOfTransient)& list)
|
||||
{
|
||||
if (list.IsNull()) return;
|
||||
Standard_Integer i , nb = list->Length();
|
||||
thepacks.Reservate (nb+1);
|
||||
for (i = 1; i <= nb; i ++) Add (list->Value(i));
|
||||
}
|
||||
|
||||
|
||||
Standard_Integer IFSelect_PacketList::NbPackets () const
|
||||
{ return (thebegin ? thelast-1 : thelast); }
|
||||
|
||||
Standard_Integer IFSelect_PacketList::NbEntities
|
||||
(const Standard_Integer numpack) const
|
||||
{
|
||||
if (numpack <= 0 || numpack > NbPackets()) return 0;
|
||||
Interface_IntList lisi(thepacks,Standard_False); lisi.SetNumber (numpack);
|
||||
return lisi.Length();
|
||||
}
|
||||
|
||||
Interface_EntityIterator IFSelect_PacketList::Entities
|
||||
(const Standard_Integer numpack) const
|
||||
{
|
||||
Interface_EntityIterator list;
|
||||
if (numpack <= 0 || numpack > NbPackets()) return list;
|
||||
Interface_IntList lisi(thepacks,Standard_False); lisi.SetNumber (numpack);
|
||||
Standard_Integer i , nb = lisi.Length();
|
||||
for (i = 1; i <= nb; i ++)
|
||||
list.AddItem(themodel->Value(lisi.Value(i)));
|
||||
return list;
|
||||
}
|
||||
|
||||
Standard_Integer IFSelect_PacketList::HighestDuplicationCount () const
|
||||
{
|
||||
Standard_Integer i , nb = themodel->NbEntities();
|
||||
Standard_Integer high = 0;
|
||||
for (i = 1; i <= nb; i ++) {
|
||||
Standard_Integer j = thedupls.Value(i);
|
||||
if (j > high) high = j;
|
||||
}
|
||||
return high;
|
||||
}
|
||||
|
||||
Standard_Integer IFSelect_PacketList::NbDuplicated
|
||||
(const Standard_Integer newcount, const Standard_Boolean andmore) const
|
||||
{
|
||||
Standard_Integer i, nb = themodel->NbEntities();
|
||||
Standard_Integer nbdu = 0;
|
||||
|
||||
for (i = 1; i <= nb; i ++) {
|
||||
Standard_Integer j = thedupls.Value(i);
|
||||
if (j == newcount || (j > newcount && andmore)) nbdu ++;
|
||||
}
|
||||
return nbdu;
|
||||
}
|
||||
|
||||
Interface_EntityIterator IFSelect_PacketList::Duplicated
|
||||
(const Standard_Integer newcount, const Standard_Boolean andmore) const
|
||||
{
|
||||
Standard_Integer nb = themodel->NbEntities();
|
||||
Interface_EntityIterator list;
|
||||
|
||||
Standard_Integer i;
|
||||
for (i = 1; i <= nb; i ++) {
|
||||
Standard_Integer j = thedupls.Value(i);
|
||||
if (j == newcount || (j > newcount && andmore)) list.AddItem(themodel->Value(i));
|
||||
}
|
||||
return list;
|
||||
}
|
@@ -1,130 +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 <Interface_IntList.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
#include <TColStd_HSequenceOfTransient.hxx>
|
||||
class Interface_InterfaceModel;
|
||||
class Interface_EntityIterator;
|
||||
|
||||
|
||||
class IFSelect_PacketList;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_PacketList, Standard_Transient)
|
||||
|
||||
//! 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 Standard_Transient
|
||||
{
|
||||
|
||||
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,Standard_Transient)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
Handle(Interface_InterfaceModel) themodel;
|
||||
TColStd_Array1OfInteger thedupls;
|
||||
Interface_IntList thepacks;
|
||||
TColStd_Array1OfInteger theflags;
|
||||
Standard_Integer thelast;
|
||||
Standard_Boolean thebegin;
|
||||
TCollection_AsciiString thename;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_PacketList_HeaderFile
|
@@ -1,106 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFSelect_EditForm.hxx>
|
||||
#include <IFSelect_ParamEditor.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Interface_Static.hxx>
|
||||
#include <Interface_TypedValue.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
#include <TCollection_HAsciiString.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_ParamEditor,IFSelect_Editor)
|
||||
|
||||
IFSelect_ParamEditor::IFSelect_ParamEditor
|
||||
(const Standard_Integer nbmax, const Standard_CString label)
|
||||
: IFSelect_Editor (nbmax) , thelabel (label)
|
||||
{
|
||||
SetNbValues (0);
|
||||
if (thelabel.Length() == 0) thelabel.AssignCat ("Param Editor");
|
||||
}
|
||||
|
||||
void IFSelect_ParamEditor::AddValue
|
||||
(const Handle(Interface_TypedValue)& val, const Standard_CString shortname)
|
||||
{
|
||||
SetNbValues (NbValues() + 1);
|
||||
SetValue (NbValues(), val, shortname);
|
||||
}
|
||||
|
||||
void IFSelect_ParamEditor::AddConstantText
|
||||
(const Standard_CString val, const Standard_CString shortname,
|
||||
const Standard_CString longname)
|
||||
{
|
||||
Handle(Interface_TypedValue) tv = new Interface_TypedValue
|
||||
(longname[0] == '\0' ? shortname : longname);
|
||||
tv->SetCStringValue (val);
|
||||
SetNbValues (NbValues() + 1);
|
||||
SetValue (NbValues(), tv, shortname, IFSelect_EditRead);
|
||||
}
|
||||
|
||||
|
||||
TCollection_AsciiString IFSelect_ParamEditor::Label () const
|
||||
{ return thelabel; }
|
||||
|
||||
Standard_Boolean IFSelect_ParamEditor::Recognize
|
||||
(const Handle(IFSelect_EditForm)& /*form*/) const
|
||||
{ return Standard_True; } // pas de contrainte
|
||||
|
||||
Handle(TCollection_HAsciiString) IFSelect_ParamEditor::StringValue
|
||||
(const Handle(IFSelect_EditForm)& /*form*/,const Standard_Integer num) const
|
||||
{ return TypedValue(num)->HStringValue(); }
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_ParamEditor::Load
|
||||
(const Handle(IFSelect_EditForm)& form,
|
||||
const Handle(Standard_Transient)& /*ent*/,
|
||||
const Handle(Interface_InterfaceModel)& /*model*/) const
|
||||
{
|
||||
Standard_Integer i, nb = NbValues();
|
||||
for (i = 1; i <= nb; i ++) form->LoadValue (i,TypedValue(i)->HStringValue());
|
||||
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
|
||||
Standard_Boolean IFSelect_ParamEditor::Apply
|
||||
(const Handle(IFSelect_EditForm)& form,
|
||||
const Handle(Standard_Transient)& /*ent*/,
|
||||
const Handle(Interface_InterfaceModel)& /*model*/) const
|
||||
{
|
||||
Standard_Integer i, nb = NbValues();
|
||||
for (i = 1; i <= nb; i ++)
|
||||
if (form->IsModified(i))
|
||||
TypedValue (i)->SetHStringValue (form->EditedValue(i));
|
||||
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
Handle(IFSelect_ParamEditor) IFSelect_ParamEditor::StaticEditor
|
||||
(const Handle(TColStd_HSequenceOfHAsciiString)& list,
|
||||
const Standard_CString label)
|
||||
{
|
||||
Handle(IFSelect_ParamEditor) editor;
|
||||
if (list.IsNull()) return editor;
|
||||
Standard_Integer i,nb = list->Length();
|
||||
// if (nb == 0) return editor;
|
||||
editor = new IFSelect_ParamEditor (nb+10,label);
|
||||
for (i = 1; i <= nb; i ++) {
|
||||
Handle(Interface_Static) val = Interface_Static::Static
|
||||
(list->Value(i)->ToCString());
|
||||
if (!val.IsNull()) editor->AddValue(val);
|
||||
}
|
||||
return editor;
|
||||
}
|
@@ -1,86 +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 <TColStd_HSequenceOfHAsciiString.hxx>
|
||||
class Interface_TypedValue;
|
||||
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 made explicit
|
||||
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)
|
||||
|
||||
private:
|
||||
|
||||
TCollection_AsciiString thelabel;
|
||||
|
||||
};
|
||||
|
||||
#endif // _IFSelect_ParamEditor_HeaderFile
|
@@ -1,61 +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_PrintCount_HeaderFile
|
||||
#define _IFSelect_PrintCount_HeaderFile
|
||||
|
||||
|
||||
//! Lets you choose the manner in which you want to analyze an
|
||||
//! IGES or STEP file. Your analysis can be either message-oriented or
|
||||
//! entity-oriented. The specific values are as follows:
|
||||
//! - ItemsByEntity is a sequential list of all
|
||||
//! messages per entity of the defined type
|
||||
//! - CountByItem is the number of entities of the defined
|
||||
//! type, with their rank number per message
|
||||
//! - ShortByItem is the number of entities of the defined
|
||||
//! type, with their types per message; displays the rank
|
||||
//! numbers of the first five entities of the defined type
|
||||
//! per message
|
||||
//! - ListByItem is the number of entities of the defined type
|
||||
//! per message and the numbers of the entities
|
||||
//! - EntitiesByItem is the number of entities of the
|
||||
//! defined type, with their types, rank numbers and
|
||||
//! Directory Entry numbers per message
|
||||
//! - GeneralInfo is general information on transfer such as:
|
||||
//! - number of entities
|
||||
//! - number of roots
|
||||
//! - number of resulting Open CASCADE shapes
|
||||
//! - number of warnings and failures
|
||||
//! - CountSummary summary statistics for counters and signatures
|
||||
//! - ResultCount information that contains the number of
|
||||
//! roots in the IGES file and the number of resulting Open CASCADE shapes.
|
||||
//! - Mapping of the IGES root entities to the resulting Open
|
||||
//! CASCADE shape (including type and form of the IGES entity
|
||||
//! and type of the resulting shape).
|
||||
enum IFSelect_PrintCount
|
||||
{
|
||||
IFSelect_ItemsByEntity,
|
||||
IFSelect_CountByItem,
|
||||
IFSelect_ShortByItem,
|
||||
IFSelect_ListByItem,
|
||||
IFSelect_EntitiesByItem,
|
||||
IFSelect_CountSummary,
|
||||
IFSelect_GeneralInfo,
|
||||
IFSelect_Mapping,
|
||||
IFSelect_ResultCount
|
||||
};
|
||||
|
||||
#endif // _IFSelect_PrintCount_HeaderFile
|
@@ -1,29 +0,0 @@
|
||||
// Created on: 1992-09-21
|
||||
// Created by: Christian CAILLET
|
||||
// Copyright (c) 1992-1999 Matra Datavision
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
#ifndef _IFSelect_RemainMode_HeaderFile
|
||||
#define _IFSelect_RemainMode_HeaderFile
|
||||
|
||||
|
||||
enum IFSelect_RemainMode
|
||||
{
|
||||
IFSelect_RemainForget,
|
||||
IFSelect_RemainCompute,
|
||||
IFSelect_RemainDisplay,
|
||||
IFSelect_RemainUndo
|
||||
};
|
||||
|
||||
#endif // _IFSelect_RemainMode_HeaderFile
|
@@ -1,111 +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_IntParam.hxx>
|
||||
#include <IFSelect_SelectAnyList.hxx>
|
||||
#include <Interface_EntityIterator.hxx>
|
||||
#include <Interface_Graph.hxx>
|
||||
#include <Interface_InterfaceError.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
|
||||
#include <stdio.h>
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_SelectAnyList,IFSelect_SelectDeduct)
|
||||
|
||||
// .... Definition de liste : methodes "deferred" NbItems & FillResult
|
||||
void IFSelect_SelectAnyList::SetRange
|
||||
(const Handle(IFSelect_IntParam)& rankfrom,
|
||||
const Handle(IFSelect_IntParam)& rankto)
|
||||
{ thelower = rankfrom; theupper = rankto; }
|
||||
|
||||
void IFSelect_SelectAnyList::SetOne (const Handle(IFSelect_IntParam)& rank)
|
||||
{ thelower = theupper = rank; }
|
||||
|
||||
void IFSelect_SelectAnyList::SetFrom
|
||||
(const Handle(IFSelect_IntParam)& rankfrom)
|
||||
{ thelower = rankfrom; theupper.Nullify(); }
|
||||
|
||||
void IFSelect_SelectAnyList::SetUntil
|
||||
(const Handle(IFSelect_IntParam)& rankto)
|
||||
{ thelower.Nullify(); theupper = rankto; }
|
||||
|
||||
Standard_Boolean IFSelect_SelectAnyList::HasLower () const
|
||||
{ return (!thelower.IsNull()); }
|
||||
|
||||
Handle(IFSelect_IntParam) IFSelect_SelectAnyList::Lower () const
|
||||
{ return thelower; }
|
||||
|
||||
Standard_Integer IFSelect_SelectAnyList::LowerValue () const
|
||||
{
|
||||
if (thelower.IsNull()) return 0;
|
||||
return thelower->Value();
|
||||
}
|
||||
|
||||
Standard_Boolean IFSelect_SelectAnyList::HasUpper () const
|
||||
{ return (!theupper.IsNull()); }
|
||||
|
||||
Handle(IFSelect_IntParam) IFSelect_SelectAnyList::Upper () const
|
||||
{ return theupper; }
|
||||
|
||||
Standard_Integer IFSelect_SelectAnyList::UpperValue () const
|
||||
{
|
||||
if (theupper.IsNull()) return 0;
|
||||
return theupper->Value();
|
||||
}
|
||||
|
||||
// On prend les sous-entites de lower a upper (inclus)
|
||||
Interface_EntityIterator IFSelect_SelectAnyList::RootResult
|
||||
(const Interface_Graph& G) const
|
||||
{
|
||||
Interface_EntityIterator input = InputResult(G);
|
||||
KeepInputEntity (input); // selon type voulu
|
||||
if (input.NbEntities() > 1) throw Interface_InterfaceError("SelectAnyList : more than ONE Entity in input");
|
||||
if (input.NbEntities() == 0) return input;
|
||||
|
||||
Handle(Standard_Transient) ent;
|
||||
for (input.Start(); input.More(); input.Next()) ent = input.Value();
|
||||
|
||||
Standard_Integer rankmax = NbItems(ent);
|
||||
Standard_Integer rankfrom = 1;
|
||||
if (!thelower.IsNull()) rankfrom = thelower->Value();
|
||||
Standard_Integer rankto;
|
||||
if (!theupper.IsNull()) rankto = theupper->Value();
|
||||
else rankto = rankmax;
|
||||
if (rankfrom < 1) rankfrom = 1;
|
||||
if (rankto > rankmax) rankto = rankmax;
|
||||
|
||||
Interface_EntityIterator iter;
|
||||
if (rankfrom <= rankto) FillResult(rankfrom,rankto,ent,iter);
|
||||
return iter;
|
||||
}
|
||||
|
||||
|
||||
TCollection_AsciiString IFSelect_SelectAnyList::Label () const
|
||||
{
|
||||
char lab[30];
|
||||
Standard_Integer rankfrom = 0;
|
||||
if (HasLower()) rankfrom = LowerValue();
|
||||
Standard_Integer rankto = 0;
|
||||
if (HasUpper()) rankto = UpperValue();
|
||||
if (rankfrom == rankto) sprintf(lab," (no %d)",rankfrom);
|
||||
else if (rankfrom == 0) sprintf(lab," (-> %d)",rankfrom);
|
||||
else if (rankto == 0) sprintf(lab," (%d ->)",rankto);
|
||||
else sprintf(lab," (%d -> %d)",rankfrom,rankto);
|
||||
|
||||
TCollection_AsciiString labl("In List ");
|
||||
labl.AssignCat(ListLabel());
|
||||
labl.AssignCat(lab);
|
||||
return labl;
|
||||
}
|
@@ -1,153 +0,0 @@
|
||||
// Created on: 1992-12-09
|
||||
// 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_SelectAnyList_HeaderFile
|
||||
#define _IFSelect_SelectAnyList_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <IFSelect_SelectDeduct.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
class IFSelect_IntParam;
|
||||
class Interface_EntityIterator;
|
||||
class Standard_Transient;
|
||||
class Interface_Graph;
|
||||
class TCollection_AsciiString;
|
||||
|
||||
|
||||
class IFSelect_SelectAnyList;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_SelectAnyList, IFSelect_SelectDeduct)
|
||||
|
||||
//! A SelectAnyList kind Selection selects a List of an Entity, as
|
||||
//! well as this Entity contains some. A List contains sub-entities
|
||||
//! as one per Item, or several (for instance if an Entity binds
|
||||
//! couples of sub-entities, each item is one of these couples).
|
||||
//! Remark that only Entities are taken into account (neither
|
||||
//! Reals, nor Strings, etc...)
|
||||
//!
|
||||
//! To define the list on which to work, SelectAnyList has two
|
||||
//! deferred methods : NbItems (which gives the length of the
|
||||
//! list), FillResult (which fills an EntityIterator). They are
|
||||
//! intended to get a List in an Entity of the required Type (and
|
||||
//! consider that list is empty if Entity has not required Type)
|
||||
//!
|
||||
//! In addition, remark that some types of Entity define more than
|
||||
//! one list in each instance : a given sub-class of SelectAnyList
|
||||
//! must be attached to one list
|
||||
//!
|
||||
//! SelectAnyList keeps or rejects a sub-set of the list,
|
||||
//! that is the Items of which rank in the list is in a given
|
||||
//! range (for instance form 2nd to 6th, etc...)
|
||||
//! Range is defined by two Integer values. In order to allow
|
||||
//! external control of them, these values are not directly
|
||||
//! defined as fields, but accessed through IntParams, that is,
|
||||
//! referenced as Transient (Handle) objects
|
||||
//!
|
||||
//! Warning : the Input can be any kind of Selection, BUT its
|
||||
//! RootResult must have zero (empty) or one Entity maximum
|
||||
class IFSelect_SelectAnyList : public IFSelect_SelectDeduct
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Keeps Input Entity, as having required type. It works by
|
||||
//! keeping in <iter>, only suitable Entities (SelectType can be
|
||||
//! used). Called by RootResult (which waits for ONE ENTITY MAX)
|
||||
Standard_EXPORT virtual void KeepInputEntity (Interface_EntityIterator& iter) const = 0;
|
||||
|
||||
//! Returns count of Items in the list in the Entity <ent>
|
||||
//! If <ent> has not required type, returned value must be Zero
|
||||
Standard_EXPORT virtual Standard_Integer NbItems (const Handle(Standard_Transient)& ent) const = 0;
|
||||
|
||||
//! Sets a Range for numbers, with a lower and a upper limits
|
||||
Standard_EXPORT void SetRange (const Handle(IFSelect_IntParam)& rankfrom, const Handle(IFSelect_IntParam)& rankto);
|
||||
|
||||
//! Sets a unique number (only one Entity will be sorted as True)
|
||||
Standard_EXPORT void SetOne (const Handle(IFSelect_IntParam)& rank);
|
||||
|
||||
//! Sets a Lower limit but no upper limit
|
||||
Standard_EXPORT void SetFrom (const Handle(IFSelect_IntParam)& rankfrom);
|
||||
|
||||
//! Sets an Upper limit but no lower limit (equivalent to lower 1)
|
||||
Standard_EXPORT void SetUntil (const Handle(IFSelect_IntParam)& rankto);
|
||||
|
||||
//! Returns True if a Lower limit is defined
|
||||
Standard_EXPORT Standard_Boolean HasLower() const;
|
||||
|
||||
//! Returns Lower limit (if there is; else, value is senseless)
|
||||
Standard_EXPORT Handle(IFSelect_IntParam) Lower() const;
|
||||
|
||||
//! Returns Integer Value of Lower Limit (0 if none)
|
||||
Standard_EXPORT Standard_Integer LowerValue() const;
|
||||
|
||||
//! Returns True if a Lower limit is defined
|
||||
Standard_EXPORT Standard_Boolean HasUpper() const;
|
||||
|
||||
//! Returns Upper limit (if there is; else, value is senseless)
|
||||
Standard_EXPORT Handle(IFSelect_IntParam) Upper() const;
|
||||
|
||||
//! Returns Integer Value of Upper Limit (0 if none)
|
||||
Standard_EXPORT Standard_Integer UpperValue() const;
|
||||
|
||||
//! Returns the list of selected entities (list of entities
|
||||
//! complying with rank criterium)
|
||||
//! Error if the input list has more than one Item
|
||||
Standard_EXPORT Interface_EntityIterator RootResult (const Interface_Graph& G) const Standard_OVERRIDE;
|
||||
|
||||
//! Puts into <res>, the sub-entities of the list, from n1 to
|
||||
//! n2 included. Remark that adequation with Entity's type and
|
||||
//! length of list has already been made at this stage
|
||||
//! Called by RootResult
|
||||
Standard_EXPORT virtual void FillResult (const Standard_Integer n1, const Standard_Integer n2, const Handle(Standard_Transient)& ent, Interface_EntityIterator& res) const = 0;
|
||||
|
||||
//! Returns a text defining the criterium : "Components of List "
|
||||
//! then Specific List Label, then, following cases :
|
||||
//! " From .. Until .." or "From .." or "Until .." or "Rank no .."
|
||||
//! Specific type is given by deferred method ListLabel
|
||||
Standard_EXPORT TCollection_AsciiString Label() const Standard_OVERRIDE;
|
||||
|
||||
//! Returns the specific label for the list, which is included as
|
||||
//! a part of Label
|
||||
Standard_EXPORT virtual TCollection_AsciiString ListLabel() const = 0;
|
||||
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_SelectAnyList,IFSelect_SelectDeduct)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
Handle(IFSelect_IntParam) thelower;
|
||||
Handle(IFSelect_IntParam) theupper;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _IFSelect_SelectAnyList_HeaderFile
|
@@ -1,25 +0,0 @@
|
||||
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||
//
|
||||
// This file is part of Open CASCADE Technology software library.
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify it under
|
||||
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||
// by the Free Software Foundation, with special exception defined in the file
|
||||
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||
// distribution for complete text of the license and disclaimer of any warranty.
|
||||
//
|
||||
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||
// commercial license or contractual agreement.
|
||||
|
||||
|
||||
#include <IFSelect_SelectAnyType.hxx>
|
||||
#include <Interface_InterfaceModel.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_SelectAnyType,IFSelect_SelectExtract)
|
||||
|
||||
Standard_Boolean IFSelect_SelectAnyType::Sort
|
||||
(const Standard_Integer , const Handle(Standard_Transient)& ent,
|
||||
const Handle(Interface_InterfaceModel)& ) const
|
||||
{ return ent->IsKind(TypeForMatch()); }
|
@@ -1,52 +0,0 @@
|
||||
// Created on: 1992-11-18
|
||||
// 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_SelectAnyType_HeaderFile
|
||||
#define _IFSelect_SelectAnyType_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <IFSelect_SelectExtract.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
class Standard_Transient;
|
||||
class Interface_InterfaceModel;
|
||||
|
||||
class IFSelect_SelectAnyType;
|
||||
DEFINE_STANDARD_HANDLE(IFSelect_SelectAnyType, IFSelect_SelectExtract)
|
||||
|
||||
//! A SelectAnyType sorts the Entities of which the Type is Kind
|
||||
//! of a given Type : this Type for Match is specific of each
|
||||
//! class of SelectAnyType
|
||||
class IFSelect_SelectAnyType : public IFSelect_SelectExtract
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
//! Returns the Type which has to be matched for select
|
||||
Standard_EXPORT virtual Handle(Standard_Type) TypeForMatch() const = 0;
|
||||
|
||||
//! Returns True for an Entity (model->Value(num)) which is kind
|
||||
//! of the chosen type, given by the method TypeForMatch.
|
||||
//! Criterium is IsKind.
|
||||
Standard_EXPORT Standard_Boolean Sort (const Standard_Integer rank, const Handle(Standard_Transient)& ent, const Handle(Interface_InterfaceModel)& model) const Standard_OVERRIDE;
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(IFSelect_SelectAnyType,IFSelect_SelectExtract)
|
||||
|
||||
};
|
||||
|
||||
#endif // _IFSelect_SelectAnyType_HeaderFile
|
@@ -1,23 +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_SelectBase.hxx>
|
||||
#include <IFSelect_SelectionIterator.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(IFSelect_SelectBase,IFSelect_Selection)
|
||||
|
||||
void IFSelect_SelectBase::FillIterator
|
||||
(IFSelect_SelectionIterator& ) const
|
||||
{ } // rien a faire, une SelectBase ne depend d aucune autre Selection
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user