Handle(StepData_Protocol) stepro = Handle(StepData_Protocol)::DownCast
( model->Protocol());
if (!stepro.IsNull()) sch = new TCollection_HAsciiString
- (stepro->SchemaName());
+ (stepro->SchemaName(model->GetParam("write.step.schema")->IntegerValue()));
if (!sch.IsNull()) schid->SetValue (1,sch);
}
header.AddItem(fs);
else return 0;
}
-Standard_CString HeaderSection_Protocol::SchemaName() const
+Standard_CString HeaderSection_Protocol::SchemaName(Standard_Integer /*theShematype*/)
{ return schemaName; }
//! Returns a Case Number for each of the HeaderSection Entities
Standard_EXPORT virtual Standard_Integer TypeNumber (const Handle(Standard_Type)& atype) const Standard_OVERRIDE;
- Standard_EXPORT virtual Standard_CString SchemaName() const Standard_OVERRIDE;
+ Standard_EXPORT virtual Standard_CString SchemaName(Standard_Integer theShematype) Standard_OVERRIDE;
return IFSelect_RetVoid;
}
-static IFSelect_ReturnStatus fun28
- (const Handle(IFSelect_SessionPilot)& pilot)
-{
- Standard_Integer argc = pilot->NbWords();
- const Standard_CString arg1 = pilot->Arg(1);
- const Standard_CString arg2 = pilot->Arg(2);
- const Standard_CString arg3 = pilot->Arg(3);
-// **** DefParam ****
- Handle(Message_Messenger) sout = Message::DefaultMessenger();
- if (argc < 2) {
- Handle(TColStd_HSequenceOfHAsciiString) li = Interface_Static::Items();
- Standard_Integer i,nb = li->Length();
- sout<<" List of parameters : "<<nb<<" items :"<<endl;
- for (i = 1; i <= nb; i ++) sout<<" "<<li->Value(i)->ToCString();
- sout<<endl<<" defparam name_param to known more about one"<<endl;
- sout<<" defparam nom_param e options to edit a definition"<<endl;
-
- } else if (argc == 2) {
- sout<<" Definition of Parameter : "<<arg1<<endl;
- Handle(Interface_Static) unst = Interface_Static::Static (arg1);
- if (unst.IsNull()) sout<<" undefined"<<endl;
- else unst->Print(sout);
- return IFSelect_RetVoid;
-
- } else if (arg2[0] == 'i') {
-// initialisation : arg1=nompar a2='i' a3=family a4=type [a5=val]
- if (argc < 5) { sout<<" name init family type [valinit]"<<endl; return IFSelect_RetVoid; }
- char typ = (pilot->Arg(4))[0];
- Standard_Boolean ok= (argc==5 ? Interface_Static::Init(arg3,arg1,typ) :
- Interface_Static::Init(arg3,arg1,typ,pilot->Arg(5)));
- return (ok ? IFSelect_RetDone : IFSelect_RetFail);
-
- } else if (arg2[0] == 'e') {
-// edition : arg1=nompar arg2='e' arg3=option arg4...=parametres option
- char comm[100];
- if (argc < 4) {
- sout<<" give name and options ! Options (according type), 1 a time\n"
- <<" imin ival / imax ival / rmin rval / rmax rval /\n"
- <<" enum stnum / enum stnum match / eval e1 e2 e3 ... (maxi 10)\n"
- <<endl;
- return IFSelect_RetVoid;
- }
- if (argc > 4) sout<<"Only the command and ONE more arg are considered"<<endl;
- sprintf(comm,"%s %s",pilot->Arg(3),pilot->Arg(4));
- sout<<"Editing parameter : "<<arg1<<" , by command : "<<comm<<endl;
-
- Handle(Interface_Static) unst = Interface_Static::Static (arg1);
- if (unst.IsNull()) { sout<<arg1<<" undefined"<<endl; return IFSelect_RetError; }
- if (Interface_Static::Init(unst->Family(),arg1,'&',comm))
- { sout<<"Editing done"<<endl; return IFSelect_RetDone; }
- else { sout<<"Command not processed : "<<comm<<endl; return IFSelect_RetFail; }
- }
- sout<<"Unknown Option : "<<arg2<<endl;
- return IFSelect_RetVoid;
-}
-
static IFSelect_ReturnStatus fun29
(const Handle(IFSelect_SessionPilot)& pilot)
{
IFSelect_Act::AddFunc("xsave","filename:string : sauve items-session",fun25);
IFSelect_Act::AddFunc("xrestore","filename:string : restaure items-session",fun26);
IFSelect_Act::AddFunc("param","nompar:string : displays parameter value; + nompar val : changes it",fun27);
- IFSelect_Act::AddFunc("defparam","nompar:string : display def. param; also : nompar edit, nompar init",fun28);
IFSelect_Act::AddFunc("sentfiles","Lists files sent from last Load",fun29);
IFSelect_Act::AddFunc("fileprefix","prefix:string : definit File Prefix",fun30);
#include <Interface_ReportEntity.hxx>
#include <Interface_ShareFlags.hxx>
#include <Interface_ShareTool.hxx>
-#include <Interface_Static.hxx>
#include <Message.hxx>
#include <Message_Messenger.hxx>
#include <OSD_Path.hxx>
// #################################################################
// .... Parametres (Int et Text) ....
-//=======================================================================
-//function :
-//purpose :
-//=======================================================================
-
-Handle(Standard_Transient) IFSelect_WorkSession::NewParamFromStatic
- (const Standard_CString statname, const Standard_CString name)
-{
- Handle(Standard_Transient) param;
- Handle(Interface_Static) stat = Interface_Static::Static(statname);
- if (stat.IsNull()) return param;
- if (stat->Type() == Interface_ParamInteger) {
- Handle(IFSelect_IntParam) intpar = new IFSelect_IntParam;
- intpar->SetStaticName (statname);
- param = intpar;
- } else {
- param = stat->HStringValue();
- }
- if (param.IsNull()) return param;
- if ( AddNamedItem (name, param) == 0 ) param.Nullify();
- return param;
-}
-
-
//=======================================================================
//function :
//purpose :
//! - other values are ignored
Standard_EXPORT Standard_Integer NextIdentForLabel (const Standard_CString label, const Standard_Integer id, const Standard_Integer mode = 0) const;
- //! Creates a parameter as being bound to a Static
- //! If the Static is Integer, this creates an IntParam bound to
- //! it by its name. Else this creates a String which is the value
- //! of the Static.
- //! Returns a null handle if <statname> is unknown as a Static
- Standard_EXPORT Handle(Standard_Transient) NewParamFromStatic (const Standard_CString statname, const Standard_CString name = "");
-
//! Returns an IntParam, given its Ident in the Session
//! Null result if <id> is not suitable for an IntParam
//! (undefined, or defined for another kind of variable)
}
return list;
}
+
+//=======================================================================
+//function : GetParam
+//purpose :
+//=======================================================================
+Handle(Interface_Static) Interface_InterfaceModel::GetParam
+(const Standard_CString theParamName)
+{
+ Handle(Standard_Transient) result;
+ myParamMap.Find(theParamName, result);
+ return Handle(Interface_Static)::DownCast(result);
+}
+
+//=======================================================================
+//function : AllParameters
+//purpose :
+//=======================================================================
+const NCollection_DataMap<TCollection_AsciiString, Handle(Standard_Transient)>& Interface_InterfaceModel::AllParameters()
+{
+ return myParamMap;
+}
#include <Standard_Type.hxx>
#include <Standard_CString.hxx>
#include <Interface_DataState.hxx>
+#include <Interface_Static.hxx>
#include <TColStd_HSequenceOfHAsciiString.hxx>
class Interface_Check;
class TCollection_HAsciiString;
//! Returns the complete list of names attached to template models
Standard_EXPORT static Handle(TColStd_HSequenceOfHAsciiString) ListTemplates();
+ //! Returns parameter for translation by its name
+ Standard_EXPORT Handle(Interface_Static) GetParam(const Standard_CString theParamName);
+ //! Returns all available parameters for translation
+ Standard_EXPORT const NCollection_DataMap<TCollection_AsciiString, Handle(Standard_Transient)>& AllParameters();
DEFINE_STANDARD_RTTIEXT(Interface_InterfaceModel,Standard_Transient)
protected:
-
//! Defines empty InterfaceModel, ready to be filled
Standard_EXPORT Interface_InterfaceModel();
-
+ NCollection_DataMap<TCollection_AsciiString, Handle(Standard_Transient)> myParamMap;
private:
return theupdate;
}
-
-
// #######################################################################
// ######### DICTIONNAIRE DES STATICS (static sur Static) ##########
return Standard_True;
}
-
Standard_Boolean Interface_Static::Init
(const Standard_CString family, const Standard_CString name,
const Standard_Character type, const Standard_CString init)
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;
+ return Interface_Static::InitValues(unstat, init);
}
default : return Standard_False;
}
return Standard_True;
}
+Standard_Boolean Interface_Static::InitValues(Handle(Interface_Static)& theStatic, const Standard_CString init)
+{
+ // 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')
+ theStatic->SetIntegerLimit(Standard_False, atoi(&init[iblc]));
+ else if (init[0] == 'i' && init[2] == 'a')
+ theStatic->SetIntegerLimit(Standard_True, atoi(&init[iblc]));
+ else if (init[0] == 'r' && init[2] == 'i')
+ theStatic->SetRealLimit(Standard_False, Atof(&init[iblc]));
+ else if (init[0] == 'r' && init[2] == 'a')
+ theStatic->SetRealLimit(Standard_True, Atof(&init[iblc]));
+ else if (init[0] == 'u')
+ theStatic->SetUnitDef(&init[iblc]);
+ else if (init[0] == 'e' && init[1] == 'm')
+ theStatic->StartEnum(atoi(&init[iblc]), Standard_True);
+ else if (init[0] == 'e' && init[1] == 'n')
+ theStatic->StartEnum(atoi(&init[iblc]), Standard_False);
+ else if (init[0] == 'e' && init[1] == 'v')
+ theStatic->AddEnum(&init[iblc]);
+ else return Standard_False;
+ return Standard_True;
+}
Handle(Interface_Static) Interface_Static::Static
(const Standard_CString name)
//! 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 = "");
+ //! Edit current <theStatic> with some parameter <init>
+ Standard_EXPORT static Standard_Boolean InitValues(Handle(Interface_Static)& theStatic, 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 False if <name> is not present
Standard_EXPORT static Standard_Boolean IsUpdated (const Standard_CString name);
- //! Returns a list of names of statics :
+ //! 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)
//!
//! 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 = "");
+ 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
#include <OSD.hxx>
#include <STEPCAFControl_Writer.hxx>
#include <STEPControl_StepModelType.hxx>
-#include <Interface_Static.hxx>
#include <IFSelect_ReturnStatus.hxx>
#include <Standard_Failure.hxx>
#include <TColgp_HArray1OfPnt2d.hxx>
shapeTool = XCAFDoc_DocumentTool::ShapeTool(document->Main());
shapeTool->AddShape(AddTestStructure(nCount), Standard_True);
STEPControl_StepModelType mode = STEPControl_AsIs;
- if (!Interface_Static::SetIVal("write.step.assembly",1)) { //assembly mode
+ if (!writer.GetParam("write.step.assembly")->SetIntegerValue(1)) { //assembly mode
di << "Failed to set assembly mode for step data\n\n";
return 0;
}
/// #include <EuclidStandard.hxx>
static Handle(RWHeaderSection_ReadWriteModule) rwm;
static Handle(RWHeaderSection_GeneralModule) rwg;
+static int THE_RWHeaderSection_init = 0;
void RWHeaderSection::Init()
{
+ if (THE_RWHeaderSection_init)
+ {
+ return;
+ }
+ THE_RWHeaderSection_init = 1;
/// EuclidStandard::Init();
Handle(HeaderSection_Protocol) proto = HeaderSection::Protocol();
StepData::AddHeaderProtocol(proto);
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
-
-#include <Interface_Static.hxx>
#include <Standard_Type.hxx>
#include <STEPCAFControl_ActorWrite.hxx>
#include <STEPCAFControl_Controller.hxx>
Handle(STEPCAFControl_ActorWrite) ActWrite = new STEPCAFControl_ActorWrite;
myAdaptorWrite = ActWrite;
}
-
-//=======================================================================
-//function : Init
-//purpose :
-//=======================================================================
-
-Standard_Boolean STEPCAFControl_Controller::Init ()
-{
- static Standard_Boolean inic = Standard_False;
- if (inic) return Standard_True;
- inic = Standard_True;
- // self-registering
- Handle(STEPCAFControl_Controller) STEPCTL = new STEPCAFControl_Controller;
- // do XSAlgo::Init, cause it does not called before.
- XSAlgo::Init();
- // do something to avoid warnings...
- STEPCTL->AutoRecord();
-
- //-----------------------------------------------------------
- // Few variables for advanced control of translation process
- //-----------------------------------------------------------
-
- // Indicates whether to write sub-shape names to 'Name' attributes of
- // STEP Representation Items
- Interface_Static::Init ("stepcaf", "write.stepcaf.subshapes.name", 'e', "");
- Interface_Static::Init ("stepcaf", "write.stepcaf.subshapes.name", '&', "enum 0");
- Interface_Static::Init ("stepcaf", "write.stepcaf.subshapes.name", '&', "eval Off"); // 0
- Interface_Static::Init ("stepcaf", "write.stepcaf.subshapes.name", '&', "eval On"); // 1
- Interface_Static::SetIVal("write.stepcaf.subshapes.name", 0); // Disabled by default
-
- // Indicates whether to read sub-shape names from 'Name' attributes of
- // STEP Representation Items
- Interface_Static::Init ("stepcaf", "read.stepcaf.subshapes.name", 'e', "");
- Interface_Static::Init ("stepcaf", "read.stepcaf.subshapes.name", '&', "enum 0");
- Interface_Static::Init ("stepcaf", "read.stepcaf.subshapes.name", '&', "eval Off"); // 0
- Interface_Static::Init ("stepcaf", "read.stepcaf.subshapes.name", '&', "eval On"); // 1
- Interface_Static::SetIVal("read.stepcaf.subshapes.name", 0); // Disabled by default
-
- return Standard_True;
-}
//! Initializes the use of STEP Norm (the first time)
Standard_EXPORT STEPCAFControl_Controller();
-
- //! Standard Initialisation. It creates a Controller for STEP-XCAF
- //! and records it to various names, available to select it later
- //! Returns True when done, False if could not be done
- Standard_EXPORT static Standard_Boolean Init();
-
-
DEFINE_STANDARD_RTTIEXT(STEPCAFControl_Controller,STEPControl_Controller)
#include <Interface_InterfaceModel.hxx>
#include <StepData_StepModel.hxx>
#include <HeaderSection_FileSchema.hxx>
-#include <Interface_Static.hxx>
#include <NCollection_DataMap.hxx>
#include <OSD_Path.hxx>
#include <Quantity_Color.hxx>
myNameMode ( Standard_True ),
myLayerMode( Standard_True ),
myPropsMode( Standard_True ),
- mySHUOMode ( Standard_False ),
+ mySHUOMode ( Standard_False ),
myGDTMode ( Standard_True ),
myMatMode(Standard_True),
myViewMode(Standard_True)
{
- STEPCAFControl_Controller::Init();
+ Init(new XSControl_WorkSession, new STEPCAFControl_Controller);
}
//purpose :
//=======================================================================
-STEPCAFControl_Reader::STEPCAFControl_Reader (const Handle(XSControl_WorkSession)& WS,
- const Standard_Boolean scratch) :
+STEPCAFControl_Reader::STEPCAFControl_Reader (const Handle(XSControl_WorkSession)& theWS,
+ const Standard_Boolean theScratch) :
myColorMode( Standard_True ),
myNameMode ( Standard_True ),
myLayerMode( Standard_True ),
myPropsMode( Standard_True ),
- mySHUOMode ( Standard_False ),
+ mySHUOMode ( Standard_False ),
myGDTMode ( Standard_True ),
myMatMode(Standard_True),
myViewMode(Standard_True)
{
- STEPCAFControl_Controller::Init();
- Init ( WS, scratch );
+ Init (theWS, new STEPCAFControl_Controller, theScratch);
+}
+
+//=======================================================================
+//function : STEPCAFControl_Reader
+//purpose :
+//=======================================================================
+STEPCAFControl_Reader::STEPCAFControl_Reader(const Handle(XSControl_WorkSession)& theWS,
+ const Handle(XSControl_Controller)& theController,
+ const Standard_Boolean theScratch) :
+ myColorMode(Standard_True),
+ myNameMode(Standard_True),
+ myLayerMode(Standard_True),
+ myPropsMode(Standard_True),
+ mySHUOMode(Standard_False),
+ myGDTMode(Standard_True),
+ myMatMode(Standard_True),
+ myViewMode(Standard_True)
+{
+ Init(theWS, theController, theScratch);
}
//purpose :
//=======================================================================
-void STEPCAFControl_Reader::Init (const Handle(XSControl_WorkSession)& WS,
- const Standard_Boolean scratch)
+void STEPCAFControl_Reader::Init (const Handle(XSControl_WorkSession)& theWS,
+ const Handle(XSControl_Controller)& theController,
+ const Standard_Boolean theScratch)
{
-// necessary only in Writer, to set good actor: WS->SelectNorm ( "STEP" );
- myReader.SetWS (WS,scratch);
+ myCAFController = Handle(STEPCAFControl_Controller)::DownCast(theController);
+ STEPControl_Reader aReader(theWS, theController, theScratch);
+ myReader = aReader;
+
myFiles.Clear();
}
// create new WorkSession and Reader
Handle(XSControl_WorkSession) newWS = new XSControl_WorkSession;
- newWS->SelectNorm ( "STEP" );
- STEPControl_Reader sr ( newWS, Standard_False );
+ STEPControl_Reader sr ( newWS, myCAFController, Standard_False );
// start to fill the resulting ExternFile structure
Handle(STEPCAFControl_ExternFile) EF = new STEPCAFControl_ExternFile;
TColStd_MapOfTransient aRepItems;
// Read translation control variables
- Standard_Boolean doReadSNames = (Interface_Static::IVal("read.stepcaf.subshapes.name") > 0);
+ Standard_Boolean doReadSNames = (myReader.Model()->GetParam("read.stepcaf.subshapes.name")->IntegerValue() > 0);
if ( !doReadSNames )
return;
#include <Standard_Integer.hxx>
#include <TDF_LabelSequence.hxx>
#include <TopTools_MapOfShape.hxx>
+#include <STEPCAFControl_Controller.hxx>
#include <STEPCAFControl_DataMapOfShapePD.hxx>
#include <STEPCAFControl_DataMapOfPDExternFile.hxx>
#include <XCAFDoc_DataMapOfShapeLabel.hxx>
//! Creates a reader tool and attaches it to an already existing Session
//! Clears the session if it was not yet set for STEP
- Standard_EXPORT STEPCAFControl_Reader(const Handle(XSControl_WorkSession)& WS, const Standard_Boolean scratch = Standard_True);
-
- //! Clears the internal data structures and attaches to a new session
+ Standard_EXPORT STEPCAFControl_Reader(const Handle(XSControl_WorkSession)& theWS,
+ const Standard_Boolean theScratch = Standard_True);
+
+ //! Creates a reader tool and attaches it to an already existing Session and controller
//! Clears the session if it was not yet set for STEP
- Standard_EXPORT void Init (const Handle(XSControl_WorkSession)& WS, const Standard_Boolean scratch = Standard_True);
-
+ Standard_EXPORT STEPCAFControl_Reader(const Handle(XSControl_WorkSession)& theWS,
+ const Handle(XSControl_Controller)& theController,
+ const Standard_Boolean theScratch = Standard_True);
+
//! Loads a file and returns the read status
//! Provided for use like single-file reader
Standard_EXPORT IFSelect_ReturnStatus ReadFile (const Standard_CString filename);
protected:
-
+
+ //! Inits a reader with following session and controller
+ Standard_EXPORT void Init(const Handle(XSControl_WorkSession)& theWS,
+ const Handle(XSControl_Controller)& theController,
+ const Standard_Boolean theScratch = Standard_True);
+
//! Translates STEP file already loaded into the reader
//! into the document
//! If num==0, translates all roots, else only root number num
Standard_Boolean myMatMode;
Standard_Boolean myViewMode;
NCollection_DataMap<Handle(Standard_Transient), TDF_Label> myGDTMap;
+ Handle(STEPCAFControl_Controller) myCAFController;
};
myDGTMode ( Standard_True ),
myMatMode ( Standard_True )
{
- STEPCAFControl_Controller::Init();
- Handle(XSControl_WorkSession) WS = new XSControl_WorkSession;
- Init ( WS );
+ Init(new XSControl_WorkSession, new STEPCAFControl_Controller);
}
//purpose :
//=======================================================================
-STEPCAFControl_Writer::STEPCAFControl_Writer (const Handle(XSControl_WorkSession)& WS,
- const Standard_Boolean scratch)
+STEPCAFControl_Writer::STEPCAFControl_Writer (const Handle(XSControl_WorkSession)& theWS,
+ const Standard_Boolean theScratch) :
+ myColorMode(Standard_True),
+ myNameMode(Standard_True),
+ myLayerMode(Standard_True),
+ myPropsMode(Standard_True),
+ mySHUOMode(Standard_True),
+ myDGTMode(Standard_True),
+ myMatMode(Standard_True)
{
- STEPCAFControl_Controller::Init();
- Init ( WS, scratch );
- myColorMode = Standard_True;
- myNameMode = Standard_True;
- myLayerMode = Standard_True;
- myPropsMode = Standard_True;
- mySHUOMode = Standard_True;
+ Init(theWS, new STEPCAFControl_Controller, theScratch);
}
+//=======================================================================
+//function : STEPCAFControl_Reader
+//purpose :
+//=======================================================================
+STEPCAFControl_Writer::STEPCAFControl_Writer(const Handle(XSControl_WorkSession)& theWS,
+ const Handle(XSControl_Controller)& theController,
+ const Standard_Boolean theScratch) :
+ myColorMode(Standard_True),
+ myNameMode(Standard_True),
+ myLayerMode(Standard_True),
+ myPropsMode(Standard_True),
+ mySHUOMode(Standard_True),
+ myDGTMode(Standard_True),
+ myMatMode(Standard_True)
+{
+ Init(theWS, theController, theScratch);
+}
//=======================================================================
//function : Init
-//purpose :
+//purpose :
//=======================================================================
-void STEPCAFControl_Writer::Init (const Handle(XSControl_WorkSession)& WS,
- const Standard_Boolean scratch)
+void STEPCAFControl_Writer::Init(const Handle(XSControl_WorkSession)& theWS,
+ const Handle(XSControl_Controller)& theController,
+ const Standard_Boolean theScratch)
{
- WS->SelectNorm ( "STEP" );
- myWriter.SetWS (WS,scratch);
+ myCAFController = Handle(STEPCAFControl_Controller)::DownCast(theController);
+ STEPControl_Writer aWriter(theWS, theController, theScratch);
+ myWriter = aWriter;
+
myFiles.Clear();
myLabEF.Clear();
myLabels.Clear();
if ( labels.Length() <=0 ) return Standard_False;
Handle(STEPCAFControl_ActorWrite) Actor =
- Handle(STEPCAFControl_ActorWrite)::DownCast ( writer.WS()->NormAdaptor()->ActorWrite() );
+ Handle(STEPCAFControl_ActorWrite)::DownCast (writer.WS()->NormAdaptor()->ActorWrite());
// translate free top-level shapes of the DECAF document
- Standard_Integer ap = Interface_Static::IVal ("write.step.schema");
+ Handle(StepData_StepModel) aModel = writer.Model();
+ Standard_Integer ap = aModel->GetParam("write.step.schema")->IntegerValue();
TDF_LabelSequence sublabels;
for ( Standard_Integer i=1; i <= labels.Length(); i++ ) {
TDF_Label L = labels.Value(i);
}
else {
// translate final solids
- TopoDS_Shape Sass = TransferExternFiles ( L, mode, sublabels, multi );
+ TopoDS_Shape Sass = TransferExternFiles(L, mode, sublabels, multi);
// translate main assembly structure
/*
if ( ap == 3 ) { // if AP203, switch to AP214
- Interface_Static::SetCVal ("write.step.schema", "AP214DIS");
- Handle(StepData_StepModel) model =
- Handle(StepData_StepModel)::DownCast ( writer.WS()->Model() );
- if ( model->HasHeaderEntity(STANDARD_TYPE(HeaderSection_FileSchema)) ) {
- Handle(HeaderSection_FileSchema) fs =
- Handle(HeaderSection_FileSchema)::DownCast ( model->HeaderEntity(STANDARD_TYPE(HeaderSection_FileSchema)) );
- Handle(TCollection_HAsciiString) str = fs->SchemaIdentifiersValue ( 1 );
- Handle(TCollection_HAsciiString) ap214 = new TCollection_HAsciiString ( "AUTOMOTIVE_DESIGN" );
- if ( str->Search ( ap214 ) <0 ) {
- str->Clear();
- str->AssignCat ( ap214 );
- }
- }
+ myCAFController->GetParam("write.step.schema")->SetCStringValue("AP214DIS");
+ Handle(StepData_StepModel) model =
+ Handle(StepData_StepModel)::DownCast ( writer.WS()->Model() );
+ if ( model->HasHeaderEntity(STANDARD_TYPE(HeaderSection_FileSchema)) ) {
+ Handle(HeaderSection_FileSchema) fs =
+ Handle(HeaderSection_FileSchema)::DownCast ( model->HeaderEntity(STANDARD_TYPE(HeaderSection_FileSchema)) );
+ Handle(TCollection_HAsciiString) str = fs->SchemaIdentifiersValue ( 1 );
+ Handle(TCollection_HAsciiString) ap214 = new TCollection_HAsciiString ( "AUTOMOTIVE_DESIGN" );
+ if ( str->Search ( ap214 ) <0 ) {
+ str->Clear();
+ str->AssignCat ( ap214 );
+ }
+ }
}
-*/
- Standard_Integer assemblymode = Interface_Static::IVal ("write.step.assembly");
- Interface_Static::SetCVal ("write.step.assembly", "On");
- writer.Transfer ( Sass, STEPControl_AsIs );
- Interface_Static::SetIVal ("write.step.assembly", assemblymode);
- Interface_Static::SetIVal ("write.step.schema", ap);
+*/
+ Handle(Interface_Static) aParameter = aModel->GetParam("write.step.assembly");
+ Standard_Integer assemblymode = aParameter->IntegerValue();
+ aParameter->SetCStringValue("On");
+ writer.Transfer(Sass, STEPControl_AsIs);
+ aParameter->SetIntegerValue(assemblymode);
+ aModel->GetParam("write.step.schema")->SetIntegerValue(ap);
}
}
// write validation props
// if ( multi && ap ==3 ) {
-// Interface_Static::SetCVal ("write.step.schema", "AP214DIS");
+// myCAFController->GetParam("write.step.schema")->SetCStringValue("AP214DIS");
// }
if ( GetPropsMode() )
WriteValProps ( writer.WS(), sublabels, multi );
- Interface_Static::SetIVal ("write.step.schema", ap);
+ aModel->GetParam("write.step.schema")->SetIntegerValue(ap);
// refresh graph
writer.WS()->ComputeGraph ( Standard_True );
* Write names for the sub-shapes
* ================================ */
- if (Interface_Static::IVal("write.stepcaf.subshapes.name") != 0)
+ if (aModel->GetParam("write.stepcaf.subshapes.name")->IntegerValue() != 0)
{
const Handle(XSControl_TransferWriter) &TW = this->ChangeWriter().WS()->TransferWriter();
const Handle(Transfer_FinderProcess) &FP = TW->FinderProcess();
EF->SetWS ( newWS );
EF->SetName ( name );
EF->SetLabel ( L );
- Standard_Integer assemblymode = Interface_Static::IVal ("write.step.assembly");
- Interface_Static::SetCVal ("write.step.assembly", "Off");
+ Handle(Interface_Static) aParameter = sw.Model()->GetParam("write.step.assembly");
+ Standard_Integer assemblymode = aParameter->IntegerValue();
+ aParameter->SetCStringValue("Off");
const Standard_CString multi = 0;
EF->SetTransferStatus ( Transfer ( sw, Lseq, mode, multi, Standard_True ) );
- Interface_Static::SetIVal ("write.step.assembly", assemblymode);
+ aParameter->SetIntegerValue(assemblymode);
myLabEF.Bind ( L, EF );
myFiles.Bind ( name->ToCString(), EF );
const Handle(XSControl_TransferWriter) &TW = WS->TransferWriter();
const Handle(Transfer_FinderProcess) &FP = TW->FinderProcess();
STEPConstruct_ExternRefs EFTool ( WS );
- Standard_Integer schema = Interface_Static::IVal("write.step.schema");
+ Standard_Integer schema = WS->Model()->GetParam("write.step.schema")->IntegerValue();
for ( Standard_Integer k=1; k <= labels.Length(); k++ ) {
TDF_Label lab = labels(k);
if ( XCAFDoc_ShapeTool::IsAssembly ( lab ) ) continue; // skip assemblies
// iterate on subshapes and create STEP styles
Handle(StepVisual_StyledItem) override;
TopTools_MapOfShape Map;
-
+
MakeSTEPStyles(Styles,S,settings,override,Map,myMapCompMDGPR,DPDCs,ColRGBs,CTool,0,isComponent);
-
+
// create MDGPR and record it in model
Handle(StepVisual_MechanicalDesignGeometricPresentationRepresentation) aMDGPR;
cerr << "Error: Current Top-Level shape have MDGPR already " << endl;
#endif
}
- Styles.CreateMDGPR ( Context, aMDGPR );
+ Styles.CreateMDGPR(Context, aMDGPR, WS->Model());
if (!aMDGPR.IsNull())
myMapCompMDGPR.Bind( aTopSh, aMDGPR );
}
cout << "Warning: " << __FILE__ << ": Create new MDGPR for SHUO instance" << endl;
#endif
Handle(StepVisual_MechanicalDesignGeometricPresentationRepresentation) aMDGPR;
- Styles.CreateMDGPR ( Context, aMDGPR );
+ Styles.CreateMDGPR ( Context, aMDGPR, WS->Model());
if (!aMDGPR.IsNull())
myMapCompMDGPR.Bind( aTopSh, aMDGPR );
}
{
return myMatMode;
}
+
+//=======================================================================
+//function : GetParam
+//purpose :
+//=======================================================================
+Handle(Interface_Static) STEPCAFControl_Writer::GetParam
+(const Standard_CString theParamName)
+{
+ return myWriter.Model()->GetParam(theParamName);
+}
#include <Standard_Handle.hxx>
#include <STEPControl_Writer.hxx>
+#include <STEPCAFControl_Controller.hxx>
#include <STEPCAFControl_DataMapOfLabelShape.hxx>
#include <STEPCAFControl_DataMapOfLabelExternFile.hxx>
#include <Standard_Boolean.hxx>
//! PropsMode to Standard_True.
Standard_EXPORT STEPCAFControl_Writer();
- //! Creates a reader tool and attaches it to an already existing Session
+ //! Creates a writer tool and attaches it to an already existing Session
//! Clears the session if it was not yet set for STEP
//! Clears the internal data structures
- Standard_EXPORT STEPCAFControl_Writer(const Handle(XSControl_WorkSession)& WS, const Standard_Boolean scratch = Standard_True);
-
- //! Clears the internal data structures and attaches to a new session
+ Standard_EXPORT STEPCAFControl_Writer(const Handle(XSControl_WorkSession)& WS,
+ const Standard_Boolean scratch = Standard_True);
+
+ //! Creates a writer tool and attaches it to an already existing Session and controller
//! Clears the session if it was not yet set for STEP
- Standard_EXPORT void Init (const Handle(XSControl_WorkSession)& WS, const Standard_Boolean scratch = Standard_True);
-
+ Standard_EXPORT STEPCAFControl_Writer(const Handle(XSControl_WorkSession)& theWS,
+ const Handle(XSControl_Controller)& theController,
+ const Standard_Boolean theScratch = Standard_True);
+
//! Writes all the produced models into file
//! In case of multimodel with extern references,
//! filename will be a name of root file, all other files
Standard_EXPORT void SetMaterialMode (const Standard_Boolean matmode);
Standard_EXPORT Standard_Boolean GetMaterialMode() const;
+
+ //! Returns parameter for translation by its name
+ Standard_EXPORT Handle(Interface_Static) GetParam(const Standard_CString theParamName);
protected:
+
+ //! Inits a reader with following session and controller
+ Standard_EXPORT void Init(const Handle(XSControl_WorkSession)& theWS,
+ const Handle(XSControl_Controller)& theController,
+ const Standard_Boolean theScratch = Standard_True);
+
//! Mehod to writing sequence of root assemblies or part of the file specified by use by one label
- Standard_EXPORT Standard_Boolean Transfer (const TDF_LabelSequence& L, const STEPControl_StepModelType mode = STEPControl_AsIs, const Standard_CString multi = 0);
+ Standard_EXPORT Standard_Boolean Transfer (const TDF_LabelSequence& L,
+ const STEPControl_StepModelType mode = STEPControl_AsIs,
+ const Standard_CString multi = 0);
//! Transfers labels to a STEP model
//! Returns True if translation is OK
//! isExternFile setting from TransferExternFiles method
- Standard_EXPORT Standard_Boolean Transfer (STEPControl_Writer& wr, const TDF_LabelSequence& labels, const STEPControl_StepModelType mode = STEPControl_AsIs, const Standard_CString multi = 0, const Standard_Boolean isExternFile = Standard_False) ;
+ Standard_EXPORT Standard_Boolean Transfer (STEPControl_Writer& wr,
+ const TDF_LabelSequence& labels,
+ const STEPControl_StepModelType mode = STEPControl_AsIs,
+ const Standard_CString multi = 0,
+ const Standard_Boolean isExternFile = Standard_False) ;
//! Parses assembly structure of label L, writes all the simple
//! shapes each to its own file named by name of its label plus
//! Returns shape representing that assembly structure
//! in the form of nested empty compounds (and a sequence of
//! labels which are newly written nodes of this assembly)
- Standard_EXPORT TopoDS_Shape TransferExternFiles (const TDF_Label& L, const STEPControl_StepModelType mode, TDF_LabelSequence& Lseq, const Standard_CString prefix = "");
+ Standard_EXPORT TopoDS_Shape TransferExternFiles (const TDF_Label& L,
+ const STEPControl_StepModelType mode,
+ TDF_LabelSequence& Lseq, const Standard_CString prefix = "");
//! Write external references to STEP
Standard_EXPORT Standard_Boolean WriteExternRefs (const Handle(XSControl_WorkSession)& WS, const TDF_LabelSequence& labels) const;
Handle(StepVisual_DraughtingModel) myGDTPresentationDM;
Handle(StepVisual_HArray1OfPresentationStyleAssignment) myGDTPrsCurveStyle;
Handle(StepRepr_ProductDefinitionShape) myGDTCommonPDS;
+ Handle(STEPCAFControl_Controller) myCAFController;
};
#include <GeomToStep_MakeAxis2Placement3d.hxx>
#include <Interface_Macros.hxx>
-#include <Interface_Static.hxx>
#include <StepAP203_CcDesignApproval.hxx>
#include <StepAP203_CcDesignDateAndTimeAssignment.hxx>
#include <StepAP203_CcDesignPersonAndOrganizationAssignment.hxx>
//purpose :
//=======================================================================
-void STEPConstruct_ContextTool::SetModel (const Handle(StepData_StepModel)& aStepModel)
+void STEPConstruct_ContextTool::SetModel (const Handle(Interface_InterfaceModel)& aStepModel)
{
+ myModel = aStepModel;
theAPD.Nullify(); //thePRPC.Nullify();
- Standard_Integer i, nb = aStepModel->NbEntities();
+ Standard_Integer i, nb = myModel->NbEntities();
for(i = 1; i<=nb && theAPD.IsNull(); i ++) {
- Handle(Standard_Transient) ent = aStepModel->Value(i);
+ Handle(Standard_Transient) ent = myModel->Value(i);
if (ent->IsKind(STANDARD_TYPE(StepBasic_ApplicationProtocolDefinition))) {
if (theAPD.IsNull()) theAPD = GetCasted(StepBasic_ApplicationProtocolDefinition, ent);
}
Standard_Boolean noapd = theAPD.IsNull();
if (noapd || enforce) theAPD = new StepBasic_ApplicationProtocolDefinition;
- switch (Interface_Static::IVal("write.step.schema")) { //j4
+ switch (myModel->GetParam("write.step.schema")->IntegerValue()) { //j4
default:
case 1:
theAPD->SetApplicationProtocolYear (1997);
if (theAPD->Application().IsNull())
theAPD->SetApplication (new StepBasic_ApplicationContext);
Handle(TCollection_HAsciiString) appl;
- switch (Interface_Static::IVal("write.step.schema")) { //j4
+ switch (myModel->GetParam("write.step.schema")->IntegerValue()) { //j4
default:
case 1:
case 2: appl = new TCollection_HAsciiString ( "core data for automotive mechanical design processes" );
Standard_Boolean noprpc = thePRPC.IsNull();
if (noprpc || enforce) {
//:i3 abv 1 Sep 98: ProSTEP TR9: generate PRODUCT_TYPE (derived) instead of PRPC
- switch (Interface_Static::IVal("write.step.schema")) { //j4
+ switch (myModel->GetParam("write.step.schema")->IntegerValue()) { //j4
default:
case 1:
thePRPC = new StepBasic_ProductType;
Handle(TCollection_HAsciiString) STEPConstruct_ContextTool::GetProductName () const
{
Handle(TCollection_HAsciiString) PdtName;
- if (Interface_Static::IsSet("write.step.product.name"))
- PdtName = new TCollection_HAsciiString(Interface_Static::CVal("write.step.product.name"));
+ Handle(Interface_Static) aParam = myModel->GetParam("write.step.product.name");
+ if (!aParam.IsNull() && aParam->IsSetValue())
+ PdtName = new TCollection_HAsciiString(aParam->CStringValue());
else PdtName = new TCollection_HAsciiString("Product");
for ( Standard_Integer i=1; i <= myLevel.Length(); i++ ) {
if ( ! SDRTool.PRPC().IsNull() ) seq->Append ( SDRTool.PRPC() );
// for AP203, add required product management data
- if ( Interface_Static::IVal("write.step.schema") == 3 ) {
+ if (myModel->GetParam("write.step.schema")->IntegerValue() == 3 ) {
theAP203.Init ( SDRTool );
seq->Append (theAP203.GetProductCategoryRelationship());
seq->Append (theAP203.GetCreator());
seq->Append ( assembly.ItemValue() );
// for AP203, write required product management data
- if ( Interface_Static::IVal("write.step.schema") == 3 ) {
+ if ( myModel->GetParam("write.step.schema")->IntegerValue() == 3 ) {
theAP203.Init ( assembly.GetNAUO() );
seq->Append (theAP203.GetSecurity());
seq->Append (theAP203.GetClassificationOfficer());
#include <Standard_DefineAlloc.hxx>
#include <Standard_Handle.hxx>
+#include <Interface_InterfaceModel.hxx>
#include <TColStd_SequenceOfInteger.hxx>
#include <STEPConstruct_AP203Context.hxx>
#include <Standard_Boolean.hxx>
//! Initialize ApplicationProtocolDefinition by the first
//! entity of that type found in the model
- Standard_EXPORT void SetModel (const Handle(StepData_StepModel)& aStepModel);
+ Standard_EXPORT void SetModel (const Handle(Interface_InterfaceModel)& aStepModel);
Standard_EXPORT Handle(StepBasic_ApplicationProtocolDefinition) GetAPD();
Handle(StepBasic_ApplicationProtocolDefinition) theAPD;
STEPConstruct_AP203Context theAP203;
Handle(StepGeom_Axis2Placement3d) myAxis;
+ Handle(Interface_InterfaceModel) myModel;
};
//:j4 gka 16.03.99 S4134
// abv 20.11.99 renamed from StepPDR_SDRtool
-#include <Interface_Static.hxx>
#include <StepBasic_ApplicationContext.hxx>
#include <StepBasic_DesignContext.hxx>
#include <StepBasic_HArray1OfProduct.hxx>
//purpose :
//=======================================================================
-void STEPConstruct_Part::MakeSDR(const Handle(StepShape_ShapeRepresentation)& SR,
- const Handle(TCollection_HAsciiString)& aName,
- const Handle(StepBasic_ApplicationContext)& AC)
+void STEPConstruct_Part::MakeSDR(const Handle(StepShape_ShapeRepresentation)& theShape,
+ const Handle(TCollection_HAsciiString)& theName,
+ const Handle(StepBasic_ApplicationContext)& theAppContext,
+ const Handle(Interface_InterfaceModel)& theModel)
{
// get current schema
- Standard_Integer schema = Interface_Static::IVal("write.step.schema");
+ Standard_Integer schema = theModel->GetParam("write.step.schema")->IntegerValue();
// create PC
Handle(StepBasic_ProductContext) PC;
Handle(TCollection_HAsciiString) PCname = new TCollection_HAsciiString("");
Handle(TCollection_HAsciiString) PCdisciplineType =
new TCollection_HAsciiString("mechanical");
- PC->Init(PCname, AC, PCdisciplineType);
+ PC->Init(PCname, theAppContext, PCdisciplineType);
// create product
Handle(StepBasic_Product) P = new StepBasic_Product;
Handle(StepBasic_HArray1OfProductContext) PCs = new StepBasic_HArray1OfProductContext(1,1);
PCs->SetValue(1,PC);
Handle(TCollection_HAsciiString) Pdescription = new TCollection_HAsciiString("");
- P->Init(aName, aName, Pdescription, PCs);
+ P->Init(theName, theName, Pdescription, PCs);
// create PDF
Handle(StepBasic_ProductDefinitionFormation) PDF;
break;
}
Handle(TCollection_HAsciiString) PDClifeCycleStage = new TCollection_HAsciiString("design");
- PDC->Init(PDCname, AC, PDClifeCycleStage);
+ PDC->Init(PDCname, theAppContext, PDClifeCycleStage);
// create PD
Handle(StepBasic_ProductDefinition) PD = new StepBasic_ProductDefinition;
mySDR = new StepShape_ShapeDefinitionRepresentation;
StepRepr_RepresentedDefinition RD;
RD.SetValue ( PDS );
- mySDR->Init(RD, SR);
+ mySDR->Init(RD, theShape);
// and an associated PRPC
Handle(TCollection_HAsciiString) PRPCName;
- switch (Interface_Static::IVal("write.step.schema")) {
+ switch (theModel->GetParam("write.step.schema")->IntegerValue()) {
default:
case 1:
myPRPC = new StepBasic_ProductType;
#include <Standard_DefineAlloc.hxx>
#include <Standard_Handle.hxx>
+#include <Interface_InterfaceModel.hxx>
#include <Standard_Boolean.hxx>
class StepShape_ShapeDefinitionRepresentation;
class StepBasic_ProductRelatedProductCategory;
Standard_EXPORT STEPConstruct_Part();
- Standard_EXPORT void MakeSDR (const Handle(StepShape_ShapeRepresentation)& aShape, const Handle(TCollection_HAsciiString)& aName, const Handle(StepBasic_ApplicationContext)& AC);
+ Standard_EXPORT void MakeSDR (const Handle(StepShape_ShapeRepresentation)& theShape,
+ const Handle(TCollection_HAsciiString)& theName,
+ const Handle(StepBasic_ApplicationContext)& theAppContext,
+ const Handle(Interface_InterfaceModel)& theModel );
Standard_EXPORT void ReadSDR (const Handle(StepShape_ShapeDefinitionRepresentation)& aShape);
#include <Interface_EntityIterator.hxx>
#include <Interface_Graph.hxx>
#include <Interface_InterfaceModel.hxx>
-#include <Interface_Static.hxx>
#include <Quantity_Color.hxx>
#include <StepBasic_MeasureValueMember.hxx>
#include <STEPConstruct.hxx>
//purpose :
//=======================================================================
-Standard_Boolean STEPConstruct_Styles::CreateMDGPR (const Handle(StepRepr_RepresentationContext) &Context,
- Handle(StepVisual_MechanicalDesignGeometricPresentationRepresentation)& Repr)
+Standard_Boolean STEPConstruct_Styles::CreateMDGPR (const Handle(StepRepr_RepresentationContext)& theContext,
+ Handle(StepVisual_MechanicalDesignGeometricPresentationRepresentation)& theMDGPR,
+ const Handle(Interface_InterfaceModel) theModel)
{
if ( myStyles.Extent() <1 ) return Standard_False;
for ( Standard_Integer i=1; i <= myStyles.Extent(); i++ )
elems->SetValue ( i, Handle(StepRepr_RepresentationItem)::DownCast ( myStyles.FindKey(i) ) );
// create new MDGPR
- Repr = new StepVisual_MechanicalDesignGeometricPresentationRepresentation;
+ theMDGPR = new StepVisual_MechanicalDesignGeometricPresentationRepresentation;
Handle(TCollection_HAsciiString) ReprName = new TCollection_HAsciiString ( "" );
- Repr->Init ( ReprName, elems, Context );
+ theMDGPR->Init ( ReprName, elems, theContext );
// record Repr in order to have it written to the file
// Model()->AddWithRefs ( Repr ); add into the model upper
// for AP203, add subschema name
- if ( Interface_Static::IVal("write.step.schema") ==3 ) {
+ if ( theModel->GetParam("write.step.schema")->IntegerValue() == 3 ) {
APIHeaderSection_MakeHeader mkHdr ( Handle(StepData_StepModel)::DownCast ( Model() ) );
Handle(TCollection_HAsciiString) subSchema =
new TCollection_HAsciiString ( "SHAPE_APPEARANCE_LAYER_MIM" );
#include <Standard_DefineAlloc.hxx>
#include <Standard_Handle.hxx>
+#include <Interface_InterfaceModel.hxx>
#include <TColStd_IndexedDataMapOfTransientTransient.hxx>
#include <TColStd_IndexedMapOfTransient.hxx>
#include <TColStd_SequenceOfTransient.hxx>
//! Create MDGPR, fill it with all the styles previously defined,
//! and add it to the model
- Standard_EXPORT Standard_Boolean CreateMDGPR (const Handle(StepRepr_RepresentationContext)& Context, Handle(StepVisual_MechanicalDesignGeometricPresentationRepresentation)& MDGPR);
+ Standard_EXPORT Standard_Boolean CreateMDGPR (const Handle(StepRepr_RepresentationContext)& theContext,
+ Handle(StepVisual_MechanicalDesignGeometricPresentationRepresentation)& theMDGPR,
+ const Handle(Interface_InterfaceModel) theModel);
//! Create MDGPR, fill it with all the styles previously defined,
//! and add it to the model
//abv 17.11.99: renamed from StepPDR_MakeUnitAndToleranceContext and merged with STEPControl_Unit
//abv 30.02.00: ability to write file in units other than MM
-#include <Interface_Static.hxx>
#include <StepBasic_ConversionBasedUnit.hxx>
#include <StepBasic_ConversionBasedUnitAndAreaUnit.hxx>
#include <StepBasic_ConversionBasedUnitAndLengthUnit.hxx>
//purpose :
//=======================================================================
-void STEPConstruct_UnitContext::Init(const Standard_Real Tol3d)
+void STEPConstruct_UnitContext::Init(const Standard_Real Tol3d,
+ Handle(Interface_InterfaceModel)& theModel)
{
done = Standard_True;
Standard_CString uName = 0;
Standard_Boolean hasPref = Standard_True;
StepBasic_SiPrefix siPref = StepBasic_spMilli;
- switch ( Interface_Static::IVal ( "write.step.unit" ) ) {
- case 1 : uName = "INCH"; break;
- default :
- case 2 : break;
- case 4 : uName = "FOOT"; break;
- case 5 : uName = "MILE"; break;
- case 6 : hasPref = Standard_False; break;
- case 7 : siPref = StepBasic_spKilo; break;
- case 8 : uName = "MIL"; break;
- case 9 : siPref = StepBasic_spMicro; break;
- case 10 : siPref = StepBasic_spCenti; break;
- case 11 : uName = "MICROINCH"; break;
+ switch (theModel->GetParam("write.step.unit")->IntegerValue()) {
+ case 1: uName = "INCH"; break;
+ default:
+ case 2: break;
+ case 4: uName = "FOOT"; break;
+ case 5: uName = "MILE"; break;
+ case 6: hasPref = Standard_False; break;
+ case 7: siPref = StepBasic_spKilo; break;
+ case 8: uName = "MIL"; break;
+ case 9: siPref = StepBasic_spMicro; break;
+ case 10: siPref = StepBasic_spCenti; break;
+ case 11: uName = "MICROINCH"; break;
}
Handle(StepBasic_SiUnitAndLengthUnit) siUnit =
if ( uName ) { // for non-metric units, create conversion_based_unit
Handle(StepBasic_MeasureValueMember) val = new StepBasic_MeasureValueMember;
val->SetName("LENGTH_UNIT");
- val->SetReal ( UnitsMethods::GetLengthFactorValue ( Interface_Static::IVal ( "write.step.unit" ) ) );
+ val->SetReal(UnitsMethods::GetLengthFactorValue(theModel->GetParam("write.step.unit")->IntegerValue()));
Handle(StepBasic_LengthMeasureWithUnit) measure = new StepBasic_LengthMeasureWithUnit;
StepBasic_Unit Unit;
#include <Standard_DefineAlloc.hxx>
#include <Standard_Handle.hxx>
+#include <Interface_InterfaceModel.hxx>
#include <Standard_Boolean.hxx>
#include <Standard_Real.hxx>
#include <Standard_Integer.hxx>
//! Creates new context (units are MM and radians,
//! uncertainty equal to Tol3d)
- Standard_EXPORT void Init (const Standard_Real Tol3d);
+ Standard_EXPORT void Init (const Standard_Real Tol3d,
+ Handle(Interface_InterfaceModel)& theModel);
//! Returns True if Init was called successfully
Standard_EXPORT Standard_Boolean IsDone() const;
#include <gp_Pnt.hxx>
#include <Interface_EntityIterator.hxx>
#include <Interface_Macros.hxx>
-#include <Interface_Static.hxx>
#include <Message.hxx>
#include <Message_Messenger.hxx>
#include <StepBasic_DerivedUnit.hxx>
Handle(TCollection_HAsciiString) PropDefDescr = new TCollection_HAsciiString ( Descr );
Handle(StepRepr_PropertyDefinition) propdef = new StepRepr_PropertyDefinition;
propdef->Init ( PropDefName, Standard_True, PropDefDescr, target );
-
+
Handle(TCollection_HAsciiString) SRName = new TCollection_HAsciiString ( Descr );
Handle(StepRepr_Representation) rep = new StepRepr_Representation;
Handle(StepRepr_HArray1OfRepresentationItem) SRItems = new StepRepr_HArray1OfRepresentationItem ( 1, 1 );
SRItems->SetValue ( 1, Prop );
rep->Init ( SRName, SRItems, Context );
-
+
Handle(StepRepr_PropertyDefinitionRepresentation) PrDR = new StepRepr_PropertyDefinitionRepresentation;
StepRepr_RepresentedDefinition RD;
RD.SetValue ( propdef );
PrDR->Init ( RD, rep );
-
+
// record SDR in order to have it written to the file
Model()->AddWithRefs ( PrDR );
// for AP203, add subschema name
- if ( Interface_Static::IVal("write.step.schema") ==3 ) {
- APIHeaderSection_MakeHeader mkHdr ( Handle(StepData_StepModel)::DownCast ( Model() ) );
- Handle(TCollection_HAsciiString) subSchema =
- new TCollection_HAsciiString ( "GEOMETRIC_VALIDATION_PROPERTIES_MIM" );
- mkHdr.AddSchemaIdentifier ( subSchema );
+
+ if (Model()->GetParam("write.step.schema")->IntegerValue() == 3) {
+ APIHeaderSection_MakeHeader mkHdr(Handle(StepData_StepModel)::DownCast(Model()));
+ Handle(TCollection_HAsciiString) subSchema =
+ new TCollection_HAsciiString("GEOMETRIC_VALIDATION_PROPERTIES_MIM");
+ mkHdr.AddSchemaIdentifier(subSchema);
}
-
+
return Standard_True;
}
#include <Interface_Graph.hxx>
#include <Interface_InterfaceModel.hxx>
#include <Interface_Macros.hxx>
-#include <Interface_Static.hxx>
#include <Message_Messenger.hxx>
#include <Message_ProgressSentry.hxx>
#include <OSD_Timer.hxx>
#include <TransferBRep_ShapeBinder.hxx>
#include <UnitsMethods.hxx>
#include <XSAlgo.hxx>
-#include <XSAlgo_AlgoContainer.hxx>
IMPLEMENT_STANDARD_RTTIEXT(STEPControl_ActorRead,Transfer_ActorOfTransientProcess)
// Purpose : Empty constructor
// ============================================================================
-STEPControl_ActorRead::STEPControl_ActorRead() {}
+STEPControl_ActorRead::STEPControl_ActorRead()
+{
+ myXSAlgoContainer = new XSAlgo_AlgoContainer;
+}
// ============================================================================
// Method : STEPControl_ActorRead::Recognize
if (start->IsKind(STANDARD_TYPE(StepRepr_NextAssemblyUsageOccurrence))) return Standard_True;
- TCollection_AsciiString aProdMode = Interface_Static::CVal("read.step.product.mode");
+ TCollection_AsciiString aProdMode = myModel->GetParam("read.step.product.mode")->IntegerValue();
if(!aProdMode.IsEqual("ON"))
if(start->IsKind(STANDARD_TYPE(StepShape_ShapeDefinitionRepresentation))) return Standard_True;
const Handle(Transfer_TransientProcess)& TP)
{
// [BEGIN] Get version of preprocessor (to detect I-Deas case) (ssv; 23.11.2010)
- Handle(StepData_StepModel) aStepModel = Handle(StepData_StepModel)::DownCast ( TP->Model() );
+ Handle(StepData_StepModel) aStepModel = Handle(StepData_StepModel)::DownCast(TP->Model());
Interface_EntityIterator anEntIt = aStepModel->Header();
for ( anEntIt.Start(); anEntIt.More(); anEntIt.Next() ) {
DeclareAndCast( HeaderSection_FileName, aFileNameEntity, anEntIt.Value() );
//purpose : Find all SDRs related to given PDS
//=======================================================================
-static void getSDR(const Handle(StepRepr_ProductDefinitionShape)& PDS,
- Handle(TColStd_HSequenceOfTransient)& listSDR,
- Handle(TColStd_HSequenceOfTransient)& listNAUO,
- Handle(TColStd_HSequenceOfTransient)& listSDRAspect,
- const Handle(Transfer_TransientProcess)& TP)
+void STEPControl_ActorRead::getSDR(const Handle(StepRepr_ProductDefinitionShape)& PDS,
+ Handle(TColStd_HSequenceOfTransient)& listSDR,
+ Handle(TColStd_HSequenceOfTransient)& listNAUO,
+ Handle(TColStd_HSequenceOfTransient)& listSDRAspect,
+ const Handle(Transfer_TransientProcess)& TP)
{
// Flag indicating preferred shape representation type, to be chosen if
// several different representations are attached to the same shape
Standard_Integer delta = 100;
- Standard_Integer ICS = Interface_Static::IVal("read.step.shape.repr");
+ Standard_Integer ICS = myModel->GetParam("read.step.shape.repr")->IntegerValue();
Standard_Integer nbSDR0 = listSDR->Length();
// Iterate by entities referring PDS
// Flag indicating whether SDRs associated with the product`s main SDR
// by SRRs (which correspond to hybrid model representation in AP203 since 1998)
// should be taken into account
- Standard_Integer readSRR = Interface_Static::IVal("read.step.shape.relationship");
+ Standard_Integer readSRR = myModel->GetParam("read.step.shape.relationship")->IntegerValue();
// Flag indicating whether SDRs associated with the product`s main SDR
// by SAs (which correspond to hybrid model representation in AP203 before 1998)
// should be taken into account
- Standard_Integer readSA = Interface_Static::IVal("read.step.shape.aspect");
+ Standard_Integer readSA = myModel->GetParam("read.step.shape.aspect")->IntegerValue();
if ( ! readSA )
listSDRAspect->Clear();
// possibly attached directly to intermediate assemblies (1)
// Special mode (4) is used to translate shape attached to this product only,
// ignoring sub-assemblies if any
- Standard_Integer readAssembly = Interface_Static::IVal("read.step.assembly.level");
+ Standard_Integer readAssembly = myModel->GetParam("read.step.assembly.level")->IntegerValue();
if ( readAssembly ==3 || ( readAssembly ==2 && listNAUO->Length() >0 ) )
listSDR->Clear();
else if ( readAssembly == 4 )
return shbinder;
isBound = Standard_False;
Standard_Integer nb = sr->NbItems();
- // Used in XSAlgo::AlgoContainer()->ProcessShape (ssv; 13.11.2010)
+ // Used in myXSAlgoContainer->ProcessShape (ssv; 13.11.2010)
Standard_Integer nbTPitems = TP->NbMapped();
Handle(Message_Messenger) sout = TP->Messenger();
#ifdef TRANSLOG
Message_ProgressSentry PS ( TP->GetProgress(), "Sub-assembly", 0, nb, 1 );
// [BEGIN] Proceed with non-manifold topology (ssv; 12.11.2010)
- Standard_Boolean isNMMode = Interface_Static::IVal("read.step.nonmanifold") != 0;
+ Standard_Boolean isNMMode = myModel->GetParam("read.step.nonmanifold")->IntegerValue() != 0;
Standard_Boolean isManifold = Standard_True;
if ( isNMMode && sr->IsKind(STANDARD_TYPE(StepShape_NonManifoldSurfaceShapeRepresentation)) ) {
isManifold = Standard_False;
}
// Special processing for I-DEAS STP case (ssv; 15.11.2010)
else {
- Standard_Integer isIDeasMode = Interface_Static::IVal("read.step.ideas");
+ Standard_Integer isIDeasMode = myModel->GetParam("read.step.ideas")->IntegerValue();
if (isNMMode && myNMTool.IsIDEASCase() && isIDeasMode) {
isManifold = Standard_False;
NM_DETECTED = Standard_True;
Handle(Standard_Transient) info;
// IMPORTANT: any fixing on non-manifold topology must be done after the shape is transferred from STEP
TopoDS_Shape fixedResult =
- XSAlgo::AlgoContainer()->ProcessShape( comp, myPrecision, myMaxTol,
- "read.step.resource.name",
- "read.step.sequence", info,
- TP->GetProgress() );
- XSAlgo::AlgoContainer()->MergeTransferInfo(TP, info, nbTPitems);
+ myXSAlgoContainer->ProcessShape( comp, myPrecision, myMaxTol,
+ "read.step.resource.name",
+ "read.step.sequence", info,
+ TP->GetProgress() );
+ myXSAlgoContainer->MergeTransferInfo(TP, info, nbTPitems);
BRep_Builder brepBuilder;
TP->AddWarning ( start, "Entity with no unit context; default units taken" );
ResetUnits();
}
- else PrepareUnits ( context, TP );
+ else PrepareUnits(context, TP);
}
myShapeBuilder.SetPrecision(myPrecision);
myShapeBuilder.SetMaxTol(myMaxTol);
// Apply ShapeFix (on manifold shapes only. Non-manifold topology is processed separately: ssv; 13.11.2010)
if (isManifold) {
Handle(Standard_Transient) info;
- mappedShape =
- XSAlgo::AlgoContainer()->ProcessShape( mappedShape, myPrecision, myMaxTol,
- "read.step.resource.name",
- "read.step.sequence", info,
- TP->GetProgress() );
- XSAlgo::AlgoContainer()->MergeTransferInfo(TP, info, nbTPitems);
+ mappedShape = myXSAlgoContainer->ProcessShape( mappedShape, myPrecision, myMaxTol,
+ "read.step.resource.name",
+ "read.step.sequence", info,
+ TP->GetProgress() );
+ myXSAlgoContainer->MergeTransferInfo(TP, info, nbTPitems);
}
}
found = !mappedShape.IsNull();
TopoDS_Shape S = sb->Result();
Handle(Standard_Transient) info;
- TopoDS_Shape shape = XSAlgo::AlgoContainer()->ProcessShape(S, myPrecision, myMaxTol,
- "read.step.resource.name",
- "read.step.sequence", info,
- TP->GetProgress());
- // TopoDS_Shape shape = XSAlgo::AlgoContainer()->PerformFixShape( S, TP, myPrecision, myMaxTol );
+ TopoDS_Shape shape = myXSAlgoContainer->ProcessShape(S, myPrecision, myMaxTol,
+ "read.step.resource.name",
+ "read.step.sequence", info,
+ TP->GetProgress());
+ //TopoDS_Shape shape = myXSAlgoContainer->PerformFixShape( S, TP, myPrecision, myMaxTol );
if (shape != S)
sb->SetResult(shape);
- XSAlgo::AlgoContainer()->MergeTransferInfo(TP, info, nbTPitems);
+ myXSAlgoContainer->MergeTransferInfo(TP, info, nbTPitems);
}
const Standard_Boolean isManifold)
{
if (start.IsNull()) return NullResult();
- XSAlgo::AlgoContainer()->PrepareForTransfer();
+ myXSAlgoContainer->PrepareForTransfer();
Handle(Message_Messenger) sout = TP->Messenger();
#ifdef TRANSLOG
// POUR MISE AU POINT, a supprimer ensuite
if (TP->TraceLevel() > 1)
- sout<<" -- Actor : Transfer Ent.n0 "<<TP->Model()->Number(start)<<" Type "<<start->DynamicType()->Name()<<endl;
+ sout<<" -- Actor : Transfer Ent.n0 "<<myModel->Number(start)<<" Type "<<start->DynamicType()->Name()<<endl;
#endif
Handle(TransferBRep_ShapeBinder) shbinder;
// Product Definition Entities
// They should be treated with Design Manager
// case ShapeDefinitionRepresentation if ProductMode != ON
- TCollection_AsciiString aProdMode = Interface_Static::CVal("read.step.product.mode");
+ TCollection_AsciiString aProdMode = myModel->GetParam("read.step.product.mode")->CStringValue();
if(!aProdMode.IsEqual("ON") &&
start->IsKind(STANDARD_TYPE(StepShape_ShapeDefinitionRepresentation)))
shbinder = OldWay(start,TP);
if (!theGUAC.IsNull()) {
stat1 = myUnit.ComputeFactors(theGUAC);
- Standard_Integer anglemode = Interface_Static::IVal("step.angleunit.mode");
+ Standard_Integer anglemode = myModel->GetParam("step.angleunit.mode")->IntegerValue();
Standard_Real angleFactor = ( anglemode == 0 ? myUnit.PlaneAngleFactor() :
anglemode == 1 ? 1. : M_PI/180. );
UnitsMethods::InitializeFactors(myUnit.LengthFactor(),
}
// myPrecision = Precision::Confusion();
- if (Interface_Static::IVal("read.precision.mode") == 1) //:i1 gka S4136 05.04.99
- myPrecision = Interface_Static::RVal("read.precision.val");
+ if (myModel->GetParam("read.precision.mode")->IntegerValue() == 1) //:i1 gka S4136 05.04.99
+ myPrecision = myModel->GetParam("read.precision.val")->RealValue();
else if (myUnit.HasUncertainty())
myPrecision = myUnit.Uncertainty() * myUnit.LengthFactor();
else {
TP->AddWarning(theRepCont,"No Length Uncertainty, value of read.precision.val is taken");
- myPrecision = Interface_Static::RVal("read.precision.val");
+ myPrecision = myModel->GetParam("read.precision.val")->RealValue();
}
- myMaxTol = Max ( myPrecision, Interface_Static::RVal("read.maxprecision.val") );
+ myMaxTol = Max ( myPrecision, myModel->GetParam("read.maxprecision.val")->RealValue() );
// Assign uncertainty
#ifdef TRANSLOG
if (TP->TraceLevel() > 1)
//purpose :
//=======================================================================
-void STEPControl_ActorRead::ResetUnits ()
+void STEPControl_ActorRead::ResetUnits ()
{
UnitsMethods::InitializeFactors ( 1, 1, 1 );
- myPrecision = Interface_Static::RVal("read.precision.val");
- myMaxTol = Max ( myPrecision, Interface_Static::RVal("read.maxprecision.val") );
+ myPrecision = myModel->GetParam("read.precision.val")->RealValue();
+ myMaxTol = Max ( myPrecision, myModel->GetParam("read.maxprecision.val")->RealValue());
}
//=======================================================================
shellClosingsMap.Add(shellA, closingShells);
}
}
+
+//=======================================================================
+// Method : SetModel
+// Purpose :
+//=======================================================================
+void STEPControl_ActorRead::SetModel(Handle(Interface_InterfaceModel)& theModel)
+{
+ myModel = theModel;
+ myXSAlgoContainer->SetModel(theModel);
+}
#include <Transfer_ActorOfTransientProcess.hxx>
#include <Standard_Boolean.hxx>
#include <Standard_Integer.hxx>
+#include <StepRepr_ProductDefinitionShape.hxx>
#include <TopTools_ListOfShape.hxx>
#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
+#include <XSAlgo_AlgoContainer.hxx>
class StepRepr_Representation;
class Standard_Transient;
class Transfer_Binder;
//! reset units and tolerances context to default
//! (mm, radians, read.precision.val, etc.)
Standard_EXPORT void ResetUnits();
+
+ //! Sets step model for translations
+ Standard_EXPORT void SetModel(Handle(Interface_InterfaceModel)& theModel);
//! Computes transformation defined by two axis placements (in MAPPED_ITEM
//! or ITEM_DEFINED_TRANSFORMATION) taking into account their
Standard_EXPORT void computeIDEASClosings (const TopoDS_Compound& comp, TopTools_IndexedDataMapOfShapeListOfShape& shellClosingMap);
+ Standard_EXPORT void getSDR(const Handle(StepRepr_ProductDefinitionShape)& PDS,
+ Handle(TColStd_HSequenceOfTransient)& listSDR,
+ Handle(TColStd_HSequenceOfTransient)& listNAUO,
+ Handle(TColStd_HSequenceOfTransient)& listSDRAspect,
+ const Handle(Transfer_TransientProcess)& TP);
+
StepToTopoDS_NMTool myNMTool;
Standard_Real myPrecision;
Standard_Real myMaxTol;
Handle(StepRepr_Representation) mySRContext;
+ Handle(XSAlgo_AlgoContainer) myXSAlgoContainer;
+ Handle(Interface_InterfaceModel) myModel;
};
#include <gp_Ax2.hxx>
#include <Interface_Macros.hxx>
#include <Interface_MSG.hxx>
-#include <Interface_Static.hxx>
#include <MoniTool_DataMapOfShapeTransient.hxx>
#include <OSD_Timer.hxx>
#include <ShapeAnalysis_ShapeTolerance.hxx>
#include <STEPConstruct_UnitContext.hxx>
#include <STEPControl_ActorWrite.hxx>
#include <STEPControl_StepModelType.hxx>
-#include <StepData_StepModel.hxx>
#include <StepGeom_Axis2Placement3d.hxx>
#include <StepGeom_GeomRepContextAndGlobUnitAssCtxAndGlobUncertaintyAssCtx.hxx>
#include <StepGeom_Point.hxx>
#include <TransferBRep_ShapeMapper.hxx>
#include <UnitsMethods.hxx>
#include <XSAlgo.hxx>
-#include <XSAlgo_AlgoContainer.hxx>
IMPLEMENT_STANDARD_RTTIEXT(STEPControl_ActorWrite,Transfer_ActorOfFinderProcess)
STEPControl_ActorWrite::STEPControl_ActorWrite ()
: mygroup (0) , mytoler (-1.)
{
- SetMode(STEPControl_ShellBasedSurfaceModel);
+ SetMode(STEPControl_ShellBasedSurfaceModel);
+ myXSAlgoContainer = new XSAlgo_AlgoContainer;
}
//=======================================================================
//purpose :
//=======================================================================
-void STEPControl_ActorWrite::SetGroupMode (const Standard_Integer mode)
-{
- if (mode >= 0) mygroup = mode;
+void STEPControl_ActorWrite::SetGroupMode (const Standard_CString theParameter)
+{
+ Standard_Integer aMode = myModel->GetParam(theParameter)->IntegerValue();
+ if (aMode >= 0) mygroup = aMode;
}
//=======================================================================
Handle(Transfer_Binder) STEPControl_ActorWrite::Transfer (const Handle(Transfer_Finder)& start,
const Handle(Transfer_FinderProcess)& FP)
{
- XSAlgo::AlgoContainer()->PrepareForTransfer();
+ myXSAlgoContainer->PrepareForTransfer();
Handle(TransferBRep_ShapeMapper) mapper = Handle(TransferBRep_ShapeMapper)::DownCast(start);
TopoDS_Shape shape = mapper->Value();
// init context
- Handle(StepData_StepModel) model = Handle(StepData_StepModel)::DownCast ( FP->Model() );
- if ( ! model.IsNull() ) myContext.SetModel ( model ); //: abv 04.11.00: take APD from model
+ if ( ! myModel.IsNull() ) myContext.SetModel (myModel); //: abv 04.11.00: take APD from model
myContext.AddAPD ( Standard_False ); // update APD
myContext.SetLevel ( 1 ); // set assembly level to 1 (to ensure)
//:S4136: init UnitsMethods to reset angle unit factors (see TopoDSToStep)
- Standard_Real lFactor = UnitsMethods::GetLengthFactorValue ( Interface_Static::IVal ( "write.step.unit" ) );
+ Standard_Real lFactor = UnitsMethods::GetLengthFactorValue (myModel->GetParam( "write.step.unit" )->IntegerValue() );
lFactor /= UnitsMethods::GetCasCadeLengthUnit();
- Standard_Integer anglemode = Interface_Static::IVal("step.angleunit.mode");
+ Standard_Integer anglemode = myModel->GetParam("step.angleunit.mode")->IntegerValue();
UnitsMethods::InitializeFactors ( lFactor, ( anglemode <= 1 ? 1. : M_PI/180. ), 1. );
// create SDR
STEPConstruct_Part SDRTool;
- SDRTool.MakeSDR ( 0, myContext.GetProductName(), myContext.GetAPD()->Application() );
+ SDRTool.MakeSDR ( 0, myContext.GetProductName(), myContext.GetAPD()->Application(), myModel );
Handle(StepShape_ShapeDefinitionRepresentation) sdr = SDRTool.SDRValue();
// transfer shape
//==========================================
-static Standard_Real UsedTolerance (const Standard_Real mytoler,
- const TopoDS_Shape& theShape)
+Standard_Real STEPControl_ActorWrite::usedTolerance(const Standard_Real theToler,
+ const TopoDS_Shape& theShape)
{
// COMPUTING 3D TOLERANCE
// Either from Session, or Computed (Least,Average, or Greatest)
// Then given to TopoDSToStep_Tool
- Standard_Real Tol = mytoler;
- Standard_Integer tolmod = Interface_Static::IVal("write.precision.mode");
- if (Tol <= 0 && tolmod == 2) Tol =
- Interface_Static::RVal("write.precision.val");
+ Standard_Real Tol = theToler;
+ Standard_Integer tolmod = myModel->GetParam("write.precision.mode")->IntegerValue();
+ if (Tol <= 0 && tolmod == 2)
+ Tol = myModel->GetParam("write.precision.val")->RealValue();
if (Tol <= 0) {
ShapeAnalysis_ShapeTolerance stu;
- Tol = stu.Tolerance (theShape,tolmod);
+ Tol = stu.Tolerance(theShape, tolmod);
// Par defaut, on prend une tolerance moyenne, on elimine les aberrations
- Tol = Interface_MSG::Intervalled (Tol * 1.5); // arrondi a 1 2 5 ...
+ Tol = Interface_MSG::Intervalled(Tol * 1.5); // arrondi a 1 2 5 ...
}
if (Tol == 0) Tol = 1.e-07; // minimum ...
{
if ( ! GroupMode() || S.ShapeType() != TopAbs_COMPOUND ) return Standard_False;
// PTV 16.09.2002 OCC725 for storing compound of vertices
- if (Interface_Static::IVal("write.step.vertex.mode") == 0) {//bug 23950
+ if (myModel->GetParam("write.step.vertex.mode")->IntegerValue() == 0) {//bug 23950
if (S.ShapeType() == TopAbs_COMPOUND ) {
Standard_Boolean IsOnlyVertices = Standard_True;
TopoDS_Iterator anItr( S );
{
Standard_Boolean IsDone = Standard_False;
MoniTool_DataMapOfShapeTransient aMap;
- TopoDSToStep_Tool aTool(aMap, Standard_True);
+ TopoDSToStep_Tool aTool(aMap,
+ Standard_True,
+ FP->Model()->GetParam("write.surfacecurve.mode")->IntegerValue());
TopoDSToStep_MakeStepVertex aMkVrtx ( TopoDS::Vertex(aShVrtx), aTool, FP );
if (!aMkVrtx.IsDone())
return TransferCompound(start, SDR0, FP);
// [BEGIN] Separate manifold topology from non-manifold in group mode 0 (ssv; 18.11.2010)
- Standard_Boolean isNMMode = Interface_Static::IVal("write.step.nonmanifold") != 0;
+ Standard_Boolean isNMMode = myModel->GetParam("write.step.nonmanifold")->IntegerValue() != 0;
Handle(Transfer_Binder) aNMBinder;
if (isNMMode && !GroupMode() && theShape.ShapeType() == TopAbs_COMPOUND) {
TopoDS_Compound aNMCompound;
sdr = SDR0;
else {
STEPConstruct_Part SDRTool;
- SDRTool.MakeSDR( 0, myContext.GetProductName(), myContext.GetAPD()->Application() );
+ SDRTool.MakeSDR( 0, myContext.GetProductName(), myContext.GetAPD()->Application(), myModel );
sdr = SDRTool.SDRValue();
}
Handle(TopTools_HSequenceOfShape) RepItemSeq = new TopTools_HSequenceOfShape();
Standard_Boolean isSeparateVertices =
- Interface_Static::IVal("write.step.vertex.mode") == 0;//bug 23950
+ myModel->GetParam("write.step.vertex.mode")->IntegerValue() == 0;//bug 23950
// PTV 16.09.2002 OCC725 separate shape from solo vertices.
Standard_Boolean isOnlyVertices = Standard_False;
if (theShape.ShapeType() == TopAbs_COMPOUND) {
// COMPUTING 3D TOLERANCE
// Either from Session, or Computed (Least,Average, or Greatest)
// Then given to TopoDSToStep_Tool
- Standard_Real Tol = UsedTolerance (mytoler,theShape);
+ Standard_Real Tol = usedTolerance (mytoler,theShape);
// Create a STEP-Entity for each TopoDS_Shape
// according to the current StepModelMode
// if ( DMT.IsDone() ) aShape = DMT.ModifiedShape ( aShape );
//// aShape = TopoDSToStep::DirectFaces(xShape);
Handle(Standard_Transient) info;
- Standard_Real maxTol = Interface_Static::RVal("read.maxprecision.val");
+ Standard_Real maxTol = myModel->GetParam("read.maxprecision.val")->RealValue();
TopoDS_Shape aShape;
- aShape = XSAlgo::AlgoContainer()->ProcessShape(xShape, Tol, maxTol,
- "write.step.resource.name",
- "write.step.sequence", info,
- FP->GetProgress() );
+ aShape = myXSAlgoContainer->ProcessShape(xShape, Tol, maxTol,
+ "write.step.resource.name",
+ "write.step.sequence", info,
+ FP->GetProgress() );
if (!isManifold) {
mergeInfoForNM(FP, info);
}
//:abv 24Jan99 CAX-IF TRJ3: Update FinderProcess map to take into account shape processing
// UpdateMap ( xShape, CSMT, DMT, FP );
- XSAlgo::AlgoContainer()->MergeTransferInfo(FP, info);
+ myXSAlgoContainer->MergeTransferInfo(FP, info);
}
// - Make Shape Representation
GetCasted(StepRepr_RepresentationItem, ItemSeq->Value(rep));
items->SetValue(rep,repit);
}
- Standard_Integer ap = Interface_Static::IVal("write.step.schema");
+ Standard_Integer ap = myModel->GetParam("write.step.schema")->IntegerValue();
Transfer_SequenceOfBinder aSeqBindRelation;
if(ap == 3 && nbs > 1) {
Standard_Integer j = 1;
repr1->SetValue(2,items->Value(j));
ShapeRepr1->SetItems(repr1);
STEPConstruct_UnitContext mk1;
- mk1.Init(Tol);
+ mk1.Init(Tol, myModel);
ShapeRepr1->SetContextOfItems(mk1.Value()); // la tolerance, voir au debut
ShapeRepr1->SetName (new TCollection_HAsciiString(""));
// init representation
STEPConstruct_UnitContext mk;
- mk.Init(Tol);
+ mk.Init(Tol, myModel);
shapeRep->SetContextOfItems(mk.Value()); // la tolerance, voir au debut
shapeRep->SetName (new TCollection_HAsciiString(""));
TopoDS_Shape theShape = mapper->Value();
// Inspect non-manifold topology case (ssv; 10.11.2010)
- Standard_Boolean isNMMode = Interface_Static::IVal("write.step.nonmanifold") != 0;
+ Standard_Boolean isNMMode = myModel->GetParam("write.step.nonmanifold")->IntegerValue() != 0;
Standard_Boolean isManifold;
if (isNMMode)
isManifold = IsManifoldShape(theShape);
// Prepare a collection for non-manifold group of shapes
Handle(TopTools_HSequenceOfShape) NonManifoldGroup = new TopTools_HSequenceOfShape();
Standard_Boolean isSeparateVertices =
- (Interface_Static::IVal("write.step.vertex.mode") == 0);//bug 23950
+ ( myModel->GetParam("write.step.vertex.mode")->IntegerValue() == 0);//bug 23950
// PTV OCC725 17.09.2002 -- begin --
Standard_Integer nbFreeVrtx = 0;
TopoDS_Compound aCompOfVrtx;
for (Standard_Integer rep = 1; rep <= nsub; rep++)
items->SetValue(rep,GetCasted(StepRepr_RepresentationItem, ItemSeq->Value(rep)));
shapeRep->SetItems(items);
- Standard_Real Tol = UsedTolerance (mytoler,theShape);
+ Standard_Real Tol = usedTolerance (mytoler,theShape);
STEPConstruct_UnitContext mk;
- mk.Init(Tol);
+ mk.Init(Tol, myModel);
shapeRep->SetContextOfItems(mk.Value()); // la tolerance, voir au debut
shapeRep->SetName (new TCollection_HAsciiString(""));
(resbind,STANDARD_TYPE(StepShape_ShapeDefinitionRepresentation),sdr);
if ( iasdr ) SDRTool.ReadSDR ( sdr );
else {
- SDRTool.MakeSDR ( 0, myContext.GetProductName(), myContext.GetAPD()->Application() );
+ SDRTool.MakeSDR ( 0, myContext.GetProductName(), myContext.GetAPD()->Application(), myModel );
sdr = SDRTool.SDRValue();
}
// resultat = GetCasted(StepShape_ShapeRepresentation,sdr->UsedRepresentation());
return resprod;
}
+
+//=======================================================================
+// Method : SetModel
+// Purpose :
+//=======================================================================
+void STEPControl_ActorWrite::SetModel(Handle(Interface_InterfaceModel)& theModel)
+{
+ myModel = theModel;
+ myXSAlgoContainer->SetModel(theModel);
+ SetGroupMode("write.step.assembly");
+}
#include <Standard_Integer.hxx>
#include <Standard_Real.hxx>
-#include <STEPConstruct_ContextTool.hxx>
-#include <Transfer_ActorOfFinderProcess.hxx>
#include <Standard_Boolean.hxx>
-#include <TopTools_HSequenceOfShape.hxx>
+#include <STEPConstruct_ContextTool.hxx>
#include <STEPControl_StepModelType.hxx>
+#include <StepData_StepModel.hxx>
+#include <TopTools_HSequenceOfShape.hxx>
+#include <Transfer_ActorOfFinderProcess.hxx>
+#include <XSAlgo_AlgoContainer.hxx>
class Transfer_Finder;
class Transfer_Binder;
class Transfer_FinderProcess;
Standard_EXPORT STEPControl_StepModelType Mode() const;
- Standard_EXPORT void SetGroupMode (const Standard_Integer mode);
+ Standard_EXPORT void SetGroupMode (const Standard_CString theParameter);
Standard_EXPORT Standard_Integer GroupMode() const;
//! NOTE: this method can modify shape
Standard_EXPORT virtual Standard_Boolean IsAssembly (TopoDS_Shape& S) const;
+ //! Sets step model for translations
+ Standard_EXPORT void SetModel(Handle(Interface_InterfaceModel)& theModel);
//! Use this method to get the corresponding NMSSR (or
//! to create a new one if doesn't exist yet)
//! (ssv; 13.11.2010)
- Standard_EXPORT Handle(StepShape_NonManifoldSurfaceShapeRepresentation) getNMSSRForGroup (const Handle(TopTools_HSequenceOfShape)& shapeGroup, const Handle(Transfer_FinderProcess)& FP, Standard_Boolean& isNMSSRCreated) const;
+ Standard_EXPORT Handle(StepShape_NonManifoldSurfaceShapeRepresentation) getNMSSRForGroup (const Handle(TopTools_HSequenceOfShape)& shapeGroup,
+ const Handle(Transfer_FinderProcess)& FP,
+ Standard_Boolean& isNMSSRCreated) const;
//! bind already written shared faces to STEP entity for non-manifold
- Standard_EXPORT void mergeInfoForNM(const Handle(Transfer_FinderProcess)& theFP, const Handle(Standard_Transient) &theInfo) const;
+ Standard_EXPORT void mergeInfoForNM(const Handle(Transfer_FinderProcess)& theFP,
+ const Handle(Standard_Transient) &theInfo) const;
+
+ //!
+ Standard_EXPORT Standard_Real usedTolerance(const Standard_Real mytoler,
+ const TopoDS_Shape& theShape);
Standard_Integer mygroup;
Standard_Real mytoler;
STEPConstruct_ContextTool myContext;
+ Handle(XSAlgo_AlgoContainer) myXSAlgoContainer;
+ Handle(Interface_InterfaceModel) myModel;
};
#include <APIHeaderSection_MakeHeader.hxx>
#include <HeaderSection.hxx>
#include <IFSelect_EditForm.hxx>
+#include <IFSelect_ParamEditor.hxx>
#include <IFSelect_SelectModelRoots.hxx>
#include <IFSelect_SelectSignature.hxx>
#include <IFSelect_SignAncestor.hxx>
#include <IFSelect_SignCounter.hxx>
#include <Interface_InterfaceModel.hxx>
#include <Interface_Macros.hxx>
-#include <Interface_Static.hxx>
#include <RWHeaderSection.hxx>
#include <RWStepAP214.hxx>
+#include <ShapeExtend.hxx>
#include <Standard_Type.hxx>
#include <Standard_Version.hxx>
#include <STEPControl_ActorRead.hxx>
#include <Transfer_FinderProcess.hxx>
#include <XSAlgo.hxx>
#include <XSControl_WorkSession.hxx>
+#include <XSAlgo_AlgoContainer.hxx>
IMPLEMENT_STANDARD_RTTIEXT(STEPControl_Controller,XSControl_Controller)
// Pour NewModel et Write : definition de produit (temporaire ...)
-STEPControl_Controller::STEPControl_Controller ()
-: XSControl_Controller ("STEP", "step")
+STEPControl_Controller::STEPControl_Controller()
+ : XSControl_Controller("STEP", "step")
{
- static Standard_Boolean init = Standard_False;
- if (!init) {
- RWHeaderSection::Init(); RWStepAP214::Init();
-
- Interface_Static::Init ("step","write.step.product.name",'t',"Open CASCADE STEP translator " OCC_VERSION_STRING);
- Interface_Static::Init ("step","write.step.assembly",'e',"");
- Interface_Static::Init ("step","write.step.assembly",'&',"enum 0");
- Interface_Static::Init ("step","write.step.assembly",'&',"eval Off");
- Interface_Static::Init ("step","write.step.assembly",'&',"eval On");
- Interface_Static::Init ("step","write.step.assembly",'&',"eval Auto");
- Interface_Static::SetCVal("write.step.assembly","Auto");
-
- Interface_Static::Init("step","step.angleunit.mode", 'e',"");
- Interface_Static::Init("step","step.angleunit.mode", '&',"enum 0");
- Interface_Static::Init("step","step.angleunit.mode", '&',"eval File");
- Interface_Static::Init("step","step.angleunit.mode", '&',"eval Rad");
- Interface_Static::Init("step","step.angleunit.mode", '&',"eval Deg");
- Interface_Static::SetCVal("step.angleunit.mode","File");
-
- Interface_Static::Init("step","write.step.schema", 'e',"");
- Interface_Static::Init("step","write.step.schema",'&',"enum 1");
- Interface_Static::Init("step","write.step.schema",'&',"eval AP214CD");
- Interface_Static::Init("step","write.step.schema",'&',"eval AP214DIS");
- Interface_Static::Init("step","write.step.schema",'&',"eval AP203");
- Interface_Static::Init("step","write.step.schema",'&',"eval AP214IS");
- Interface_Static::Init("step","write.step.schema",'&',"eval AP242DIS");
- Interface_Static::SetCVal("write.step.schema","AP214IS");
-
- // Type of Product Definition for reading
- // Note: the numbers should be consistent with function FindShapeReprType()
- // in STEPControl_ActorRead.cxx
- Interface_Static::Init("step","read.step.shape.repr",'e',"");
- Interface_Static::Init("step","read.step.shape.repr",'&',"enum 1");
- Interface_Static::Init("step","read.step.shape.repr",'&',"eval All"); // 1
- Interface_Static::Init("step","read.step.shape.repr",'&',"eval ABSR"); // 2
- Interface_Static::Init("step","read.step.shape.repr",'&',"eval MSSR"); // 3
- Interface_Static::Init("step","read.step.shape.repr",'&',"eval GBSSR"); // 4
- Interface_Static::Init("step","read.step.shape.repr",'&',"eval FBSR"); // 5
- Interface_Static::Init("step","read.step.shape.repr",'&',"eval EBWSR"); // 6
- Interface_Static::Init("step","read.step.shape.repr",'&',"eval GBWSR"); // 7
- Interface_Static::SetCVal("read.step.shape.repr","All");
-
- // Mode for reading shapes attached to main SDR by SRR
- // (hybrid model representation in AP203 since 1998)
- Interface_Static::Init("step","read.step.shape.relationship",'e',"");
- Interface_Static::Init("step","read.step.shape.relationship",'&',"enum 0");
- Interface_Static::Init("step","read.step.shape.relationship",'&',"eval OFF");
- Interface_Static::Init("step","read.step.shape.relationship",'&',"eval ON");
- Interface_Static::SetCVal("read.step.shape.relationship","ON");
-
- // Mode for reading shapes attached to Product by ShapeAspect
- // (hybrid model representation in AP203 before 1998)
- Interface_Static::Init("step","read.step.shape.aspect",'e',"");
- Interface_Static::Init("step","read.step.shape.aspect",'&',"enum 0");
- Interface_Static::Init("step","read.step.shape.aspect",'&',"eval OFF");
- Interface_Static::Init("step","read.step.shape.aspect",'&',"eval ON");
- Interface_Static::SetCVal("read.step.shape.aspect","ON");
-
- // Mode for reading SDR and ShapeRepr if it is necessary
- Interface_Static::Init("step","read.step.product.mode",'e',"");
- Interface_Static::Init("step","read.step.product.mode",'&',"enum 0");
- Interface_Static::Init("step","read.step.product.mode",'&',"eval OFF");
- Interface_Static::Init("step","read.step.product.mode",'&',"eval ON");
- Interface_Static::SetCVal("read.step.product.mode","ON");
-
- // Order of reading ShapeDefinitionRepresentation in ProductDefinition
- Interface_Static::Init("step","read.step.product.context",'e',"");
- Interface_Static::Init("step","read.step.product.context",'&',"enum 1");
- Interface_Static::Init("step","read.step.product.context",'&',"eval all"); // 1
- Interface_Static::Init("step","read.step.product.context",'&',"eval design"); // 2
- Interface_Static::Init("step","read.step.product.context",'&',"eval analysis");// 3
- Interface_Static::SetCVal("read.step.product.context","all");
-
- // What we try to read in ProductDefinition
- Interface_Static::Init("step","read.step.assembly.level",'e',"");
- Interface_Static::Init("step","read.step.assembly.level",'&',"enum 1");
- Interface_Static::Init("step","read.step.assembly.level",'&',"eval all"); // 1
- Interface_Static::Init("step","read.step.assembly.level",'&',"eval assembly"); // 2
- Interface_Static::Init("step","read.step.assembly.level",'&',"eval structure");// 3
- Interface_Static::Init("step","read.step.assembly.level",'&',"eval shape"); // 4
- Interface_Static::SetCVal("read.step.assembly.level","all");
-
- // unit: supposed to be cascade unit (target unit for reading)
- Interface_Static::Init("step","write.step.unit", 'e',"");
- Interface_Static::Init("step","write.step.unit",'&',"enum 1");
- Interface_Static::Init("step","write.step.unit",'&',"eval INCH"); // 1
- Interface_Static::Init("step","write.step.unit",'&',"eval MM"); // 2
- Interface_Static::Init("step","write.step.unit",'&',"eval ??"); // 3
- Interface_Static::Init("step","write.step.unit",'&',"eval FT"); // 4
- Interface_Static::Init("step","write.step.unit",'&',"eval MI"); // 5
- Interface_Static::Init("step","write.step.unit",'&',"eval M"); // 6
- Interface_Static::Init("step","write.step.unit",'&',"eval KM"); // 7
- Interface_Static::Init("step","write.step.unit",'&',"eval MIL"); // 8
- Interface_Static::Init("step","write.step.unit",'&',"eval UM"); // 9
- Interface_Static::Init("step","write.step.unit",'&',"eval CM"); //10
- Interface_Static::Init("step","write.step.unit",'&',"eval UIN"); //11
- Interface_Static::SetCVal ("write.step.unit","MM");
-
- // Non-manifold topology reading: OFF by default (ssv; 26.11.2010)
- Interface_Static::Init ("step","read.step.nonmanifold",'e',"");
- Interface_Static::Init ("step","read.step.nonmanifold",'&',"enum 0");
- Interface_Static::Init ("step","read.step.nonmanifold",'&',"eval Off");
- Interface_Static::Init ("step","read.step.nonmanifold",'&',"eval On");
- Interface_Static::SetIVal("read.step.nonmanifold",0);
-
- // Non-manifold topology writing: OFF by default (ssv; 26.11.2010)
- Interface_Static::Init ("step","write.step.nonmanifold",'e',"");
- Interface_Static::Init ("step","write.step.nonmanifold",'&',"enum 0");
- Interface_Static::Init ("step","write.step.nonmanifold",'&',"eval Off");
- Interface_Static::Init ("step","write.step.nonmanifold",'&',"eval On");
- Interface_Static::SetIVal("write.step.nonmanifold",0);
-
- // I-Deas-like STEP processing: OFF by default (ssv; 22.11.2010)
- Interface_Static::Init ("step","read.step.ideas",'e',"");
- Interface_Static::Init ("step","read.step.ideas",'&',"enum 0");
- Interface_Static::Init ("step","read.step.ideas",'&',"eval Off");
- Interface_Static::Init ("step","read.step.ideas",'&',"eval On");
- Interface_Static::SetIVal("read.step.ideas",0);
-
- //Parameter to write all free vertices in one SDR (name and style of vertex are lost) (default)
- //or each vertex in its own SDR (name and style of vertex are exported). (ika; 21.07.2014)
- Interface_Static::Init ("step","write.step.vertex.mode",'e',"");
- Interface_Static::Init ("step","write.step.vertex.mode",'&',"enum 0");
- Interface_Static::Init ("step","write.step.vertex.mode",'&',"eval One Compound");
- Interface_Static::Init ("step","write.step.vertex.mode",'&',"eval Single Vertex");
- Interface_Static::SetIVal("write.step.vertex.mode",0);
-
- // abv 15.11.00: ShapeProcessing
- Interface_Static::Init ("XSTEP","write.step.resource.name",'t',"STEP");
- Interface_Static::Init ("XSTEP","read.step.resource.name",'t',"STEP");
- Interface_Static::Init ("XSTEP","write.step.sequence",'t',"ToSTEP");
- Interface_Static::Init ("XSTEP","read.step.sequence",'t',"FromSTEP");
-
- // ika 28.07.16: Paremeter to read all top level solids and shells,
- // should be used only in case of invalid shape_representation without links to shapes.
- Interface_Static::Init("step", "read.step.all.shapes", 'e', "");
- Interface_Static::Init("step", "read.step.all.shapes", '&', "enum 0");
- Interface_Static::Init("step", "read.step.all.shapes", '&', "eval Off");
- Interface_Static::Init("step", "read.step.all.shapes", '&', "eval On");
- Interface_Static::SetIVal("read.step.all.shapes", 0);
-
- init = Standard_True;
- }
+ RWHeaderSection::Init(); RWStepAP214::Init();
Handle(STEPControl_ActorWrite) ActWrite = new STEPControl_ActorWrite;
- ActWrite->SetGroupMode (Interface_Static::IVal("write.step.assembly"));
myAdaptorWrite = ActWrite;
Handle(StepSelect_WorkLibrary) swl = new StepSelect_WorkLibrary;
SetModeWriteHelp (2,"Shell Based");
SetModeWriteHelp (3,"Manifold Solid");
SetModeWriteHelp (4,"Wireframe");
- TraceStatic ("read.surfacecurve.mode",5);
// --- SELECTIONS, SIGNATURES, COMPTEURS, EDITEURS
Handle(IFSelect_EditForm) edsdrf = new IFSelect_EditForm (edsdr,Standard_False,Standard_True,"STEP Product Data (SDR)");
AddSessionItem (edsdr,"step-SDR-edit");
AddSessionItem (edsdrf,"step-SDR-data");
+
+ // initialization of Standard Shape Healing
+ ShapeExtend::Init();
}
Handle(Interface_InterfaceModel) STEPControl_Controller::NewModel () const
const Standard_Integer modeshape) const
{
if (modeshape < 0 || modeshape > 4) return IFSelect_RetError;
+ if (model.IsNull()) return IFSelect_RetError;
Handle(STEPControl_ActorWrite) ActWrite =
Handle(STEPControl_ActorWrite)::DownCast(myAdaptorWrite);
// A PRESENT ON PASSE PAR LE PROFILE
- if (!ActWrite.IsNull())
- ActWrite->SetGroupMode (Interface_Static::IVal("write.step.assembly"));
+ if (!ActWrite.IsNull())
+ {
+ ActWrite->SetGroupMode("write.step.assembly");
+ }
return XSControl_Controller::TransferWriteShape (shape,FP,model,modeshape);
}
-Standard_Boolean STEPControl_Controller::Init ()
+Standard_Boolean STEPControl_Controller::Init(const Handle(XSControl_WorkSession)& theWS)
{
- static Standard_Boolean inic = Standard_False;
- if (!inic) {
- Handle(STEPControl_Controller) STEPCTL = new STEPControl_Controller;
- STEPCTL->AutoRecord(); // avec les noms donnes a la construction
- XSAlgo::Init();
- inic = Standard_True;
- }
+ Handle(Interface_InterfaceModel) aModel = theWS->Model();
+ if (aModel.IsNull()) return Standard_False;
+
+ TraceNotStatic(aModel->GetParam("read.surfacecurve.mode"), 5);
+ TraceNotStatic(aModel->GetParam("read.precision.mode"), 5);
+ TraceNotStatic(aModel->GetParam("read.precision.val"), 5);
+ TraceNotStatic(aModel->GetParam("write.precision.mode"), 6);
+ TraceNotStatic(aModel->GetParam("write.precision.val"), 6);
+
+ DeclareAndCast(STEPControl_ActorRead, aReadActor, myAdaptorRead);
+ if (!aReadActor.IsNull()) aReadActor->SetModel(aModel);
+
+ DeclareAndCast(STEPControl_ActorWrite, aWriteActor, myAdaptorWrite);
+ if (!aWriteActor.IsNull()) aWriteActor->SetModel(aModel);
+
return Standard_True;
}
+
//=======================================================================
//function : Customise
//purpose :
//! modeshape : 1 Facetted BRep, 2 Shell, 3 Manifold Solid
Standard_EXPORT virtual IFSelect_ReturnStatus TransferWriteShape (const TopoDS_Shape& shape, const Handle(Transfer_FinderProcess)& FP, const Handle(Interface_InterfaceModel)& model, const Standard_Integer modetrans = 0) const Standard_OVERRIDE;
- //! Standard Initialisation. It creates a Controller for STEP
- //! and records it to various names, available to select it later
- //! Returns True when done, False if could not be done
- Standard_EXPORT static Standard_Boolean Init();
+ //! Initialisation of additional parameters taken data from session model
+ Standard_EXPORT virtual Standard_Boolean Init(const Handle(XSControl_WorkSession)& theWS) Standard_OVERRIDE;
protected:
-
-
private:
-
-
};
#include <Interface_EntityIterator.hxx>
#include <Interface_Graph.hxx>
+#include <Interface_Macros.hxx>
#include <Interface_ShareFlags.hxx>
-#include <Interface_Static.hxx>
#include <StepBasic_ApplicationContext.hxx>
#include <StepBasic_ConversionBasedUnit.hxx>
#include <StepBasic_DocumentProductEquivalence.hxx>
#include <StepBasic_SolidAngleMeasureWithUnit.hxx>
#include <StepBasic_SolidAngleUnit.hxx>
#include <STEPConstruct_UnitContext.hxx>
-#include <STEPControl_Controller.hxx>
#include <STEPControl_Reader.hxx>
+#include <STEPControl_ActorRead.hxx>
#include <StepData_StepModel.hxx>
#include <StepGeom_GeometricRepresentationContextAndGlobalUnitAssignedContext.hxx>
#include <StepGeom_GeomRepContextAndGlobUnitAssCtxAndGlobUncertaintyAssCtx.hxx>
//=======================================================================
STEPControl_Reader::STEPControl_Reader ()
{
- STEPControl_Controller::Init();
- SetNorm ("STEP");
+ initReader(new XSControl_WorkSession, new STEPControl_Controller);
}
//=======================================================================
//purpose :
//=======================================================================
-STEPControl_Reader::STEPControl_Reader
- (const Handle(XSControl_WorkSession)& WS, const Standard_Boolean scratch)
+STEPControl_Reader::STEPControl_Reader(const Handle(XSControl_WorkSession)& theWS,
+ const Standard_Boolean scratch)
{
- STEPControl_Controller::Init();
- SetWS (WS,scratch);
- SetNorm ("STEP");
+ initReader(theWS, new STEPControl_Controller, scratch);
+}
+
+//=======================================================================
+//function : STEPControl_Reader
+//purpose :
+//=======================================================================
+
+STEPControl_Reader::STEPControl_Reader (const Handle(XSControl_WorkSession)& theWS,
+ const Handle(XSControl_Controller)& theController,
+ const Standard_Boolean scratch)
+{
+ initReader(theWS, theController, scratch);
+}
+
+//=======================================================================
+//function : initReader
+//purpose :
+//=======================================================================
+void STEPControl_Reader::initReader(const Handle(XSControl_WorkSession)& theWS,
+ const Handle(XSControl_Controller)& theController,
+ const Standard_Boolean scratch)
+{
+ myController = theController;
+ theWS->SetController(myController);
+ SetWS(theWS, scratch);
+ myController->Init(WS());
+
+ initTransferReader();
}
//=======================================================================
therootsta = Standard_True;
//theroots.Clear();
- Standard_Integer nb = Model()->NbEntities();
+ Handle(StepData_StepModel) aModel = Handle(StepData_StepModel)::DownCast(Model());
+ Standard_Integer nb = aModel->NbEntities();
for (Standard_Integer i = 1; i <= nb; i ++) {
- Handle(Standard_Transient) ent = Model()->Value(i);
- if (Interface_Static::IVal("read.step.all.shapes") == 1) {
+ Handle(Standard_Transient) ent = aModel->Value(i);
+ if (aModel->GetParam("read.step.all.shapes")->IntegerValue() == 1) {
// Special case to read invalid shape_representation without links to shapes.
if (ent->IsKind(STANDARD_TYPE(StepShape_ManifoldSolidBrep))) {
Interface_EntityIterator aShareds = WS()->Graph().Sharings(ent);
}
// determinate roots used ProductDefinitionContext
if(IsRoot) {
- const char *str1 = Interface_Static::CVal("read.step.product.context");
- Standard_Integer ICS = Interface_Static::IVal("read.step.product.context");
+ const char *str1 = aModel->GetParam("read.step.product.context")->CStringValue();
+ Standard_Integer ICS = aModel->GetParam("read.step.product.context")->IntegerValue();
if(ICS>1) {
subs = graph.Shareds(PD);
for(subs.Start(); subs.More(); subs.Next()) {
WS()->TransferReader()->TransientProcess()->RootsForTransfer()->Append(ent);
}
}
- TCollection_AsciiString aProdMode = Interface_Static::CVal("read.step.product.mode");
+ TCollection_AsciiString aProdMode = aModel->GetParam("read.step.product.mode")->CStringValue();
if(!aProdMode.IsEqual("ON")) {
if(ent->IsKind(STANDARD_TYPE(StepShape_ShapeDefinitionRepresentation))) {
Standard_Boolean IsRoot = Standard_True;
#include <XSControl_Reader.hxx>
#include <Standard_Boolean.hxx>
#include <Standard_Integer.hxx>
+#include <STEPControl_Controller.hxx>
#include <TColStd_SequenceOfAsciiString.hxx>
#include <TColStd_Array1OfAsciiString.hxx>
#include <TColStd_Array1OfReal.hxx>
//! As in XSControl_Reader, you specify the list using a selection.
//! For the translation of iges files it is possible to use next sequence:
//! To change translation parameters
-//! class Interface_Static should be used before beginning of
+//! class StepData_StepModel should be used before beginning of
//! translation (see STEP Parameters and General Parameters)
//! Creation of reader - STEPControl_Reader reader;
//! To load s file in a model use method reader.ReadFile("filename.stp")
//! Creates a reader object with an empty STEP model.
Standard_EXPORT STEPControl_Reader();
-
+
+ //! Creates a Reader for STEP from an already existing Session
+ //! Clears the session if it was not yet set for STEP
+ Standard_EXPORT STEPControl_Reader(const Handle(XSControl_WorkSession)& theWS,
+ const Standard_Boolean scratch = Standard_True);
+
//! Creates a Reader for STEP from an already existing Session
//! Clears the session if it was not yet set for STEP
- Standard_EXPORT STEPControl_Reader(const Handle(XSControl_WorkSession)& WS, const Standard_Boolean scratch = Standard_True);
+ Standard_EXPORT STEPControl_Reader(const Handle(XSControl_WorkSession)& theWS,
+ const Handle(XSControl_Controller)& theController,
+ const Standard_Boolean scratch = Standard_True);
//! Returns the model as a StepModel.
//! It can then be consulted (header, product)
//! Returns sequence of all unit names for shape representations
//! found in file
- Standard_EXPORT void FileUnits (TColStd_SequenceOfAsciiString& theUnitLengthNames, TColStd_SequenceOfAsciiString& theUnitAngleNames, TColStd_SequenceOfAsciiString& theUnitSolidAngleNames);
+ Standard_EXPORT void FileUnits (TColStd_SequenceOfAsciiString& theUnitLengthNames,
+ TColStd_SequenceOfAsciiString& theUnitAngleNames,
+ TColStd_SequenceOfAsciiString& theUnitSolidAngleNames);
//! Returns units for length , angle and solidangle for shape representations
- Standard_EXPORT Standard_Boolean findUnits (const Handle(StepRepr_RepresentationContext)& theReprContext, TColStd_Array1OfAsciiString& theNameUnits, TColStd_Array1OfReal& theFactorUnits);
+ Standard_EXPORT Standard_Boolean findUnits (const Handle(StepRepr_RepresentationContext)& theReprContext,
+ TColStd_Array1OfAsciiString& theNameUnits,
+ TColStd_Array1OfReal& theFactorUnits);
+ //!
+ Standard_EXPORT void initReader(const Handle(XSControl_WorkSession)& theWS,
+ const Handle(XSControl_Controller)& theController,
+ const Standard_Boolean scratch = Standard_True);
+ Handle(XSControl_Controller) myController;
};
#include <Interface_Macros.hxx>
#include <Message_ProgressIndicator.hxx>
#include <STEPControl_ActorWrite.hxx>
-#include <STEPControl_Controller.hxx>
#include <STEPControl_Writer.hxx>
#include <StepData_StepModel.hxx>
#include <TopExp_Explorer.hxx>
//=======================================================================
STEPControl_Writer::STEPControl_Writer ()
{
- STEPControl_Controller::Init();
- SetWS (new XSControl_WorkSession);
+ initWriter(new XSControl_WorkSession, new STEPControl_Controller);
}
-
//=======================================================================
//function : STEPControl_Writer
-
//purpose :
//=======================================================================
+STEPControl_Writer::STEPControl_Writer (const Handle(XSControl_WorkSession)& theWS,
+ const Standard_Boolean theScratch)
+{
+ initWriter(theWS, new STEPControl_Controller, theScratch);
+}
-STEPControl_Writer::STEPControl_Writer
- (const Handle(XSControl_WorkSession)& WS, const Standard_Boolean scratch)
+//=======================================================================
+//function : STEPControl_Writer
+//purpose :
+//=======================================================================
+STEPControl_Writer::STEPControl_Writer(const Handle(XSControl_WorkSession)& theWS,
+ const Handle(XSControl_Controller)& theController,
+ const Standard_Boolean theScratch)
{
- STEPControl_Controller::Init();
- SetWS (WS,scratch);
+ initWriter(theWS, theController, theScratch);
}
+//=======================================================================
+//function : initWriter
+//purpose :
+//=======================================================================
+void STEPControl_Writer::initWriter(const Handle(XSControl_WorkSession)& theWS,
+ const Handle(XSControl_Controller)& theController,
+ const Standard_Boolean scratch)
+{
+ myController = theController;
+ theWS->SetController(myController);
+ SetWS(theWS, scratch);
+ myController->Init(WS());
+}
//=======================================================================
//function : SetWS
-
//purpose :
//=======================================================================
thesession = WS;
thesession->SelectNorm("STEP");
thesession->InitTransferReader(0);
- Handle(StepData_StepModel) model = Model (scratch);
+ Handle(StepData_StepModel) aModel = Model (scratch);
+ DeclareAndCast(STEPControl_ActorWrite, anActor, myController->ActorWrite());
+ if (!anActor.IsNull()) anActor->SetModel(aModel);
}
void STEPControl_Writer::SetTolerance (const Standard_Real Tol)
{
- DeclareAndCast(STEPControl_ActorWrite,act,WS()->NormAdaptor()->ActorWrite());
- if (!act.IsNull()) act->SetTolerance (Tol);
+ DeclareAndCast(STEPControl_ActorWrite, anActor, myController->ActorWrite());
+ if (!anActor.IsNull()) anActor->SetTolerance (Tol);
}
progress->Show();
}
- return thesession->TransferWriteShape(sh,compgraph);
+ return thesession->TransferWriteShape(sh, compgraph);
}
#include <Standard_DefineAlloc.hxx>
#include <Standard_Handle.hxx>
+#include <IFSelect_ReturnStatus.hxx>
#include <Standard_Boolean.hxx>
#include <Standard_Real.hxx>
-#include <IFSelect_ReturnStatus.hxx>
-#include <STEPControl_StepModelType.hxx>
#include <Standard_CString.hxx>
#include <Standard_Integer.hxx>
+#include <STEPControl_Controller.hxx>
+#include <STEPControl_StepModelType.hxx>
class XSControl_WorkSession;
class StepData_StepModel;
class TopoDS_Shape;
Standard_EXPORT STEPControl_Writer();
//! Creates a Writer from an already existing Session
- //! If <scratch> is True (D), clears already recorded data
- Standard_EXPORT STEPControl_Writer(const Handle(XSControl_WorkSession)& WS, const Standard_Boolean scratch = Standard_True);
+ //! If <theScratch> is True (D), clears already recorded data
+ Standard_EXPORT STEPControl_Writer(const Handle(XSControl_WorkSession)& WS,
+ const Standard_Boolean theScratch = Standard_True);
+
+ //! Creates a Writer for STEP from an already existing Session
+ //! If <theScratch> is True (D), clears already recorded data
+ Standard_EXPORT STEPControl_Writer(const Handle(XSControl_WorkSession)& theWS,
+ const Handle(XSControl_Controller)& theController,
+ const Standard_Boolean theScratch = Standard_True);
//! Sets a length-measure value that
//! will be written to uncertainty-measure-with-unit
protected:
-
+ //!
+ Standard_EXPORT void initWriter(const Handle(XSControl_WorkSession)& theWS,
+ const Handle(XSControl_Controller)& theController,
+ const Standard_Boolean scratch = Standard_True);
Handle(XSControl_WorkSession) thesession;
+ Handle(XSControl_Controller) myController;
};
#include <StepShape_ExtrudedFaceSolid.hxx>
#include <StepShape_RevolvedFaceSolid.hxx>
#include <StepShape_SweptFaceSolid.hxx>
-#include <Interface_Static.hxx>
#include <StepBasic_AreaUnit.hxx>
#include <StepBasic_VolumeUnit.hxx>
#include <StepBasic_SiUnitAndAreaUnit.hxx>
//purpose :
//=======================================================================
-StepAP214_Protocol::StepAP214_Protocol ()
+StepAP214_Protocol::StepAP214_Protocol () :
+ myShemaName(schemaAP214IS)
{
if (THE_StepAP214_Protocol_init)
{
//purpose :
//=======================================================================
-Standard_CString StepAP214_Protocol::SchemaName() const
-{
- switch (Interface_Static::IVal("write.step.schema")) { //:j4
- default:
- case 1 : return schemaAP214CD; break;
- case 2 : return schemaAP214DIS; break;
- case 3 : return schemaAP203; break;
- case 4: return schemaAP214IS; break;
- case 5 : return schemaAP242DIS; break;
+Standard_CString StepAP214_Protocol::SchemaName(Standard_Integer theShematype)
+{
+ if (theShematype != 0)
+ {
+ switch (theShematype) { //:j4
+ default:
+ case 1: myShemaName = schemaAP214CD; break;
+ case 2: myShemaName = schemaAP214DIS; break;
+ case 3: myShemaName = schemaAP203; break;
+ case 4: myShemaName = schemaAP214IS; break;
+ case 5: myShemaName = schemaAP242DIS; break;
+ }
}
+ return myShemaName;
}
-
//=======================================================================
//function : NbResources
//purpose :
//! Returns a Case Number for each of the StepAP214 Entities
Standard_EXPORT virtual Standard_Integer TypeNumber (const Handle(Standard_Type)& atype) const Standard_OVERRIDE;
- Standard_EXPORT virtual Standard_CString SchemaName() const Standard_OVERRIDE;
+ Standard_EXPORT virtual Standard_CString SchemaName(Standard_Integer theShematype = 0) Standard_OVERRIDE;
//! Returns count of Protocol used as Resources (level one)
Standard_EXPORT virtual Standard_Integer NbResources() const Standard_OVERRIDE;
private:
-
-
+ Standard_CString myShemaName;
};
// svv #2 23.02.00: porting on SIL
#include <Interface_Macros.hxx>
-#include <Interface_Static.hxx>
#include <Interface_Statics.hxx>
#include <StepData.hxx>
#include <StepData_DefaultGeneral.hxx>
{
// InitHandleVoid(StepData_Protocol,proto);
// InitHandleVoid(StepData_DefaultGeneral,stmod);
-//:S4136 Interface_Static::Init("step","step.readaccept.void",'i',"1");
// if (proto.IsNull()) proto = new StepData_Protocol;
// if (stmod.IsNull()) stmod = new StepData_DefaultGeneral;
}
StepData_WriterLib::SetGlobal (rwm,this);
}
- Standard_CString StepData_DescrProtocol::SchemaName () const
+ Standard_CString StepData_DescrProtocol::SchemaName (Standard_Integer /*theShematype*/)
{ return thename.ToCString(); }
//! Returns the Schema Name attached to each class of Protocol
//! here, returns the SchemaName set by SetSchemaName
//! was C++ : return const
- Standard_EXPORT virtual Standard_CString SchemaName() const Standard_OVERRIDE;
+ Standard_EXPORT virtual Standard_CString SchemaName(Standard_Integer theShematype) Standard_OVERRIDE;
}
- Standard_CString StepData_FileProtocol::SchemaName () const
+ Standard_CString StepData_FileProtocol::SchemaName (Standard_Integer /*theShematype*/)
{ return thename; }
//! To be redefined by each sub-class
//! Here, SchemaName returns "" (empty String)
//! was C++ : return const
- Standard_EXPORT virtual Standard_CString SchemaName() const Standard_OVERRIDE;
+ Standard_EXPORT virtual Standard_CString SchemaName(Standard_Integer theShematype) Standard_OVERRIDE;
}
-Standard_CString StepData_Protocol::SchemaName () const
+Standard_CString StepData_Protocol::SchemaName (Standard_Integer /*theShematype*/)
{
return thename;
}
-
Handle(Interface_InterfaceModel) StepData_Protocol::NewModel () const
{
return new StepData_StepModel;
//! To be redefined by each sub-class
//! Here, SchemaName returns "(DEFAULT)"
//! was C++ : return const
- Standard_EXPORT virtual Standard_CString SchemaName() const;
+ Standard_EXPORT virtual Standard_CString SchemaName(Standard_Integer theShematype = 0);
//! Creates an empty Model for Step Norm
Standard_EXPORT Handle(Interface_InterfaceModel) NewModel() const Standard_OVERRIDE;
IMPLEMENT_STANDARD_RTTIEXT(StepData_StepModel,Interface_InterfaceModel)
// Entete de fichier : liste d entites
-StepData_StepModel::StepData_StepModel () { }
+StepData_StepModel::StepData_StepModel ()
+{
+ initParameters();
+}
+//=======================================================================
+//function : initParameters
+//purpose :
+//=======================================================================
+void StepData_StepModel::initParameters()
+{
+ //for each created item, value from static map should be
+ //checked, if static map is bound with this parameter than get value from static
+ Handle(Interface_Static) aStaticItem;
+ Handle(Interface_Static) anItem = new Interface_Static("step", "write.step.product.name", Interface_ParamText, "");
+ myParamMap.Bind("write.step.product.name", anItem);
+
+ anItem = new Interface_Static("step", "write.step.assembly", Interface_ParamEnum, "");
+ Interface_Static::InitValues(anItem, "enum 0");
+ Interface_Static::InitValues(anItem, "eval Off");
+ Interface_Static::InitValues(anItem, "eval On");
+ Interface_Static::InitValues(anItem, "eval Auto");
+ aStaticItem = Interface_Static::Static("write.step.assembly");
+ anItem->SetCStringValue(aStaticItem.IsNull() ? "Auto" : aStaticItem->CStringValue());
+ myParamMap.Bind("write.step.assembly", anItem);
+
+ anItem = new Interface_Static("step", "step.angleunit.mode", Interface_ParamEnum, "");
+ Interface_Static::InitValues(anItem, "enum 0");
+ Interface_Static::InitValues(anItem, "eval File");
+ Interface_Static::InitValues(anItem, "eval Rad");
+ Interface_Static::InitValues(anItem, "eval Deg");
+ aStaticItem = Interface_Static::Static("step.angleunit.mode");
+ anItem->SetCStringValue(aStaticItem.IsNull() ? "File" : aStaticItem->CStringValue());
+ myParamMap.Bind("step.angleunit.mode", anItem);
+
+ anItem = new Interface_Static("step", "write.step.schema", Interface_ParamEnum, "");
+ Interface_Static::InitValues(anItem, "enum 1");
+ Interface_Static::InitValues(anItem, "eval AP214CD");
+ Interface_Static::InitValues(anItem, "eval AP214DIS");
+ Interface_Static::InitValues(anItem, "eval AP203");
+ Interface_Static::InitValues(anItem, "eval AP214IS");
+ Interface_Static::InitValues(anItem, "eval AP242DIS");
+ aStaticItem = Interface_Static::Static("write.step.schema");
+ anItem->SetCStringValue(aStaticItem.IsNull() ? "AP214IS" : aStaticItem->CStringValue());
+ myParamMap.Bind("write.step.schema", anItem);
+
+ // Type of Product Definition for reading
+ // Note: the numbers should be consistent with function FindShapeReprType()
+ // in STEPControl_ActorRead.cxx
+ anItem = new Interface_Static("step", "read.step.shape.repr", Interface_ParamEnum, "");
+ Interface_Static::InitValues(anItem, "enum 1");
+ Interface_Static::InitValues(anItem, "eval All"); // 1
+ Interface_Static::InitValues(anItem, "eval ABSR"); // 2
+ Interface_Static::InitValues(anItem, "eval MSSR"); // 3
+ Interface_Static::InitValues(anItem, "eval GBSSR"); // 4
+ Interface_Static::InitValues(anItem, "eval FBSR"); // 5
+ Interface_Static::InitValues(anItem, "eval EBWSR"); // 6
+ Interface_Static::InitValues(anItem, "eval GBWSR"); // 7
+ aStaticItem = Interface_Static::Static("read.step.shape.repr");
+ anItem->SetCStringValue(aStaticItem.IsNull() ? "All" : aStaticItem->CStringValue());
+ myParamMap.Bind("read.step.shape.repr", anItem);
+
+ // Mode for reading shapes attached to main SDR by SRR
+ // (hybrid model representation in AP203 since 1998)
+ anItem = new Interface_Static("step", "read.step.shape.relationship", Interface_ParamEnum, "");
+ Interface_Static::InitValues(anItem, "enum 0");
+ Interface_Static::InitValues(anItem, "eval OFF");
+ Interface_Static::InitValues(anItem, "eval ON");
+ aStaticItem = Interface_Static::Static("read.step.shape.relationship");
+ anItem->SetCStringValue(aStaticItem.IsNull() ? "ON" : aStaticItem->CStringValue());
+ myParamMap.Bind("read.step.shape.relationship", anItem);
+
+ // Mode for reading shapes attached to Product by ShapeAspect
+ // (hybrid model representation in AP203 before 1998)
+ anItem = new Interface_Static("step", "read.step.shape.aspect", Interface_ParamEnum, "");
+ Interface_Static::InitValues(anItem, "enum 0");
+ Interface_Static::InitValues(anItem, "eval OFF");
+ Interface_Static::InitValues(anItem, "eval ON");
+ aStaticItem = Interface_Static::Static("read.step.shape.aspect");
+ anItem->SetCStringValue(aStaticItem.IsNull() ? "ON" : aStaticItem->CStringValue());
+ myParamMap.Bind("read.step.shape.aspect", anItem);
+
+ // Mode for reading SDR and ShapeRepr if it is necessary
+ anItem = new Interface_Static("step", "read.step.product.mode", Interface_ParamEnum, "");
+ Interface_Static::InitValues(anItem, "enum 0");
+ Interface_Static::InitValues(anItem, "eval OFF");
+ Interface_Static::InitValues(anItem, "eval ON");
+ aStaticItem = Interface_Static::Static("read.step.product.mode");
+ anItem->SetCStringValue(aStaticItem.IsNull() ? "ON" : aStaticItem->CStringValue());
+ myParamMap.Bind("read.step.product.mode", anItem);
+
+ // Order of reading ShapeDefinitionRepresentation in ProductDefinition
+ anItem = new Interface_Static("step", "read.step.product.context", Interface_ParamEnum, "");
+ Interface_Static::InitValues(anItem, "enum 1");
+ Interface_Static::InitValues(anItem, "eval all"); // 1
+ Interface_Static::InitValues(anItem, "eval design"); // 2
+ Interface_Static::InitValues(anItem, "eval analysis");// 3
+ aStaticItem = Interface_Static::Static("read.step.product.context");
+ anItem->SetCStringValue(aStaticItem.IsNull() ? "all" : aStaticItem->CStringValue());
+ myParamMap.Bind("read.step.product.context", anItem);
+
+ // What we try to read in ProductDefinition
+ anItem = new Interface_Static("step", "read.step.assembly.level", Interface_ParamEnum, "");
+ Interface_Static::InitValues(anItem, "enum 1");
+ Interface_Static::InitValues(anItem, "eval all"); // 1
+ Interface_Static::InitValues(anItem, "eval assembly"); // 2
+ Interface_Static::InitValues(anItem, "eval structure");// 3
+ Interface_Static::InitValues(anItem, "eval shape"); // 4
+ aStaticItem = Interface_Static::Static("read.step.assembly.level");
+ anItem->SetCStringValue(aStaticItem.IsNull() ? "all" : aStaticItem->CStringValue());
+ myParamMap.Bind("read.step.assembly.level", anItem);
+
+ // unit: supposed to be cascade unit (target unit for reading)
+ anItem = new Interface_Static("step", "write.step.unit", Interface_ParamEnum, "");
+ Interface_Static::InitValues(anItem, "enum 1");
+ Interface_Static::InitValues(anItem, "eval INCH"); // 1
+ Interface_Static::InitValues(anItem, "eval MM"); // 2
+ Interface_Static::InitValues(anItem, "eval ??"); // 3
+ Interface_Static::InitValues(anItem, "eval FT"); // 4
+ Interface_Static::InitValues(anItem, "eval MI"); // 5
+ Interface_Static::InitValues(anItem, "eval M"); // 6
+ Interface_Static::InitValues(anItem, "eval KM"); // 7
+ Interface_Static::InitValues(anItem, "eval MIL"); // 8
+ Interface_Static::InitValues(anItem, "eval UM"); // 9
+ Interface_Static::InitValues(anItem, "eval CM"); //10
+ Interface_Static::InitValues(anItem, "eval UIN"); //11
+ aStaticItem = Interface_Static::Static("write.step.unit");
+ anItem->SetCStringValue(aStaticItem.IsNull() ? "MM" : aStaticItem->CStringValue());
+ myParamMap.Bind("write.step.unit", anItem);
+
+ // Non-manifold topology reading: OFF by default (ssv; 26.11.2010)
+ anItem = new Interface_Static("step", "read.step.nonmanifold", Interface_ParamEnum, "");
+ Interface_Static::InitValues(anItem, "enum 0");
+ Interface_Static::InitValues(anItem, "eval Off");
+ Interface_Static::InitValues(anItem, "eval On");
+ aStaticItem = Interface_Static::Static("read.step.nonmanifold");
+ anItem->SetIntegerValue(aStaticItem.IsNull() ? 0 : aStaticItem->IntegerValue());
+ myParamMap.Bind("read.step.nonmanifold", anItem);
+
+ // Non-manifold topology writing: OFF by default (ssv; 26.11.2010)
+ anItem = new Interface_Static("step", "write.step.nonmanifold", Interface_ParamEnum, "");
+ Interface_Static::InitValues(anItem, "enum 0");
+ Interface_Static::InitValues(anItem, "eval Off");
+ Interface_Static::InitValues(anItem, "eval On");
+ aStaticItem = Interface_Static::Static("write.step.nonmanifold");
+ anItem->SetIntegerValue(aStaticItem.IsNull() ? 0 : aStaticItem->IntegerValue());
+ myParamMap.Bind("write.step.nonmanifold", anItem);
+
+ // I-Deas-like STEP processing: OFF by default (ssv; 22.11.2010)
+ anItem = new Interface_Static("step", "read.step.ideas", Interface_ParamEnum, "");
+ Interface_Static::InitValues(anItem, "enum 0");
+ Interface_Static::InitValues(anItem, "eval Off");
+ Interface_Static::InitValues(anItem, "eval On");
+ aStaticItem = Interface_Static::Static("read.step.ideas");
+ anItem->SetIntegerValue(aStaticItem.IsNull() ? 0 : aStaticItem->IntegerValue());
+ myParamMap.Bind("read.step.ideas", anItem);
+
+ //Parameter to write all free vertices in one SDR (name and style of vertex are lost) (default)
+ //or each vertex in its own SDR (name and style of vertex are exported). (ika; 21.07.2014)
+ anItem = new Interface_Static("step", "write.step.vertex.mode", Interface_ParamEnum, "");
+ Interface_Static::InitValues(anItem, "enum 0");
+ Interface_Static::InitValues(anItem, "eval One Compound");
+ Interface_Static::InitValues(anItem, "eval Single Vertex");
+ aStaticItem = Interface_Static::Static("write.step.vertex.mode");
+ anItem->SetIntegerValue(aStaticItem.IsNull() ? 0 : aStaticItem->IntegerValue());
+ myParamMap.Bind("write.step.vertex.mode", anItem);
+
+ // abv 15.11.00: ShapeProcessing
+ anItem = new Interface_Static("XSTEP", "write.step.resource.name", Interface_ParamText, "STEP");
+ myParamMap.Bind("write.step.resource.name", anItem);
+ anItem = new Interface_Static("XSTEP", "read.step.resource.name", Interface_ParamText, "STEP");
+ myParamMap.Bind("read.step.resource.name", anItem);
+ anItem = new Interface_Static("XSTEP", "write.step.sequence", Interface_ParamText, "ToSTEP");
+ myParamMap.Bind("write.step.sequence", anItem);
+ anItem = new Interface_Static("XSTEP", "read.step.sequence", Interface_ParamText, "FromSTEP");
+ myParamMap.Bind("read.step.sequence", anItem);
+
+ // ika 28.07.16: Paremeter to read all top level solids and shells,
+ // should be used only in case of invalid shape_representation without links to shapes.
+ anItem = new Interface_Static("step", "read.step.all.shapes", Interface_ParamEnum, "");
+ Interface_Static::InitValues(anItem, "enum 0");
+ Interface_Static::InitValues(anItem, "eval Off");
+ Interface_Static::InitValues(anItem, "eval On");
+ aStaticItem = Interface_Static::Static("read.step.all.shapes");
+ anItem->SetIntegerValue(aStaticItem.IsNull() ? 0 : aStaticItem->IntegerValue());
+ myParamMap.Bind("read.step.all.shapes", anItem);
+
+ //--------------------------------------------------------------------------------
+ //From Base Class
+ anItem = new Interface_Static("XSTEP", "read.precision.mode", Interface_ParamEnum, "");
+ Interface_Static::InitValues(anItem, "ematch 0");
+ Interface_Static::InitValues(anItem, "eval File");
+ Interface_Static::InitValues(anItem, "eval User");
+ anItem->SetIntegerValue(0);
+ aStaticItem = Interface_Static::Static("read.precision.mode");
+ anItem->SetIntegerValue(aStaticItem.IsNull() ? 0 : aStaticItem->IntegerValue());
+ myParamMap.Bind("read.precision.mode", anItem);
+
+ anItem = new Interface_Static("XSTEP", "read.precision.val", Interface_ParamReal, "1.e-03");
+ myParamMap.Bind("read.precision.val", anItem);
+
+ anItem = new Interface_Static("XSTEP", "read.maxprecision.mode", Interface_ParamEnum, "");
+ Interface_Static::InitValues(anItem, "ematch 0");
+ Interface_Static::InitValues(anItem, "eval Preferred");
+ Interface_Static::InitValues(anItem, "eval Forced");
+ aStaticItem = Interface_Static::Static("read.maxprecision.mode");
+ anItem->SetIntegerValue(aStaticItem.IsNull() ? 0 : aStaticItem->IntegerValue());
+ myParamMap.Bind("read.maxprecision.mode", anItem);
+
+ anItem = new Interface_Static("XSTEP", "read.maxprecision.val", Interface_ParamReal, "1.");
+ myParamMap.Bind("read.maxprecision.val", anItem);
+
+ // encode regularity
+ // negatif ou nul : ne rien faire. positif : on y va
+ anItem = new Interface_Static("XSTEP", "read.encoderegularity.angle", Interface_ParamReal, "0.01");
+ myParamMap.Bind("read.encoderegularity.angle", anItem);
+
+ // compute surface curves
+ // 0 : par defaut. 2 : ne garder que le 2D. 3 : ne garder que le 3D
+ //gka S4054
+ anItem = new Interface_Static("XSTEP", "read.surfacecurve.mode", Interface_ParamEnum, "");
+ Interface_Static::InitValues(anItem, "ematch -3");
+ Interface_Static::InitValues(anItem, "eval 3DUse_Forced");
+ Interface_Static::InitValues(anItem, "eval 2DUse_Forced");
+ Interface_Static::InitValues(anItem, "eval ?");
+ Interface_Static::InitValues(anItem, "eval Default");
+ Interface_Static::InitValues(anItem, "eval ?");
+ Interface_Static::InitValues(anItem, "eval 2DUse_Preferred");
+ Interface_Static::InitValues(anItem, "eval 3DUse_Preferred");
+ aStaticItem = Interface_Static::Static("read.surfacecurve.mode");
+ anItem->SetIntegerValue(aStaticItem.IsNull() ? 0 : aStaticItem->IntegerValue());
+ myParamMap.Bind("read.surfacecurve.mode", anItem);
+
+ // write precision
+ anItem = new Interface_Static("XSTEP", "write.precision.mode", Interface_ParamEnum, "");
+ Interface_Static::InitValues(anItem, "ematch -1");
+ Interface_Static::InitValues(anItem, "eval Min");
+ Interface_Static::InitValues(anItem, "eval Average");
+ Interface_Static::InitValues(anItem, "eval Max");
+ Interface_Static::InitValues(anItem, "eval User");
+ aStaticItem = Interface_Static::Static("write.precision.mode");
+ anItem->SetIntegerValue(aStaticItem.IsNull() ? 0 : aStaticItem->IntegerValue());
+ myParamMap.Bind("write.precision.mode", anItem);
+
+ anItem = new Interface_Static("XSTEP", "write.precision.val", Interface_ParamReal, "1.e-03");
+ myParamMap.Bind("write.precision.val", anItem);
+
+ // Write surface curves
+ // 0: write (defaut), 1: do not write, 2: write except for analytical surfaces
+ anItem = new Interface_Static("XSTEP", "write.surfacecurve.mode", Interface_ParamEnum, "");
+ Interface_Static::InitValues(anItem, "ematch 0");
+ Interface_Static::InitValues(anItem, "eval Off");
+ Interface_Static::InitValues(anItem, "eval On");
+ //Interface_Static::InitValues(anItem,"eval NoAnalytic");
+ aStaticItem = Interface_Static::Static("write.surfacecurve.mode");
+ anItem->SetIntegerValue(aStaticItem.IsNull() ? 1 : aStaticItem->IntegerValue());
+ myParamMap.Bind("write.surfacecurve.mode", anItem);
+ //--------------------------------------------------------------------------------
+
+ //#74 rln 10.03.99 S4135: adding new parameter for handling use of BRepLib::SameParameter
+ anItem = new Interface_Static("XSTEP", "read.stdsameparameter.mode", Interface_ParamEnum, "");
+ Interface_Static::InitValues(anItem, "ematch 0");
+ Interface_Static::InitValues(anItem, "eval Off");
+ Interface_Static::InitValues(anItem, "eval On");
+ aStaticItem = Interface_Static::Static("read.stdsameparameter.mode");
+ anItem->SetIntegerValue(aStaticItem.IsNull() ? 0 : aStaticItem->IntegerValue());
+ myParamMap.Bind("read.stdsameparameter.mode", anItem);
+
+ // unit: supposed to be cascade unit (target unit for reading)
+ anItem = new Interface_Static("XSTEP", "xstep.cascade.unit", Interface_ParamEnum, "");
+ Interface_Static::InitValues(anItem, "enum 1");
+ Interface_Static::InitValues(anItem, "eval INCH"); // 1
+ Interface_Static::InitValues(anItem, "eval MM"); // 2
+ Interface_Static::InitValues(anItem, "eval ??"); // 3
+ Interface_Static::InitValues(anItem, "eval FT"); // 4
+ Interface_Static::InitValues(anItem, "eval MI"); // 5
+ Interface_Static::InitValues(anItem, "eval M"); // 6
+ Interface_Static::InitValues(anItem, "eval KM"); // 7
+ Interface_Static::InitValues(anItem, "eval MIL"); // 8
+ Interface_Static::InitValues(anItem, "eval UM"); // 9
+ Interface_Static::InitValues(anItem, "eval CM"); //10
+ Interface_Static::InitValues(anItem, "eval UIN"); //11
+ aStaticItem = Interface_Static::Static("xstep.cascade.unit");
+ anItem->SetCStringValue(aStaticItem.IsNull() ? "MM" : aStaticItem->CStringValue());
+ myParamMap.Bind("xstep.cascade.unit", anItem);
+
+ //-----------------------------------------------------------
+ // Few variables for advanced control of translation process
+ //-----------------------------------------------------------
+
+ // Indicates whether to write sub-shape names to 'Name' attributes of
+ // STEP Representation Items
+ anItem = new Interface_Static("stepcaf", "write.stepcaf.subshapes.name", Interface_ParamEnum, "");
+ Interface_Static::InitValues(anItem, "enum 0");
+ Interface_Static::InitValues(anItem, "eval Off"); // 0
+ Interface_Static::InitValues(anItem, "eval On"); // 1
+ aStaticItem = Interface_Static::Static("write.stepcaf.subshapes.name");
+ anItem->SetIntegerValue(aStaticItem.IsNull() ? 0 : aStaticItem->IntegerValue());
+ myParamMap.Bind("write.stepcaf.subshapes.name", anItem);
+
+ // Indicates whether to read sub-shape names from 'Name' attributes of
+ // STEP Representation Items
+ anItem = new Interface_Static("stepcaf", "read.stepcaf.subshapes.name", Interface_ParamEnum, "");
+ Interface_Static::InitValues(anItem, "enum 0");
+ Interface_Static::InitValues(anItem, "eval Off"); // 0
+ Interface_Static::InitValues(anItem, "eval On"); // 1
+ aStaticItem = Interface_Static::Static("read.stepcaf.subshapes.name");
+ anItem->SetIntegerValue(aStaticItem.IsNull() ? 0 : aStaticItem->IntegerValue());
+ myParamMap.Bind("read.stepcaf.subshapes.name", anItem);
+}
Handle(Standard_Transient) StepData_StepModel::Entity
(const Standard_Integer num) const
#include <Interface_EntityList.hxx>
#include <TColStd_HArray1OfInteger.hxx>
#include <Interface_InterfaceModel.hxx>
+#include <Interface_Protocol.hxx>
+#include <Interface_Static.hxx>
#include <Standard_Integer.hxx>
#include <Standard_Boolean.hxx>
#include <Standard_Type.hxx>
//! Creates an empty STEP model with an empty header.
Standard_EXPORT StepData_StepModel();
-
+
//! returns entity given its rank.
//! Same as InterfaceEntity, but with a shorter name
Standard_EXPORT Handle(Standard_Transient) Entity (const Standard_Integer num) const;
-
DEFINE_STANDARD_RTTIEXT(StepData_StepModel,Interface_InterfaceModel)
protected:
+ //! Initialises all non-static parameters used in translations
+ Standard_EXPORT void initParameters();
#include <Interface_HArray1OfHAsciiString.hxx>
#include <Interface_Macros.hxx>
#include <Interface_ParamList.hxx>
-#include <Interface_Static.hxx>
#include <Message.hxx>
#include <Message_Messenger.hxx>
#include <Standard_Transient.hxx>
thenbscop = 0; thenbents = 0; thelastn = 0; thenbhead = nbheader;
//themults.Init(0);
thecheck = new Interface_Check;
-//:S4136 acceptvoid = Interface_Static::IVal("step.readaccept.void");
if (initstr) return;
//for (Standard_Integer i = 0; i < Maxlst; i ++) {
// sprintf(textnum,"$%d",i+1);
Standard_CString StepSelect_StepType::Value
(const Handle(Standard_Transient)& ent,
- const Handle(Interface_InterfaceModel)& /*model*/) const
+ const Handle(Interface_InterfaceModel)& model) const
{
lastvalue.Clear();
Handle(StepData_ReadWriteModule) module;
Standard_Boolean ok = thelib.Select (ent,module,CN);
if (!ok) {
lastvalue.AssignCat ("..NOT FROM SCHEMA ");
- lastvalue.AssignCat (theproto->SchemaName());
+ Standard_Integer aval = model->GetParam("write.step.schema").IsNull() ?
+ 0 : model->GetParam("write.step.schema")->IntegerValue();
+ lastvalue.AssignCat (theproto->SchemaName(aval));
lastvalue.AssignCat ("..");
} else {
Standard_Boolean plex = module->IsComplex(CN);
const BRepBuilderAPI_MakeFace aBFace(aBasisSurface, Precision::Confusion());
if (aBFace.IsDone())
{
- const TopoDS_Shape aResult = ShapeAlgo::AlgoContainer()->C0ShapeToC1Shape(aBFace.Face(), Abs(anOffset));
+ Handle(ShapeAlgo_AlgoContainer) aContainer = new ShapeAlgo_AlgoContainer;
+ const TopoDS_Shape aResult = aContainer->C0ShapeToC1Shape(aBFace.Face(), Abs(anOffset));
if (aResult.ShapeType() == TopAbs_FACE)
{
aBasisSurface = BRep_Tool::Surface(TopoDS::Face(aResult));
#include <Geom_Curve.hxx>
#include <Geom_RectangularTrimmedSurface.hxx>
#include <Geom_Surface.hxx>
-#include <Interface_Static.hxx>
#include <Message_Messenger.hxx>
#include <Message_ProgressSentry.hxx>
#include <Precision.hxx>
#include <TransferBRep.hxx>
#include <stdio.h>
-static void ResetPreci (const TopoDS_Shape& S, Standard_Real maxtol)
+static void ResetPreci (const TopoDS_Shape& S,
+ Standard_Real maxtol,
+ const Handle(Interface_InterfaceModel)& theModel)
{
//:S4136
- Standard_Integer modetol = Interface_Static::IVal("read.maxprecision.mode");
+ Standard_Integer modetol = theModel->GetParam("read.maxprecision.mode")->IntegerValue();
if (modetol) {
ShapeFix_ShapeTolerance STU;
STU.LimitTolerance (S,Precision::Confusion(),maxtol);
}
//:S4136 ShapeFix::SameParameter (S,Standard_False);
- ResetPreci (S, MaxTol());
+ ResetPreci (S, MaxTol(), TP->Model());
}
else {
TP->AddWarning(aShell," OuterShell from ManifoldSolidBrep not mapped to TopoDS");
}
//:S4136 ShapeFix::SameParameter (S,Standard_False);
- ResetPreci (S, MaxTol());
+ ResetPreci (S, MaxTol(), TP->Model());
}
// ============================================================================
}
//:S4136 ShapeFix::SameParameter (S,Standard_False);
- ResetPreci (S, MaxTol());
- ResetPreci (Shl, MaxTol()); //skl
+ ResetPreci (S, MaxTol(), TP->Model());
+ ResetPreci (Shl, MaxTol(), TP->Model()); //skl
}
// ============================================================================
myError = ( myResult.IsNull() ? StepToTopoDS_BuilderDone : StepToTopoDS_BuilderOther );
done = ! myResult.IsNull();
- ResetPreci (myResult, MaxTol());
+ ResetPreci (myResult, MaxTol(), TP->Model());
}
// ============================================================================
myError = ( myResult.IsNull() ? StepToTopoDS_BuilderDone : StepToTopoDS_BuilderOther );
done = ! myResult.IsNull();
- ResetPreci (myResult, MaxTol());
+ ResetPreci (myResult, MaxTol(), TP->Model());
}
#include <Geom2d_Curve.hxx>
#include <Geom_Curve.hxx>
#include <Geom_Surface.hxx>
-#include <Interface_Static.hxx>
+#include <Interface_InterfaceModel.hxx>
#include <Precision.hxx>
#include <ShapeExtend_WireData.hxx>
#include <ShapeFix_Wire.hxx>
//=======================================================================
Standard_Boolean StepToTopoDS_TranslateCompositeCurve::Init (const Handle(StepGeom_CompositeCurve) &CC,
- const Handle(Transfer_TransientProcess) &TP,
- const Handle(StepGeom_Surface) &S,
- const Handle(Geom_Surface) &Surf)
+ const Handle(Transfer_TransientProcess) &TP,
+ const Handle(StepGeom_Surface) &S,
+ const Handle(Geom_Surface) &Surf)
{
myWire.Nullify();
myInfiniteSegment = Standard_False;
Standard_Boolean isClosed = Standard_False;
if ( SurfMode ) {
- Standard_Integer modepcurve = Interface_Static::IVal("read.surfacecurve.mode");
+ Standard_Integer modepcurve = TP->Model()->GetParam("read.surfacecurve.mode")->IntegerValue();
if ( modepcurve ==-3 ) SurfMode = Standard_False;
}
// abv 30.06.00: trj4_k1_geo-tu.stp #108: do as in TranslateFace
// pdn to force bsplsurf to be periodic
Handle(StepGeom_BSplineSurface) sgbss = Handle(StepGeom_BSplineSurface)::DownCast(S);
- if (!sgbss.IsNull()) {
- Handle(Geom_Surface) periodicSurf = ShapeAlgo::AlgoContainer()->ConvertToPeriodic(Surf);
+ if (!sgbss.IsNull())
+ {
+ Handle(ShapeAlgo_AlgoContainer) aContainer = new ShapeAlgo_AlgoContainer;
+ Handle(Geom_Surface) periodicSurf = aContainer->ConvertToPeriodic(Surf);
if (!periodicSurf.IsNull()) {
TP->AddWarning(S, "Surface forced to be periodic");
Surf = periodicSurf;
#include <Geom_Surface.hxx>
#include <gp_Pnt.hxx>
#include <gp_Pnt2d.hxx>
-#include <Interface_Static.hxx>
#include <Precision.hxx>
#include <ShapeAlgo.hxx>
#include <ShapeAlgo_AlgoContainer.hxx>
#include <ShapeFix_EdgeProjAux.hxx>
#include <Standard_ErrorHandler.hxx>
#include <StdFail_NotDone.hxx>
+#include <StepData_StepModel.hxx>
#include <StepGeom_Curve.hxx>
#include <StepGeom_Pcurve.hxx>
#include <StepGeom_PcurveOrSurface.hxx>
// advanced check
- XSAlgo::AlgoContainer()->CheckPCurve (myEdge, aFace, preci, sbwd->IsSeam(i) );
+ Handle(XSAlgo_AlgoContainer) aContainer = new XSAlgo_AlgoContainer;
+ aContainer->CheckPCurve (myEdge, aFace, preci, sbwd->IsSeam(i) );
}
}
done = Standard_True;
return;
}
- Standard_Integer modepcurve = Interface_Static::IVal("read.surfacecurve.mode");
+ Handle(StepData_StepModel) aModel =
+ Handle(StepData_StepModel)::DownCast(aTool.TransientProcess()->Model());
+
+ Standard_Integer modepcurve = aModel->GetParam("read.surfacecurve.mode")->IntegerValue();
// 0,1 : suivre le code, 2 : ne prendre que pcurve, 3 : ne prendre que C3D
BRep_Builder B;
if (!aTool.ComputePCurve())
for (TopoDS_Iterator EdgeIt(W);EdgeIt.More();EdgeIt.Next()){
TopoDS_Edge edge = TopoDS::Edge(EdgeIt.Value());
- Handle(ShapeFix_EdgeProjAux) myEdgePro = ShapeAlgo::AlgoContainer()->ToolContainer()->EdgeProjAux();
+ Handle(ShapeAlgo_AlgoContainer) aContainer = new ShapeAlgo_AlgoContainer;
+ Handle(ShapeFix_EdgeProjAux) myEdgePro =aContainer->ToolContainer()->EdgeProjAux();
myEdgePro->Init (Face, edge);
myEdgePro->Compute(preci);
if (myEdgePro->IsFirstDone() && myEdgePro->IsLastDone()) {
}
// pdn to force bsplsurf to be periodic
Handle(StepGeom_BSplineSurface) sgbss = Handle(StepGeom_BSplineSurface)::DownCast(StepSurf);
- if (!sgbss.IsNull()) {
- Handle(Geom_Surface) periodicSurf = ShapeAlgo::AlgoContainer()->ConvertToPeriodic(GeomSurf);
+ if (!sgbss.IsNull())
+ {
+ Handle(ShapeAlgo_AlgoContainer) aContainer = new ShapeAlgo_AlgoContainer;
+ Handle(Geom_Surface) periodicSurf = aContainer->ConvertToPeriodic(GeomSurf);
if (!periodicSurf.IsNull()) {
TP->AddWarning(StepSurf, "Surface forced to be periodic");
GeomSurf = periodicSurf;
#include <BRepClass3d.hxx>
#include <MoniTool_DataMapOfShapeTransient.hxx>
#include <StdFail_NotDone.hxx>
+#include <Interface_InterfaceModel.hxx>
#include <StepShape_BrepWithVoids.hxx>
#include <StepShape_ClosedShell.hxx>
#include <StepShape_HArray1OfOrientedClosedShell.hxx>
CurrentShell.Reverse();
//:d7 abv 16 Mar 98: try to treat 'open' shells as closed since flag
// IsClosed() is often incorrect (taken from MakeManifoldSolid(Solid))
- aTool.Init(aMap, Standard_False);
+ aTool.Init(aMap, Standard_False, FP->Model()->GetParam("write.surfacecurve.mode")->IntegerValue());
StepB.Init(CurrentShell, aTool, FP);
TopoDSToStep::AddResult ( FP, aTool );
if (StepB.IsDone()) {
#include <BRepClass3d.hxx>
#include <StdFail_NotDone.hxx>
+#include <Interface_InterfaceModel.hxx>
#include <StepShape_ClosedShell.hxx>
#include <StepShape_FacetedBrep.hxx>
#include <StepShape_TopologicalRepresentationItem.hxx>
if (aShell.Closed()) {
Handle(StepShape_TopologicalRepresentationItem) aItem;
MoniTool_DataMapOfShapeTransient aMap;
-
- TopoDSToStep_Tool aTool(aMap, Standard_True);
+ TopoDSToStep_Tool aTool(aMap,
+ Standard_True,
+ FP->Model()->GetParam("write.surfacecurve.mode")->IntegerValue());
TopoDSToStep_Builder StepB(aShell, aTool, FP);
TopoDSToStep::AddResult ( FP, aTool );
if (aOuterShell.Closed()) {
Handle(StepShape_TopologicalRepresentationItem) aItem;
MoniTool_DataMapOfShapeTransient aMap;
-
- TopoDSToStep_Tool aTool(aMap, Standard_True);
+ TopoDSToStep_Tool aTool(aMap,
+ Standard_True,
+ FP->Model()->GetParam("write.surfacecurve.mode")->IntegerValue());
TopoDSToStep_Builder StepB(aOuterShell, aTool, FP);
TopoDSToStep::AddResult ( FP, aTool );
#include <BRepClass3d.hxx>
#include <MoniTool_DataMapOfShapeTransient.hxx>
#include <StdFail_NotDone.hxx>
+#include <Interface_InterfaceModel.hxx>
#include <StepShape_ClosedShell.hxx>
#include <StepShape_FacetedBrepAndBrepWithVoids.hxx>
#include <StepShape_HArray1OfOrientedClosedShell.hxx>
TopoDS_Shell CurrentShell = TopoDS::Shell(It.Value());
if (It.Value().Closed()) {
- aTool.Init(aMap, Standard_False);
+ aTool.Init(aMap, Standard_False, FP->Model()->GetParam("write.surfacecurve.mode")->IntegerValue());
StepB.Init(CurrentShell, aTool, FP);
TopoDSToStep::AddResult ( FP, aTool );
#include <MoniTool_DataMapOfShapeTransient.hxx>
#include <StdFail_NotDone.hxx>
+#include <Interface_InterfaceModel.hxx>
#include <StepShape_GeometricCurveSet.hxx>
#include <StepShape_GeometricSetSelect.hxx>
#include <StepShape_HArray1OfGeometricSetSelect.hxx>
done = Standard_False;
Handle(TColStd_HSequenceOfTransient) itemList;
MoniTool_DataMapOfShapeTransient aMap;
- TopoDSToStep_Tool aTool (aMap, Standard_False);
+ TopoDSToStep_Tool aTool (aMap,
+ Standard_False,
+ FP->Model()->GetParam("write.surfacecurve.mode")->IntegerValue());
TopoDSToStep_WireframeBuilder wirefB (aShape, aTool, FP);
TopoDSToStep::AddResult ( FP, aTool );
#include <BRepClass3d.hxx>
#include <StdFail_NotDone.hxx>
+#include <StepData_StepModel.hxx>
#include <StepShape_ClosedShell.hxx>
#include <StepShape_HArray1OfFace.hxx>
#include <StepShape_ManifoldSolidBrep.hxx>
Handle(StepShape_ManifoldSolidBrep) theManifoldSolidBrep;
MoniTool_DataMapOfShapeTransient aMap;
- TopoDSToStep_Tool aTool(aMap, Standard_False);
+ Handle(StepData_StepModel) aModel = Handle(StepData_StepModel)::DownCast(FP->Model());
+ TopoDSToStep_Tool aTool(aMap, Standard_False, aModel->GetParam("write.surfacecurve.mode")->IntegerValue());
TopoDSToStep_Builder StepB(aShell, aTool, FP);
#include <MoniTool_DataMapOfShapeTransient.hxx>
#include <StdFail_NotDone.hxx>
+#include <StepData_StepModel.hxx>
#include <StepShape_ClosedShell.hxx>
#include <StepShape_ConnectedFaceSet.hxx>
#include <StepShape_FaceSurface.hxx>
done = Standard_False;
MoniTool_DataMapOfShapeTransient aMap;
- TopoDSToStep_Tool aTool(aMap, Standard_False);
+ Handle(StepData_StepModel) aModel = Handle(StepData_StepModel)::DownCast(FP->Model());
+ TopoDSToStep_Tool aTool(aMap,
+ Standard_False,
+ aModel->GetParam("write.surfacecurve.mode")->IntegerValue());
TopoDSToStep_Builder StepB(aFace, aTool, FP);
TopoDSToStep::AddResult ( FP, aTool );
Handle(StepShape_OpenShell) aOpenShell;
Handle(StepShape_ClosedShell) aClosedShell;
MoniTool_DataMapOfShapeTransient aMap;
-
- TopoDSToStep_Tool aTool(aMap, Standard_False);
+
+ Handle(StepData_StepModel) aModel = Handle(StepData_StepModel)::DownCast(FP->Model());
+ TopoDSToStep_Tool aTool(aMap,
+ Standard_False,
+ aModel->GetParam("write.surfacecurve.mode")->IntegerValue());
TopoDSToStep_Builder StepB(aShell, aTool, FP);
//TopoDSToStep::AddResult ( FP, aTool );
if (It.Value().ShapeType() == TopAbs_SHELL) {
aShell = TopoDS::Shell(It.Value());
- TopoDSToStep_Tool aTool(aMap, Standard_False);
+
+ Handle(StepData_StepModel) aModel = Handle(StepData_StepModel)::DownCast(FP->Model());
+ TopoDSToStep_Tool aTool(aMap,
+ Standard_False,
+ aModel->GetParam("write.surfacecurve.mode")->IntegerValue());
TopoDSToStep_Builder StepB(aShell, aTool, FP);
TopoDSToStep::AddResult ( FP, aTool );
#include <GeomToStep_MakeCurve.hxx>
#include <GeomToStep_MakeLine.hxx>
#include <gp_Vec.hxx>
-#include <Interface_Static.hxx>
#include <StdFail_NotDone.hxx>
+#include <StepData_StepModel.hxx>
#include <StepGeom_HArray1OfPcurveOrSurface.hxx>
#include <StepGeom_Line.hxx>
#include <StepGeom_SeamCurve.hxx>
aTool.SetCurrentEdge(aEdge);
// [BEGIN] Processing non-manifold topology (ssv; 11.11.2010)
- Standard_Boolean isNMMode = Interface_Static::IVal("write.step.nonmanifold") != 0;
+
+ Handle(StepData_StepModel) aModel = Handle(StepData_StepModel)::DownCast(FP->Model());
+ Standard_Boolean isNMMode = aModel->GetParam("write.step.nonmanifold")->IntegerValue() != 0;
if (isNMMode) {
Handle(StepShape_EdgeCurve) anEC;
Handle(TransferBRep_ShapeMapper) aSTEPMapper = TransferBRep::ShapeMapper(FP, aEdge);
#include <Geom_TrimmedCurve.hxx>
#include <GeomToStep_MakeCurve.hxx>
#include <GeomToStep_MakeSurface.hxx>
-#include <Interface_Static.hxx>
#include <Precision.hxx>
#include <ShapeAlgo.hxx>
#include <ShapeAlgo_AlgoContainer.hxx>
#include <StdFail_NotDone.hxx>
+#include <StepData_StepModel.hxx>
#include <StepGeom_Curve.hxx>
#include <StepGeom_DegenerateToroidalSurface.hxx>
#include <StepGeom_GeometricRepresentationContextAndParametricRepresentationContext.hxx>
new TransferBRep_ShapeMapper(aFace); // on ne sait jamais
// [BEGIN] Processing non-manifold topology (another approach) (ssv; 10.11.2010)
- Standard_Boolean isNMMode = Interface_Static::IVal("write.step.nonmanifold") != 0;
+ Handle(StepData_StepModel) aModel = Handle(StepData_StepModel)::DownCast(FP->Model());
+ Standard_Boolean isNMMode = aModel->GetParam("write.step.nonmanifold")->IntegerValue() != 0;
if (isNMMode) {
Handle(StepShape_AdvancedFace) anAF;
Handle(TransferBRep_ShapeMapper) aSTEPMapper = TransferBRep::ShapeMapper(FP, aFace);
// create basis curve
Standard_Real UF, VF, UL, VL;
- ShapeAlgo::AlgoContainer()->GetFaceUVBounds ( aFace, UF, UL, VF, VL );
+ Handle(ShapeAlgo_AlgoContainer) aContainer = new ShapeAlgo_AlgoContainer;
+ aContainer->GetFaceUVBounds ( aFace, UF, UL, VF, VL );
gp_Ax2 Ax2 ( pos.XYZ() + X.XYZ() * TS->MajorRadius(), X ^ dir, X );
Handle(Geom_Curve) BasisCurve = new Geom_Circle ( Ax2, TS->MinorRadius() );
// convert basis curve to bspline in order to avoid self-intersecting
// surface of revolution (necessary e.g. for CATIA)
- if ( VL - VF - 2 * M_PI < -Precision::PConfusion() )
- BasisCurve = ShapeAlgo::AlgoContainer()->ConvertCurveToBSpline (BasisCurve, VF, VL, Precision::Approximation(),
- GeomAbs_C1, 100, 9);
-// BasisCurve = new Geom_TrimmedCurve ( BasisCurve, VF, VL );
+ if (VL - VF - 2 * M_PI < -Precision::PConfusion())
+ {
+ Handle(ShapeAlgo_AlgoContainer) aContainer = new ShapeAlgo_AlgoContainer;
+ BasisCurve = aContainer->ConvertCurveToBSpline(BasisCurve, VF, VL, Precision::Approximation(),
+ GeomAbs_C1, 100, 9);
+ //BasisCurve = new Geom_TrimmedCurve ( BasisCurve, VF, VL );
+ }
// create surface of revolution
gp_Ax1 Axis = Ax3.Axis();
#include <BRep_Tool.hxx>
#include <GeomToStep_MakeCartesianPoint.hxx>
#include <gp_Pnt.hxx>
-#include <Interface_Static.hxx>
#include <StdFail_NotDone.hxx>
+#include <StepData_StepModel.hxx>
#include <StepGeom_CartesianPoint.hxx>
#include <StepShape_TopologicalRepresentationItem.hxx>
#include <StepShape_VertexPoint.hxx>
aTool.SetCurrentVertex(aVertex);
// [BEGIN] Processing non-manifold topology (ssv; 11.11.2010)
- Standard_Boolean isNMMode = Interface_Static::IVal("write.step.nonmanifold") != 0;
+ Handle(StepData_StepModel) aModel = Handle(StepData_StepModel)::DownCast(FP->Model());
+ Standard_Boolean isNMMode = aModel->GetParam("write.step.nonmanifold")->IntegerValue() != 0;
if (isNMMode) {
Handle(StepShape_VertexPoint) aVP;
Handle(TransferBRep_ShapeMapper) aSTEPMapper = TransferBRep::ShapeMapper(FP, aVertex);
#include <BRep_Tool.hxx>
-#include <Interface_Static.hxx>
#include <StepShape_TopologicalRepresentationItem.hxx>
#include <TopoDS_Edge.hxx>
#include <TopoDS_Face.hxx>
//purpose :
//=======================================================================
TopoDSToStep_Tool::TopoDSToStep_Tool()
- :myLowestTol(0.),myReversedSurface (Standard_False)
+ :myLowestTol(0.),myReversedSurface (Standard_False),myPCurveMode(1)
{
- myPCurveMode = Interface_Static::IVal("write.surfacecurve.mode");
}
//=======================================================================
//purpose :
//=======================================================================
-TopoDSToStep_Tool::TopoDSToStep_Tool(const MoniTool_DataMapOfShapeTransient& M, const Standard_Boolean FacetedContext)
+TopoDSToStep_Tool::TopoDSToStep_Tool(const MoniTool_DataMapOfShapeTransient& M,
+ const Standard_Boolean FacetedContext,
+ Standard_Integer theCurveMode)
:myLowestTol(0.),myReversedSurface(Standard_False)
{
- Init ( M, FacetedContext );
+ Init ( M, FacetedContext, theCurveMode );
}
//=======================================================================
//purpose :
//=======================================================================
-void TopoDSToStep_Tool::Init(const MoniTool_DataMapOfShapeTransient& M, const Standard_Boolean FacetedContext)
+void TopoDSToStep_Tool::Init(const MoniTool_DataMapOfShapeTransient& M,
+ const Standard_Boolean FacetedContext,
+ Standard_Integer theCurveMode)
{
myDataMap = M;
myFacetedContext = FacetedContext;
- myPCurveMode = Interface_Static::IVal("write.surfacecurve.mode");
+ myPCurveMode = theCurveMode;
}
//=======================================================================
Standard_EXPORT TopoDSToStep_Tool();
- Standard_EXPORT TopoDSToStep_Tool(const MoniTool_DataMapOfShapeTransient& M, const Standard_Boolean FacetedContext);
+ Standard_EXPORT TopoDSToStep_Tool(const MoniTool_DataMapOfShapeTransient& M,
+ const Standard_Boolean FacetedContext,
+ Standard_Integer theCurveMode);
- Standard_EXPORT void Init (const MoniTool_DataMapOfShapeTransient& M, const Standard_Boolean FacetedContext);
+ Standard_EXPORT void Init (const MoniTool_DataMapOfShapeTransient& M,
+ const Standard_Boolean FacetedContext,
+ Standard_Integer theCurveMode);
Standard_EXPORT Standard_Boolean IsBound (const TopoDS_Shape& S);
return 0;
}
+static void initStatics()
+{
+ //Be carefull using this method and static map.
+ //For step files all this parameters initialises in the model.
+ //They are initialised here to avoid errors during using auxiliary
+ //functions to work with step files particulary function "param" in IFSelect_Functions.cxx.
+ //Do NOT USE Interface_Static methods for getting param values while reading step.
+ //If you need the parameters values use StepData_StepModel::GetParam method
+
+ // Indicates whether to write sub-shape names to 'Name' attributes of
+ // STEP Representation Items
+ Interface_Static::Init("stepcaf", "write.stepcaf.subshapes.name", 'e', "");
+ Interface_Static::Init("stepcaf", "write.stepcaf.subshapes.name", '&', "enum 0");
+ Interface_Static::Init("stepcaf", "write.stepcaf.subshapes.name", '&', "eval Off"); // 0
+ Interface_Static::Init("stepcaf", "write.stepcaf.subshapes.name", '&', "eval On"); // 1
+ Interface_Static::SetIVal("write.stepcaf.subshapes.name", 0); // Disabled by default
+
+ // Indicates whether to read sub-shape names from 'Name' attributes of
+ // STEP Representation Items
+ Interface_Static::Init("stepcaf", "read.stepcaf.subshapes.name", 'e', "");
+ Interface_Static::Init("stepcaf", "read.stepcaf.subshapes.name", '&', "enum 0");
+ Interface_Static::Init("stepcaf", "read.stepcaf.subshapes.name", '&', "eval Off"); // 0
+ Interface_Static::Init("stepcaf", "read.stepcaf.subshapes.name", '&', "eval On"); // 1
+ Interface_Static::SetIVal("read.stepcaf.subshapes.name", 0); // Disabled by default
+}
//=======================================================================
//function : Init
initactor = Standard_True;
// Load static variables for STEPCAF (ssv; 16.08.2012)
- STEPCAFControl_Controller::Init();
+ static Standard_Boolean inic = Standard_False;
+ if (!inic) {
+ initStatics();
+ Handle(STEPCAFControl_Controller) STEPCTL = new STEPCAFControl_Controller;
+ XSDRAW::SetController(STEPCTL);
+ inic = Standard_True;
+ }
// Initialize XCAF formats
Handle(TDocStd_Application) anApp = DDocStd::GetApplication();
di << "Use: " << argv[0] << " Doc filename [mode]: read STEP file to a document\n";
return 0;
}
-
- DeclareAndCast(STEPControl_Controller,ctl,XSDRAW::Controller());
- if (ctl.IsNull()) XSDRAW::SetNorm("STEP");
+ DeclareAndCast(STEPCAFControl_Controller, ctl, XSDRAW::Controller());
+ if (ctl.IsNull())
+ {
+ ctl = new STEPCAFControl_Controller;
+ XSDRAW::SetController(ctl);
+ }
- STEPCAFControl_Reader reader ( XSDRAW::Session(),Standard_True);
+ STEPCAFControl_Reader reader ( XSDRAW::Session(), ctl, Standard_True);
if (argc == 4) {
Standard_Boolean mode = Standard_True;
Standard_CString multifile = 0;
Standard_Integer k = 3;
- DeclareAndCast(STEPControl_Controller,ctl,XSDRAW::Controller());
- if (ctl.IsNull()) XSDRAW::SetNorm("STEP");
- STEPCAFControl_Writer writer ( XSDRAW::Session(), Standard_True );
+
+ DeclareAndCast(STEPCAFControl_Controller, ctl, XSDRAW::Controller());
+ if (ctl.IsNull())
+ {
+ ctl = new STEPCAFControl_Controller;
+ XSDRAW::SetController(ctl);
+ }
+ STEPCAFControl_Writer writer ( XSDRAW::Session(), ctl, Standard_True );
STEPControl_StepModelType mode = STEPControl_AsIs;
if ( argc > k ) {
return 0;
}
- DeclareAndCast(STEPControl_Controller, ctl, XSDRAW::Controller());
- if (ctl.IsNull()) XSDRAW::SetNorm("STEP");
+ DeclareAndCast(STEPCAFControl_Controller, ctl, XSDRAW::Controller());
+ if (ctl.IsNull())
+ {
+ ctl = new STEPCAFControl_Controller;
+ XSDRAW::SetController(ctl);
+ }
- STEPCAFControl_Reader reader(XSDRAW::Session(), Standard_True);
+ STEPCAFControl_Reader reader(XSDRAW::Session(), ctl, Standard_True);
if (argc == 4) {
Standard_Boolean mode = Standard_True;
void XSAlgo_AlgoContainer::PrepareForTransfer() const
{
- UnitsMethods::SetCasCadeLengthUnit ( Interface_Static::IVal("xstep.cascade.unit") );
+ UnitsMethods::SetCasCadeLengthUnit(getParam("xstep.cascade.unit")->IntegerValue());
}
//=======================================================================
Handle(ShapeProcess_ShapeContext) context = Handle(ShapeProcess_ShapeContext)::DownCast(info);
if ( context.IsNull() )
{
- Standard_CString rscfile = Interface_Static::CVal(prscfile);
+ Standard_CString rscfile = getParam(prscfile)->CStringValue();
if (!rscfile)
rscfile = prscfile;
context = new ShapeProcess_ShapeContext(shape, rscfile);
}
info = context;
- Standard_CString seq = Interface_Static::CVal ( pseq );
+ Standard_CString seq = getParam(pseq)->CStringValue();
if ( ! seq ) seq = pseq;
// if resource file is not loaded or does not define <seq>.exec.op,
B.Range(edge,face,w1,w2);
B.SameRange(edge, Standard_False );
//:S4136
- Standard_Integer SPmode = Interface_Static::IVal("read.stdsameparameter.mode");
+ Standard_Integer SPmode = getParam("read.stdsameparameter.mode")->IntegerValue();
if ( SPmode )
B.SameParameter (edge, Standard_False );
}
}
}
+
+//=======================================================================
+// Method : SetModel
+// Purpose :
+//=======================================================================
+void XSAlgo_AlgoContainer::SetModel(Handle(Interface_InterfaceModel)& theModel)
+{
+ myModel = theModel;
+}
+
+//=======================================================================
+// Method : getParam
+// Purpose :
+//=======================================================================
+Handle(Interface_Static) XSAlgo_AlgoContainer::getParam
+(const Standard_CString theParamName) const
+{
+ Handle(Interface_Static) aParam;
+ if (!myModel.IsNull())
+ aParam = myModel->GetParam(theParamName);
+
+ if (aParam.IsNull())
+ aParam = Interface_Static::Static(theParamName);
+
+ return aParam;
+}
#include <Standard.hxx>
#include <Standard_Type.hxx>
+#include <Interface_InterfaceModel.hxx>
+#include <Interface_Static.hxx>
#include <Standard_Transient.hxx>
#include <Standard_Real.hxx>
#include <Standard_CString.hxx>
//! from item startTPitem
Standard_EXPORT virtual void MergeTransferInfo (const Handle(Transfer_FinderProcess)& FP, const Handle(Standard_Transient)& info) const;
+ //! Sets the model for translations
+ Standard_EXPORT void SetModel(Handle(Interface_InterfaceModel)& theModel);
+
protected:
-
+ //! Returns a parameter for translations.
+ //! First tries get it from non-static model,
+ //! if failure get it from static map
+ Standard_EXPORT Handle(Interface_Static) getParam(const Standard_CString theParamName) const;
private:
Handle(XSAlgo_ToolContainer) myTC;
+ Handle(Interface_InterfaceModel) myModel;
};
//purpose : Constructor
//=======================================================================
-XSControl_Controller::XSControl_Controller (const Standard_CString theLongName, const Standard_CString theShortName)
-: myShortName(theShortName), myLongName(theLongName)
+XSControl_Controller::XSControl_Controller(const Standard_CString theLongName, const Standard_CString theShortName)
+ : myShortName(theShortName), myLongName(theLongName)
{
- // Standard parameters
- Interface_Static::Standards();
- TraceStatic ("read.precision.mode" , 5);
- TraceStatic ("read.precision.val" , 5);
- TraceStatic ("write.precision.mode" , 6);
- TraceStatic ("write.precision.val" , 6);
+ if (!myLongName.IsEqual("STEP") && !myShortName.IsEqual("step"))
+ {
+ // Standard parameters
+ Interface_Static::Standards();
+ TraceStatic("read.precision.mode", 5);
+ TraceStatic("read.precision.val", 5);
+ TraceStatic("write.precision.mode", 6);
+ TraceStatic("write.precision.val", 6);
+ }
+}
+
+Standard_Boolean XSControl_Controller::Init(const Handle(XSControl_WorkSession)& /*theWS*/)
+{
+ return Standard_True;
}
//=======================================================================
myParamUses.Append(theUse);
}
+//=======================================================================
+//function : TraceNotStatic
+//purpose :
+//=======================================================================
+
+void XSControl_Controller::TraceNotStatic(const Handle(Interface_Static)& theParam, const Standard_Integer theUse)
+{
+ if (theParam.IsNull()) return;
+ myParams.Append(theParam);
+ myParamUses.Append(theUse);
+}
+
//=======================================================================
//function : SetNames
//purpose :
// Here for the specific manufacturers of controllers could create the
// Parameters: So wait here
- Handle(TColStd_HSequenceOfHAsciiString) listat = Interface_Static::Items();
- Handle(IFSelect_ParamEditor) paramed = IFSelect_ParamEditor::StaticEditor (listat,"All Static Parameters");
- WS->AddNamedItem ("xst-static-params-edit",paramed);
- Handle(IFSelect_EditForm) paramform = paramed->Form(Standard_False);
- WS->AddNamedItem ("xst-static-params",paramform);
+ //for step it is not needed
+ if (!myLongName.IsEqual("STEP") && !myShortName.IsEqual("step"))
+ {
+ Handle(TColStd_HSequenceOfHAsciiString) listat = Interface_Static::Items();
+ Handle(IFSelect_ParamEditor) paramed = IFSelect_ParamEditor::StaticEditor(listat, "All Static Parameters");
+ WS->AddNamedItem("xst-static-params-edit", paramed);
+ Handle(IFSelect_EditForm) paramform = paramed->Form(Standard_False);
+ WS->AddNamedItem("xst-static-params", paramform);
+ }
}
#include <Standard.hxx>
#include <Standard_Type.hxx>
+#include <Interface_Static.hxx>
#include <TCollection_AsciiString.hxx>
#include <TColStd_SequenceOfTransient.hxx>
#include <TColStd_HSequenceOfHAsciiString.hxx>
class XSControl_Controller : public Standard_Transient
{
public:
-
+
+ //! Initialisation of additional non-static parameters taken data from session model
+ Standard_EXPORT virtual Standard_Boolean Init(const Handle(XSControl_WorkSession)& /*theWS*/);
+
//! Changes names
//! if a name is empty, the formerly set one remains
//! Remark : Does not call Record or AutoRecord
//! Records the name of a Static to be traced for a given use
Standard_EXPORT void TraceStatic (const Standard_CString theName, const Standard_Integer theUse);
+ //! Records the non Static parameter to be traced for a given use
+ Standard_EXPORT void TraceNotStatic(const Handle(Interface_Static)& theParam, const Standard_Integer theUse);
+
TCollection_AsciiString myShortName;
TCollection_AsciiString myLongName;
Handle(IFSelect_WorkLibrary) myAdaptorLibrary;
#include <Interface_CheckIterator.hxx>
#include <Interface_InterfaceModel.hxx>
#include <Interface_Macros.hxx>
-#include <Interface_Static.hxx>
#include <Message.hxx>
#include <Message_Messenger.hxx>
#include <TColStd_HSequenceOfHAsciiString.hxx>
#include <Interface_Check.hxx>
#include <Interface_InterfaceModel.hxx>
#include <Interface_ShareFlags.hxx>
-#include <Interface_Static.hxx>
#include <Message_ProgressSentry.hxx>
#include <ShapeExtend_Explorer.hxx>
#include <Standard_Transient.hxx>
{
if (thesession.IsNull()) SetWS (new XSControl_WorkSession);
Standard_Boolean stat = thesession->SelectNorm (norm);
- if (stat) {
- thesession->InitTransferReader(0);
- thesession->InitTransferReader(4);
- }
+ if (stat) initTransferReader();
return stat;
}
+//=======================================================================
+//function : InitTransferReader
+//purpose :
+//=======================================================================
+void XSControl_Reader::initTransferReader()
+{
+ if (thesession.IsNull()) return;
+ thesession->InitTransferReader(0);
+ thesession->InitTransferReader(4);
+}
+
//=======================================================================
//function : SetWS
if (thesession->NormAdaptor().IsNull()) return;
Handle(Interface_InterfaceModel) model = thesession->Model ();
if (scratch || model.IsNull()) model = thesession->NewModel ();
- thesession->InitTransferReader(0);
- thesession->InitTransferReader(4);
+ initTransferReader();
}
//! Returns a sequence of produced shapes
Standard_EXPORT TopTools_SequenceOfShape& Shapes();
+ //! Sets a Transfer Reader
+ Standard_EXPORT void initTransferReader();
+
Standard_Boolean therootsta;
TColStd_SequenceOfTransient theroots;
TopoDS_Shape sh = xu.BinderShape (mres->Binder());
// Ouh la vilaine verrue
- Standard_Real tolang = Interface_Static::RVal("read.encoderegularity.angle");
+ Standard_Real tolang;
+ Handle(Interface_Static) aParam = myModel->GetParam("read.encoderegularity.angle");
+ if (aParam.IsNull())
+ {
+ tolang = Interface_Static::RVal("read.encoderegularity.angle");
+ }
+ else
+ {
+ tolang = aParam->RealValue();
+ }
if (tolang <= 0 || sh.IsNull()) return sh;
ShapeFix::EncodeRegularity (sh,tolang);
return sh;
void XSControl_WorkSession::SetController(const Handle(XSControl_Controller)& ctl)
{
myController = ctl;
+ SetModel(myController->NewModel());
SetLibrary ( myController->WorkLibrary() );
SetProtocol ( myController->Protocol() );
#include <IFSelect_SessionPilot.hxx>
#include <Interface_InterfaceModel.hxx>
#include <Interface_Macros.hxx>
-#include <Interface_Static.hxx>
#include <Message.hxx>
#include <Message_Messenger.hxx>
#include <Message_ProgressSentry.hxx>
+#include <Standard_Version.hxx>
#include <STEPControl_ActorWrite.hxx>
#include <STEPControl_Controller.hxx>
#include <STEPControl_Reader.hxx>
}
}
+static void initStatics()
+{
+ //Be carefull using this method and static map.
+ //For step files all this parameters initialises in the model.
+ //They are initialised here to avoid errors during using auxiliary
+ //functions to work with step files particulary function "param" in IFSelect_Functions.cxx.
+ //Do NOT USE Interface_Static methods for getting param values while reading step.
+ //If you need the parameters values use StepData_StepModel::GetParam method
+ Interface_Static::Init("step", "write.step.product.name", 't', "Open CASCADE STEP translator " OCC_VERSION_STRING);
+ Interface_Static::Init("step", "write.step.assembly", 'e', "");
+ Interface_Static::Init("step", "write.step.assembly", '&', "enum 0");
+ Interface_Static::Init("step", "write.step.assembly", '&', "eval Off");
+ Interface_Static::Init("step", "write.step.assembly", '&', "eval On");
+ Interface_Static::Init("step", "write.step.assembly", '&', "eval Auto");
+ Interface_Static::SetCVal("write.step.assembly", "Auto");
+
+ Interface_Static::Init("step", "step.angleunit.mode", 'e', "");
+ Interface_Static::Init("step", "step.angleunit.mode", '&', "enum 0");
+ Interface_Static::Init("step", "step.angleunit.mode", '&', "eval File");
+ Interface_Static::Init("step", "step.angleunit.mode", '&', "eval Rad");
+ Interface_Static::Init("step", "step.angleunit.mode", '&', "eval Deg");
+ Interface_Static::SetCVal("step.angleunit.mode", "File");
+
+ Interface_Static::Init("step", "write.step.schema", 'e', "");
+ Interface_Static::Init("step", "write.step.schema", '&', "enum 1");
+ Interface_Static::Init("step", "write.step.schema", '&', "eval AP214CD");
+ Interface_Static::Init("step", "write.step.schema", '&', "eval AP214DIS");
+ Interface_Static::Init("step", "write.step.schema", '&', "eval AP203");
+ Interface_Static::Init("step", "write.step.schema", '&', "eval AP214IS");
+ Interface_Static::Init("step", "write.step.schema", '&', "eval AP242DIS");
+ Interface_Static::SetCVal("write.step.schema", "AP214IS");
+
+ // Type of Product Definition for reading
+ // Note: the numbers should be consistent with function FindShapeReprType()
+ // in STEPControl_ActorRead.cxx
+ Interface_Static::Init("step", "read.step.shape.repr", 'e', "");
+ Interface_Static::Init("step", "read.step.shape.repr", '&', "enum 1");
+ Interface_Static::Init("step", "read.step.shape.repr", '&', "eval All"); // 1
+ Interface_Static::Init("step", "read.step.shape.repr", '&', "eval ABSR"); // 2
+ Interface_Static::Init("step", "read.step.shape.repr", '&', "eval MSSR"); // 3
+ Interface_Static::Init("step", "read.step.shape.repr", '&', "eval GBSSR"); // 4
+ Interface_Static::Init("step", "read.step.shape.repr", '&', "eval FBSR"); // 5
+ Interface_Static::Init("step", "read.step.shape.repr", '&', "eval EBWSR"); // 6
+ Interface_Static::Init("step", "read.step.shape.repr", '&', "eval GBWSR"); // 7
+ Interface_Static::SetCVal("read.step.shape.repr", "All");
+
+ // Mode for reading shapes attached to main SDR by SRR
+ // (hybrid model representation in AP203 since 1998)
+ Interface_Static::Init("step", "read.step.shape.relationship", 'e', "");
+ Interface_Static::Init("step", "read.step.shape.relationship", '&', "enum 0");
+ Interface_Static::Init("step", "read.step.shape.relationship", '&', "eval OFF");
+ Interface_Static::Init("step", "read.step.shape.relationship", '&', "eval ON");
+ Interface_Static::SetCVal("read.step.shape.relationship", "ON");
+
+ // Mode for reading shapes attached to Product by ShapeAspect
+ // (hybrid model representation in AP203 before 1998)
+ Interface_Static::Init("step", "read.step.shape.aspect", 'e', "");
+ Interface_Static::Init("step", "read.step.shape.aspect", '&', "enum 0");
+ Interface_Static::Init("step", "read.step.shape.aspect", '&', "eval OFF");
+ Interface_Static::Init("step", "read.step.shape.aspect", '&', "eval ON");
+ Interface_Static::SetCVal("read.step.shape.aspect", "ON");
+
+ // Mode for reading SDR and ShapeRepr if it is necessary
+ Interface_Static::Init("step", "read.step.product.mode", 'e', "");
+ Interface_Static::Init("step", "read.step.product.mode", '&', "enum 0");
+ Interface_Static::Init("step", "read.step.product.mode", '&', "eval OFF");
+ Interface_Static::Init("step", "read.step.product.mode", '&', "eval ON");
+ Interface_Static::SetCVal("read.step.product.mode", "ON");
+
+ // Order of reading ShapeDefinitionRepresentation in ProductDefinition
+ Interface_Static::Init("step", "read.step.product.context", 'e', "");
+ Interface_Static::Init("step", "read.step.product.context", '&', "enum 1");
+ Interface_Static::Init("step", "read.step.product.context", '&', "eval all"); // 1
+ Interface_Static::Init("step", "read.step.product.context", '&', "eval design"); // 2
+ Interface_Static::Init("step", "read.step.product.context", '&', "eval analysis");// 3
+ Interface_Static::SetCVal("read.step.product.context", "all");
+
+ // What we try to read in ProductDefinition
+ Interface_Static::Init("step", "read.step.assembly.level", 'e', "");
+ Interface_Static::Init("step", "read.step.assembly.level", '&', "enum 1");
+ Interface_Static::Init("step", "read.step.assembly.level", '&', "eval all"); // 1
+ Interface_Static::Init("step", "read.step.assembly.level", '&', "eval assembly"); // 2
+ Interface_Static::Init("step", "read.step.assembly.level", '&', "eval structure");// 3
+ Interface_Static::Init("step", "read.step.assembly.level", '&', "eval shape"); // 4
+ Interface_Static::SetCVal("read.step.assembly.level", "all");
+
+ // unit: supposed to be cascade unit (target unit for reading)
+ Interface_Static::Init("step", "write.step.unit", 'e', "");
+ Interface_Static::Init("step", "write.step.unit", '&', "enum 1");
+ Interface_Static::Init("step", "write.step.unit", '&', "eval INCH"); // 1
+ Interface_Static::Init("step", "write.step.unit", '&', "eval MM"); // 2
+ Interface_Static::Init("step", "write.step.unit", '&', "eval ??"); // 3
+ Interface_Static::Init("step", "write.step.unit", '&', "eval FT"); // 4
+ Interface_Static::Init("step", "write.step.unit", '&', "eval MI"); // 5
+ Interface_Static::Init("step", "write.step.unit", '&', "eval M"); // 6
+ Interface_Static::Init("step", "write.step.unit", '&', "eval KM"); // 7
+ Interface_Static::Init("step", "write.step.unit", '&', "eval MIL"); // 8
+ Interface_Static::Init("step", "write.step.unit", '&', "eval UM"); // 9
+ Interface_Static::Init("step", "write.step.unit", '&', "eval CM"); //10
+ Interface_Static::Init("step", "write.step.unit", '&', "eval UIN"); //11
+ Interface_Static::SetCVal("write.step.unit", "MM");
+
+ // Non-manifold topology reading: OFF by default (ssv; 26.11.2010)
+ Interface_Static::Init("step", "read.step.nonmanifold", 'e', "");
+ Interface_Static::Init("step", "read.step.nonmanifold", '&', "enum 0");
+ Interface_Static::Init("step", "read.step.nonmanifold", '&', "eval Off");
+ Interface_Static::Init("step", "read.step.nonmanifold", '&', "eval On");
+ Interface_Static::SetIVal("read.step.nonmanifold", 0);
+
+ // Non-manifold topology writing: OFF by default (ssv; 26.11.2010)
+ Interface_Static::Init("step", "write.step.nonmanifold", 'e', "");
+ Interface_Static::Init("step", "write.step.nonmanifold", '&', "enum 0");
+ Interface_Static::Init("step", "write.step.nonmanifold", '&', "eval Off");
+ Interface_Static::Init("step", "write.step.nonmanifold", '&', "eval On");
+ Interface_Static::SetIVal("write.step.nonmanifold", 0);
+
+ // I-Deas-like STEP processing: OFF by default (ssv; 22.11.2010)
+ Interface_Static::Init("step", "read.step.ideas", 'e', "");
+ Interface_Static::Init("step", "read.step.ideas", '&', "enum 0");
+ Interface_Static::Init("step", "read.step.ideas", '&', "eval Off");
+ Interface_Static::Init("step", "read.step.ideas", '&', "eval On");
+ Interface_Static::SetIVal("read.step.ideas", 0);
+
+ //Parameter to write all free vertices in one SDR (name and style of vertex are lost) (default)
+ //or each vertex in its own SDR (name and style of vertex are exported). (ika; 21.07.2014)
+ Interface_Static::Init("step", "write.step.vertex.mode", 'e', "");
+ Interface_Static::Init("step", "write.step.vertex.mode", '&', "enum 0");
+ Interface_Static::Init("step", "write.step.vertex.mode", '&', "eval One Compound");
+ Interface_Static::Init("step", "write.step.vertex.mode", '&', "eval Single Vertex");
+ Interface_Static::SetIVal("write.step.vertex.mode", 0);
+
+ // abv 15.11.00: ShapeProcessing
+ Interface_Static::Init("XSTEP", "write.step.resource.name", 't', "STEP");
+ Interface_Static::Init("XSTEP", "read.step.resource.name", 't', "STEP");
+ Interface_Static::Init("XSTEP", "write.step.sequence", 't', "ToSTEP");
+ Interface_Static::Init("XSTEP", "read.step.sequence", 't', "FromSTEP");
+
+ // ika 28.07.16: Paremeter to read all top level solids and shells,
+ // should be used only in case of invalid shape_representation without links to shapes.
+ Interface_Static::Init("step", "read.step.all.shapes", 'e', "");
+ Interface_Static::Init("step", "read.step.all.shapes", '&', "enum 0");
+ Interface_Static::Init("step", "read.step.all.shapes", '&', "eval Off");
+ Interface_Static::Init("step", "read.step.all.shapes", '&', "eval On");
+ Interface_Static::SetIVal("read.step.all.shapes", 0);
+}
//=======================================================================
//function : Init
void XSDRAWSTEP::Init ()
{
- Handle(StepSelect_Activator) stepact = new StepSelect_Activator;
- if (STEPControl_Controller::Init()) // XSDRAW::SetNorm("STEP AP-214"); trop tot
- XSDRAW::SetController(XSControl_Controller::Recorded("STEP"));
+ static Standard_Boolean inic = Standard_False;
+ if (!inic) {
+ initStatics();
+ Handle(STEPControl_Controller) aStepCtl = new STEPControl_Controller;
+ XSDRAW::SetController(aStepCtl);
+ inic = Standard_True;
+ }
atexit (cleanpilot);
}
+
// ######## COMMANDE stepread : teste le Reader #########
//=======================================================================
}
// On admet le controller AP214 ou une variante
DeclareAndCast(STEPControl_Controller,ctl,XSDRAW::Controller());
- if (ctl.IsNull()) XSDRAW::SetNorm("STEP");
-
+ if (ctl.IsNull())
+ {
+ ctl = new STEPControl_Controller;
+ XSDRAW::SetController(ctl);
+ }
// Progress indicator
Handle(Draw_ProgressIndicator) progress = new Draw_ProgressIndicator ( di, 1 );
progress->SetScale ( 0, 100, 1 );
progress->Show();
- STEPControl_Reader sr (XSDRAW::Session(),Standard_False);
+ STEPControl_Reader sr (XSDRAW::Session(), ctl, Standard_False);
TCollection_AsciiString fnom,rnom;
Standard_Boolean modfic = XSDRAW::FileAndVar
(argv[1],argv[2],"STEP",fnom,rnom);
static Standard_Integer stepwrite (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
{
-// On admet le controller AP214 ou une variante
- DeclareAndCast(STEPControl_Controller,ctl,XSDRAW::Controller());
- if (ctl.IsNull()) {
- XSDRAW::SetNorm("STEP");
- //sln 14.01.2002 OCC51: assign new value to ctl in order to avoid exception during using one in the function
- ctl = Handle(STEPControl_Controller)::DownCast(XSDRAW::Controller());
+ // On admet le controller AP214 ou une variante
+ DeclareAndCast(STEPControl_Controller, ctl, XSDRAW::Controller());
+ if (ctl.IsNull())
+ {
+ ctl = new STEPControl_Controller;
+ XSDRAW::SetController(ctl);
}
-
if (argc < 3) {
di<<"Give mode[1-4] and Shape name + optional file. Mode possible\n";
di<<"f ou 1 : FacettedBRep s ou 2 : ShellBasedSurfaceModel\n"
default : di<<"1st arg = mode, incorrect [give fsmw]\n"; return 1;
}
- //:k8 abv 6 Jan 98: using parameter for writing mode (assemblies/shapes)
- Handle(STEPControl_ActorWrite) ActWrite =
- Handle(STEPControl_ActorWrite)::DownCast ( ctl->ActorWrite() );
- if ( ! ActWrite.IsNull() )
- ActWrite->SetGroupMode (Interface_Static::IVal("write.step.assembly"));
-
TopoDS_Shape shape = DBRep::Get(argv[2]);
- STEPControl_Writer sw (XSDRAW::Session(),Standard_False);
- Handle(Interface_InterfaceModel) stepmodel = sw.Model();
+ STEPControl_Writer sw (XSDRAW::Session(), ctl, Standard_False);
+ Handle(StepData_StepModel) stepmodel = sw.Model();
Standard_Integer nbavant = (stepmodel.IsNull() ? 0 : stepmodel->NbEntities());
+ //:k8 abv 6 Jan 98: using parameter for writing mode (assemblies/shapes)
+ Handle(STEPControl_ActorWrite) ActWrite =
+ Handle(STEPControl_ActorWrite)::DownCast(sw.WS()->NormAdaptor()->ActorWrite());
+ if (!ActWrite.IsNull())
+ ActWrite->SetGroupMode("write.step.assembly");
Handle(Draw_ProgressIndicator) progress = new Draw_ProgressIndicator ( di, 1 );
progress->NewScope(90,"Translating");
puts "Error : There is old ${filedir}/${TheFileName}.stp file"
}
-xnorm STEP
restore [locate_data_file ${TheFileName}.brep] f
param write.step.unit FT
-newmodel
+
stepwrite a f ${filedir}/${TheFileName}.stp
if { ![file exists ${filedir}/${TheFileName}.stp] } {