Modification for loading a few STEP files in the model.
Protected by Mutex
1. Loading STEP file in the model with using yacc and lex.
2. Message management
3. Registration in static structure Interface_GeneralLib, Interface_ReaderLib, Interface_Writer_Lib for each StepData_Procotol.
Modifications:
STEPControl_Controller, STEPCAFControl_Controller were created as not static objects when STEPControl_Reader or STEP_Control_Writes were initialized.
Parameters used for translation from Interface::Static were made not static. Map to keep parameters was added in the Interface::InterfaceModel. For STEP translation parameters were initialized during initializing STEPData_STEPModel. model.
Static variables were removed.
Redundant classes were removed from STEP translator.
static Handle(Interface_HArray1OfHAsciiString) nularr;
APIHeaderSection_MakeHeader::APIHeaderSection_MakeHeader
- (const Handle(StepData_StepModel)& model)
+(const Handle(StepData_StepModel)& model)
{
done = Standard_True;
- if (model->HasHeaderEntity (STANDARD_TYPE(HeaderSection_FileName))) {
+ if (model->HasHeaderEntity(STANDARD_TYPE(HeaderSection_FileName))) {
fn = GetCasted(HeaderSection_FileName,
- model->HeaderEntity(STANDARD_TYPE(HeaderSection_FileName)));
+ model->HeaderEntity(STANDARD_TYPE(HeaderSection_FileName)));
}
else done = Standard_False;
- if (model->HasHeaderEntity (STANDARD_TYPE(HeaderSection_FileSchema))) {
+ if (model->HasHeaderEntity(STANDARD_TYPE(HeaderSection_FileSchema))) {
fs = GetCasted(HeaderSection_FileSchema,
- model->HeaderEntity(STANDARD_TYPE(HeaderSection_FileSchema)));
+ model->HeaderEntity(STANDARD_TYPE(HeaderSection_FileSchema)));
}
else done = Standard_False;
- if (model->HasHeaderEntity (STANDARD_TYPE(HeaderSection_FileDescription))) {
+ if (model->HasHeaderEntity(STANDARD_TYPE(HeaderSection_FileDescription))) {
fd = GetCasted(HeaderSection_FileDescription,
- model->HeaderEntity(STANDARD_TYPE(HeaderSection_FileDescription)));
+ model->HeaderEntity(STANDARD_TYPE(HeaderSection_FileDescription)));
}
else done = Standard_False;
}
APIHeaderSection_MakeHeader::APIHeaderSection_MakeHeader
- (const Standard_Integer shapetype)
-{
- switch(shapetype) {
- case 1 : Init ("Open CASCADE Facetted BRep Model"); break;
- case 2 : Init ("Open CASCADE Face Based Surface Model"); break;
- case 3 : Init ("Open CASCADE Shell Based Surface Model"); break;
- case 4 : Init ("Open CASCADE Manifold Solid Brep Model"); break;
- default: Init ("Open CASCADE Shape Model"); break;
+(const Standard_Integer shapetype)
+{
+ switch (shapetype) {
+ case 1: Init("Open CASCADE Facetted BRep Model"); break;
+ case 2: Init("Open CASCADE Face Based Surface Model"); break;
+ case 3: Init("Open CASCADE Shell Based Surface Model"); break;
+ case 4: Init("Open CASCADE Manifold Solid Brep Model"); break;
+ default: Init("Open CASCADE Shape Model"); break;
}
}
-void APIHeaderSection_MakeHeader::Init (const Standard_CString nameval)
+void APIHeaderSection_MakeHeader::Init(const Standard_CString nameval)
{
done = Standard_True;
-
+
// - File Name
char timestamp[50];
-
+
if (fn.IsNull()) fn = new HeaderSection_FileName;
Handle(TCollection_HAsciiString) name = new TCollection_HAsciiString(nameval);
fn->SetName(name);
- Interface_MSG::TDate (timestamp,0,0,0,0,0,1,"C:%4.4d-%2.2d-%2.2dT%2.2d:%2.2d:%2.2d"); // actually
- Handle(TCollection_HAsciiString) tst =
+ Interface_MSG::TDate(timestamp, 0, 0, 0, 0, 0, 1, "C:%4.4d-%2.2d-%2.2dT%2.2d:%2.2d:%2.2d"); // actually
+ Handle(TCollection_HAsciiString) tst =
new TCollection_HAsciiString(timestamp);
fn->SetTimeStamp(tst);
- Handle(Interface_HArray1OfHAsciiString) authors =
- new Interface_HArray1OfHAsciiString(1,1);
- Handle(TCollection_HAsciiString) a1 =
+ Handle(Interface_HArray1OfHAsciiString) authors =
+ new Interface_HArray1OfHAsciiString(1, 1);
+ Handle(TCollection_HAsciiString) a1 =
new TCollection_HAsciiString("Author");
- authors->SetValue(1,a1);
+ authors->SetValue(1, a1);
fn->SetAuthor(authors);
- Handle(Interface_HArray1OfHAsciiString) org =
- new Interface_HArray1OfHAsciiString(1,1);
- Handle(TCollection_HAsciiString) org1 =
+ Handle(Interface_HArray1OfHAsciiString) org =
+ new Interface_HArray1OfHAsciiString(1, 1);
+ Handle(TCollection_HAsciiString) org1 =
new TCollection_HAsciiString("Open CASCADE");
- org->SetValue(1,org1);
+ org->SetValue(1, org1);
fn->SetOrganization(org);
-
+
char procver[80];
- sprintf (procver, XSTEP_PROCESSOR_VERSION, "STEP");
- Handle(TCollection_HAsciiString) pv = new TCollection_HAsciiString (procver);
+ sprintf(procver, XSTEP_PROCESSOR_VERSION, "STEP");
+ Handle(TCollection_HAsciiString) pv = new TCollection_HAsciiString(procver);
//Handle(TCollection_HAsciiString) pv =
//new TCollection_HAsciiString(XSTEP_VERSION);
fn->SetPreprocessorVersion(pv);
-
- Handle(TCollection_HAsciiString) sys =
+
+ Handle(TCollection_HAsciiString) sys =
new TCollection_HAsciiString(XSTEP_SYSTEM_VERSION);//#58 rln
fn->SetOriginatingSystem(sys);
- Handle(TCollection_HAsciiString) auth =
+ Handle(TCollection_HAsciiString) auth =
new TCollection_HAsciiString("Unknown");
fn->SetAuthorisation(auth);
-
+
// - File Description
-
+
if (fd.IsNull()) fd = new HeaderSection_FileDescription;
Handle(Interface_HArray1OfHAsciiString) descr =
- new Interface_HArray1OfHAsciiString(1,1);
- Handle(TCollection_HAsciiString) descr1 =
+ new Interface_HArray1OfHAsciiString(1, 1);
+ Handle(TCollection_HAsciiString) descr1 =
new TCollection_HAsciiString("Open CASCADE Model");
- descr->SetValue(1,descr1);
+ descr->SetValue(1, descr1);
fd->SetDescription(descr);
- Handle(TCollection_HAsciiString) il =
+ Handle(TCollection_HAsciiString) il =
new TCollection_HAsciiString("2;1");
fd->SetImplementationLevel(il);
// - File Schema
- if (fs.IsNull()) fs = new HeaderSection_FileSchema;
+ if (fs.IsNull()) fs = new HeaderSection_FileSchema;
Handle(Interface_HArray1OfHAsciiString) schid =
- new Interface_HArray1OfHAsciiString(1,1);
- Handle(TCollection_HAsciiString) schid1 =
+ new Interface_HArray1OfHAsciiString(1, 1);
+ Handle(TCollection_HAsciiString) schid1 =
new TCollection_HAsciiString("");
- schid->SetValue(1,schid1);
+ schid->SetValue(1, schid1);
fs->SetSchemaIdentifiers(schid);
}
}
void APIHeaderSection_MakeHeader::Apply
- (const Handle(StepData_StepModel)& model) const
+(const Handle(StepData_StepModel)& model) const
{
Interface_EntityIterator header = model->Header();
- if (HasFd() && !model->HasHeaderEntity (STANDARD_TYPE(HeaderSection_FileDescription)))
+ if (HasFd() && !model->HasHeaderEntity(STANDARD_TYPE(HeaderSection_FileDescription)))
header.AddItem(fd);
- if (HasFn() && !model->HasHeaderEntity (STANDARD_TYPE(HeaderSection_FileName)))
+ if (HasFn() && !model->HasHeaderEntity(STANDARD_TYPE(HeaderSection_FileName)))
header.AddItem(fn);
- if (HasFs() && !model->HasHeaderEntity (STANDARD_TYPE(HeaderSection_FileSchema))) {
+ if (HasFs() && !model->HasHeaderEntity(STANDARD_TYPE(HeaderSection_FileSchema))) {
-// Schema defined? If not take it from the protocole
+ // Schema defined? If not take it from the protocole
Handle(TCollection_HAsciiString) sch;
Handle(Interface_HArray1OfHAsciiString) schid = fs->SchemaIdentifiers();
if (!schid.IsNull()) sch = schid->Value(1);
else {
- schid = new Interface_HArray1OfHAsciiString(1,1);
+ schid = new Interface_HArray1OfHAsciiString(1, 1);
fs->SetSchemaIdentifiers(schid);
}
if (!sch.IsNull()) { if (sch->Length() < 2) sch.Nullify(); } // not defined
if (sch.IsNull()) {
Handle(StepData_Protocol) stepro = Handle(StepData_Protocol)::DownCast
- ( model->Protocol());
- if (!stepro.IsNull()) sch = new TCollection_HAsciiString
- (stepro->SchemaName());
- if (!sch.IsNull()) schid->SetValue (1,sch);
+ (model->Protocol());
+ Handle(Interface_Static) aParam = model->GetParam("write.step.schema");
+ if (!aParam.IsNull() && !stepro.IsNull())
+ sch = new TCollection_HAsciiString(stepro->SchemaName(aParam->IntegerValue()));
+ if (!sch.IsNull()) schid->SetValue(1, sch);
}
header.AddItem(fs);
}
// ========
Handle(StepData_StepModel) APIHeaderSection_MakeHeader::NewModel
- (const Handle(Interface_Protocol)& protocol) const
+(const Handle(Interface_Protocol)& protocol) const
{
Handle(StepData_StepModel) stepmodel = new StepData_StepModel;
- stepmodel->SetProtocol (protocol);
+ stepmodel->SetProtocol(protocol);
- // - Make Header information
+ // - Make Header information
Apply(stepmodel);
return stepmodel;
// ========
Standard_Boolean APIHeaderSection_MakeHeader::HasFn() const
-{ return (!fn.IsNull()); }
+{
+ return (!fn.IsNull());
+}
Handle(HeaderSection_FileName) APIHeaderSection_MakeHeader::FnValue() const
{
void APIHeaderSection_MakeHeader::SetNameFromShapeType(const Standard_Integer shapetype)
{
Handle(TCollection_HAsciiString) name;
- switch(shapetype)
+ switch(shapetype)
{
case 1: // face_based_surface_model
name = new TCollection_HAsciiString
- ("Euclid Face Based Surface Model");
+ ("Euclid Face Based Surface Model");
break;
case 2: // manifold_solid_brep
- name = new TCollection_HAsciiString
- ("Euclid Manifold Solid Brep Model");
+ name = new TCollection_HAsciiString
+ ("Euclid Manifold Solid Brep Model");
break;
case 3: // facetted_brep
name = new TCollection_HAsciiString
- ("Euclid Facetted Brep Model");
+ ("Euclid Facetted Brep Model");
break;
default : // others ?
name = new TCollection_HAsciiString
- ("Euclid Shape Model");
+ ("Euclid Shape Model");
break;
}
SetName(aName);
void APIHeaderSection_MakeHeader::SetName(const Handle(TCollection_HAsciiString)& aName)
{
- if (!fn.IsNull()) fn->SetName(aName);
+ if (!fn.IsNull()) fn->SetName(aName);
}
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::Name() const
{
- return (fn.IsNull() ? nulstr : fn->Name());
+ return (fn.IsNull() ? nulstr : fn->Name());
}
void APIHeaderSection_MakeHeader::SetTimeStamp(const Handle(TCollection_HAsciiString)& aTimeStamp)
{
- if (!fn.IsNull()) fn->SetTimeStamp(aTimeStamp);
+ if (!fn.IsNull()) fn->SetTimeStamp(aTimeStamp);
}
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::TimeStamp() const
{
- return (fn.IsNull() ? nulstr : fn->TimeStamp());
+ return (fn.IsNull() ? nulstr : fn->TimeStamp());
}
void APIHeaderSection_MakeHeader::SetAuthor(const Handle(Interface_HArray1OfHAsciiString)& aAuthor)
{
- if (!fn.IsNull()) fn->SetAuthor(aAuthor);
+ if (!fn.IsNull()) fn->SetAuthor(aAuthor);
}
void APIHeaderSection_MakeHeader::SetAuthorValue(const Standard_Integer num, const Handle(TCollection_HAsciiString)& aAuthor)
{
if (fn.IsNull()) return;
Handle(Interface_HArray1OfHAsciiString) li = fn->Author();
- if (num >= li->Lower() && num <= li->Upper()) li->SetValue(num,aAuthor);
+ if (num >= li->Lower() && num <= li->Upper()) li->SetValue(num, aAuthor);
}
Handle(Interface_HArray1OfHAsciiString) APIHeaderSection_MakeHeader::Author() const
{
- return (fn.IsNull() ? nularr : fn->Author());
+ return (fn.IsNull() ? nularr : fn->Author());
}
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::AuthorValue(const Standard_Integer num) const
{
- return (fn.IsNull() ? nulstr : fn->AuthorValue(num));
+ return (fn.IsNull() ? nulstr : fn->AuthorValue(num));
}
-Standard_Integer APIHeaderSection_MakeHeader::NbAuthor () const
+Standard_Integer APIHeaderSection_MakeHeader::NbAuthor() const
{
- return (fn.IsNull() ? 0 : fn->NbAuthor());
+ return (fn.IsNull() ? 0 : fn->NbAuthor());
}
void APIHeaderSection_MakeHeader::SetOrganization(const Handle(Interface_HArray1OfHAsciiString)& aOrganization)
{
- if (!fn.IsNull()) fn->SetOrganization(aOrganization);
+ if (!fn.IsNull()) fn->SetOrganization(aOrganization);
}
void APIHeaderSection_MakeHeader::SetOrganizationValue(const Standard_Integer num, const Handle(TCollection_HAsciiString)& aOrgan)
{
if (fn.IsNull()) return;
Handle(Interface_HArray1OfHAsciiString) li = fn->Organization();
- if (num >= li->Lower() && num <= li->Upper()) li->SetValue(num,aOrgan);
+ if (num >= li->Lower() && num <= li->Upper()) li->SetValue(num, aOrgan);
}
Handle(Interface_HArray1OfHAsciiString) APIHeaderSection_MakeHeader::Organization() const
{
- return (fn.IsNull() ? nularr : fn->Organization());
+ return (fn.IsNull() ? nularr : fn->Organization());
}
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::OrganizationValue(const Standard_Integer num) const
{
- return (fn.IsNull() ? nulstr : fn->OrganizationValue(num));
+ return (fn.IsNull() ? nulstr : fn->OrganizationValue(num));
}
-Standard_Integer APIHeaderSection_MakeHeader::NbOrganization () const
+Standard_Integer APIHeaderSection_MakeHeader::NbOrganization() const
{
- return (fn.IsNull() ? 0 : fn->NbOrganization());
+ return (fn.IsNull() ? 0 : fn->NbOrganization());
}
void APIHeaderSection_MakeHeader::SetPreprocessorVersion(const Handle(TCollection_HAsciiString)& aPreprocessorVersion)
{
- if (!fn.IsNull()) fn->SetPreprocessorVersion(aPreprocessorVersion);
+ if (!fn.IsNull()) fn->SetPreprocessorVersion(aPreprocessorVersion);
}
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::PreprocessorVersion() const
{
- return (fn.IsNull() ? nulstr : fn->PreprocessorVersion());
+ return (fn.IsNull() ? nulstr : fn->PreprocessorVersion());
}
void APIHeaderSection_MakeHeader::SetOriginatingSystem(const Handle(TCollection_HAsciiString)& aOriginatingSystem)
{
- if (!fn.IsNull()) fn->SetOriginatingSystem(aOriginatingSystem);
+ if (!fn.IsNull()) fn->SetOriginatingSystem(aOriginatingSystem);
}
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::OriginatingSystem() const
{
- return (fn.IsNull() ? nulstr : fn->OriginatingSystem());
+ return (fn.IsNull() ? nulstr : fn->OriginatingSystem());
}
void APIHeaderSection_MakeHeader::SetAuthorisation(const Handle(TCollection_HAsciiString)& aAuthorisation)
{
- if (!fn.IsNull()) fn->SetAuthorisation(aAuthorisation);
+ if (!fn.IsNull()) fn->SetAuthorisation(aAuthorisation);
}
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::Authorisation() const
{
- return (fn.IsNull() ? nulstr : fn->Authorisation());
+ return (fn.IsNull() ? nulstr : fn->Authorisation());
}
// ===========
// ===========
Standard_Boolean APIHeaderSection_MakeHeader::HasFs() const
-{ return (!fs.IsNull()); }
+{
+ return (!fs.IsNull());
+}
Handle(HeaderSection_FileSchema) APIHeaderSection_MakeHeader::FsValue() const
{
void APIHeaderSection_MakeHeader::SetSchemaIdentifiers(const Handle(Interface_HArray1OfHAsciiString)& aSchemaIdentifiers)
{
- if (!fs.IsNull()) fs->SetSchemaIdentifiers(aSchemaIdentifiers);
+ if (!fs.IsNull()) fs->SetSchemaIdentifiers(aSchemaIdentifiers);
}
void APIHeaderSection_MakeHeader::SetSchemaIdentifiersValue(const Standard_Integer num, const Handle(TCollection_HAsciiString)& aSchem)
{
if (fs.IsNull()) return;
Handle(Interface_HArray1OfHAsciiString) li = fs->SchemaIdentifiers();
- if (num >= li->Lower() && num <= li->Upper()) li->SetValue(num,aSchem);
+ if (num >= li->Lower() && num <= li->Upper()) li->SetValue(num, aSchem);
}
Handle(Interface_HArray1OfHAsciiString) APIHeaderSection_MakeHeader::SchemaIdentifiers() const
{
- return (fs.IsNull() ? nularr : fs->SchemaIdentifiers());
+ return (fs.IsNull() ? nularr : fs->SchemaIdentifiers());
}
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::SchemaIdentifiersValue(const Standard_Integer num) const
{
- return (fs.IsNull() ? nulstr : fs->SchemaIdentifiersValue(num));
+ return (fs.IsNull() ? nulstr : fs->SchemaIdentifiersValue(num));
}
-Standard_Integer APIHeaderSection_MakeHeader::NbSchemaIdentifiers () const
+Standard_Integer APIHeaderSection_MakeHeader::NbSchemaIdentifiers() const
{
- return (fs.IsNull() ? 0 : fs->NbSchemaIdentifiers());
+ return (fs.IsNull() ? 0 : fs->NbSchemaIdentifiers());
}
//=======================================================================
void APIHeaderSection_MakeHeader::AddSchemaIdentifier(const Handle(TCollection_HAsciiString)& aSchem)
{
- if ( fs.IsNull() ) fs = new HeaderSection_FileSchema;
+ if (fs.IsNull()) fs = new HeaderSection_FileSchema;
Handle(Interface_HArray1OfHAsciiString) idents = fs->SchemaIdentifiers();
// check that requested subschema is already in the list
Standard_Integer i;
- for ( i=1; ! idents.IsNull() && i <= idents->Length(); i++ ) {
- if ( aSchem->IsSameString ( idents->Value(i) ) ) return;
+ for (i = 1; !idents.IsNull() && i <= idents->Length(); i++) {
+ if (aSchem->IsSameString(idents->Value(i))) return;
}
-
+
// add a subshema
- Handle(Interface_HArray1OfHAsciiString) ids =
- new Interface_HArray1OfHAsciiString ( 1, ( idents.IsNull() ? 1 : idents->Length() + 1 ) );
- for ( i=1; ! idents.IsNull() && i <= idents->Length(); i++ ) {
- ids->SetValue ( i, idents->Value(i) );
+ Handle(Interface_HArray1OfHAsciiString) ids =
+ new Interface_HArray1OfHAsciiString(1, (idents.IsNull() ? 1 : idents->Length() + 1));
+ for (i = 1; !idents.IsNull() && i <= idents->Length(); i++) {
+ ids->SetValue(i, idents->Value(i));
}
- ids->SetValue ( i, aSchem );
-
- fs->SetSchemaIdentifiers ( ids );
+ ids->SetValue(i, aSchem);
+
+ fs->SetSchemaIdentifiers(ids);
}
// ================
// ================
Standard_Boolean APIHeaderSection_MakeHeader::HasFd() const
-{ return (!fd.IsNull()); }
+{
+ return (!fd.IsNull());
+}
Handle(HeaderSection_FileDescription) APIHeaderSection_MakeHeader::FdValue() const
{
void APIHeaderSection_MakeHeader::SetDescription(const Handle(Interface_HArray1OfHAsciiString)& aDescription)
{
- if (!fs.IsNull()) fd->SetDescription(aDescription);
+ if (!fs.IsNull()) fd->SetDescription(aDescription);
}
void APIHeaderSection_MakeHeader::SetDescriptionValue(const Standard_Integer num, const Handle(TCollection_HAsciiString)& aDescr)
{
if (fd.IsNull()) return;
Handle(Interface_HArray1OfHAsciiString) li = fd->Description();
- if (num >= li->Lower() && num <= li->Upper()) li->SetValue(num,aDescr);
+ if (num >= li->Lower() && num <= li->Upper()) li->SetValue(num, aDescr);
}
Handle(Interface_HArray1OfHAsciiString) APIHeaderSection_MakeHeader::Description() const
{
- return (fd.IsNull() ? nularr : fd->Description());
+ return (fd.IsNull() ? nularr : fd->Description());
}
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::DescriptionValue(const Standard_Integer num) const
{
- return (fd.IsNull() ? nulstr : fd->DescriptionValue(num));
+ return (fd.IsNull() ? nulstr : fd->DescriptionValue(num));
}
-Standard_Integer APIHeaderSection_MakeHeader::NbDescription () const
+Standard_Integer APIHeaderSection_MakeHeader::NbDescription() const
{
- return (fd.IsNull() ? 0 : fd->NbDescription());
+ return (fd.IsNull() ? 0 : fd->NbDescription());
}
void APIHeaderSection_MakeHeader::SetImplementationLevel(const Handle(TCollection_HAsciiString)& aImplementationLevel)
{
- if (!fd.IsNull()) fd->SetImplementationLevel(aImplementationLevel);
+ if (!fd.IsNull()) fd->SetImplementationLevel(aImplementationLevel);
}
Handle(TCollection_HAsciiString) APIHeaderSection_MakeHeader::ImplementationLevel() const
{
- return (fd.IsNull() ? nulstr : fd->ImplementationLevel());
+ return (fd.IsNull() ? nulstr : fd->ImplementationLevel());
}
HeaderSection_FileName.hxx
HeaderSection_FileSchema.cxx
HeaderSection_FileSchema.hxx
-HeaderSection_HeaderRecognizer.cxx
-HeaderSection_HeaderRecognizer.hxx
HeaderSection_Protocol.cxx
HeaderSection_Protocol.hxx
#include <HeaderSection_Protocol.hxx>
#include <Interface_Statics.hxx>
-StaticHandle(HeaderSection_Protocol, proto);
+//StaticHandle(HeaderSection_Protocol, proto);
Handle(HeaderSection_Protocol) HeaderSection::Protocol()
- {
- InitHandleVoid(HeaderSection_Protocol, proto);
- return proto;
- }
+{
+ //InitHandleVoid(HeaderSection_Protocol, proto);
+ return new HeaderSection_Protocol;
+}
+++ /dev/null
-// Created on: 1994-06-27
-// Created by: Frederic MAUPAS
-// Copyright (c) 1994-1999 Matra Datavision
-// Copyright (c) 1999-2014 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-
-#include <HeaderSection_FileDescription.hxx>
-#include <HeaderSection_FileName.hxx>
-#include <HeaderSection_FileSchema.hxx>
-#include <HeaderSection_HeaderRecognizer.hxx>
-#include <Standard_Type.hxx>
-#include <TCollection_AsciiString.hxx>
-
-IMPLEMENT_STANDARD_RTTIEXT(HeaderSection_HeaderRecognizer,StepData_FileRecognizer)
-
-static TCollection_AsciiString reco_FileName ("FILE_NAME");
-static TCollection_AsciiString reco_FileSchema ("FILE_SCHEMA");
-static TCollection_AsciiString reco_FileDescription ("FILE_DESCRIPTION");
-
-
-
-HeaderSection_HeaderRecognizer::HeaderSection_HeaderRecognizer ()
-{ }
-
-void HeaderSection_HeaderRecognizer::Eval
- (const TCollection_AsciiString& key)
-{
- if (key.IsEqual(reco_FileName)) {
- SetOK(new HeaderSection_FileName);
- return;
- }
- if (key.IsEqual(reco_FileSchema)) {
- SetOK(new HeaderSection_FileSchema);
- return;
- }
- if (key.IsEqual(reco_FileDescription)) {
- SetOK(new HeaderSection_FileDescription);
- return;
- }
-}
+++ /dev/null
-// Created on: 1994-06-27
-// Created by: Frederic MAUPAS
-// Copyright (c) 1994-1999 Matra Datavision
-// Copyright (c) 1999-2014 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-#ifndef _HeaderSection_HeaderRecognizer_HeaderFile
-#define _HeaderSection_HeaderRecognizer_HeaderFile
-
-#include <Standard.hxx>
-#include <Standard_Type.hxx>
-
-#include <StepData_FileRecognizer.hxx>
-class TCollection_AsciiString;
-
-
-class HeaderSection_HeaderRecognizer;
-DEFINE_STANDARD_HANDLE(HeaderSection_HeaderRecognizer, StepData_FileRecognizer)
-
-//! Recognizes STEP Standard Header Entities
-//! (FileName, FileDescription, FileSchema)
-class HeaderSection_HeaderRecognizer : public StepData_FileRecognizer
-{
-
-public:
-
-
- Standard_EXPORT HeaderSection_HeaderRecognizer();
-
-
-
-
- DEFINE_STANDARD_RTTIEXT(HeaderSection_HeaderRecognizer,StepData_FileRecognizer)
-
-protected:
-
-
- //! Recognizes data types of Header STEP Standard
- Standard_EXPORT void Eval (const TCollection_AsciiString& key) Standard_OVERRIDE;
-
-
-
-private:
-
-
-
-
-};
-
-
-
-
-
-
-
-#endif // _HeaderSection_HeaderRecognizer_HeaderFile
IMPLEMENT_STANDARD_RTTIEXT(HeaderSection_Protocol,StepData_Protocol)
-static Standard_CString schemaName = "header_section";
+//static Standard_CString schemaName = "header_section";
HeaderSection_Protocol::HeaderSection_Protocol () { }
else return 0;
}
-Standard_CString HeaderSection_Protocol::SchemaName() const
- { return schemaName; }
+Standard_CString HeaderSection_Protocol::SchemaName(Standard_Integer /*theShematype*/)
+ { return "header_section"; }
//! 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 :"<<Message_EndLine;
- for (i = 1; i <= nb; i ++) sout<<" "<<li->Value(i)->ToCString();
- sout<<Message_EndLine<<" defparam name_param to known more about one"<<Message_EndLine;
- sout<<" defparam nom_param e options to edit a definition"<<Message_EndLine;
-
- } else if (argc == 2) {
- sout<<" Definition of Parameter : "<<arg1<<Message_EndLine;
- Handle(Interface_Static) unst = Interface_Static::Static (arg1);
- if (unst.IsNull()) sout<<" undefined"<<Message_EndLine;
- 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]"<<Message_EndLine; 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"
- <<Message_EndLine;
- return IFSelect_RetVoid;
- }
- if (argc > 4) sout<<"Only the command and ONE more arg are considered"<<Message_EndLine;
- sprintf(comm,"%s %s",pilot->Arg(3),pilot->Arg(4));
- sout<<"Editing parameter : "<<arg1<<" , by command : "<<comm<<Message_EndLine;
-
- Handle(Interface_Static) unst = Interface_Static::Static (arg1);
- if (unst.IsNull()) { sout<<arg1<<" undefined"<<Message_EndLine; return IFSelect_RetError; }
- if (Interface_Static::Init(unst->Family(),arg1,'&',comm))
- { sout<<"Editing done"<<Message_EndLine; return IFSelect_RetDone; }
- else { sout<<"Command not processed : "<<comm<<Message_EndLine; return IFSelect_RetFail; }
- }
- sout<<"Unknown Option : "<<arg2<<Message_EndLine;
- 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);
{
Interface_CheckIterator checks;
checks.SetName ("X-STEP WorkSession : Send All");
- Message::DefaultMessenger() <<
- "** WorkSession : Sending all data"<<Message_EndLine;
+ //Message::DefaultMessenger() <<
+ // "** WorkSession : Sending all data"<<Message_EndLine;
Handle(Interface_InterfaceModel) model = G.Model();
if (model.IsNull() || protocol.IsNull() || WL.IsNull()) return checks;
#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>
{
if (thelibrary.IsNull()) return IFSelect_RetVoid;
if (theprotocol.IsNull()) return IFSelect_RetVoid;
- Handle(Interface_InterfaceModel) model;
+ Handle(Interface_InterfaceModel) model =myModel;
IFSelect_ReturnStatus status = IFSelect_RetVoid;
try {
OCC_CATCH_SIGNALS
// #################################################################
// .... 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 :
{
Standard_Integer effect = 0;
if (transf.IsNull() || !IsLoaded()) return effect;
+
Handle(Interface_InterfaceModel) newmod; // Null au depart
Interface_CheckIterator checks;
checks.SetName("X-STEP WorkSession : RunTransformer");
Standard_Boolean res = transf->Perform
- (thegraph->Graph(),theprotocol,checks,newmod);
+ (thegraph->Graph(),theprotocol,checks,myModel);
if (!checks.IsEmpty(Standard_False)) {
Handle(Message_Messenger) sout = Message::DefaultMessenger();
}
Handle(IFSelect_Selection) sel;
- if (np >= 0)
+ if (np >= 0)
{
nomsel[np] = 0;
}
//! - 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)
#endif
#include <stdio.h>
-static int errh = 1;
-
-static void raisecheck (Standard_Failure& theException,Handle(Interface_Check)& ach)
+void Interface_CheckTool::raisecheck (Standard_Failure& theException,Handle(Interface_Check)& ach)
{
char mess[100];
sprintf (mess,"** Exception Raised during Check : %s **",
theshare (model,protocol)
{
thestat = 0;
+ errh = 1;
}
{
thestat = 0;
thegtool->Reservate(model->NbEntities());
+ errh = 1;
}
Interface_CheckTool::Interface_CheckTool(const Interface_Graph& graph)
: thegtool(graph.Model()->GTool()) , theshare (graph)
{
+ errh = 1;
}
Interface_CheckTool::Interface_CheckTool(const Handle(Interface_HGraph)& hgraph)
: thegtool(hgraph->Graph().Model()->GTool()) , theshare (hgraph)
{
+ errh = 1;
}
Standard_Integer CN;
if (thegtool->Select(ent,module,CN)) {
// Sans try/catch (fait par l appelant, evite try/catch en boucle)
- if (!errh) {
- module->CheckCase(CN,ent,sh,ach);
- return;
- }
+ //if (!errh) {
+ // module->CheckCase(CN,ent,sh,ach);
+ // return;
+ //}
// Avec try/catch
try {
OCC_CATCH_SIGNALS
Handle(Interface_InterfaceModel) model = theshare.Model();
Handle(Standard_Transient) ent = model->Value(num);
Handle(Interface_Check) ach = new Interface_Check(ent); // non filtre par "Warning" : tel quel
- errh = 1;
+ //errh = 1;
FillCheck(ent,theshare,ach);
return ach;
}
("Interface Model : Global Check");
Handle(Interface_InterfaceModel) model = theshare.Model();
if (model->GlobalCheck()->NbFails() > 0) throw Interface_CheckFailure("Interface Model : Global Check");
- Handle(Interface_Check) modchk = new Interface_Check;
- model->VerifyCheck(modchk);
- if (!model->Protocol().IsNull()) model->Protocol()->GlobalCheck (theshare.Graph(),modchk);
- if (modchk->HasFailed()) throw Interface_CheckFailure("Interface Model : Verify Check");
- if (thestat == 3) return; // tout teste et ca passe
+ //Handle(Interface_Check) modchk = new Interface_Check;
+ //model->VerifyCheck(modchk);
+ //if (!model->Protocol().IsNull()) model->Protocol()->GlobalCheck (theshare.Graph(),modchk);
+ //if (modchk->HasFailed()) throw Interface_CheckFailure("Interface Model : Verify Check");
+ //if (thestat == 3) return; // tout teste et ca passe
- errh = 0; // Pas de try/catch, car justement on raise
+ //errh = 0; // Pas de try/catch, car justement on raise
Standard_Integer nb = model->NbEntities();
for (Standard_Integer i = 1; i <= nb; i ++) {
if (model->IsErrorEntity(i)) throw Interface_CheckFailure("Interface Model : an Entity is recorded as Erroneous");
Interface_CheckIterator res;
res.SetModel(model);
Handle(Interface_Check) globch = model->GlobalCheck(); // GlobalCheck Statique
- if (!model->Protocol().IsNull()) model->Protocol()->GlobalCheck (theshare.Graph(),globch);
- model->VerifyCheck(globch); // GlobalCheck Dynamique
- if (globch->HasFailed() || globch->HasWarnings()) res.Add(globch,0);
- if (globch->HasFailed()) thestat |= 12;
+ //if (!model->Protocol().IsNull()) model->Protocol()->GlobalCheck (theshare.Graph(),globch);
+ //model->VerifyCheck(globch); // GlobalCheck Dynamique
+ //if (globch->HasFailed() || globch->HasWarnings()) res.Add(globch,0);
+ //if (globch->HasFailed()) thestat |= 12;
Standard_Integer i=0,n0 = 1, nb = model->NbEntities();
- errh = 0;
+ //errh = 0;
while (n0 <= nb) {
Handle(Interface_Check) ach = new Interface_Check;
Handle(Standard_Transient) ent;
res.SetModel(model);
Standard_Integer i=0, n0 = 1, nb = model->NbEntities();
Handle(Interface_Check) globch = model->GlobalCheck();
- if (!model->Protocol().IsNull()) model->Protocol()->GlobalCheck (theshare.Graph(),globch);
- model->VerifyCheck(globch);
- if (globch->HasFailed()) { thestat |= 12; res.Add(globch,0); }
+ //if (!model->Protocol().IsNull()) model->Protocol()->GlobalCheck (theshare.Graph(),globch);
+ //model->VerifyCheck(globch);
+ //if (globch->HasFailed()) { thestat |= 12; res.Add(globch,0); }
- errh = 0;
+ //errh = 0;
while (n0 <= nb) {
Handle(Interface_Check) ach = new Interface_Check;
Handle(Standard_Transient) ent;
res.SetModel(model);
Standard_Integer i=0, n0 = 1, nb = model->NbEntities();
- errh = 0;
+ //errh = 0;
while (n0 <= nb) {
Handle(Interface_Check) ach = new Interface_Check;
try {
res.SetModel(model);
Standard_Integer i=0, n0 = 1, nb = model->NbEntities();
- errh = 0;
+ //errh = 0;
while (n0 <= nb) {
Handle(Standard_Transient) ent;
Handle(Interface_Check) ach = new Interface_Check;
res.SetModel(model);
Standard_Integer i=0, n0 = 1, nb = model->NbEntities();
- errh = 0;
+ //errh = 0;
while (n0 <= nb) {
Handle(Interface_Check) ach = new Interface_Check;
Handle(Standard_Transient) ent;
private:
+ Standard_EXPORT void raisecheck(Standard_Failure& theException, Handle(Interface_Check)& ach);
Handle(Interface_GTool) thegtool;
Interface_ShareTool theshare;
Standard_Integer thestat;
+ Standard_Integer errh;
};
{
themessenger = Message::DefaultMessenger();
theerrhand = Standard_True;
- thetrace = 1;
+ thetrace = 0;
thenbrep0 = thenbreps = 0;
}
}
catch (Standard_Failure const&) {
// Sendinf of message : Internal error during the header reading
- Message_Msg Msg11("XSTEP_11");
- TF->Send (Msg11, Message_Info);
+ if (!TF.IsNull())
+ {
+ Message_Msg Msg11("XSTEP_11");
+ TF->Send(Msg11, Message_Info);
+ }
}
}
else
// .. Fin Lecture ..
if (anent.IsNull()) {
// Sending of message : Number of ignored Null Entities
- Message_Msg Msg21("XSTEP_21");
- Msg21.Arg(amodel->NbEntities());
- TF->Send (Msg21, Message_Info);
+ if (!TF.IsNull())
+ {
+ Message_Msg Msg21("XSTEP_21");
+ Msg21.Arg(amodel->NbEntities());
+ TF->Send(Msg21, Message_Info);
+ }
continue;
}
// LoadedEntity fait AddEntity MAIS PAS SetReport (en bloc a la fin)
//:abv 03Apr00: anent is actually a previous one: if (anent.IsNull())
anent = thereader->BoundEntity(num);
if (anent.IsNull()) {
- if (thetrace > 0)
- {
- // Sending of message : Number of ignored Null Entities
- Message_Msg Msg21("XSTEP_21");
- Msg21.Arg(amodel->NbEntities()+1);
- TF->Send (Msg21, Message_Info);
- continue;
+ if (thetrace > 0)
+ {
+ // Sending of message : Number of ignored Null Entities
+ if (!TF.IsNull())
+ {
+
+ Message_Msg Msg21("XSTEP_21");
+ Msg21.Arg(amodel->NbEntities() + 1);
+
+ TF->Send(Msg21, Message_Info);
+ }
+ continue;
}
}
/*Handle(Interface_Check)*/ ach = new Interface_Check(anent);
ach->SendFail (Msg278);
if (ierr == 2) {
- // Sending of message : reading of entity failed
- Message_Msg Msg22("XSTEP_22");
- Msg22.Arg(amodel->StringLabel(anent));
- TF->Send (Msg22, Message_Info);
+ // Sending of message : reading of entity failed
+ if (!TF.IsNull())
+ {
+ Message_Msg Msg22("XSTEP_22");
+ Msg22.Arg(amodel->StringLabel(anent));
+ TF->Send(Msg22, Message_Info);
+ }
return;
}
ierr = 1;
// ce qui serait bien ici serait de recuperer le texte de l erreur pour ach ...
if (thetrace > 0) {
- // Sending of message : recovered entity
- Message_Msg Msg23("XSTEP_23");
- Msg23.Arg(num);
- TF->Send (Msg23, Message_Info);
+ // Sending of message : recovered entity
+ if (!TF.IsNull())
+ {
+ Message_Msg Msg23("XSTEP_23");
+ Msg23.Arg(num);
+ TF->Send(Msg23, Message_Info);
+ }
}
// Finalement, on charge une Entite Inconnue
else {
if (thetrace > 0) {
// Sending of message : reading of entity failed
- Message_Msg Msg22("XSTEP_22");
- Msg22.Arg(amodel->StringLabel(anent));
- TF->Send (Msg22, Message_Info);
+ if (!TF.IsNull())
+ {
+ Message_Msg Msg22("XSTEP_22");
+ Msg22.Arg(amodel->StringLabel(anent));
+ TF->Send(Msg22, Message_Info);
+ }
}
// On garde <rep> telle quelle : pas d analyse fichier supplementaire,
// Mais la phase preliminaire eventuelle est conservee
if (thetrace > 0)
{
// Sending of message : report
- Message_Msg Msg24("XSTEP_24");
- Msg24.Arg(thenbreps);
- TF->Send (Msg24, Message_Info);
+ if (!TF.IsNull())
+ {
+ Message_Msg Msg24("XSTEP_24");
+ Msg24.Arg(thenbreps);
+ TF->Send(Msg24, Message_Info);
+ }
}
amodel->Reservate (-thenbreps-10);
thenbreps = thereports->Upper();
}
catch (Standard_Failure const&) {
// Sendinf of message : Internal error during the header reading
- Message_Msg Msg11("XSTEP_11");
- TF->Send (Msg11, Message_Info);
+ if (!TF.IsNull())
+ {
+ Message_Msg Msg11("XSTEP_11");
+ TF->Send(Msg11, Message_Info);
+ }
}
}
else
// Trace Entite Inconnue
if (thetrace >= 2 && theproto->IsUnknownEntity(anent)) {
Handle(Message_Messenger) TF = Messenger();
- Message_Msg Msg22("XSTEP_22");
- // Sending of message : reading of entity failed
- Msg22.Arg(themodel->StringLabel(anent)->String());
- TF->Send (Msg22, Message_Info);
+ if (!TF.IsNull())
+ {
+ Message_Msg Msg22("XSTEP_22");
+ // Sending of message : reading of entity failed
+ Msg22.Arg(themodel->StringLabel(anent)->String());
+ TF->Send(Msg22, Message_Info);
+ }
}
// .. Chargement proprement dit : Specifique de la Norme ..
AnalyseRecord(num,anent,ach);
}
thereports->SetValue(irep,rep);
- if ( thetrace >= 2)
+ if ( thetrace >= 2 && !Messenger().IsNull())
ach->Print (Messenger(),2);
}
}
return list;
}
+
+//=======================================================================
+//function : GetParam
+//purpose :
+//=======================================================================
+Handle(Interface_Static) Interface_InterfaceModel::GetParam
+(const Standard_CString theParamName) const
+{
+ Handle(Interface_Static) aParam;
+ if (myParamMap.IsBound(theParamName))
+ {
+ Handle(Standard_Transient) result;
+ myParamMap.Find(theParamName, result);
+ if (!result.IsNull())
+ aParam = Handle(Interface_Static)::DownCast(result);
+ }
+ if (aParam.IsNull())
+ {
+#ifdef OCCT_DEBUG
+ cout << "Warning: Incorrect parameter :" << name << endl;
+#endif
+ }
+ return aParam;
+}
+
+//=======================================================================
+//function : GetParam
+//purpose :
+//=======================================================================
+void Interface_InterfaceModel::AddParam
+(const Standard_CString theParamName, Handle(Interface_Static)& theParam)
+{
+ myParamMap.Bind(theParamName, theParam);
+}
+//=======================================================================
+//function : AllParameters
+//purpose :
+//=======================================================================
+const NCollection_DataMap<TCollection_AsciiString, Handle(Standard_Transient)>& Interface_InterfaceModel::AllParameters()
+{
+ return myParamMap;
+}
+
+//=======================================================================
+//function : IVal
+//purpose :
+//=======================================================================
+Standard_Integer Interface_InterfaceModel::IVal(const Standard_CString theParamName) const
+{
+ Handle(Interface_Static) aParam = GetParam(theParamName);
+ return (aParam.IsNull() ? 0 : aParam->IntegerValue());
+}
+
+//=======================================================================
+//function : RVal
+//purpose :
+//=======================================================================
+Standard_Real Interface_InterfaceModel::RVal(const Standard_CString theParamName) const
+{
+ Handle(Interface_Static) aParam = GetParam(theParamName);
+ return (aParam.IsNull() ? 0.0 : aParam->RealValue());
+}
+
+//=======================================================================
+//function : CVal
+//purpose :
+//=======================================================================
+Standard_CString Interface_InterfaceModel::CVal(const Standard_CString theParamName) const
+{
+ Handle(Interface_Static) aParam = GetParam(theParamName);
+ return (aParam.IsNull() ? "" : aParam->CStringValue());
+}
#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) const;
+ Standard_EXPORT Standard_Integer IVal(const Standard_CString theParamName) const;
+ Standard_EXPORT Standard_Real RVal(const Standard_CString theParamName) const;
+ Standard_EXPORT Standard_CString CVal(const Standard_CString theParamName) const;
+
+ //! Adds parameters in the mopdel
+ Standard_EXPORT void AddParam(const Standard_CString theParamName, Handle(Interface_Static)& theParam);
+
+ //! 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:
#include <Standard_Transient.hxx>
#include <Standard_Type.hxx>
#include <TCollection_HAsciiString.hxx>
+#include <Standard_Mutex.hxx>
#include <stdio.h>
IMPLEMENT_STANDARD_RTTIEXT(Interface_Static,Interface_TypedValue)
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)
{
- Handle(Standard_Transient) result;
- MoniTool_TypedValue::Stats().Find(name, result);
- return Handle(Interface_Static)::DownCast(result);
+ static Standard_Mutex aPars;
+ {
+ Standard_Mutex::Sentry aLock(aPars);
+ Handle(Standard_Transient) result;
+ MoniTool_TypedValue::Stats().Find(name, result);
+ return Handle(Interface_Static)::DownCast(result);
+ }
}
//! 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 <Message.hxx>
#include <Message_Messenger.hxx>
#include <TCollection_AsciiString.hxx>
+#include <Standard_Mutex.hxx>
#include <stdio.h>
#include <string.h>
//=======================================================================
const Handle(Message_Messenger)& Message::DefaultMessenger ()
{
+ static Standard_Mutex aMutex;
+ Standard_Mutex::Sentry aLock(aMutex);
static Handle(Message_Messenger) aMessenger = new Message_Messenger;
return aMessenger;
}
#include <Message_Printer.hxx>
#include <Message_PrinterOStream.hxx>
+#include <Standard_Mutex.hxx>
IMPLEMENT_STANDARD_RTTIEXT(Message_Messenger,Standard_Transient)
Standard_Integer Message_Messenger::RemovePrinters (const Handle(Standard_Type)& theType)
{
+ static Standard_Mutex aMutex;
+ Standard_Mutex::Sentry aLock(aMutex);
// remove printers from the list
Standard_Integer nb = 0;
for (Message_SequenceOfPrinters::Iterator aPrinterIter (myPrinters); aPrinterIter.More();)
#include <Message_MsgFile.hxx>
#include <TCollection_AsciiString.hxx>
#include <stdio.h>
+#include <Standard_Mutex.hxx>
typedef enum
{
Msg_IndefiniteType
} FormatType;
+// mutex used to prevent concurrent access to message registry
+static Standard_Mutex theMutex;
+
//=======================================================================
//function : Message_Msg()
//purpose : Constructor
Message_Msg::Message_Msg (const Message_Msg& theMsg)
{
+ Standard_Mutex::Sentry aSentry(theMutex);
myMessageBody = theMsg.myMessageBody;
myOriginal = theMsg.myOriginal;
for ( Standard_Integer i = 1, n = theMsg.mySeqOfFormats.Length(); i <=n; i++ )
Message_Msg::Message_Msg (const Standard_CString theMsgCode)
{
+ Standard_Mutex::Sentry aSentry(theMutex);
TCollection_AsciiString aKey((char*)theMsgCode);
Set ( Message_MsgFile::Msg(aKey) );
}
Message_Msg::Message_Msg (const TCollection_ExtendedString& theMsgCode)
{
+ Standard_Mutex::Sentry aSentry(theMutex);
Set ( Message_MsgFile::Msg(theMsgCode) );
}
void Message_Msg::Set (const Standard_CString theMsg)
{
+ Standard_Mutex::Sentry aSentry(theMutex);
TCollection_AsciiString aMsg((char*)theMsg);
Set ( aMsg );
}
void Message_Msg::Set (const TCollection_ExtendedString& theMsg)
{
+ Standard_Mutex::Sentry aSentry(theMutex);
myMessageBody = theMsg;
const Standard_ExtString anExtString = myMessageBody.ToExtString();
Message_Msg& Message_Msg::Arg (const Standard_CString theString)
{
+ Standard_Mutex::Sentry aSentry(theMutex);
// get location and format
TCollection_AsciiString aFormat;
Standard_Integer aFirst = getFormat ( Msg_StringType, aFormat );
Message_Msg& Message_Msg::Arg (const TCollection_ExtendedString& theString)
{
+ Standard_Mutex::Sentry aSentry(theMutex);
// get location and format
TCollection_AsciiString aFormat;
Standard_Integer aFirst = getFormat ( Msg_StringType, aFormat );
Message_Msg& Message_Msg::Arg (const Standard_Integer theValue)
{
+ Standard_Mutex::Sentry aSentry(theMutex);
// get location and format
TCollection_AsciiString aFormat;
Standard_Integer aFirst = getFormat ( Msg_IntegerType, aFormat );
Message_Msg& Message_Msg::Arg (const Standard_Real theValue)
{
+ Standard_Mutex::Sentry aSentry(theMutex);
// get location and format
TCollection_AsciiString aFormat;
Standard_Integer aFirst = getFormat ( Msg_RealType, aFormat );
const TCollection_ExtendedString& Message_Msg::Get ()
{
+ Standard_Mutex::Sentry aSentry(theMutex);
// remove all non-initialised format specifications
Standard_Integer i, anIncrement = 0;
static const TCollection_ExtendedString anUnknown ("UNKNOWN");
Standard_Integer Message_Msg::getFormat (const Standard_Integer theType,
TCollection_AsciiString &theFormat)
{
+ Standard_Mutex::Sentry aSentry(theMutex);
for (Standard_Integer i = 1; i <= mySeqOfFormats.Length(); i += 3)
if (mySeqOfFormats(i) == theType)
{
const Standard_Integer theNb,
const TCollection_ExtendedString &theStr)
{
+ Standard_Mutex::Sentry aSentry(theMutex);
myMessageBody.Remove ( theFirst, theNb );
myMessageBody.Insert ( theFirst, theStr );
Standard_Boolean Message_MsgFile::LoadFile (const Standard_CString theFileName)
{
+ Standard_Mutex::Sentry aSentry(theMutex);
if (theFileName == NULL || * theFileName == '\0') return Standard_False;
// Open the file
const Standard_CString theFileName,
const Standard_CString theLangExt)
{
+ Standard_Mutex::Sentry aSentry(theMutex);
TCollection_AsciiString aLangExt (theLangExt != NULL ? theLangExt : "");
if (aLangExt.IsEmpty())
{
Standard_Boolean Message_MsgFile::LoadFromString (const Standard_CString theContent,
const Standard_Integer theLength)
{
+ Standard_Mutex::Sentry aSentry(theMutex);
Standard_Integer aStringSize = theLength >= 0 ? theLength : (Standard_Integer )strlen (theContent);
NCollection_Buffer aBuffer (NCollection_BaseAllocator::CommonBaseAllocator());
if (aStringSize <= 0 || !aBuffer.Allocate (aStringSize + 2))
Standard_Boolean Message_MsgFile::AddMsg (const TCollection_AsciiString& theKeyword,
const TCollection_ExtendedString& theMessage)
{
- Message_DataMapOfExtendedString& aDataMap = ::msgsDataMap();
-
- Standard_Mutex::Sentry aSentry (theMutex);
- aDataMap.Bind (theKeyword, theMessage);
+ Standard_Mutex::Sentry aSentry(theMutex);
+ Message_DataMapOfExtendedString& aDataMap = ::msgsDataMap(); aDataMap.Bind (theKeyword, theMessage);
return Standard_True;
}
Standard_Boolean Message_MsgFile::HasMsg (const TCollection_AsciiString& theKeyword)
{
- Standard_Mutex::Sentry aSentry (theMutex);
+ Standard_Mutex::Sentry aSentry(theMutex);
+
return ::msgsDataMap().IsBound (theKeyword);
}
const TCollection_ExtendedString &Message_MsgFile::Msg (const TCollection_AsciiString& theKeyword)
{
+ Standard_Mutex::Sentry aSentry(theMutex);
// find message in the map
Message_DataMapOfExtendedString& aDataMap = ::msgsDataMap();
- Standard_Mutex::Sentry aSentry (theMutex);
// if message is not found, generate error message and add it to the map to minimize overhead
// on consequent calls with the same key
#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>
#include <BRepFeat_SplitShape.hxx>
#include <BRepAlgoAPI_Section.hxx>
#include <TColStd_PackedMapOfInteger.hxx>
+#include <StepData_StepModel.hxx>
#if ! defined(_WIN32)
extern ViewerTest_DoubleMapOfInteractiveAndName& GetMapOfAIS();
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
+ Handle(StepData_StepModel) aModel =writer.ChangeWriter().Model();
+ Handle(Interface_Static) aParam = aModel->GetParam("write.step.assembly");
+ if (aParam.IsNull()) { //assembly mode
di << "Failed to set assembly mode for step data\n\n";
return 0;
}
+ aParam->SetIntegerValue(1);
try {
OCC_CATCH_SIGNALS
if( writer.Transfer(document, mode)) {
/// #include <EuclidStandard.hxx>
static Handle(RWHeaderSection_ReadWriteModule) rwm;
static Handle(RWHeaderSection_GeneralModule) rwg;
+static int THE_RWHeaderSection_init = 0;
+
void RWHeaderSection::Init()
{
-/// EuclidStandard::Init();
- Handle(HeaderSection_Protocol) proto = HeaderSection::Protocol();
+
+ Handle(HeaderSection_Protocol) proto = new HeaderSection_Protocol;
StepData::AddHeaderProtocol(proto);
if (rwm.IsNull()) rwm = new RWHeaderSection_ReadWriteModule;
if (rwg.IsNull()) rwg = new RWHeaderSection_GeneralModule;
IMPLEMENT_STANDARD_RTTIEXT(RWHeaderSection_ReadWriteModule,StepData_ReadWriteModule)
// -- General Declarations (Recognize, StepType) ---
-static TCollection_AsciiString PasReco(""); // neutralise StartEntity de SW
-static TCollection_AsciiString Reco_FileName ("FILE_NAME");
-static TCollection_AsciiString Reco_FileDescription ("FILE_DESCRIPTION");
-static TCollection_AsciiString Reco_FileSchema ("FILE_SCHEMA");
+TCollection_AsciiString PasReco(""); // neutralise StartEntity de SW
+TCollection_AsciiString Reco_FileName ("FILE_NAME");
+TCollection_AsciiString Reco_FileDescription ("FILE_DESCRIPTION");
+TCollection_AsciiString Reco_FileSchema ("FILE_SCHEMA");
// -- Definition of the libraries --
#include <RWStepAP214.hxx>
#include <RWStepAP214_GeneralModule.hxx>
#include <RWStepAP214_ReadWriteModule.hxx>
-#include <StepAP214.hxx>
-#include <StepAP214_Protocol.hxx>
#include <StepData_WriterLib.hxx>
+#include <Standard_Mutex.hxx>
static int THE_RWStepAP214_init = 0;
-void RWStepAP214::Init()
+void RWStepAP214::Init(const Handle(StepAP214_Protocol)& theProto)
{
- if (THE_RWStepAP214_init)
+ static Standard_Mutex aPars;
{
- return;
+
+ if (THE_RWStepAP214_init)
+ {
+ return;
+ }
+ THE_RWStepAP214_init = 1;
+ RWHeaderSection::Init();
+ Interface_GeneralLib::SetGlobal(new RWStepAP214_GeneralModule, theProto);
+ Interface_ReaderLib::SetGlobal(new RWStepAP214_ReadWriteModule, theProto);
+ StepData_WriterLib::SetGlobal(new RWStepAP214_ReadWriteModule, theProto);
}
- THE_RWStepAP214_init = 1;
- RWHeaderSection::Init();
- Handle(StepAP214_Protocol) proto = StepAP214::Protocol();
- Interface_GeneralLib::SetGlobal (new RWStepAP214_GeneralModule,proto);
- Interface_ReaderLib::SetGlobal (new RWStepAP214_ReadWriteModule,proto);
- StepData_WriterLib::SetGlobal (new RWStepAP214_ReadWriteModule,proto);
}
#include <Standard.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Handle.hxx>
+#include <StepAP214_Protocol.hxx>
class RWStepAP214_ReadWriteModule;
class RWStepAP214_GeneralModule;
//! enforced the initialisation of the libraries
- Standard_EXPORT static void Init();
+ Standard_EXPORT static void Init(const Handle(StepAP214_Protocol)& theProto);
#include <StepAP203_ChangeRequest.hxx>
#include <StepAP203_StartRequest.hxx>
#include <StepAP203_StartWork.hxx>
-#include <StepAP214.hxx>
#include <StepAP214_AppliedApprovalAssignment.hxx>
#include <StepAP214_AppliedDateAndTimeAssignment.hxx>
#include <StepAP214_AppliedDateAssignment.hxx>
catstr = Interface_Category::Number("Structure");
catdsc = Interface_Category::Number("Description");
cataux = Interface_Category::Number("Auxiliary");
-//// Interface_GeneralLib::SetGlobal(Handle(RWStepAP214_GeneralModule)::DownCast(This()), StepAP214::Protocol());
}
static TCollection_AsciiString Reco_CameraModelD3MultiClippingUnion("CAMERA_MODEL_D3_MULTI_CLIPPING_UNION");
// -- Definition of the libraries --
-static NCollection_DataMap<TCollection_AsciiString, Standard_Integer> typenums;
-static NCollection_DataMap<TCollection_AsciiString, Standard_Integer> typeshor;
+//static NCollection_DataMap<TCollection_AsciiString, Standard_Integer> typenums;
+//static NCollection_DataMap<TCollection_AsciiString, Standard_Integer> typeshor;
RWStepAP214_ReadWriteModule::RWStepAP214_ReadWriteModule ()
{
#include <Standard_Integer.hxx>
#include <TColStd_SequenceOfAsciiString.hxx>
#include <Standard_Boolean.hxx>
-class TCollection_AsciiString;
+#include <NCollection_DataMap.hxx>
+#include <TCollection_AsciiString.hxx>
class StepData_StepReaderData;
class Interface_Check;
class Standard_Transient;
private:
-
+ NCollection_DataMap<TCollection_AsciiString, Standard_Integer> typenums;
+ NCollection_DataMap<TCollection_AsciiString, Standard_Integer> typeshor;
};
Handle(StepVisual_HArray1OfLayeredItem) aAssignedItems;
StepVisual_LayeredItem aAssignedItemsItem;
Standard_Integer nsub3;
- if (data->ReadSubList (num,3,"assigned_items",ach,nsub3)) {
- Standard_Integer nb3 = data->NbParams(nsub3);
- aAssignedItems = new StepVisual_HArray1OfLayeredItem (1, nb3);
- for (Standard_Integer i3 = 1; i3 <= nb3; i3 ++) {
- //szv#4:S4163:12Mar99 `Standard_Boolean stat3 =` not needed
- if (data->ReadEntity (nsub3,i3,"assigned_items",ach,aAssignedItemsItem))
- aAssignedItems->SetValue(i3,aAssignedItemsItem);
- }
+ if (data->ReadSubList(num, 3, "assigned_items", ach, nsub3)) {
+ Standard_Integer nb3 = data->NbParams(nsub3);
+ if (nb3)
+ {
+
+ aAssignedItems = new StepVisual_HArray1OfLayeredItem(1, nb3);
+ for (Standard_Integer i3 = 1; i3 <= nb3; i3++) {
+ //szv#4:S4163:12Mar99 `Standard_Boolean stat3 =` not needed
+ if (data->ReadEntity(nsub3, i3, "assigned_items", ach, aAssignedItemsItem))
+ aAssignedItems->SetValue(i3, aAssignedItemsItem);
+ }
+ }
}
//--- Initialisation of the read entity ---
// 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
-
- // STEP file encoding for names translation
- // Note: the numbers should be consistent with Resource_FormatType enumeration
- Interface_Static::Init ("step", "read.stepcaf.codepage", 'e', "");
- Interface_Static::Init ("step", "read.stepcaf.codepage", '&', "enum 0");
- Interface_Static::Init ("step", "read.stepcaf.codepage", '&', "eval SJIS"); // Resource_FormatType_SJIS
- Interface_Static::Init ("step", "read.stepcaf.codepage", '&', "eval EUC"); // Resource_FormatType_EUC
- Interface_Static::Init ("step", "read.stepcaf.codepage", '&', "eval ANSI"); // Resource_FormatType_ANSI
- Interface_Static::Init ("step", "read.stepcaf.codepage", '&', "eval GB"); // Resource_FormatType_GB
- Interface_Static::Init ("step", "read.stepcaf.codepage", '&', "eval UTF8"); // Resource_FormatType_UTF8
- Interface_Static::Init ("step", "read.stepcaf.codepage", '&', "eval SystemLocale"); // Resource_FormatType_SystemLocale
- Interface_Static::SetCVal ("read.stepcaf.codepage", "UTF8");
-
- 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>
myMatMode(Standard_True),
myViewMode(Standard_True)
{
- STEPCAFControl_Controller::Init();
+ Init(new XSControl_WorkSession, new STEPCAFControl_Controller);
mySourceCodePage = (Resource_FormatType )Interface_Static::IVal ("read.stepcaf.codepage");
}
//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)
: mySourceCodePage (Resource_FormatType_UTF8),
myColorMode(Standard_True),
myNameMode(Standard_True),
myMatMode(Standard_True),
myViewMode(Standard_True)
{
- STEPCAFControl_Controller::Init();
mySourceCodePage = (Resource_FormatType )Interface_Static::IVal ("read.stepcaf.codepage");
- 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()->IVal("read.stepcaf.subshapes.name") > 0);
if (!doReadSNames)
return;
#include <IFSelect_ReturnStatus.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;
};
myGDTMode ( 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),
myGDTMode(Standard_True),
myMatMode(Standard_True)
{
- STEPCAFControl_Controller::Init();
- Init ( WS, scratch );
+ 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),
+ myGDTMode(Standard_True),
+ myMatMode(Standard_True)
+{
+ Init(theWS, theController, theScratch);
+}
//=======================================================================
//function : Init
//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();
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();
+
+ if (Actor.IsNull())
+ {
+ return Standard_False;
+ }
+ Standard_Integer ap = aModel->IVal("write.step.schema");
TDF_LabelSequence sublabels;
for ( Standard_Integer i=1; i <= labels.Length(); i++ ) {
TDF_Label L = labels.Value(i);
// translate main assembly structure
/*
if ( ap == 3 ) { // if AP203, switch to AP214
- Interface_Static::SetCVal ("write.step.schema", "AP214DIS");
+ 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)) ) {
}
}
*/
- Standard_Integer assemblymode = Interface_Static::IVal ("write.step.assembly");
- Interface_Static::SetCVal ("write.step.assembly", "On");
+ Handle(Interface_Static) aParameter = aModel->GetParam("write.step.assembly");
+ Standard_Integer assemblymode = 0;
+ if (!aParameter.IsNull())
+ {
+ assemblymode = aParameter->IntegerValue();
+ aParameter->SetCStringValue("On");
+ }
writer.Transfer ( Sass, STEPControl_AsIs );
- Interface_Static::SetIVal ("write.step.assembly", assemblymode);
- Interface_Static::SetIVal ("write.step.schema", ap);
+ if (!aParameter.IsNull())
+ aParameter->SetIntegerValue(assemblymode);
+ Handle(Interface_Static) aParamWriteSch = aModel->GetParam("write.step.schema");
+ if (!aParamWriteSch.IsNull())
+ aParamWriteSch->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);
+ Handle(Interface_Static) aParam = aModel->GetParam("write.step.schema");
+ if (!aParam.IsNull())
+ aParam->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->IVal("write.stepcaf.subshapes.name") != 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 = 0;
+ if (!aParameter.IsNull())
+ {
+ 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);
+ if (!aParameter.IsNull())
+ 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
std::cerr << "Error: Current Top-Level shape have MDGPR already " << std::endl;
#endif
}
- Styles.CreateMDGPR ( Context, aMDGPR );
+ Styles.CreateMDGPR(Context, aMDGPR, WS->Model());
if (!aMDGPR.IsNull())
myMapCompMDGPR.Bind( aTopSh, aMDGPR );
}
// search for MDGPR of the component top-level shape
if ( myMapCompMDGPR.IsBound( aTopSh )) {
aMDGPR = Handle(StepVisual_MechanicalDesignGeometricPresentationRepresentation)::DownCast( myMapCompMDGPR.Find( aTopSh ) );
- } else {
+ }
+ else {
aMDGPR = new StepVisual_MechanicalDesignGeometricPresentationRepresentation;
Handle(TCollection_HAsciiString) ReprName = new TCollection_HAsciiString ( "" );
aMDGPR->SetName( ReprName );
std::cout << "Warning: " << __FILE__ << ": Create new MDGPR for SHUO instance" << std::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
+ Standard_Integer aShema = myModel->IVal("write.step.schema");
+ switch (aShema) { //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 (aShema) { //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"));
+
+ TCollection_AsciiString aName = myModel->CVal("write.step.product.name");
+ if(!aName.IsEmpty())
+ PdtName = new TCollection_HAsciiString(aName);
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->IVal("write.step.schema") == 3 ) {
theAP203.Init ( SDRTool );
seq->Append (theAP203.GetProductCategoryRelationship());
seq->Append (theAP203.GetCreator());
Handle(TColStd_HSequenceOfTransient) seq = new TColStd_HSequenceOfTransient;
seq->Append ( assembly.ItemValue() );
-
// for AP203, write required product management data
- if ( Interface_Static::IVal("write.step.schema") == 3 ) {
+ if (myModel->IVal("write.step.schema") == 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->IVal("write.step.schema");
// 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 (schema) {
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->IVal("write.step.schema") == 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;
+ Standard_Integer valunits = theModel->IVal("write.step.unit");
+ switch (valunits) {
+ 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(valunits));
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()->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);
}
-
+
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->CVal("read.step.product.mode");
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->IVal("read.step.shape.repr");
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->IVal("read.step.shape.relationship");
// 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->IVal("read.step.shape.aspect");
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->IVal("read.step.assembly.level");
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->IVal("read.step.nonmanifold") != 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->IVal("read.step.ideas");
if (isNMMode && myNMTool.IsIDEASCase() && isIDeasMode) {
isManifold = Standard_False;
NM_DETECTED = Standard_True;
nsh ++;
}
}
-
+
// [BEGIN] Proceed with non-manifold topology (ssv; 12.11.2010)
if (!isManifold) {
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,
+ myXSAlgoContainer->ProcessShape( comp, myPrecision, myMaxTol,
+ "read.step.resource.name",
+ "read.step.sequence", info,
TP->GetProgress(), Standard_True);
- XSAlgo::AlgoContainer()->MergeTransferInfo(TP, info, nbTPitems);
+ myXSAlgoContainer->MergeTransferInfo(TP, info, nbTPitems);
if (fixedResult.ShapeType() == TopAbs_COMPOUND)
{
for (; exp.More(); exp.Next())
{
TopoDS_Shape aSubShape = exp.Current();
- if (aSubShape.ShapeType() == TopAbs_SHELL && aSubShape.Closed()) {
- TopoDS_Solid nextSolid;
- brepBuilder.MakeSolid(nextSolid);
- brepBuilder.Add(nextSolid, aSubShape);
- brepBuilder.Add(reconstComp, nextSolid);
- }
- else if (aSubShape.ShapeType() == TopAbs_SHELL)
- brepBuilder.Add(reconstComp, aSubShape);
+ if ( aSubShape.ShapeType() == TopAbs_SHELL && aSubShape.Closed() ) {
+ TopoDS_Solid nextSolid;
+ brepBuilder.MakeSolid(nextSolid);
+ brepBuilder.Add(nextSolid, aSubShape);
+ brepBuilder.Add(reconstComp, nextSolid);
+ }
+ else if (aSubShape.ShapeType() == TopAbs_SHELL)
+ brepBuilder.Add(reconstComp, aSubShape);
}
comp = reconstComp;
// [END] Reconstruct Solids from Closed Shells (ssv; 15.11.2010)
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()<<Message_EndLine;
+ sout<<" -- Actor : Transfer Ent.n0 "<<myModel->Number(start)<<" Type "<<start->DynamicType()->Name()<<Message_EndLine;
#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->CVal("read.step.product.mode");
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->IVal("step.angleunit.mode");
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->IVal("read.precision.mode") == 1) //:i1 gka S4136 05.04.99
+ myPrecision = myModel->RVal("read.precision.val");
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->RVal("read.precision.val");
}
- myMaxTol = Max ( myPrecision, Interface_Static::RVal("read.maxprecision.val") );
+ myMaxTol = Max ( myPrecision, myModel->RVal("read.maxprecision.val") );
// 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->RVal("read.precision.val");
+ myMaxTol = Max ( myPrecision, myModel->RVal("read.maxprecision.val"));
}
//=======================================================================
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->IVal(theParameter);
+ 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->IVal("write.step.unit"));
lFactor /= UnitsMethods::GetCasCadeLengthUnit();
- Standard_Integer anglemode = Interface_Static::IVal("step.angleunit.mode");
+ Standard_Integer anglemode = myModel->IVal("step.angleunit.mode");
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->IVal("write.precision.mode");
+ if (Tol <= 0 && tolmod == 2)
+ Tol = myModel->RVal("write.precision.val");
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->IVal("write.step.vertex.mode") == 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()->IVal("write.surfacecurve.mode"));
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->IVal("write.step.nonmanifold") != 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->IVal("write.step.vertex.mode") == 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->RVal("read.maxprecision.val");
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->IVal("write.step.schema");
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->IVal("write.step.nonmanifold") != 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 <IFSelect_SelectModelEntities.hxx>
#include <Interface_InterfaceModel.hxx>
#include <Interface_Macros.hxx>
-#include <Interface_Static.hxx>
#include <RWHeaderSection.hxx>
#include <RWStepAP214.hxx>
+#include <ShapeExtend.hxx>
+#include <ShapeProcess_OperLibrary.hxx>
#include <Standard_Type.hxx>
#include <Standard_Version.hxx>
+#include <Standard_Mutex.hxx>
+#include <StepAP214_Protocol.hxx>
#include <STEPControl_ActorRead.hxx>
#include <STEPControl_ActorWrite.hxx>
#include <STEPControl_Controller.hxx>
-#include <StepData_FileProtocol.hxx>
+//#include <StepData_FileProtocol.hxx>
#include <StepData_StepModel.hxx>
-#include <STEPEdit.hxx>
#include <STEPEdit_EditContext.hxx>
#include <STEPEdit_EditSDR.hxx>
#include <StepSelect_StepType.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;
+ myAdaptorProtocol = new StepAP214_Protocol();
+
+ static Standard_Mutex aPars;
+ {
+ Standard_Mutex::Sentry aLock(aPars);
+ //RWHeaderSection::Init();
+ RWStepAP214::Init(Handle(StepAP214_Protocol)::DownCast(myAdaptorProtocol));
+
+ // initialization of Standard Shape Healing
+ //ShapeExtend::Init();
+ //XSAlgo::Init();
+ // init Standard Shape Processing operators
+ ShapeProcess_OperLibrary::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;
swl->SetDumpLabel(1);
myAdaptorLibrary = swl;
- myAdaptorProtocol = STEPEdit::Protocol();
myAdaptorRead = new STEPControl_ActorRead; // par ex pour Recognize
+ myStepType = new StepSelect_StepType;
+ myStepType->SetProtocol(myAdaptorProtocol);
+
SetModeWrite (0,4);
SetModeWriteHelp (0,"As Is");
SetModeWriteHelp (1,"Faceted Brep");
SetModeWriteHelp (2,"Shell Based");
SetModeWriteHelp (3,"Manifold Solid");
SetModeWriteHelp (4,"Wireframe");
- TraceStatic ("read.surfacecurve.mode",5);
// --- SELECTIONS, SIGNATURES, COMPTEURS, EDITEURS
DeclareAndCast(IFSelect_Selection,xmr,SessionItem("xst-model-roots"));
if (!xmr.IsNull()) {
- Handle(IFSelect_Signature) sty = STEPEdit::SignType();
- AddSessionItem (sty,"step-type");
- Handle(IFSelect_SignCounter) tys = new IFSelect_SignCounter(sty,Standard_False,Standard_True);
+ AddSessionItem (myStepType,"step-type");
+ Handle(IFSelect_SignCounter) tys = new IFSelect_SignCounter(myStepType,Standard_False,Standard_True);
AddSessionItem (tys,"step-types");
//szv:mySignType = sty;
AddSessionItem (new IFSelect_SignAncestor(),"xst-derived");
Handle(STEPSelections_SelectDerived) stdvar = new STEPSelections_SelectDerived();
- stdvar->SetProtocol(STEPEdit::Protocol());
+ stdvar->SetProtocol(myAdaptorProtocol);
AddSessionItem (stdvar,"step-derived");
- Handle(IFSelect_SelectSignature) selsdr = STEPEdit::NewSelectSDR();
+ //Creates a Selection for ShapeDefinitionRepresentation
+ Handle(IFSelect_SelectSignature) selsdr = new IFSelect_SelectSignature
+ (myStepType, "SHAPE_DEFINITION_REPRESENTATION");
selsdr->SetInput (xmr);
AddSessionItem (selsdr,"step-shape-def-repr");
- AddSessionItem (STEPEdit::NewSelectPlacedItem(),"step-placed-items");
- // input deja pret avec ModelAll
- AddSessionItem (STEPEdit::NewSelectShapeRepr(),"step-shape-repr");
+ // Creates a Selection for Placed Items, i.e. MappedItem or
+ // ContextDependentShapeRepresentation, which itself refers to a
+ // RepresentationRelationship with possible subtypes (Shape...
+ // and/or ...WithTransformation)
+ Handle(IFSelect_SelectSignature) selrrs = new IFSelect_SelectSignature
+ (myStepType, "MAPPED_ITEM|CONTEXT_DEPENDENT_SHAPE_REPRESENTATION", Standard_False);
+ selrrs->SetInput(new IFSelect_SelectModelEntities);
+ AddSessionItem (selrrs,"step-placed-items");
+
+ // Creates a Selection for ShapeRepresentation and its sub - types,
+ // plus ContextDependentShapeRepresentation (which is not a
+ // sub-type of ShapeRepresentation)
+ Handle(IFSelect_SelectSignature) sel = new IFSelect_SelectSignature
+ (myStepType, "SHAPE_REPRESENTATION", Standard_False);
+ // REPRESENTATION_RELATIONSHIP passe par CONTEXT_DEPENDENT_SHAPE_REPRESENTATION
+ sel->SetInput(new IFSelect_SelectModelEntities);
+ AddSessionItem (sel,"step-shape-repr");
}
//pdn
Handle(Interface_InterfaceModel) STEPControl_Controller::NewModel () const
{
- return STEPEdit::NewModel();
+ APIHeaderSection_MakeHeader head;
+ return head.NewModel(myAdaptorProtocol);
}
// #### PROVISOIRE ??? ####
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 :
WS->AddNamedItem ("xst-transferrable-roots",st1);
if (!slr.IsNull()) {
- Handle(IFSelect_Signature) sty = STEPEdit::SignType();
- WS->AddNamedItem ("step-type",sty);
+ WS->AddNamedItem ("step-type", myStepType);
- Handle(IFSelect_SignCounter) tys = new IFSelect_SignCounter(sty,Standard_False,Standard_True);
+ Handle(IFSelect_SignCounter) tys = new IFSelect_SignCounter(myStepType,Standard_False,Standard_True);
WS->AddNamedItem ("step-types",tys);
//szv:mySignType = sty;
- WS->SetSignType( sty );
+ WS->SetSignType(myStepType);
//pdn S4133 18.02.99
WS->AddNamedItem ("xst-derived",new IFSelect_SignAncestor());
Handle(STEPSelections_SelectDerived) stdvar = new STEPSelections_SelectDerived();
- stdvar->SetProtocol(STEPEdit::Protocol());
+
+ static Standard_Mutex aPars;
+ {
+ Standard_Mutex::Sentry aLock(aPars);
+ stdvar->SetProtocol(myAdaptorProtocol);
+ }
WS->AddNamedItem ("step-derived",stdvar);
-
- Handle(IFSelect_SelectSignature) selsdr = STEPEdit::NewSelectSDR();
- selsdr->SetInput (slr);
- WS->AddNamedItem ("step-shape-def-repr",selsdr);
- Handle(IFSelect_SelectSignature) selrrs = STEPEdit::NewSelectPlacedItem();
+
+ //Creates a Selection for ShapeDefinitionRepresentation
+ Handle(IFSelect_SelectSignature) selsdr = new IFSelect_SelectSignature
+ (myStepType, "SHAPE_DEFINITION_REPRESENTATION");
+ selsdr->SetInput(slr);
+ WS->AddNamedItem("step-shape-def-repr", selsdr);
+
+ // Creates a Selection for Placed Items, i.e. MappedItem or
+ // ContextDependentShapeRepresentation, which itself refers to a
+ // RepresentationRelationship with possible subtypes (Shape...
+ // and/or ...WithTransformation)
+ Handle(IFSelect_SelectSignature) selrrs = new IFSelect_SelectSignature
+ (myStepType, "MAPPED_ITEM|CONTEXT_DEPENDENT_SHAPE_REPRESENTATION", Standard_False);
+ selrrs->SetInput(new IFSelect_SelectModelEntities);
WS->AddNamedItem ("step-placed-items",selrrs);
- Handle(IFSelect_SelectSignature) selsr = STEPEdit::NewSelectShapeRepr();
- // input deja pret avec ModelAll
- WS->AddNamedItem ("step-shape-repr",selsr);
+
+ // Creates a Selection for ShapeRepresentation and its sub - types,
+ // plus ContextDependentShapeRepresentation (which is not a
+ // sub-type of ShapeRepresentation)
+ Handle(IFSelect_SelectSignature) sel = new IFSelect_SelectSignature
+ (myStepType, "SHAPE_REPRESENTATION", Standard_False);
+ // REPRESENTATION_RELATIONSHIP passe par CONTEXT_DEPENDENT_SHAPE_REPRESENTATION
+ sel->SetInput(new IFSelect_SelectModelEntities);
+ WS->AddNamedItem ("step-shape-repr", sel);
}
//pdn
#include <IFSelect_ReturnStatus.hxx>
#include <Standard_Integer.hxx>
#include <Standard_Boolean.hxx>
+#include <StepSelect_StepType.hxx>
class Interface_InterfaceModel;
class Transfer_ActorOfTransientProcess;
class XSControl_WorkSession;
//! 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:
-
-
-
+ Handle(StepSelect_StepType) myStepType;
};
#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->IVal("read.step.all.shapes") == 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->CVal("read.step.product.context");
+ Standard_Integer ICS = aModel->IVal("read.step.product.context");
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->CVal("read.step.product.mode");
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;
};
-STEPEdit.cxx
-STEPEdit.hxx
STEPEdit_EditContext.cxx
STEPEdit_EditContext.hxx
STEPEdit_EditSDR.cxx
+++ /dev/null
-// Copyright (c) 1999-2014 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-
-#include <APIHeaderSection_MakeHeader.hxx>
-#include <IFSelect_SelectModelEntities.hxx>
-#include <IFSelect_SelectModelRoots.hxx>
-#include <IFSelect_SelectSignature.hxx>
-#include <IFSelect_Signature.hxx>
-#include <Interface_Protocol.hxx>
-#include <StepAP214.hxx>
-#include <StepAP214_Protocol.hxx>
-#include <StepData_StepModel.hxx>
-#include <STEPEdit.hxx>
-#include <StepSelect_StepType.hxx>
-
-Handle(Interface_Protocol) STEPEdit::Protocol ()
-{
-/*
- static Handle(StepData_FileProtocol) proto;
- if (!proto.IsNull()) return proto;
- proto = new StepData_FileProtocol;
- proto->Add (StepAP214::Protocol());
- proto->Add (HeaderSection::Protocol());
- return proto;
-*/
- return StepAP214::Protocol();
-}
-
-Handle(StepData_StepModel) STEPEdit::NewModel ()
-{
- APIHeaderSection_MakeHeader head;
- return head.NewModel(STEPEdit::Protocol());
-}
-
-Handle(IFSelect_Signature) STEPEdit::SignType ()
-{
- static Handle(StepSelect_StepType) sty;
- if (!sty.IsNull()) return sty;
- sty = new StepSelect_StepType;
- sty->SetProtocol (STEPEdit::Protocol());
- return sty;
-}
-
-Handle(IFSelect_SelectSignature) STEPEdit::NewSelectSDR ()
-{
- Handle(IFSelect_SelectSignature) sel = new IFSelect_SelectSignature
- (STEPEdit::SignType(),"SHAPE_DEFINITION_REPRESENTATION");
- sel->SetInput (new IFSelect_SelectModelRoots);
- return sel;
-}
-
-Handle(IFSelect_SelectSignature) STEPEdit::NewSelectPlacedItem ()
-{
- Handle(IFSelect_SelectSignature) sel = new IFSelect_SelectSignature
- (STEPEdit::SignType(),"MAPPED_ITEM|CONTEXT_DEPENDENT_SHAPE_REPRESENTATION",Standard_False);
- sel->SetInput (new IFSelect_SelectModelEntities);
- return sel;
-}
-
-Handle(IFSelect_SelectSignature) STEPEdit::NewSelectShapeRepr ()
-{
- Handle(IFSelect_SelectSignature) sel = new IFSelect_SelectSignature
- (STEPEdit::SignType(),"SHAPE_REPRESENTATION",Standard_False);
-// REPRESENTATION_RELATIONSHIP passe par CONTEXT_DEPENDENT_SHAPE_REPRESENTATION
- sel->SetInput (new IFSelect_SelectModelEntities);
- return sel;
-}
+++ /dev/null
-// Created on: 1998-07-29
-// Created by: Christian CAILLET
-// Copyright (c) 1998-1999 Matra Datavision
-// Copyright (c) 1999-2014 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-#ifndef _STEPEdit_HeaderFile
-#define _STEPEdit_HeaderFile
-
-#include <Standard.hxx>
-#include <Standard_DefineAlloc.hxx>
-#include <Standard_Handle.hxx>
-
-class Interface_Protocol;
-class StepData_StepModel;
-class IFSelect_Signature;
-class IFSelect_SelectSignature;
-class STEPEdit_EditContext;
-class STEPEdit_EditSDR;
-
-
-//! Provides tools to exploit and edit a set of STEP data :
-//! editors, selections ..
-class STEPEdit
-{
-public:
-
- DEFINE_STANDARD_ALLOC
-
-
- //! Returns a Protocol fit for STEP (creates the first time)
- Standard_EXPORT static Handle(Interface_Protocol) Protocol();
-
- //! Returns a new empty StepModel fit for STEP
- //! i.e. with its header determined from Protocol
- Standard_EXPORT static Handle(StepData_StepModel) NewModel();
-
- //! Returns a SignType fit for STEP (creates the first time)
- Standard_EXPORT static Handle(IFSelect_Signature) SignType();
-
- //! Creates a Selection for ShapeDefinitionRepresentation
- //! By default searches among root entities
- Standard_EXPORT static Handle(IFSelect_SelectSignature) NewSelectSDR();
-
- //! Creates a Selection for Placed Items, i.e. MappedItem or
- //! ContextDependentShapeRepresentation, which itself refers to a
- //! RepresentationRelationship with possible subtypes (Shape...
- //! and/or ...WithTransformation)
- //! By default in the whole StepModel
- Standard_EXPORT static Handle(IFSelect_SelectSignature) NewSelectPlacedItem();
-
- //! Creates a Selection for ShapeRepresentation and its sub-types,
- //! plus ContextDependentShapeRepresentation (which is not a
- //! sub-type of ShapeRepresentation)
- //! By default in the whole StepModel
- Standard_EXPORT static Handle(IFSelect_SelectSignature) NewSelectShapeRepr();
-
-
-
-
-protected:
-
-
-
-
-
-private:
-
-
-
-
-friend class STEPEdit_EditContext;
-friend class STEPEdit_EditSDR;
-
-};
-
-
-
-
-
-
-
-#endif // _STEPEdit_HeaderFile
-StepAP214.cxx
-StepAP214.hxx
StepAP214_AppliedApprovalAssignment.cxx
StepAP214_AppliedApprovalAssignment.hxx
StepAP214_AppliedDateAndTimeAssignment.cxx
+++ /dev/null
-// Copyright (c) 1999-2014 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-
-#include <Interface_Statics.hxx>
-#include <StepAP214.hxx>
-#include <StepAP214_Protocol.hxx>
-
-StaticHandle(StepAP214_Protocol, proto);
-
-Handle(StepAP214_Protocol) StepAP214::Protocol()
-
- {
- InitHandleVoid(StepAP214_Protocol, proto);
- return proto;
- }
-
+++ /dev/null
-// Created on: 1995-12-01
-// Created by: EXPRESS->CDL V0.2 Translator
-// Copyright (c) 1995-1999 Matra Datavision
-// Copyright (c) 1999-2014 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-#ifndef _StepAP214_HeaderFile
-#define _StepAP214_HeaderFile
-
-#include <Standard.hxx>
-#include <Standard_DefineAlloc.hxx>
-#include <Standard_Handle.hxx>
-
-class StepAP214_Protocol;
-class StepAP214_AutoDesignDateAndPersonItem;
-class StepAP214_AutoDesignDateAndTimeItem;
-class StepAP214_AutoDesignDatedItem;
-class StepAP214_AutoDesignGeneralOrgItem;
-class StepAP214_AutoDesignOrganizationItem;
-class StepAP214_AutoDesignGroupedItem;
-class StepAP214_AutoDesignPresentedItemSelect;
-class StepAP214_AutoDesignReferencingItem;
-class StepAP214_DateAndTimeItem;
-class StepAP214_DateItem;
-class StepAP214_ApprovalItem;
-class StepAP214_OrganizationItem;
-class StepAP214_DocumentReferenceItem;
-class StepAP214_GroupItem;
-class StepAP214_PersonAndOrganizationItem;
-class StepAP214_PresentedItemSelect;
-class StepAP214_SecurityClassificationItem;
-class StepAP214_Protocol;
-class StepAP214_AutoDesignApprovalAssignment;
-class StepAP214_AutoDesignActualDateAndTimeAssignment;
-class StepAP214_AutoDesignNominalDateAndTimeAssignment;
-class StepAP214_AutoDesignActualDateAssignment;
-class StepAP214_AutoDesignNominalDateAssignment;
-class StepAP214_AutoDesignGroupAssignment;
-class StepAP214_AutoDesignOrganizationAssignment;
-class StepAP214_AutoDesignDateAndPersonAssignment;
-class StepAP214_AutoDesignPersonAndOrganizationAssignment;
-class StepAP214_AutoDesignPresentedItem;
-class StepAP214_AutoDesignSecurityClassificationAssignment;
-class StepAP214_AutoDesignDocumentReference;
-class StepAP214_AppliedApprovalAssignment;
-class StepAP214_AppliedDateAndTimeAssignment;
-class StepAP214_AppliedDateAssignment;
-class StepAP214_AppliedGroupAssignment;
-class StepAP214_AppliedOrganizationAssignment;
-class StepAP214_AppliedPersonAndOrganizationAssignment;
-class StepAP214_AppliedPresentedItem;
-class StepAP214_AppliedSecurityClassificationAssignment;
-class StepAP214_AppliedDocumentReference;
-class StepAP214_AppliedExternalIdentificationAssignment;
-class StepAP214_Class;
-class StepAP214_ExternalIdentificationItem;
-class StepAP214_ExternallyDefinedClass;
-class StepAP214_ExternallyDefinedGeneralProperty;
-class StepAP214_RepItemGroup;
-
-
-//! Complete AP214 CC1 , Revision 4
-//! Upgrading from Revision 2 to Revision 4 : 26 Mar 1997
-//! Splitting in sub-schemas : 5 Nov 1997
-class StepAP214
-{
-public:
-
- DEFINE_STANDARD_ALLOC
-
-
- //! creates a Protocol
- Standard_EXPORT static Handle(StepAP214_Protocol) Protocol();
-
-
-
-
-protected:
-
-
-
-
-
-private:
-
-
-
-
-friend class StepAP214_AutoDesignDateAndPersonItem;
-friend class StepAP214_AutoDesignDateAndTimeItem;
-friend class StepAP214_AutoDesignDatedItem;
-friend class StepAP214_AutoDesignGeneralOrgItem;
-friend class StepAP214_AutoDesignOrganizationItem;
-friend class StepAP214_AutoDesignGroupedItem;
-friend class StepAP214_AutoDesignPresentedItemSelect;
-friend class StepAP214_AutoDesignReferencingItem;
-friend class StepAP214_DateAndTimeItem;
-friend class StepAP214_DateItem;
-friend class StepAP214_ApprovalItem;
-friend class StepAP214_OrganizationItem;
-friend class StepAP214_DocumentReferenceItem;
-friend class StepAP214_GroupItem;
-friend class StepAP214_PersonAndOrganizationItem;
-friend class StepAP214_PresentedItemSelect;
-friend class StepAP214_SecurityClassificationItem;
-friend class StepAP214_Protocol;
-friend class StepAP214_AutoDesignApprovalAssignment;
-friend class StepAP214_AutoDesignActualDateAndTimeAssignment;
-friend class StepAP214_AutoDesignNominalDateAndTimeAssignment;
-friend class StepAP214_AutoDesignActualDateAssignment;
-friend class StepAP214_AutoDesignNominalDateAssignment;
-friend class StepAP214_AutoDesignGroupAssignment;
-friend class StepAP214_AutoDesignOrganizationAssignment;
-friend class StepAP214_AutoDesignDateAndPersonAssignment;
-friend class StepAP214_AutoDesignPersonAndOrganizationAssignment;
-friend class StepAP214_AutoDesignPresentedItem;
-friend class StepAP214_AutoDesignSecurityClassificationAssignment;
-friend class StepAP214_AutoDesignDocumentReference;
-friend class StepAP214_AppliedApprovalAssignment;
-friend class StepAP214_AppliedDateAndTimeAssignment;
-friend class StepAP214_AppliedDateAssignment;
-friend class StepAP214_AppliedGroupAssignment;
-friend class StepAP214_AppliedOrganizationAssignment;
-friend class StepAP214_AppliedPersonAndOrganizationAssignment;
-friend class StepAP214_AppliedPresentedItem;
-friend class StepAP214_AppliedSecurityClassificationAssignment;
-friend class StepAP214_AppliedDocumentReference;
-friend class StepAP214_AppliedExternalIdentificationAssignment;
-friend class StepAP214_Class;
-friend class StepAP214_ExternalIdentificationItem;
-friend class StepAP214_ExternallyDefinedClass;
-friend class StepAP214_ExternallyDefinedGeneralProperty;
-friend class StepAP214_RepItemGroup;
-
-};
-
-
-
-
-
-
-
-#endif // _StepAP214_HeaderFile
IMPLEMENT_STANDARD_RTTIEXT(StepAP214_Protocol,StepData_Protocol)
-static Standard_CString schemaAP214CD = "AUTOMOTIVE_DESIGN_CC2 { 1 2 10303 214 -1 1 5 4 }";
-static Standard_CString schemaAP214DIS = "AUTOMOTIVE_DESIGN { 1 2 10303 214 0 1 1 1 }";
-static Standard_CString schemaAP214IS = "AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }";
-static Standard_CString schemaAP203 = "CONFIG_CONTROL_DESIGN";
-static Standard_CString schemaAP242DIS = "AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF. {1 0 10303 442 1 1 4 }";
+Standard_CString schemaAP214CD = "AUTOMOTIVE_DESIGN_CC2 { 1 2 10303 214 -1 1 5 4 }";
+Standard_CString schemaAP214DIS = "AUTOMOTIVE_DESIGN { 1 2 10303 214 0 1 1 1 }";
+Standard_CString schemaAP214IS = "AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }";
+Standard_CString schemaAP203 = "CONFIG_CONTROL_DESIGN";
+Standard_CString schemaAP242DIS = "AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF. {1 0 10303 442 1 1 4 }";
#include <HeaderSection_Protocol.hxx>
#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>
#include <StepVisual_CameraModelD3MultiClippingUnion.hxx>
#include <StepVisual_AnnotationCurveOccurrenceAndAnnotationOccurrenceAndGeomReprItemAndReprItemAndStyledItem.hxx>
-static int THE_StepAP214_Protocol_init = 0;
-static Interface_DataMapOfTransientInteger types(800);
//=======================================================================
//function : StepAP214_Protocol
//purpose :
//=======================================================================
-StepAP214_Protocol::StepAP214_Protocol ()
+StepAP214_Protocol::StepAP214_Protocol () :
+ myShemaName(schemaAP214IS),
+ types(800)
{
- if (THE_StepAP214_Protocol_init)
- {
- return;
- }
- THE_StepAP214_Protocol_init = 1;
-
types.Bind (STANDARD_TYPE(StepBasic_Address), 1);
types.Bind (STANDARD_TYPE(StepShape_AdvancedBrepShapeRepresentation), 2);
types.Bind (STANDARD_TYPE(StepShape_AdvancedFace), 3);
//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;
+ Interface_DataMapOfTransientInteger types;
};
// 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>
-#include <StepData_FileProtocol.hxx>
#include <StepData_Protocol.hxx>
StaticHandle(StepData_Protocol,proto);
{
// 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;
}
InitHandle(StepData_Protocol,theheader);
if (theheader.IsNull()) theheader = header;
else {
- DeclareAndCast(StepData_FileProtocol,headmult,theheader);
- if (headmult.IsNull()) {
- headmult = new StepData_FileProtocol;
- headmult->Add(theheader);
- }
- headmult->Add(header);
- theheader = headmult;
+ //DeclareAndCast(StepData_FileProtocol,headmult,theheader);
+ // if (headmult.IsNull()) {
+ // headmult = new StepData_FileProtocol;
+ //headmult->Add(theheader);
+ //}
+ //headmult->Add(header);
+ //theheader = headmult;
}
}
class StepData_Protocol;
class StepData_GeneralModule;
class StepData_FileRecognizer;
-class StepData_FileProtocol;
-class StepData_HeaderTool;
+//class StepData_FileProtocol;
+//class StepData_HeaderTool;
class StepData_EnumTool;
class StepData_DescrProtocol;
class StepData_DescrGeneral;
friend class StepData_Protocol;
friend class StepData_GeneralModule;
friend class StepData_FileRecognizer;
-friend class StepData_FileProtocol;
-friend class StepData_HeaderTool;
+//friend class StepData_FileProtocol;
+//friend class StepData_HeaderTool;
friend class StepData_EnumTool;
-friend class StepData_DescrProtocol;
-friend class StepData_DescrGeneral;
-friend class StepData_DescrReadWrite;
+//friend class StepData_DescrProtocol;
+//friend class StepData_DescrGeneral;
+//friend class StepData_DescrReadWrite;
friend class StepData_StepReaderData;
friend class StepData_StepReaderTool;
friend class StepData_ReadWriteModule;
friend class StepData_StepDumper;
friend class StepData_WriterLib;
friend class StepData_DefaultGeneral;
-friend class StepData_GlobalNodeOfWriterLib;
-friend class StepData_NodeOfWriterLib;
+//friend class StepData_GlobalNodeOfWriterLib;
+//friend class StepData_NodeOfWriterLib;
};
+++ /dev/null
-// Copyright (c) 1999-2014 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-
-#include <Interface_Check.hxx>
-#include <Interface_CopyTool.hxx>
-#include <Interface_EntityIterator.hxx>
-#include <Interface_ShareTool.hxx>
-#include <Standard_Transient.hxx>
-#include <Standard_Type.hxx>
-#include <StepData_DescrGeneral.hxx>
-#include <StepData_Described.hxx>
-#include <StepData_EDescr.hxx>
-#include <StepData_Protocol.hxx>
-
-IMPLEMENT_STANDARD_RTTIEXT(StepData_DescrGeneral,StepData_GeneralModule)
-
-StepData_DescrGeneral::StepData_DescrGeneral
- (const Handle(StepData_Protocol)& proto)
- : theproto (proto) { }
-
-
- void StepData_DescrGeneral::FillSharedCase
- (const Standard_Integer, const Handle(Standard_Transient)& ent,
- Interface_EntityIterator& iter) const
-{
- Handle(StepData_Described) ds = Handle(StepData_Described)::DownCast(ent);
- if (!ds.IsNull()) ds->Shared (iter);
-}
-
-
-void StepData_DescrGeneral::CheckCase(const Standard_Integer ,
- const Handle(Standard_Transient)&,
- const Interface_ShareTool&,
- Handle(Interface_Check)&) const
-{
-} // pour l instant
-
-
-void StepData_DescrGeneral::CopyCase(const Standard_Integer,
- const Handle(Standard_Transient)&,
- const Handle(Standard_Transient)&,
- Interface_CopyTool&) const
-{
-} // pour l instant
-
-Standard_Boolean StepData_DescrGeneral::NewVoid
- (const Standard_Integer CN, Handle(Standard_Transient)& ent) const
-{
- ent = theproto->Descr(CN)->NewEntity();
- return (!ent.IsNull());
-}
+++ /dev/null
-// Created on: 1997-05-21
-// Created by: Christian CAILLET
-// Copyright (c) 1997-1999 Matra Datavision
-// Copyright (c) 1999-2014 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-#ifndef _StepData_DescrGeneral_HeaderFile
-#define _StepData_DescrGeneral_HeaderFile
-
-#include <Standard.hxx>
-#include <Standard_Type.hxx>
-
-#include <StepData_GeneralModule.hxx>
-#include <Standard_Integer.hxx>
-#include <Standard_Boolean.hxx>
-class StepData_Protocol;
-class Standard_Transient;
-class Interface_EntityIterator;
-class Interface_ShareTool;
-class Interface_Check;
-class Interface_CopyTool;
-
-
-class StepData_DescrGeneral;
-DEFINE_STANDARD_HANDLE(StepData_DescrGeneral, StepData_GeneralModule)
-
-//! Works with a Protocol by considering its entity descriptions
-class StepData_DescrGeneral : public StepData_GeneralModule
-{
-
-public:
-
-
- Standard_EXPORT StepData_DescrGeneral(const Handle(StepData_Protocol)& proto);
-
- Standard_EXPORT void FillSharedCase (const Standard_Integer CN, const Handle(Standard_Transient)& ent, Interface_EntityIterator& iter) const Standard_OVERRIDE;
-
- Standard_EXPORT void CheckCase (const Standard_Integer CN, const Handle(Standard_Transient)& ent, const Interface_ShareTool& shares, Handle(Interface_Check)& ach) const Standard_OVERRIDE;
-
- Standard_EXPORT void CopyCase (const Standard_Integer CN, const Handle(Standard_Transient)& entfrom, const Handle(Standard_Transient)& entto, Interface_CopyTool& TC) const Standard_OVERRIDE;
-
- Standard_EXPORT Standard_Boolean NewVoid (const Standard_Integer CN, Handle(Standard_Transient)& ent) const Standard_OVERRIDE;
-
-
-
-
- DEFINE_STANDARD_RTTIEXT(StepData_DescrGeneral,StepData_GeneralModule)
-
-protected:
-
-
-
-
-private:
-
-
- Handle(StepData_Protocol) theproto;
-
-
-};
-
-
-
-
-
-
-
-#endif // _StepData_DescrGeneral_HeaderFile
+++ /dev/null
-// Copyright (c) 1999-2014 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-
-#include <Interface_GeneralLib.hxx>
-#include <Interface_ReaderLib.hxx>
-#include <Standard_Type.hxx>
-#include <StepData_DescrGeneral.hxx>
-#include <StepData_DescrProtocol.hxx>
-#include <StepData_DescrReadWrite.hxx>
-#include <StepData_WriterLib.hxx>
-
-IMPLEMENT_STANDARD_RTTIEXT(StepData_DescrProtocol,StepData_FileProtocol)
-
-StepData_DescrProtocol::StepData_DescrProtocol () { }
-
- void StepData_DescrProtocol::SetSchemaName (const Standard_CString name)
- { thename.Clear(); thename.AssignCat (name); }
-
- void StepData_DescrProtocol::LibRecord () const
-{
- if (!HasDescr()) return; // rien a recorder dans la lib ?
- Handle(StepData_DescrGeneral) gen = new StepData_DescrGeneral (this);
- Handle(StepData_DescrReadWrite) rwm = new StepData_DescrReadWrite (this);
- Interface_GeneralLib::SetGlobal (gen,this);
- Interface_ReaderLib::SetGlobal (rwm,this);
- StepData_WriterLib::SetGlobal (rwm,this);
-}
-
- Standard_CString StepData_DescrProtocol::SchemaName () const
- { return thename.ToCString(); }
+++ /dev/null
-// Created on: 1997-05-21
-// Created by: Christian CAILLET
-// Copyright (c) 1997-1999 Matra Datavision
-// Copyright (c) 1999-2014 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-#ifndef _StepData_DescrProtocol_HeaderFile
-#define _StepData_DescrProtocol_HeaderFile
-
-#include <Standard.hxx>
-#include <Standard_Type.hxx>
-
-#include <TCollection_AsciiString.hxx>
-#include <StepData_FileProtocol.hxx>
-#include <Standard_CString.hxx>
-
-
-class StepData_DescrProtocol;
-DEFINE_STANDARD_HANDLE(StepData_DescrProtocol, StepData_FileProtocol)
-
-//! A DescrProtocol is a protocol dynamically (at execution time)
-//! defined with :
-//! - a list of resources (inherits FileProtocol)
-//! - a list of entity descriptions
-//! i.e. it can be defined with only C++ writing to initialize it
-//! Its initialization must :
-//! - set its schema name
-//! - define its resources (which can also be other DescrProtocol)
-//! - define its entity descriptions
-//! - record it in the system by calling RecordLib
-class StepData_DescrProtocol : public StepData_FileProtocol
-{
-
-public:
-
-
- Standard_EXPORT StepData_DescrProtocol();
-
- //! Defines a specific Schema Name for this Protocol
- Standard_EXPORT void SetSchemaName (const Standard_CString name);
-
- //! Records this Protocol in the service libraries, with a
- //! DescrGeneral and a DescrReadWrite
- //! Does nothing if the Protocol brings no proper description
- Standard_EXPORT void LibRecord() const;
-
- //! 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;
-
-
-
-
- DEFINE_STANDARD_RTTIEXT(StepData_DescrProtocol,StepData_FileProtocol)
-
-protected:
-
-
-
-
-private:
-
-
- TCollection_AsciiString thename;
-
-
-};
-
-
-
-
-
-
-
-#endif // _StepData_DescrProtocol_HeaderFile
+++ /dev/null
-// Copyright (c) 1999-2014 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-
-#include <Interface_Check.hxx>
-#include <Interface_Macros.hxx>
-#include <Standard_Transient.hxx>
-#include <Standard_Type.hxx>
-#include <StepData_DescrReadWrite.hxx>
-#include <StepData_ECDescr.hxx>
-#include <StepData_EDescr.hxx>
-#include <StepData_ESDescr.hxx>
-#include <StepData_FieldListN.hxx>
-#include <StepData_Plex.hxx>
-#include <StepData_Protocol.hxx>
-#include <StepData_Simple.hxx>
-#include <StepData_StepReaderData.hxx>
-#include <StepData_StepWriter.hxx>
-#include <TCollection_AsciiString.hxx>
-#include <TColStd_HSequenceOfAsciiString.hxx>
-
-IMPLEMENT_STANDARD_RTTIEXT(StepData_DescrReadWrite,StepData_ReadWriteModule)
-
-static TCollection_AsciiString nocp("?");
-
-
- StepData_DescrReadWrite::StepData_DescrReadWrite
- (const Handle(StepData_Protocol)& proto)
- : theproto (proto) { }
-
- Standard_Integer StepData_DescrReadWrite::CaseStep
- (const TCollection_AsciiString& atype) const
-{
- Handle(StepData_ESDescr) descr = theproto->ESDescr (atype.ToCString(),Standard_False);
- if (descr.IsNull()) return 0;
- return theproto->DescrNumber (descr);
-}
-
- Standard_Integer StepData_DescrReadWrite::CaseStep
- (const TColStd_SequenceOfAsciiString& types) const
-{
- Handle(StepData_ECDescr) descr = theproto->ECDescr (types,Standard_False);
- if (descr.IsNull()) return 0;
- return theproto->DescrNumber (descr);
-}
-
-
- Standard_Boolean StepData_DescrReadWrite::IsComplex
- (const Standard_Integer CN) const
-{
- Handle(StepData_EDescr) descr = theproto->Descr (CN);
- if (descr.IsNull()) return Standard_False;
- return descr->IsComplex();
-}
-
- const TCollection_AsciiString& StepData_DescrReadWrite::StepType
- (const Standard_Integer CN) const
-{
- Handle(StepData_ESDescr) descr = Handle(StepData_ESDescr)::DownCast
- (theproto->Descr (CN));
- if (descr.IsNull()) return nocp;
- return descr->StepType();
-}
-
- Standard_Boolean StepData_DescrReadWrite::ComplexType
- (const Standard_Integer CN, TColStd_SequenceOfAsciiString& types) const
-{
- Handle(StepData_ECDescr) descr = Handle(StepData_ECDescr)::DownCast
- (theproto->Descr (CN));
- if (descr.IsNull()) return Standard_False;
- Handle(TColStd_HSequenceOfAsciiString) list = descr->TypeList();
- if (list.IsNull()) return Standard_False;
- Standard_Integer i, nb = list->Length();
- for (i = 1; i <= nb; i ++) types.Append (list->Value(i));
- return Standard_True;
-}
-
-
-void StepData_DescrReadWrite::ReadStep(const Standard_Integer CN,
- const Handle(StepData_StepReaderData)& data,
- const Standard_Integer num,
- Handle(Interface_Check)& ach,
- const Handle(Standard_Transient)&ent) const
-{
- if (CN == 0) return;
- DeclareAndCast(StepData_Simple,sent,ent);
- if (!sent.IsNull()) {
- Handle(StepData_ESDescr) sdescr = sent->ESDescr();
- StepData_FieldListN& fl = sent->CFields();
- data->ReadList (num,ach,sdescr,fl);
- return;
- }
-
- DeclareAndCast(StepData_Plex,cent,ent);
- Standard_Integer i, nb=0;
- if (!cent.IsNull()) nb = cent->NbMembers();
- Standard_Integer n0 = num;
- for (i = 1; i <= nb; i ++) {
- Handle(StepData_Simple) si = cent->Member(i);
- Handle(StepData_ESDescr) sdescr = si->ESDescr();
- StepData_FieldListN& fl = si->CFields();
- data->ReadList (n0,ach,sdescr,fl);
- if (i < nb) n0 = data->NextForComplex(n0);
- }
-}
-
-
- void StepData_DescrReadWrite::WriteStep
- (const Standard_Integer CN,
- StepData_StepWriter& SW,
- const Handle(Standard_Transient)&ent) const
-{
- if (CN == 0) return;
-
- DeclareAndCast(StepData_Simple,sent,ent);
- if (!sent.IsNull()) {
- Handle(StepData_ESDescr) sdescr = sent->ESDescr();
- const StepData_FieldListN& fl = sent->Fields();
- SW.SendList (fl,sdescr);
- return;
- }
-
- DeclareAndCast(StepData_Plex,cent,ent);
- Standard_Integer i, nb=0;
- if (!cent.IsNull()) nb = cent->NbMembers();
- for (i = 1; i <= nb; i ++) {
- Handle(StepData_Simple) si = cent->Member(i);
- Handle(StepData_ESDescr) sdescr = si->ESDescr();
- const StepData_FieldListN& fl = si->Fields();
- SW.StartEntity (sdescr->TypeName());
- SW.SendList (fl,sdescr);
- }
-}
+++ /dev/null
-// Created on: 1997-05-21
-// Created by: Christian CAILLET
-// Copyright (c) 1997-1999 Matra Datavision
-// Copyright (c) 1999-2014 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-#ifndef _StepData_DescrReadWrite_HeaderFile
-#define _StepData_DescrReadWrite_HeaderFile
-
-#include <Standard.hxx>
-#include <Standard_Type.hxx>
-
-#include <StepData_ReadWriteModule.hxx>
-#include <Standard_Integer.hxx>
-#include <TColStd_SequenceOfAsciiString.hxx>
-#include <Standard_Boolean.hxx>
-class StepData_Protocol;
-class TCollection_AsciiString;
-class StepData_StepReaderData;
-class Interface_Check;
-class Standard_Transient;
-class StepData_StepWriter;
-
-
-class StepData_DescrReadWrite;
-DEFINE_STANDARD_HANDLE(StepData_DescrReadWrite, StepData_ReadWriteModule)
-
-
-class StepData_DescrReadWrite : public StepData_ReadWriteModule
-{
-
-public:
-
-
- Standard_EXPORT StepData_DescrReadWrite(const Handle(StepData_Protocol)& proto);
-
- Standard_EXPORT Standard_Integer CaseStep (const TCollection_AsciiString& atype) const Standard_OVERRIDE;
-
- Standard_EXPORT virtual Standard_Integer CaseStep (const TColStd_SequenceOfAsciiString& types) const Standard_OVERRIDE;
-
- Standard_EXPORT virtual Standard_Boolean IsComplex (const Standard_Integer CN) const Standard_OVERRIDE;
-
- Standard_EXPORT const TCollection_AsciiString& StepType (const Standard_Integer CN) const Standard_OVERRIDE;
-
- Standard_EXPORT virtual Standard_Boolean ComplexType (const Standard_Integer CN, TColStd_SequenceOfAsciiString& types) const Standard_OVERRIDE;
-
- Standard_EXPORT void ReadStep (const Standard_Integer CN, const Handle(StepData_StepReaderData)& data, const Standard_Integer num, Handle(Interface_Check)& ach, const Handle(Standard_Transient)& ent) const Standard_OVERRIDE;
-
- Standard_EXPORT void WriteStep (const Standard_Integer CN, StepData_StepWriter& SW, const Handle(Standard_Transient)& ent) const Standard_OVERRIDE;
-
-
-
-
- DEFINE_STANDARD_RTTIEXT(StepData_DescrReadWrite,StepData_ReadWriteModule)
-
-protected:
-
-
-
-
-private:
-
-
- Handle(StepData_Protocol) theproto;
-
-
-};
-
-
-
-
-
-
-
-#endif // _StepData_DescrReadWrite_HeaderFile
+++ /dev/null
-// Copyright (c) 1999-2014 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-
-#include <Interface_Check.hxx>
-#include <Interface_Graph.hxx>
-#include <Interface_Protocol.hxx>
-#include <Standard_Type.hxx>
-#include <StepData_FileProtocol.hxx>
-#include <StepData_Protocol.hxx>
-
-IMPLEMENT_STANDARD_RTTIEXT(StepData_FileProtocol,StepData_Protocol)
-
-//static TCollection_AsciiString thename("");
-static Standard_CString thename = "";
-
-// Protocol fabrique a la demande avec d autres Protocoles
-
-
- StepData_FileProtocol::StepData_FileProtocol () { }
-
- void StepData_FileProtocol::Add (const Handle(StepData_Protocol)& protocol)
-{
- if (protocol.IsNull()) return;
- Handle(Standard_Type) ptype = protocol->DynamicType();
- Standard_Integer nb = thecomps.Length();
- for (Standard_Integer i = 1; i <= nb; i ++) {
- if (thecomps.Value(i)->IsInstance(ptype)) return;
- }
- thecomps.Append(protocol);
-}
-
-
- Standard_Integer StepData_FileProtocol::NbResources () const
- { return thecomps.Length(); }
-
- Handle(Interface_Protocol) StepData_FileProtocol::Resource
- (const Standard_Integer num) const
- { return Handle(Interface_Protocol)::DownCast(thecomps.Value(num)); }
-
-
- Standard_Integer StepData_FileProtocol::TypeNumber
- (const Handle(Standard_Type)& /*atype*/) const
- { return 0; }
-
-
-Standard_Boolean StepData_FileProtocol::GlobalCheck(const Interface_Graph& G,
- Handle(Interface_Check)& ach) const
-{
- Standard_Boolean res = Standard_False;
- Standard_Integer i,nb = NbResources();
- for (i = 1; i <= nb; i ++) res |= Resource(i)->GlobalCheck (G,ach);
- return res;
-}
-
-
- Standard_CString StepData_FileProtocol::SchemaName () const
- { return thename; }
+++ /dev/null
-// Created on: 1993-07-23
-// Created by: Christian CAILLET
-// Copyright (c) 1993-1999 Matra Datavision
-// Copyright (c) 1999-2014 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-#ifndef _StepData_FileProtocol_HeaderFile
-#define _StepData_FileProtocol_HeaderFile
-
-#include <Standard.hxx>
-#include <Standard_Type.hxx>
-
-#include <TColStd_SequenceOfTransient.hxx>
-#include <StepData_Protocol.hxx>
-#include <Standard_Integer.hxx>
-#include <Standard_Type.hxx>
-#include <Standard_Boolean.hxx>
-#include <Standard_CString.hxx>
-class StepData_Protocol;
-class Interface_Protocol;
-class Interface_Graph;
-class Interface_Check;
-
-
-class StepData_FileProtocol;
-DEFINE_STANDARD_HANDLE(StepData_FileProtocol, StepData_Protocol)
-
-//! A FileProtocol is defined as the addition of several already
-//! existing Protocols. It corresponds to the definition of a
-//! SchemaName with several Names, each one being attached to a
-//! specific Protocol. Thus, a File defined with a compound Schema
-//! is processed as any other one, once built the equivalent
-//! compound Protocol, a FileProtocol
-class StepData_FileProtocol : public StepData_Protocol
-{
-
-public:
-
-
- //! Creates an empty FileProtocol
- Standard_EXPORT StepData_FileProtocol();
-
- //! Adds a Protocol to the definition list of the FileProtocol
- //! But ensures that each class of Protocol is present only once
- //! in this list
- Standard_EXPORT void Add (const Handle(StepData_Protocol)& protocol);
-
- //! Gives the count of Protocols used as Resource (can be zero)
- //! i.e. the count of Protocol recorded by calling the method Add
- Standard_EXPORT virtual Standard_Integer NbResources() const Standard_OVERRIDE;
-
- //! Returns a Resource, given a rank. Here, rank of calling Add
- Standard_EXPORT virtual Handle(Interface_Protocol) Resource (const Standard_Integer num) const Standard_OVERRIDE;
-
- //! Returns a Case Number, specific of each recognized Type
- //! Here, NO Type at all is recognized properly : all Types are
- //! recognized by the resources
- Standard_EXPORT virtual Standard_Integer TypeNumber (const Handle(Standard_Type)& atype) const Standard_OVERRIDE;
-
- //! Calls GlobalCheck for each of its recorded ressources
- Standard_EXPORT virtual Standard_Boolean GlobalCheck (const Interface_Graph& G, Handle(Interface_Check)& ach) const Standard_OVERRIDE;
-
- //! Returns the Schema Name attached to each class of Protocol
- //! 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;
-
-
-
-
- DEFINE_STANDARD_RTTIEXT(StepData_FileProtocol,StepData_Protocol)
-
-protected:
-
-
-
-
-private:
-
-
- TColStd_SequenceOfTransient thecomps;
-
-
-};
-
-
-
-
-
-
-
-#endif // _StepData_FileProtocol_HeaderFile
+++ /dev/null
-// Copyright (c) 1999-2014 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-
-#include <Interface_Protocol.hxx>
-#include <Interface_ReaderLib.hxx>
-#include <StepData_FileProtocol.hxx>
-#include <StepData_HeaderTool.hxx>
-#include <StepData_Protocol.hxx>
-#include <StepData_StepReaderData.hxx>
-#include <TCollection_AsciiString.hxx>
-
-// HeaderTool prend en charge le Schema de Donnees utilise pour un Fichier
-// Ce Schema peut etre compose de un ou plusieurs Protocoles, chacun etant
-// designe par une String. Les Strings correspondent au type "SCHEMA_NAME"
-// (typedef) et le Schema est une entite de Header de type "FILE_SCHEMA",
-// il a cette forme dans le fichier :
-static Interface_ReaderLib lib;
-
-
- StepData_HeaderTool::StepData_HeaderTool
- (const Handle(StepData_StepReaderData)& data)
-{
- lib.SetComplete();
- thedone = Standard_False;
- Standard_Integer num = 0;
- while ( (num = data->FindNextRecord(num)) != 0) {
- const TCollection_AsciiString& headertype = data->RecordType(num);
- if (headertype == "FILE_SCHEMA") {
- Standard_Integer numsub = data->SubListNumber(num,1,Standard_True);
- Standard_Integer nb = data->NbParams(numsub);
- for (Standard_Integer i = 1; i <= nb; i ++) {
- TCollection_AsciiString unom = data->ParamCValue(numsub,i);
- unom.Remove(unom.Length());
- unom.Remove(1); // quotes debut et fin
- thenames.Append(unom);
- }
- }
- }
-}
-
-
- StepData_HeaderTool::StepData_HeaderTool
- (const TColStd_SequenceOfAsciiString& names)
-{
- lib.SetComplete();
- thedone = Standard_False;
- Standard_Integer nb = names.Length();
- for (Standard_Integer i = 1; i <= nb; i ++) thenames.Append(names.Value(i));
-}
-
- Standard_Integer StepData_HeaderTool::NbSchemaNames () const
- { return thenames.Length(); }
-
- const TCollection_AsciiString& StepData_HeaderTool::SchemaName
- (const Standard_Integer num) const
- { return thenames.Value(num); }
-
- Handle(StepData_Protocol) StepData_HeaderTool::NamedProtocol
- (const TCollection_AsciiString& name) const
-{
- Handle(StepData_Protocol) proto;
- for (lib.Start(); lib.More(); lib.Next()) {
- proto = Handle(StepData_Protocol)::DownCast(lib.Protocol());
- if ( name.IsEqual(proto->SchemaName()) ) return proto;
- }
- return proto;
-}
-
-
- void StepData_HeaderTool::Build
- (const Handle(StepData_FileProtocol)& proto)
-{
- thedone = Standard_True;
- theignored.Clear();
- Standard_Integer nb = thenames.Length();
- for (Standard_Integer i = 1; i <= nb; i ++) {
- Handle(StepData_Protocol) unproto = NamedProtocol(thenames.Value(i));
- if (unproto.IsNull()) theignored.Append(thenames.Value(i));
- else proto->Add(unproto);
- }
-}
-
- Handle(StepData_Protocol) StepData_HeaderTool::Protocol ()
-{
- thedone = Standard_True;
- theignored.Clear();
- Handle(StepData_Protocol) unproto;
- if (thenames.IsEmpty()) return unproto;
- if (thenames.Length() == 1) {
- unproto = NamedProtocol (thenames.Value(1));
- if (unproto.IsNull()) theignored.Append (thenames.Value(1));
- return unproto;
- }
- Handle(StepData_FileProtocol) proto = new StepData_FileProtocol;
- Build(proto);
- return proto;
-}
-
-
- Standard_Boolean StepData_HeaderTool::IsDone () const
- { return thedone; }
-
-
- Standard_Integer StepData_HeaderTool::NbIgnoreds () const
- { return theignored.Length(); }
-
- const TCollection_AsciiString& StepData_HeaderTool::Ignored
- (const Standard_Integer num) const
- { return theignored.Value(num); }
-
-
- void StepData_HeaderTool::Print (Standard_OStream& S) const
-{
- Standard_Integer nb = thenames.Length();
- Standard_Integer lng = 0; Standard_Integer ln1;
- S << " --- StepData_HeaderTool : List of Protocol Names --- Count : "
- << nb << std::endl;
- Standard_Integer i; // svv Jan11 2000 : porting on DEC
- for (i = 1; i <= nb; i ++) {
- ln1 = thenames.Value(i).Length() + 8; lng += ln1;
- if (lng > 80) { S << std::endl; lng = ln1; }
- S << " " << i << " : " << thenames.Value(i);
- }
- if (lng == 0) S << std::endl;
-
- nb = theignored.Length();
- if (!thedone) {
- S << " --- Evaluation of Protocol not Done ---" << std::endl;
- } else if (nb == 0) {
- S << " --- All Names correspond to a known Protocol ---" << std::endl;
- } else {
- lng = ln1 = 0;
- S << " --- Among them, " << nb << " remain unrecognized ---" << std::endl;
- for (i = 1; i <= nb; i ++) {
- ln1 = theignored.Value(i).Length() + 3; lng += ln1;
- if (lng > 80) { S << std::endl; lng = ln1; }
- S << " : " << theignored.Value(i);
- }
- if (lng == 0) S << std::endl;
- }
-}
+++ /dev/null
-// Created on: 1993-07-23
-// Created by: Christian CAILLET
-// Copyright (c) 1993-1999 Matra Datavision
-// Copyright (c) 1999-2014 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-#ifndef _StepData_HeaderTool_HeaderFile
-#define _StepData_HeaderTool_HeaderFile
-
-#include <Standard.hxx>
-#include <Standard_DefineAlloc.hxx>
-#include <Standard_Handle.hxx>
-
-#include <TColStd_SequenceOfAsciiString.hxx>
-#include <Standard_Boolean.hxx>
-#include <Standard_Integer.hxx>
-#include <Standard_OStream.hxx>
-class StepData_StepReaderData;
-class TCollection_AsciiString;
-class StepData_Protocol;
-class StepData_FileProtocol;
-
-
-//! HeaderTool exploits data from Header to build a Protocol :
-//! it uses the Header Entity FileSchema to do this.
-//! It builds a Protocol from the Global List of Protocols
-//! stored in the Library ReaderLib
-class StepData_HeaderTool
-{
-public:
-
- DEFINE_STANDARD_ALLOC
-
-
- //! Creates a HeaderTool from data read from a File. Computes the
- //! list of Schema Names. The Protocol will be computed later
- //! (because there are several options)
- Standard_EXPORT StepData_HeaderTool(const Handle(StepData_StepReaderData)& data);
-
- //! Creates a HeaderTool directly from a list of Schema Names
- Standard_EXPORT StepData_HeaderTool(const TColStd_SequenceOfAsciiString& names);
-
- //! Returns the count of SchemaNames
- Standard_EXPORT Standard_Integer NbSchemaNames() const;
-
- //! Returns a SchemaName, given its rank
- Standard_EXPORT const TCollection_AsciiString& SchemaName (const Standard_Integer num) const;
-
- //! Returns the Protocol which corresponds to a Schema Name
- //! Returns a Null Handle if this Schema Name is attached to no
- //! Protocol recorded in the Global List of ReaderLib
- Standard_EXPORT Handle(StepData_Protocol) NamedProtocol (const TCollection_AsciiString& name) const;
-
- //! Fills a FileProtocol with the list of Protocols attached to
- //! the list of Schema Names. It can remain empty ...
- Standard_EXPORT void Build (const Handle(StepData_FileProtocol)& protocol);
-
- //! Returns a Protocol computed from the list of Schema Names :
- //! - a Null Handle if no SchemaName has been recognized (or list
- //! empty)
- //! - a single Protocol if only one SchemaName has been recognized
- //! - a FileProtocol with its componants if several SchemaNames
- //! have been recognized
- Standard_EXPORT Handle(StepData_Protocol) Protocol();
-
- //! Returns True if either Build or Protocol has been called
- //! If it is False, Ignored and NbIgnored should not be called
- Standard_EXPORT Standard_Boolean IsDone() const;
-
- //! Returns the count of ignored SchemaNames (0 if all were OK)
- Standard_EXPORT Standard_Integer NbIgnoreds() const;
-
- //! Returns an ignored SchemaName, given its rank in the list of
- //! Ignored SchemaNames (not in the total list)
- Standard_EXPORT const TCollection_AsciiString& Ignored (const Standard_Integer num) const;
-
- //! Sends the state of the HeaderTool in a comprehensive way,
- //! to an output stream
- Standard_EXPORT void Print (Standard_OStream& S) const;
-
-
-
-
-protected:
-
-
-
-
-
-private:
-
-
-
- TColStd_SequenceOfAsciiString thenames;
- Standard_Boolean thedone;
- TColStd_SequenceOfAsciiString theignored;
-
-
-};
-
-
-
-
-
-
-
-#endif // _StepData_HeaderTool_HeaderFile
}
-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;
#include <StepData_SelectNamed.hxx>
#include <StepData_SelectReal.hxx>
#include <StepData_SelectType.hxx>
+#include <StepData_UndefinedEntity.hxx>
+
Standard_Boolean StepData_SelectType::Matches
(const Handle(Standard_Transient)& ent) const
void StepData_SelectType::SetValue (const Handle(Standard_Transient)& ent)
{
if (ent.IsNull()) thevalue.Nullify();
+ else if (ent->IsKind(STANDARD_TYPE(StepData_UndefinedEntity)))
+ thevalue = ent;
else if (!Matches(ent))
throw Standard_TypeMismatch("StepData : SelectType, SetValue");
else thevalue = ent;
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);
+
+ // STEP file encoding for names translation
+ // Note: the numbers should be consistent with Resource_FormatType enumeration
+ anItem = new Interface_Static ("stepcaf", "read.stepcaf.codepage", Interface_ParamEnum, "");
+ Interface_Static::InitValues(anItem, "enum 0");
+ Interface_Static::InitValues(anItem, "eval SJIS"); // Resource_FormatType_SJIS
+ Interface_Static::InitValues(anItem, "eval EUC"); // Resource_FormatType_EUC
+ Interface_Static::InitValues(anItem, "eval ANSI"); // Resource_FormatType_ANSI
+ Interface_Static::InitValues(anItem, "eval GB"); // Resource_FormatType_GB
+ Interface_Static::InitValues(anItem, "eval UTF8"); // Resource_FormatType_UTF8
+ Interface_Static::InitValues(anItem, "eval SystemLocale"); // Resource_FormatType_SystemLocale
+ aStaticItem = Interface_Static::Static("read.stepcaf.codepage");
+ anItem->SetIntegerValue(aStaticItem.IsNull() ? 0 : aStaticItem->IntegerValue());
+ myParamMap.Bind("read.stepcaf.codepage", anItem);
+}
Handle(Standard_Transient) StepData_StepModel::Entity
(const Standard_Integer num) const
{ theheader.Append(ent); }
-void StepData_StepModel::VerifyCheck(Handle(Interface_Check)& ach) const
-{
- Interface_GeneralLib lib(StepData::HeaderProtocol());
- Handle(StepData_StepModel) me (this);
- Handle(Interface_Protocol) aHP = StepData::HeaderProtocol();
- Interface_ShareTool sh(me,aHP);
- Handle(Interface_GeneralModule) module; Standard_Integer CN;
- for (Interface_EntityIterator iter = Header(); iter.More(); iter.Next()) {
- Handle(Standard_Transient) head = iter.Value();
- if (!lib.Select(head,module,CN)) continue;
- module->CheckCase(CN,head,sh,ach);
- }
-}
+//void StepData_StepModel::VerifyCheck(Handle(Interface_Check)& ach) const
+//{
+// Interface_GeneralLib lib(StepData::HeaderProtocol());
+// Handle(StepData_StepModel) me (this);
+// Handle(Interface_Protocol) aHP = StepData::HeaderProtocol();
+// Interface_ShareTool sh(me,aHP);
+// Handle(Interface_GeneralModule) module; Standard_Integer CN;
+// for (Interface_EntityIterator iter = Header(); iter.More(); iter.Next()) {
+// Handle(Standard_Transient) head = iter.Value();
+// if (!lib.Select(head,module,CN)) continue;
+// module->CheckCase(CN,head,sh,ach);
+// }
+//}
void StepData_StepModel::DumpHeader
Standard_Integer num = Number(ent);
if (!num)
return;
+ Standard_Integer nbEnt = NbEntities();
if(theidnums.IsNull())
{
- theidnums = new TColStd_HArray1OfInteger(1, NbEntities());
+ theidnums = new TColStd_HArray1OfInteger(1,nbEnt);
theidnums->Init(0);
}
+ else if(nbEnt > theidnums->Length())
+ {
+ Standard_Integer prevLength = theidnums->Length();
+ Handle(TColStd_HArray1OfInteger) idnums1 = new TColStd_HArray1OfInteger(1,nbEnt);
+ idnums1->Init(0);
+ Standard_Integer k =1;
+ for( ; k <= prevLength; k++)
+ idnums1->SetValue(k , theidnums->Value(k));
+ theidnums = idnums1;
+ }
theidnums->SetValue(num,ident);
}
#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;
Standard_EXPORT void AddHeaderEntity (const Handle(Standard_Transient)& ent);
//! Specific Check, checks Header Items with HeaderProtocol
- Standard_EXPORT virtual void VerifyCheck (Handle(Interface_Check)& ach) const Standard_OVERRIDE;
+ //Standard_EXPORT virtual void VerifyCheck (Handle(Interface_Check)& ach) const Standard_OVERRIDE;
//! Dumps the Header, with the Header Protocol of StepData.
//! If the Header Protocol is not defined, for each Header Entity,
-
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>
#include <TColStd_HSequenceOfReal.hxx>
#include <TColStd_IndexedMapOfInteger.hxx>
#include <TColStd_SequenceOfInteger.hxx>
+#include <StepData_UndefinedEntity.hxx>
#include <stdio.h>
IMPLEMENT_STANDARD_RTTIEXT(StepData_StepReaderData, Interface_FileReaderData)
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);
Handle(String) errmess; // Null si pas d erreur
if (nump > 0 && nump <= NbParams(num)) {
const Interface_FileParameter& FP = Param(num, nump);
- if (FP.ParamType() == Interface_ParamReal) val =
- Interface_FileReaderData::Fastof(FP.CValue());
+ if (FP.ParamType() == Interface_ParamReal || FP.ParamType() == Interface_ParamInteger)
+ val = Interface_FileReaderData::Fastof(FP.CValue());
else errmess = new String("Parameter n0.%d (%s) not a Real");
}
else errmess = new String("Parameter n0.%d (%s) absent");
if (FP.ParamType() == Interface_ParamIdent) {
warn = (acceptvoid > 0);
if (nent > 0) {
- Handle(Standard_Transient) entent = BoundEntity(nent);
+ Handle(Standard_Transient) entent = BoundEntity(nent);
if (entent.IsNull() || !entent->IsKind(atype))
+ {
errmess = new String("Parameter n0.%d (%s) : Entity has illegal type");
- else ent = entent;
+ if (entent->IsKind(STANDARD_TYPE(StepData_UndefinedEntity)))
+ ent = entent;
+ }
+ else ent = entent;
}
else errmess = new String("Parameter n0.%d (%s) : Unresolved reference");
}
if (FP.ParamType() == Interface_ParamIdent) {
warn = (acceptvoid > 0);
if (nent > 0) {
- Handle(Standard_Transient) entent = BoundEntity(nent);
+ Handle(Standard_Transient) entent = BoundEntity(nent);
if (!sel.Matches(entent))
+ {
errmess = new String("Parameter n0.%d (%s) : Entity has illegal type");
- else
+ //fot not suppported STEP entity
+ if (entent->IsKind(STANDARD_TYPE(StepData_UndefinedEntity)))
+ sel.SetValue(entent);
+ }
+ else
sel.SetValue(entent);
}
else
#include <Interface_FileReaderTool.hxx>
#include <Standard_Boolean.hxx>
#include <Standard_Integer.hxx>
+#include <NCollection_List.hxx>
+#include <StepData_GeneralModule.hxx>
+#include <StepData_ReadWriteModule.hxx>
+
class StepData_FileRecognizer;
class StepData_StepReaderData;
class StepData_Protocol;
private:
-
+ NCollection_List<Handle(StepData_GeneralModule)> myglib;
+ NCollection_List<Handle(StepData_ReadWriteModule)> myrlib;
Handle(StepData_FileRecognizer) thereco;
Interface_GeneralLib theglib;
#include <Message_Messenger.hxx>
#include <Message.hxx>
+#include <Standard_Mutex.hxx>
#ifdef OCCT_DEBUG
#define CHRONOMESURE
const Handle(StepData_FileRecognizer)& recodata)
{
- Handle(Message_Messenger) sout = Message::DefaultMessenger();
- char *ficnom = nomfic ; // because const (non reconnu par C)
-
- checkread->Clear();
- recfile_modeprint ( (modepr > 0 ? modepr-1 : 0) );
- FILE* newin = stepread_setinput(ficnom);
- if (!newin) return -1;
+ static Standard_Mutex aPars;
+ {
+ Standard_Mutex::Sentry aLock(aPars);
+
+ Handle(Message_Messenger) sout = Message::DefaultMessenger();
+ char *ficnom = nomfic; // because const (non reconnu par C)
+
+ checkread->Clear();
+ recfile_modeprint(( modepr > 0 ? modepr - 1 : 0 ));
+ FILE* newin = stepread_setinput(ficnom);
+ if (!newin) return -1;
#ifdef CHRONOMESURE
- Standard_Integer n ;
- OSD_Timer c ;
- c.Reset () ;
- c.Start();
- sout << " ... Step File Reading : " << ficnom << "" << Message_EndLine;
+ Standard_Integer n;
+ OSD_Timer c;
+ c.Reset();
+ c.Start();
+ sout << " ... Step File Reading : " << ficnom << "" << Message_EndLine;
#endif
- try {
- OCC_CATCH_SIGNALS
- if (stepread () != 0) { lir_file_fin(3); stepread_endinput (newin,ficnom); return 1; }
- }
- catch (Standard_Failure const& anException) {
+ try {
+ OCC_CATCH_SIGNALS
+ if (stepread() != 0) { lir_file_fin(3); stepread_endinput(newin, ficnom); return 1; }
+ }
+ catch (Standard_Failure const& anException) {
#ifdef OCCT_DEBUG
- sout << " ... Exception Raised while reading Step File : " << ficnom << ":\n" << Message_EndLine;
- sout << anException.GetMessageString();
- sout << " ..." << Message_EndLine;
+ sout << " ... Exception Raised while reading Step File : " << ficnom << ":\n" << Message_EndLine;
+ sout << anException.GetMessageString();
+ sout << " ..." << Message_EndLine;
#endif
- (void)anException;
- lir_file_fin(3);
- stepread_endinput (newin,ficnom);
- return 1;
- }
- // Continue reading of file despite of possible fails
- //if (checkread->HasFailed()) { lir_file_fin(3); stepread_endinput (newin,ficnom); return 1; }
+ (void)anException;
+ lir_file_fin(3);
+ stepread_endinput(newin, ficnom);
+ return 1;
+ }
+ // Continue reading of file despite of possible fails
+ //if (checkread->HasFailed()) { lir_file_fin(3); stepread_endinput (newin,ficnom); return 1; }
#ifdef CHRONOMESURE
- sout << " ... STEP File Read ... " << Message_EndLine;
- c.Show();
+ sout << " ... STEP File Read ... " << Message_EndLine;
+ c.Show();
#endif
-// Creation du StepReaderData
-
- LesTypes[rec_argNondef] = Interface_ParamVoid ;
- LesTypes[rec_argSub] = Interface_ParamSub ;
- LesTypes[rec_argIdent] = Interface_ParamIdent ;
- LesTypes[rec_argInteger] = Interface_ParamInteger ;
- LesTypes[rec_argFloat] = Interface_ParamReal ;
- LesTypes[rec_argEnum] = Interface_ParamEnum ;
- LesTypes[rec_argBinary] = Interface_ParamBinary ;
- LesTypes[rec_argText] = Interface_ParamText ;
- LesTypes[rec_argHexa] = Interface_ParamHexa ;
- LesTypes[rec_argMisc] = Interface_ParamMisc ;
-
- Standard_Integer nbhead, nbrec, nbpar;
- lir_file_nbr (&nbhead,&nbrec,&nbpar); // renvoi par lex/yacc
- Handle(StepData_StepReaderData) undirec =
- new StepData_StepReaderData(nbhead,nbrec,nbpar); // creation tableau de records
-
- for ( Standard_Integer nr = 1; nr <= nbrec; nr ++) {
- int nbarg; char* ident; char* typrec = 0;
- lir_file_rec (&ident, &typrec, &nbarg);
- undirec->SetRecord (nr, ident, typrec, nbarg);
-
- if (nbarg>0) {
- int typa; char* val;
- Interface_ParamType newtype;
- while(lir_file_arg (&typa, &val) == 1) {
- newtype = LesTypes[typa] ;
- undirec->AddStepParam (nr, val, newtype);
+ // Creation du StepReaderData
+
+ LesTypes[rec_argNondef] = Interface_ParamVoid;
+ LesTypes[rec_argSub] = Interface_ParamSub;
+ LesTypes[rec_argIdent] = Interface_ParamIdent;
+ LesTypes[rec_argInteger] = Interface_ParamInteger;
+ LesTypes[rec_argFloat] = Interface_ParamReal;
+ LesTypes[rec_argEnum] = Interface_ParamEnum;
+ LesTypes[rec_argBinary] = Interface_ParamBinary;
+ LesTypes[rec_argText] = Interface_ParamText;
+ LesTypes[rec_argHexa] = Interface_ParamHexa;
+ LesTypes[rec_argMisc] = Interface_ParamMisc;
+
+ Standard_Integer nbhead, nbrec, nbpar;
+ lir_file_nbr(&nbhead, &nbrec, &nbpar); // renvoi par lex/yacc
+ Handle(StepData_StepReaderData) undirec =
+ new StepData_StepReaderData(nbhead, nbrec, nbpar); // creation tableau de records
+
+ for (Standard_Integer nr = 1; nr <= nbrec; nr++) {
+ int nbarg; char* ident; char* typrec = 0;
+ lir_file_rec(&ident, &typrec, &nbarg);
+ undirec->SetRecord(nr, ident, typrec, nbarg);
+
+ if (nbarg > 0) {
+ int typa; char* val;
+ Interface_ParamType newtype;
+ while (lir_file_arg(&typa, &val) == 1) {
+ newtype = LesTypes[typa];
+ undirec->AddStepParam(nr, val, newtype);
+ }
}
+ undirec->InitParams(nr);
+ lir_file_finrec();
}
- undirec->InitParams(nr);
- lir_file_finrec();
- }
- lir_file_fin(1);
-// on a undirec pret pour la suite
+ lir_file_fin(1);
+ // on a undirec pret pour la suite
#ifdef CHRONOMESURE
- sout << " ... Step File loaded ... " << Message_EndLine;
- c.Show();
- sout << " "<< undirec->NbRecords () <<
- " records (entities,sub-lists,scopes), "<< nbpar << " parameters\n" << Message_EndLine;
+ sout << " ... Step File loaded ... " << Message_EndLine;
+ c.Show();
+ sout << " " << undirec->NbRecords() <<
+ " records (entities,sub-lists,scopes), " << nbpar << " parameters\n" << Message_EndLine;
#endif
-// Analyse : par StepReaderTool
+ // Analyse : par StepReaderTool
- StepData_StepReaderTool readtool (undirec,protocol);
- readtool.SetErrorHandle (Standard_True);
+ StepData_StepReaderTool readtool(undirec, protocol);
+ readtool.SetErrorHandle(Standard_True);
- readtool.PrepareHeader(recoheader); // Header. reco nul -> pour Protocol
- readtool.Prepare(recodata); // Data. reco nul -> pour Protocol
+ readtool.PrepareHeader(recoheader); // Header. reco nul -> pour Protocol
+ readtool.Prepare(recodata); // Data. reco nul -> pour Protocol
#ifdef CHRONOMESURE
- sout << " ... Parameters prepared ... ";
- c.Show();
+ sout << " ... Parameters prepared ... ";
+ c.Show();
#endif
- readtool.LoadModel(stepmodel);
- if (stepmodel->Protocol().IsNull()) stepmodel->SetProtocol (protocol);
- lir_file_fin(2);
-
- readtool.Clear();
- undirec.Nullify();
+ readtool.LoadModel(stepmodel);
+ if (stepmodel->Protocol().IsNull()) stepmodel->SetProtocol(protocol);
+ lir_file_fin(2);
+
+ readtool.Clear();
+ undirec.Nullify();
#ifdef CHRONOMESURE
- sout << " ... Objets analysed ... " << Message_EndLine;
- c.Show();
- n = stepmodel->NbEntities() ;
- sout << " STEP Loading done : " << n << " Entities" << Message_EndLine;
+ sout << " ... Objets analysed ... " << Message_EndLine;
+ c.Show();
+ n = stepmodel->NbEntities();
+ sout << " STEP Loading done : " << n << " Entities" << Message_EndLine;
#endif
-
- stepread_endinput (newin,ficnom); return 0 ;
+
+ stepread_endinput(newin, ficnom); return 0;
+ }
}
void StepFile_Interrupt (char* mess)
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->IVal("write.step.schema");
+ lastvalue.AssignCat (theproto->SchemaName(aval));
lastvalue.AssignCat ("..");
} else {
Standard_Boolean plex = module->IsComplex(CN);
long status = 1;
DeclareAndCast(StepData_Protocol,stepro,protocol);
if (stepro.IsNull()) return 1;
- Handle(StepData_StepModel) stepmodel = new StepData_StepModel;
- model = stepmodel;
+ //ISCAR
+ Handle(StepData_StepModel) stepmodel;
+ if(!model.IsNull())
+ stepmodel = Handle(StepData_StepModel)::DownCast(model);
+ if(stepmodel.IsNull())
+ {
+ stepmodel = new StepData_StepModel;
+ model = stepmodel;
+ }
+
StepFile_ReadTrace (0);
char *pName=(char *)name;
status = StepFile_Read (pName,stepmodel,stepro);
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->IVal("read.maxprecision.mode");
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()->IVal("read.surfacecurve.mode");
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->IVal("read.surfacecurve.mode");
// 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()->IVal("write.surfacecurve.mode"));
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()->IVal("write.surfacecurve.mode"));
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()->IVal("write.surfacecurve.mode"));
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()->IVal("write.surfacecurve.mode"));
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()->IVal("write.surfacecurve.mode"));
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->IVal("write.surfacecurve.mode"));
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->IVal("write.surfacecurve.mode"));
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->IVal("write.surfacecurve.mode"));
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->IVal("write.surfacecurve.mode"));
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->IVal("write.step.nonmanifold") != 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->IVal("write.step.nonmanifold") != 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->IVal("write.step.nonmanifold") != 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
+
+ // STEP file encoding for names translation
+ // Note: the numbers should be consistent with Resource_FormatType enumeration
+ Interface_Static::Init("step", "read.stepcaf.codepage", 'e', "");
+ Interface_Static::Init ("step", "read.stepcaf.codepage", '&', "enum 0");
+ Interface_Static::Init ("step", "read.stepcaf.codepage", '&', "eval SJIS"); // Resource_FormatType_SJIS
+ Interface_Static::Init ("step", "read.stepcaf.codepage", '&', "eval EUC"); // Resource_FormatType_EUC
+ Interface_Static::Init ("step", "read.stepcaf.codepage", '&', "eval ANSI"); // Resource_FormatType_ANSI
+ Interface_Static::Init ("step", "read.stepcaf.codepage", '&', "eval GB"); // Resource_FormatType_GB
+ Interface_Static::Init ("step", "read.stepcaf.codepage", '&', "eval UTF8"); // Resource_FormatType_UTF8
+ Interface_Static::Init ("step", "read.stepcaf.codepage", '&', "eval SystemLocale"); // Resource_FormatType_SystemLocale
+ Interface_Static::SetCVal ("read.stepcaf.codepage", "UTF8");
+}
//=======================================================================
//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();
static Standard_Integer ReadStep (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
{
DeclareAndCast(STEPControl_Controller,ctl,XSDRAW::Controller());
- if (ctl.IsNull()) XSDRAW::SetNorm("STEP");
+ if (ctl.IsNull())
+ {
+ ctl = new STEPCAFControl_Controller;
+ XSDRAW::SetController(ctl);
+ }
+
Standard_CString aDocName = NULL;
TCollection_AsciiString aFilePath, aModeStr;
else di << " Model taken from the session : " << fnom.ToCString() << "\n";
// di<<" -- Names of variables BREP-DRAW prefixed by : "<<rnom<<"\n";
- STEPCAFControl_Reader reader ( XSDRAW::Session(),modfic);
+ STEPCAFControl_Reader reader (XSDRAW::Session(), ctl, modfic);
if (!aModeStr.IsEmpty())
{
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;
}
-
//=======================================================================
//function : WriteVrml
//purpose : Write DECAF document to Vrml
#include <Message_ProgressIndicator.hxx>
#include <Resource_Manager.hxx>
#include <ShapeAlgo.hxx>
-#include <ShapeAlgo_AlgoContainer.hxx>
-#include <ShapeAlgo_ToolContainer.hxx>
+//#include <ShapeAlgo_AlgoContainer.hxx>
+//#include <ShapeAlgo_ToolContainer.hxx>
#include <ShapeAnalysis_Edge.hxx>
#include <ShapeBuild_Edge.hxx>
#include <ShapeBuild_ReShape.hxx>
#include <XSAlgo_AlgoContainer.hxx>
#include <XSAlgo_ToolContainer.hxx>
#include <TopExp_Explorer.hxx>
+#include <Standard_Mutex.hxx>
IMPLEMENT_STANDARD_RTTIEXT(XSAlgo_AlgoContainer,Standard_Transient)
void XSAlgo_AlgoContainer::PrepareForTransfer() const
{
- UnitsMethods::SetCasCadeLengthUnit ( Interface_Static::IVal("xstep.cascade.unit") );
+ UnitsMethods::SetCasCadeLengthUnit(IVal("xstep.cascade.unit"));
}
//=======================================================================
Handle(ShapeProcess_ShapeContext) context = Handle(ShapeProcess_ShapeContext)::DownCast(info);
if ( context.IsNull() )
{
- Standard_CString rscfile = Interface_Static::CVal(prscfile);
+ Standard_CString rscfile = CVal(prscfile);
if (!rscfile)
rscfile = prscfile;
context = new ShapeProcess_ShapeContext(shape, rscfile);
}
context->SetNonManifold(NonManifold);
info = context;
-
- Standard_CString seq = Interface_Static::CVal ( pseq );
+ Standard_CString seq = CVal(pseq);
if ( ! seq ) seq = pseq;
// if resource file is not loaded or does not define <seq>.exec.op,
try {
OCC_CATCH_SIGNALS
Handle(ShapeExtend_MsgRegistrator) msg = new ShapeExtend_MsgRegistrator;
- Handle(ShapeFix_Shape) sfs = ShapeAlgo::AlgoContainer()->ToolContainer()->FixShape();
+ Handle(ShapeFix_Shape) sfs = new ShapeFix_Shape;// ShapeAlgo::AlgoContainer()->ToolContainer()->FixShape();
sfs->Init ( shape );
sfs->SetMsgRegistrator ( msg );
sfs->SetPrecision ( Prec );
B.Range(edge,face,w1,w2);
B.SameRange(edge, Standard_False );
//:S4136
- Standard_Integer SPmode = Interface_Static::IVal("read.stdsameparameter.mode");
+
+ Standard_Integer SPmode = IVal("read.stdsameparameter.mode");
if ( SPmode )
B.SameParameter (edge, Standard_False );
}
}
}
+
+//=======================================================================
+// Method : SetModel
+// Purpose :
+//=======================================================================
+void XSAlgo_AlgoContainer::SetModel(Handle(Interface_InterfaceModel)& theModel)
+{
+ myModel = theModel;
+ initParameters();
+}
+
+//=======================================================================
+// 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())
+ {
+ static Standard_Mutex aPars;
+ {
+ Standard_Mutex::Sentry aLock(aPars);
+ aParam = Interface_Static::Static(theParamName);
+ }
+ }
+ return aParam;
+}
+
+
+//=======================================================================
+//function : IVal
+//purpose :
+//=======================================================================
+Standard_Integer XSAlgo_AlgoContainer::IVal(const Standard_CString theParamName) const
+{
+ Handle(Interface_Static) aParam = getParam(theParamName);
+ return (aParam.IsNull() ? 0 : aParam->IntegerValue());
+}
+
+//=======================================================================
+//function : RVal
+//purpose :
+//=======================================================================
+Standard_Real XSAlgo_AlgoContainer::RVal(const Standard_CString theParamName) const
+{
+ Handle(Interface_Static) aParam = getParam(theParamName);
+ return (aParam.IsNull() ? 0.0 : aParam->RealValue());
+}
+
+//=======================================================================
+//function : CVal
+//purpose :
+//=======================================================================
+Standard_CString XSAlgo_AlgoContainer::CVal(const Standard_CString theParamName) const
+{
+ Handle(Interface_Static) aParam = getParam(theParamName);
+ return (aParam.IsNull() ? "" : aParam->CStringValue());
+}
+
+void XSAlgo_AlgoContainer::initParameters()
+{
+ if (myModel.IsNull())
+ return;
+
+ Handle(Interface_Static) anItem = new Interface_Static("XSTEP", "read.stdsameparameter.mode", Interface_ParamEnum, "");
+ Interface_Static::InitValues(anItem, "enum 0");
+ Interface_Static::InitValues(anItem, "eval Off");
+ Interface_Static::InitValues(anItem, "eval On");
+
+ anItem->SetCStringValue("Off");
+ myModel->AddParam("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::Init("XSTEP", "xstep.cascade.unit", 'e', "");
+ Interface_Static::InitValues(anItem, "enum 1");
+
+
+ Interface_Static::Init("XSTEP", "xstep.cascade.unit", '&', "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
+ anItem->SetCStringValue("MM");
+ myModel->AddParam("xstep.cascade.unit", anItem);
+
+}
#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;
+ Standard_EXPORT Standard_Integer IVal(const Standard_CString theParamName) const;
+ Standard_EXPORT Standard_Real RVal(const Standard_CString theParamName) const;
+ Standard_EXPORT Standard_CString CVal(const Standard_CString theParamName) const;
+ void initParameters();
private:
Handle(XSAlgo_ToolContainer) myTC;
-
+ Handle(Interface_InterfaceModel) myModel;
+
};
#include <XSControl_SignTransferStatus.hxx>
#include <XSControl_TransferReader.hxx>
#include <XSControl_WorkSession.hxx>
+#include <Standard_Mutex.hxx>
IMPLEMENT_STANDARD_RTTIEXT(XSControl_Controller,Standard_Transient)
//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 :
void XSControl_Controller::Record (const Standard_CString theName) const
{
- if (listad.IsBound(theName)) {
- Handle(Standard_Transient) thisadapt(this);
- Handle(Standard_Transient) newadapt = listad.ChangeFind(theName);
- if (newadapt->IsKind(thisadapt->DynamicType()))
- return;
- if (!(thisadapt->IsKind(newadapt->DynamicType())) && thisadapt != newadapt)
- throw Standard_DomainError("XSControl_Controller : Record");
+ static Standard_Mutex aPars;
+ {
+ Standard_Mutex::Sentry aLock(aPars);
+ if (listad.IsBound(theName)) {
+ Handle(Standard_Transient) thisadapt(this);
+ Handle(Standard_Transient) newadapt = listad.ChangeFind(theName);
+ if (newadapt->IsKind(thisadapt->DynamicType()))
+ return;
+ if (!(thisadapt->IsKind(newadapt->DynamicType())) && thisadapt != newadapt)
+ throw Standard_DomainError("XSControl_Controller : Record");
+ }
+ listad.Bind(theName, this);
}
- listad.Bind(theName, this);
}
//=======================================================================
Handle(XSControl_Controller) XSControl_Controller::Recorded(const Standard_CString theName)
{
- Handle(Standard_Transient) recorded;
- return (listad.Find(theName, recorded)?
- Handle(XSControl_Controller)::DownCast(recorded) :
- Handle(XSControl_Controller)());
+ static Standard_Mutex aPars;
+ {
+ Standard_Mutex::Sentry aLock(aPars);
+ Handle(Standard_Transient) recorded;
+ return (listad.Find(theName, recorded) ?
+ Handle(XSControl_Controller)::DownCast(recorded) :
+ Handle(XSControl_Controller)());
+ }
}
// #### DEFINITION ####
// 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;
NCollection_Vector<Handle(Standard_Transient)> myParams;
NCollection_Vector<Standard_Integer> myParamUses;
Handle(Interface_HArray1OfHAsciiString) myModeWriteShapeN;
+
};
#endif // _XSControl_Controller_HeaderFile
#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>
<< " Short name (resource) : "<<control->Name(Standard_True)<<Message_EndLine;
if (argc == 1) return IFSelect_RetVoid;
- control = XSControl_Controller::Recorded(arg1);
+ control = WS->Recorded(arg1);
if (control.IsNull()) {
sout<<" No norm named : "<<arg1<<Message_EndLine;
return IFSelect_RetError;
}
+
WS->SetController(control);
sout<<"new norm : "<<control->Name()<<Message_EndLine;
return IFSelect_RetDone;
#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;
{
// Old norm and results
myTransferReader->Clear(-1);
- // ???? En toute rigueur, menage a faire dans XWS : virer les items
- // ( a la limite, pourquoi pas, refaire XWS en entier)
-
- Handle(XSControl_Controller) newadapt = XSControl_Controller::Recorded (normname);
+ if (!myController.IsNull())
+ {
+ TCollection_AsciiString aN1 =myController->Name(Standard_False);
+ TCollection_AsciiString aN2 = myController->Name(Standard_True);
+
+ if (aN1.IsEqual(normname) || aN2.IsEqual(normname))
+ return Standard_True;
+ }
+
+ Handle(XSControl_Controller) newadapt = (!myMapCtl.IsBound(normname) ?
+ XSControl_Controller::Recorded(normname) : myMapCtl.Find(normname));
if (newadapt.IsNull()) return Standard_False;
- if (newadapt == myController) return Standard_True;
+
SetController (newadapt);
return Standard_True;
}
void XSControl_WorkSession::SetController(const Handle(XSControl_Controller)& ctl)
{
myController = ctl;
+ SetModel(myController->NewModel());
SetLibrary ( myController->WorkLibrary() );
SetProtocol ( myController->Protocol() );
myTransferReader->SetController (myController);
myTransferWriter->SetController (myController);
+ if (!myMapCtl.IsBound(ctl->Name(Standard_True)))
+ {
+ myMapCtl.Bind(ctl->Name(Standard_True), ctl);
+ myMapCtl.Bind(ctl->Name(Standard_False), ctl);
+ }
+ else
+ {
+ Handle(XSControl_Controller) aController = myMapCtl.Find(ctl->Name(Standard_True));
+ if (!aController->DynamicType()->IsKind(ctl->DynamicType()))
+ {
+ myMapCtl.Bind(ctl->Name(Standard_True), ctl);
+ myMapCtl.Bind(ctl->Name(Standard_False), ctl);
+ }
+
+ }
}
#include <IFSelect_WorkSession.hxx>
#include <IFSelect_ReturnStatus.hxx>
#include <XSControl_TransferWriter.hxx>
-class XSControl_Controller;
+#include <XSControl_Controller.hxx>
+//class XSControl_Controller;
class XSControl_TransferReader;
class XSControl_Vars;
class Message_Messenger;
//! resulting entities (in the resulting file model) rather than
//! with original objects (in fact, their mappers)
Standard_EXPORT Interface_CheckIterator TransferWriteCheckList() const;
+
+ Standard_EXPORT Handle(XSControl_Controller) Recorded(const Standard_CString theNormName)
+ {
+ if(!myMapCtl.IsBound(theNormName))
+ return 0;
+ return myMapCtl.Find(theNormName);
+ }
const Handle(XSControl_Vars) & Vars() const
{ return myVars; }
Handle(XSControl_TransferWriter) myTransferWriter;
NCollection_DataMap<TCollection_AsciiString, Handle(Standard_Transient)> myContext;
Handle(XSControl_Vars) myVars;
+ NCollection_DataMap<TCollection_AsciiString, Handle(XSControl_Controller)> myMapCtl;
};
#endif // _XSControl_WorkSession_HeaderFile
Handle(IGESSelect_Activator) igesact = new IGESSelect_Activator;
IGESControl_Controller::Init();
// XSDRAW::SetNorm ("IGES"); trop tot
- XSDRAW::SetController (XSControl_Controller::Recorded("iges"));
+ Handle(IGESControl_Controller) igesCtl = new IGESControl_Controller;
+ XSDRAW::SetController (igesCtl);
atexit (cleanpilot);
}
#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>
#include <XSControl_WorkSession.hxx>
#include <XSDRAW.hxx>
#include <XSDRAWSTEP.hxx>
+#include <TopoDS_Compound.hxx>
+#include <BRep_Builder.hxx>
#include <stdio.h>
// Pour le transfert (write)
}
}
+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 testread (Draw_Interpretor& di, Standard_Integer argc, const char** argv)
{
- if (argc != 3)
- {
- di << "ERROR in " << argv[0] << "Wrong Number of Arguments.\n";
- di << " Usage : " << argv[0] <<" file_name shape_name\n";
- return 1;
- }
+ if (argc != 3)
+ {
+ di << "ERROR in " << argv[0] << "Wrong Number of Arguments.\n";
+ di << " Usage : " << argv[0] << " file_name shape_name\n";
+ return 1;
+ }
STEPControl_Reader Reader;
Standard_CString filename = argv[1];
IFSelect_ReturnStatus readstat = Reader.ReadFile(filename);
- di<<"Status from reading STEP file "<<filename<<" : ";
- switch(readstat) {
- case IFSelect_RetVoid : { di<<"empty file\n"; return 1; }
- case IFSelect_RetDone : { di<<"file read\n"; break; }
- case IFSelect_RetError : { di<<"file not found\n"; return 1; }
- case IFSelect_RetFail : { di<<"error during read\n"; return 1; }
- default : { di<<"failure\n"; return 1; }
- }
+ di << "Status from reading STEP file " << filename << " : ";
+ switch (readstat) {
+ case IFSelect_RetVoid: { di << "empty file\n"; return 1; }
+ case IFSelect_RetDone: { di << "file read\n"; break; }
+ case IFSelect_RetError: { di << "file not found\n"; return 1; }
+ case IFSelect_RetFail: { di << "error during read\n"; return 1; }
+ default: { di << "failure\n"; return 1; }
+ }
Reader.TransferRoots();
TopoDS_Shape shape = Reader.OneShape();
- DBRep::Set(argv[2],shape);
- di<<"Count of shapes produced : "<<Reader.NbShapes()<<"\n";
+ DBRep::Set(argv[2], shape);
+ di << "Count of shapes produced : " << Reader.NbShapes() << "\n";
return 0;
}
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] } {
set filename stepBF3.stp
set ref_data {
-DATA : Faulties = 0 ( 26 ) Warnings = 0 ( 0 ) Summary = 0 ( 26 )
-TPSTAT : Faulties = 0 ( 2 ) Warnings = 0 ( 0 ) Summary = 0 ( 2 )
-CHECKSHAPE : Wires = 0 ( 0 ) Faces = 0 ( 0 ) Shells = 0 ( 0 ) Solids = 0 ( 0 )
-NBSHAPES : Solid = 0 ( 0 ) Shell = 0 ( 0 ) Face = 0 ( 0 )
-STATSHAPE : Solid = 0 ( 0 ) Shell = 0 ( 0 ) Face = 0 ( 0 ) FreeWire = 0 ( 0 )
-TOLERANCE : MaxTol = 0 ( 0 ) AvgTol = 0 ( 0 )
+DATA : Faulties = 0 ( 22 ) Warnings = 0 ( 0 ) Summary = 0 ( 22 )
+TPSTAT : Faulties = 0 ( 0 ) Warnings = 4 ( 88 ) Summary = 4 ( 88 )
+CHECKSHAPE : Wires = 1 ( 1 ) Faces = 1 ( 1 ) Shells = 0 ( 0 ) Solids = 0 ( 0 )
+NBSHAPES : Solid = 1 ( 1 ) Shell = 1 ( 1 ) Face = 153 ( 153 )
+STATSHAPE : Solid = 1 ( 1 ) Shell = 1 ( 1 ) Face = 153 ( 153 ) FreeWire = 0 ( 0 )
+TOLERANCE : MaxTol = 14.04618892 ( 14.04618892 ) AvgTol = 0.02494942781 ( 0.02495341469 )
LABELS : N0Labels = 1 ( 1 ) N1Labels = 0 ( 0 ) N2Labels = 0 ( 0 ) TotalLabels = 1 ( 1 ) NameLabels = 1 ( 1 ) ColorLabels = 0 ( 0 ) LayerLabels = 0 ( 0 )
PROPS : Centroid = 0 ( 0 ) Volume = 0 ( 0 ) Area = 0 ( 0 )
NCOLORS : NColors = 0 ( 0 )