diff --git a/src/XSDRAWBase/XSDRAWBase.hxx b/src/XSDRAWBase/XSDRAWBase.hxx index ca2f42ac49..3eb62f63ff 100644 --- a/src/XSDRAWBase/XSDRAWBase.hxx +++ b/src/XSDRAWBase/XSDRAWBase.hxx @@ -22,15 +22,16 @@ #include class IFSelect_SessionPilot; -class XSControl_WorkSession; -class XSControl_Controller; class Interface_Protocol; class Interface_InterfaceModel; class Standard_Transient; +class TCollection_AsciiString; +class TDocStd_Document; class Transfer_TransientProcess; class Transfer_FinderProcess; +class XSControl_Controller; class XSControl_TransferReader; -class TCollection_AsciiString; +class XSControl_WorkSession; //! Basic package to work functions of X-STEP (IFSelect & Co) //! under control of DRAW @@ -176,6 +177,15 @@ public: //! In case of failure, returns a Null Handle Standard_EXPORT static Handle(TColStd_HSequenceOfTransient) GetList(const Standard_CString first = "", const Standard_CString second = ""); + //! + Standard_EXPORT static Standard_Real GetLengthUnit(const Handle(TDocStd_Document)& theDoc = nullptr); + + //! + Standard_EXPORT static void CollectActiveWorkSessions(const Handle(XSControl_WorkSession)& theWS, + const TCollection_AsciiString& theName, + XSControl_WorkSessionMap& theMap, + const Standard_Boolean theIsFirst = Standard_True); + //! Analyses given file name and variable name, with a default //! name for variables. Returns resulting file name and variable //! name plus status "file to read"(True) or "already read"(False) diff --git a/src/XSDRAWDEWrapper/XSDRAWDEWrapper.cxx b/src/XSDRAWDEWrapper/XSDRAWDEWrapper.cxx index ef8729b15e..03154252be 100644 --- a/src/XSDRAWDEWrapper/XSDRAWDEWrapper.cxx +++ b/src/XSDRAWDEWrapper/XSDRAWDEWrapper.cxx @@ -11,40 +11,24 @@ // Alternatively, this file may be used under the terms of Open CASCADE // commercial license or contractual agreement. +#include + #include -#include +#include +#include +#include #include #include -#include -#include -#include +#include +#include +#include +#include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include -#include -#include -#include - -#include +#include +#include +#include +#include //======================================================================= //function : DumpConfiguration @@ -279,13 +263,13 @@ static Standard_Integer ReadFile(Draw_Interpretor& theDI, if (aStat) { TopoDS_Shape aShape; - Handle(XSControl_WorkSession) aWS = XSDRAW::Session(); + Handle(XSControl_WorkSession) aWS = XSDRAWBase::Session(); aStat = isNoDoc ? aConf->Read(aFilePath, aShape, aWS) : aConf->Read(aFilePath, aDoc, aWS); if (isNoDoc && aStat) { DBRep::Set(aDocShapeName.ToCString(), aShape); } - CollectActiveWorkSessions(aWS, aFilePath, THE_PREVIOUS_WORK_SESSIONS); + XSDRAWBase::CollectActiveWorkSessions(aWS, aFilePath, THE_PREVIOUS_WORK_SESSIONS); } if (!aStat) { @@ -358,7 +342,7 @@ static Standard_Integer WriteFile(Draw_Interpretor& theDI, { aStat = aConf->Load(aConfString); } - Handle(XSControl_WorkSession) aWS = XSDRAW::Session(); + Handle(XSControl_WorkSession) aWS = XSDRAWBase::Session(); if (aStat) { if (isNoDoc) @@ -380,11 +364,11 @@ static Standard_Integer WriteFile(Draw_Interpretor& theDI, { return 1; } - CollectActiveWorkSessions(aWS, aFilePath, THE_PREVIOUS_WORK_SESSIONS); + XSDRAWBase::CollectActiveWorkSessions(aWS, aFilePath, THE_PREVIOUS_WORK_SESSIONS); return 0; } -void XSDRAWDEWrapper::InitCommands(Draw_Interpretor& theDI) +void XSDRAWDEWrapper::Factory(Draw_Interpretor& theDI) { static Standard_Boolean initactor = Standard_False; if (initactor) diff --git a/src/XSDRAWDEWrapper/XSDRAWDEWrapper.hxx b/src/XSDRAWDEWrapper/XSDRAWDEWrapper.hxx index 397c108986..33612282e7 100644 --- a/src/XSDRAWDEWrapper/XSDRAWDEWrapper.hxx +++ b/src/XSDRAWDEWrapper/XSDRAWDEWrapper.hxx @@ -26,7 +26,7 @@ public: Standard_EXPORT static void Init(); - //! Loads all Draw commands of XSDRAWSTL. Used for plugin. + //! Loads all Draw commands of XSDRAWDEWrapper. Used for plugin. Standard_EXPORT static void Factory(Draw_Interpretor& theDI); }; diff --git a/src/XSDRAWGLTF/XSDRAWGLTF.cxx b/src/XSDRAWGLTF/XSDRAWGLTF.cxx index 7ac66a5af5..18d2a1020f 100644 --- a/src/XSDRAWGLTF/XSDRAWGLTF.cxx +++ b/src/XSDRAWGLTF/XSDRAWGLTF.cxx @@ -13,96 +13,19 @@ #include -#include -//#include -//#include -#include -#include #include #include #include #include #include -#include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -//#include -#include #include #include -//#include -//#include -//#include -#include -#include -#include -#include -//#include -#include -#include -//#include -//#include -#include -#include -//#include -#include -//#include -//#include -//#include -//#include -//#include -//#include -#include -#include -#include -#include +#include +#include #include #include -#include -#include -#include #include -#include -#include -#include -#include -#include -#include -//#include -//#include -//#include -//#include -//#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef _STDIO_H -#include -#endif - -extern Standard_Boolean VDisplayAISObject(const TCollection_AsciiString& theName, - const Handle(AIS_InteractiveObject)& theAISObj, - Standard_Boolean theReplaceIfExists = Standard_True); //============================================================================= //function : parseNameFormat @@ -189,25 +112,6 @@ static bool parseCoordinateSystem(const char* theArg, return Standard_True; } -//======================================================================= -//function : GetLengthUnit -//purpose : Gets length unit value from static interface and document in M -//======================================================================= -static Standard_Real GetLengthUnit(const Handle(TDocStd_Document)& theDoc = nullptr) -{ - if (!theDoc.IsNull()) - { - Standard_Real aUnit = 1.; - if (XCAFDoc_DocumentTool::GetLengthUnit(theDoc, aUnit, - UnitsMethods_LengthUnit_Millimeter)) - { - return aUnit; - } - } - XSAlgo::AlgoContainer()->PrepareForTransfer(); - return UnitsMethods::GetCasCadeLengthUnit(); -} - //============================================================================= //function : ReadGltf //purpose : Reads glTF file @@ -220,14 +124,6 @@ static Standard_Integer ReadGltf(Draw_Interpretor& theDI, Handle(RWGltf_ConfigurationNode) aNode = new RWGltf_ConfigurationNode(); Standard_Boolean toUseExistingDoc = Standard_False; - //Standard_Boolean toListExternalFiles = Standard_False; - //Standard_Boolean isParallel = Standard_False; - //Standard_Boolean isDoublePrec = Standard_False; - //Standard_Boolean toSkipLateDataLoading = Standard_False; - //Standard_Boolean toKeepLateData = Standard_True; - //Standard_Boolean toPrintDebugInfo = Standard_False; - //Standard_Boolean toLoadAllScenes = Standard_False; - //Standard_Boolean toPrintAssetInfo = Standard_False; Standard_Boolean isNoDoc = (TCollection_AsciiString(theArgVec[0]) == "readgltf"); for (Standard_Integer anArgIter = 1; anArgIter < theNbArgs; ++anArgIter) { @@ -278,19 +174,6 @@ static Standard_Integer ReadGltf(Draw_Interpretor& theDI, aNode->InternalParameters.ReadPrintDebugMessages = Draw::ParseOnOffIterator(theNbArgs, theArgVec, anArgIter); } - //else if (anArgCase == "-listexternalfiles" - // || anArgCase == "-listexternals" - // || anArgCase == "-listexternal" - // || anArgCase == "-external" - // || anArgCase == "-externalfiles") - //{ - // toListExternalFiles = Draw::ParseOnOffIterator (theNbArgs, theArgVec, anArgIter); - //} - //else if (anArgCase == "-assetinfo" - // || anArgCase == "-metadata") - //{ - // toPrintAssetInfo = Draw::ParseOnOffIterator (theNbArgs, theArgVec, anArgIter); - //} else if (aDestName.IsEmpty()) { aDestName = theArgVec[anArgIter]; @@ -305,13 +188,6 @@ static Standard_Integer ReadGltf(Draw_Interpretor& theDI, return 1; } } - //if (aFilePath.IsEmpty() && !aDestName.IsEmpty()) - //{ - // if (toListExternalFiles || toPrintAssetInfo) - // { - // std::swap (aFilePath, aDestName); - // } - //} if (aFilePath.IsEmpty() || aDestName.IsEmpty()) { theDI << "Syntax error: wrong number of arguments\n"; @@ -342,11 +218,11 @@ static Standard_Integer ReadGltf(Draw_Interpretor& theDI, } } - aNode->GlobalParameters.LengthUnit = GetLengthUnit(aDoc); + aNode->GlobalParameters.LengthUnit = XSDRAWBase::GetLengthUnit(aDoc); Handle(RWGltf_Provider) aProvider = new RWGltf_Provider(aNode); Standard_Boolean aReadStat = Standard_False; - Handle(XSControl_WorkSession) aWS = XSDRAW::Session(); + Handle(XSControl_WorkSession) aWS = XSDRAWBase::Session(); if (isNoDoc) { TopoDS_Shape aResShape; @@ -371,30 +247,6 @@ static Standard_Integer ReadGltf(Draw_Interpretor& theDI, theDI << "Cannot read any relevant data from the GLTF file\n"; return 1; } - //bool isFirstLine = true; - //if (toPrintAssetInfo) - //{ - // for (TColStd_IndexedDataMapOfStringString::Iterator aKeyIter (aReader.Metadata()); aKeyIter.More(); aKeyIter.Next()) - // { - // if (!isFirstLine) - // { - // theDI << "\n"; - // } - // isFirstLine = false; - // theDI << aKeyIter.Key() << ": " << aKeyIter.Value(); - // } - //} - //if (toListExternalFiles) - //{ - // if (!isFirstLine) - // { - // theDI << "\n"; - // } - // for (NCollection_IndexedMap::Iterator aFileIter (aReader.ExternalFiles()); aFileIter.More(); aFileIter.Next()) - // { - // theDI << "\"" << aFileIter.Value() << "\" "; - // } - //} return 0; } @@ -413,15 +265,6 @@ static Standard_Integer WriteGltf(Draw_Interpretor& theDI, Handle(TDocStd_Application) anApp = DDocStd::GetApplication(); Handle(RWGltf_ConfigurationNode) aNode = new RWGltf_ConfigurationNode(); - //TColStd_IndexedDataMapOfStringString aFileInfo; - //RWGltf_WriterTrsfFormat aTrsfFormat = RWGltf_WriterTrsfFormat_Compact; - //RWMesh_CoordinateSystem aSystemCoordSys = RWMesh_CoordinateSystem_Zup; - //bool toForceUVExport = false, toEmbedTexturesInGlb = true; - //bool toMergeFaces = false, toSplitIndices16 = false; - //bool isParallel = false; - //RWMesh_NameFormat aNodeNameFormat = RWMesh_NameFormat_InstanceOrProduct; - //RWMesh_NameFormat aMeshNameFormat = RWMesh_NameFormat_Product; - //RWGltf_DracoParameters aDracoParameters; for (Standard_Integer anArgIter = 1; anArgIter < theNbArgs; ++anArgIter) { TCollection_AsciiString anArgCase(theArgVec[anArgIter]); @@ -615,11 +458,11 @@ static Standard_Integer WriteGltf(Draw_Interpretor& theDI, TCollection_AsciiString anExt = aGltfFilePath; anExt.LowerCase(); - aNode->GlobalParameters.LengthUnit = GetLengthUnit(aDoc); + aNode->GlobalParameters.LengthUnit = XSDRAWBase::GetLengthUnit(aDoc); Handle(RWGltf_Provider) aProvider = new RWGltf_Provider(aNode); Standard_Boolean aWriteStat = Standard_False; - Handle(XSControl_WorkSession) aWS = XSDRAW::Session(); + Handle(XSControl_WorkSession) aWS = XSDRAWBase::Session(); if (!aDoc.IsNull()) { aWriteStat = aProvider->Write(aGltfFilePath, aDoc, aWS, aProgress->Start()); @@ -636,82 +479,68 @@ static Standard_Integer WriteGltf(Draw_Interpretor& theDI, return 0; } -//======================================================================= -//function : InitCommands -//purpose : -//======================================================================= -void XSDRAWGLTF::InitCommands(Draw_Interpretor& theCommands) -{ - const char* g = "XSTEP-STL/VRML"; // Step transfer file commands - //XSDRAW::LoadDraw(theCommands); - - theCommands.Add("ReadGltf", - "ReadGltf Doc file [-parallel {on|off}] [-listExternalFiles] [-noCreateDoc] [-doublePrecision {on|off}] [-assetInfo]" - "\n\t\t: Read glTF file into XDE document." - "\n\t\t: -listExternalFiles do not read mesh and only list external files" - "\n\t\t: -noCreateDoc read into existing XDE document" - "\n\t\t: -doublePrecision store triangulation with double or single floating point" - "\n\t\t: precision (single by default)" - "\n\t\t: -skipLateLoading data loading is skipped and can be performed later" - "\n\t\t: (false by default)" - "\n\t\t: -keepLate data is loaded into itself with preservation of information" - "\n\t\t: about deferred storage to load/unload this data later." - "\n\t\t: -allScenes load all scenes defined in the document instead of default one (false by default)" - "\n\t\t: -toPrintDebugInfo print additional debug information during data reading" - "\n\t\t: -assetInfo print asset information", - __FILE__, ReadGltf, g); - theCommands.Add("readgltf", - "readgltf shape file" - "\n\t\t: Same as ReadGltf but reads glTF file into a shape instead of a document.", - __FILE__, ReadGltf, g); - theCommands.Add("WriteGltf", - "WriteGltf Doc file [-trsfFormat {compact|TRS|mat4}]=compact" - "\n\t\t: [-systemCoordSys {Zup|Yup}]=Zup" - "\n\t\t: [-comments Text] [-author Name]" - "\n\t\t: [-forceUVExport]=0 [-texturesSeparate]=0 [-mergeFaces]=0 [-splitIndices16]=0" - "\n\t\t: [-nodeNameFormat {empty|product|instance|instOrProd|prodOrInst|prodAndInst|verbose}]=instOrProd" - "\n\t\t: [-meshNameFormat {empty|product|instance|instOrProd|prodOrInst|prodAndInst|verbose}]=product" - "\n\t\t: [-draco]=0 [-compressionLevel {0-10}]=7 [-quantizePositionBits Value]=14 [-quantizeNormalBits Value]=10" - "\n\t\t: [-quantizeTexcoordBits Value]=12 [-quantizeColorBits Value]=8 [-quantizeGenericBits Value]=12" - "\n\t\t: [-unifiedQuantization]=0 [-parallel]=0" - "\n\t\t: Write XDE document into glTF file." - "\n\t\t: -trsfFormat preferred transformation format" - "\n\t\t: -systemCoordSys system coordinate system; Zup when not specified" - "\n\t\t: -mergeFaces merge Faces within the same Mesh" - "\n\t\t: -splitIndices16 split Faces to keep 16-bit indices when -mergeFaces is enabled" - "\n\t\t: -forceUVExport always export UV coordinates" - "\n\t\t: -texturesSeparate write textures to separate files" - "\n\t\t: -nodeNameFormat name format for Nodes" - "\n\t\t: -meshNameFormat name format for Meshes" - "\n\t\t: -draco use Draco compression 3D geometric meshes" - "\n\t\t: -compressionLevel draco compression level [0-10] (by default 7), a value of 0 will apply sequential encoding and preserve face order" - "\n\t\t: -quantizePositionBits quantization bits for position attribute when using Draco compression (by default 14)" - "\n\t\t: -quantizeNormalBits quantization bits for normal attribute when using Draco compression (by default 10)" - "\n\t\t: -quantizeTexcoordBits quantization bits for texture coordinate attribute when using Draco compression (by default 12)" - "\n\t\t: -quantizeColorBits quantization bits for color attribute when using Draco compression (by default 8)" - "\n\t\t: -quantizeGenericBits quantization bits for skinning attribute (joint indices and joint weights)" - "\n and custom attributes when using Draco compression (by default 12)" - "\n\t\t: -unifiedQuantization quantization is applied on each primitive separately if this option is false" - "\n\t\t: -parallel use multithreading for Draco compression", - __FILE__, WriteGltf, g); - theCommands.Add("writegltf", - "writegltf shape file", - __FILE__, WriteGltf, g); -} - //======================================================================= //function : Factory //purpose : //======================================================================= void XSDRAWGLTF::Factory(Draw_Interpretor& theDI) { - XSDRAWIGES::InitSelect(); - XSDRAWIGES::InitToBRep(theDI); - XSDRAWIGES::InitFromBRep(theDI); - XSDRAWSTEP::InitCommands(theDI); - XSDRAWGLTF::InitCommands(theDI); - XSDRAW::LoadDraw(theDI); + const char* g = "XSTEP-STL/VRML"; // Step transfer file commands + + theDI.Add("ReadGltf", + "ReadGltf Doc file [-parallel {on|off}] [-listExternalFiles] [-noCreateDoc] [-doublePrecision {on|off}] [-assetInfo]" + "\n\t\t: Read glTF file into XDE document." + "\n\t\t: -listExternalFiles do not read mesh and only list external files" + "\n\t\t: -noCreateDoc read into existing XDE document" + "\n\t\t: -doublePrecision store triangulation with double or single floating point" + "\n\t\t: precision (single by default)" + "\n\t\t: -skipLateLoading data loading is skipped and can be performed later" + "\n\t\t: (false by default)" + "\n\t\t: -keepLate data is loaded into itself with preservation of information" + "\n\t\t: about deferred storage to load/unload this data later." + "\n\t\t: -allScenes load all scenes defined in the document instead of default one (false by default)" + "\n\t\t: -toPrintDebugInfo print additional debug information during data reading" + "\n\t\t: -assetInfo print asset information", + __FILE__, ReadGltf, g); + theDI.Add("readgltf", + "readgltf shape file" + "\n\t\t: Same as ReadGltf but reads glTF file into a shape instead of a document.", + __FILE__, ReadGltf, g); + theDI.Add("WriteGltf", + "WriteGltf Doc file [-trsfFormat {compact|TRS|mat4}]=compact" + "\n\t\t: [-systemCoordSys {Zup|Yup}]=Zup" + "\n\t\t: [-comments Text] [-author Name]" + "\n\t\t: [-forceUVExport]=0 [-texturesSeparate]=0 [-mergeFaces]=0 [-splitIndices16]=0" + "\n\t\t: [-nodeNameFormat {empty|product|instance|instOrProd|prodOrInst|prodAndInst|verbose}]=instOrProd" + "\n\t\t: [-meshNameFormat {empty|product|instance|instOrProd|prodOrInst|prodAndInst|verbose}]=product" + "\n\t\t: [-draco]=0 [-compressionLevel {0-10}]=7 [-quantizePositionBits Value]=14 [-quantizeNormalBits Value]=10" + "\n\t\t: [-quantizeTexcoordBits Value]=12 [-quantizeColorBits Value]=8 [-quantizeGenericBits Value]=12" + "\n\t\t: [-unifiedQuantization]=0 [-parallel]=0" + "\n\t\t: Write XDE document into glTF file." + "\n\t\t: -trsfFormat preferred transformation format" + "\n\t\t: -systemCoordSys system coordinate system; Zup when not specified" + "\n\t\t: -mergeFaces merge Faces within the same Mesh" + "\n\t\t: -splitIndices16 split Faces to keep 16-bit indices when -mergeFaces is enabled" + "\n\t\t: -forceUVExport always export UV coordinates" + "\n\t\t: -texturesSeparate write textures to separate files" + "\n\t\t: -nodeNameFormat name format for Nodes" + "\n\t\t: -meshNameFormat name format for Meshes" + "\n\t\t: -draco use Draco compression 3D geometric meshes" + "\n\t\t: -compressionLevel draco compression level [0-10] (by default 7), a value of 0 will apply sequential encoding and preserve face order" + "\n\t\t: -quantizePositionBits quantization bits for position attribute when using Draco compression (by default 14)" + "\n\t\t: -quantizeNormalBits quantization bits for normal attribute when using Draco compression (by default 10)" + "\n\t\t: -quantizeTexcoordBits quantization bits for texture coordinate attribute when using Draco compression (by default 12)" + "\n\t\t: -quantizeColorBits quantization bits for color attribute when using Draco compression (by default 8)" + "\n\t\t: -quantizeGenericBits quantization bits for skinning attribute (joint indices and joint weights)" + "\n and custom attributes when using Draco compression (by default 12)" + "\n\t\t: -unifiedQuantization quantization is applied on each primitive separately if this option is false" + "\n\t\t: -parallel use multithreading for Draco compression", + __FILE__, WriteGltf, g); + theDI.Add("writegltf", + "writegltf shape file", + __FILE__, WriteGltf, g); + XSDRAWBase::LoadDraw(theDI); #ifdef OCCT_DEBUG - theDI << "Draw Plugin : All TKXSDRAW commands are loaded\n"; + theDI << "Draw Plugin : All XSDRAWGLTF commands are loaded\n"; #endif } diff --git a/src/XSDRAWGLTF/XSDRAWGLTF.hxx b/src/XSDRAWGLTF/XSDRAWGLTF.hxx index 4d3dd258b7..468b1c52ed 100644 --- a/src/XSDRAWGLTF/XSDRAWGLTF.hxx +++ b/src/XSDRAWGLTF/XSDRAWGLTF.hxx @@ -26,7 +26,7 @@ public: Standard_EXPORT static void Init(); - //! Loads all Draw commands of XSDRAWSTL. Used for plugin. + //! Loads all Draw commands of XSDRAWGLTF. Used for plugin. Standard_EXPORT static void Factory(Draw_Interpretor& theDI); }; diff --git a/src/XSDRAWIGES/XSDRAWIGES.cxx b/src/XSDRAWIGES/XSDRAWIGES.cxx index a01e4c4e10..022d690c47 100644 --- a/src/XSDRAWIGES/XSDRAWIGES.cxx +++ b/src/XSDRAWIGES/XSDRAWIGES.cxx @@ -11,130 +11,63 @@ // Alternatively, this file may be used under the terms of Open CASCADE // commercial license or contractual agreement. -#include +#include + #include -#include +#include +#include +#include +#include #include -#include -#include -#include +#include +#include +#include +#include #include #include #include #include #include #include -#include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include #include #include #include -#include -#include -#include - -#include -#include -#include -#include -#include +#include +#include #include -#include -#include -#include -#include - -namespace -{ - - //======================================================================= -//function : WriteShape -//purpose : Creates a file Shape_'number' //======================================================================= - void WriteShape(const TopoDS_Shape& shape, const Standard_Integer number) - { - char fname[110]; - sprintf(fname, "Shape_%d", number); - std::ofstream f(fname, std::ios::out | std::ios::binary); - std::cout << "Output file name : " << fname << std::endl; - f << "DBRep_DrawableShape\n"; - - BRepTools::Write(shape, f); - f.close(); - } - - TCollection_AsciiString XSDRAW_CommandPart - (Standard_Integer argc, const char** argv, const Standard_Integer argf) - { - TCollection_AsciiString res; - for (Standard_Integer i = argf; i < argc; i++) - { - if (i > argf) res.AssignCat(" "); - res.AssignCat(argv[i]); - } - return res; - } -} - -//-------------------------------------------------------------- -// Function : igesbrep -//-------------------------------------------------------------- -static Standard_Integer igesbrep(Draw_Interpretor& di, Standard_Integer argc, const char** argv) +//function : igesbrep +//purpose : +//======================================================================= +static Standard_Integer igesbrep(Draw_Interpretor& theDI, + Standard_Integer theNbArgs, + const char** theArgVec) { - DeclareAndCast(IGESControl_Controller, ctl, XSDRAW::Controller()); - if (ctl.IsNull()) XSDRAW::SetNorm("IGES"); + DeclareAndCast(IGESControl_Controller, ctl, XSDRAWBase::Controller()); + if (ctl.IsNull()) XSDRAWBase::SetNorm("IGES"); // Progress indicator - Handle(Draw_ProgressIndicator) progress = new Draw_ProgressIndicator(di, 1); + Handle(Draw_ProgressIndicator) progress = new Draw_ProgressIndicator(theDI, 1); Message_ProgressScope aPSRoot(progress->Start(), "Reading", 100); - IGESControl_Reader Reader(XSDRAW::Session(), Standard_False); + IGESControl_Reader Reader(XSDRAWBase::Session(), Standard_False); Standard_Boolean aFullMode = Standard_True; Reader.WS()->SetModeStat(aFullMode); if (ctl.IsNull()) - ctl = Handle(IGESControl_Controller)::DownCast(XSDRAW::Controller()); + ctl = Handle(IGESControl_Controller)::DownCast(XSDRAWBase::Controller()); TCollection_AsciiString fnom, rnom; - Standard_Boolean modfic = XSDRAW::FileAndVar - (argv[1], argv[2], "IGESBREP", fnom, rnom); - if (modfic) di << " File IGES to read : " << fnom.ToCString() << "\n"; - else di << " Model taken from the session : " << fnom.ToCString() << "\n"; - di << " -- Names of variables BREP-DRAW prefixed by : " << rnom.ToCString() << "\n"; + Standard_Boolean modfic = XSDRAWBase::FileAndVar + (theArgVec[1], theArgVec[2], "IGESBREP", fnom, rnom); + if (modfic) theDI << " File IGES to read : " << fnom.ToCString() << "\n"; + else theDI << " Model taken from the session : " << fnom.ToCString() << "\n"; + theDI << " -- Names of variables BREP-DRAW prefixed by : " << rnom.ToCString() << "\n"; IFSelect_ReturnStatus readstat = IFSelect_RetVoid; #ifdef CHRONOMESURE @@ -148,7 +81,7 @@ static Standard_Integer igesbrep(Draw_Interpretor& di, Standard_Integer argc, co progress->Show(aPSRoot); if (modfic) readstat = Reader.ReadFile(fnom.ToCString()); - else if (XSDRAW::Session()->NbStartingEntities() > 0) readstat = IFSelect_RetDone; + else if (XSDRAWBase::Session()->NbStartingEntities() > 0) readstat = IFSelect_RetDone; aPSRoot.Next(20); // On average loading takes 20% if (aPSRoot.UserBreak()) @@ -156,12 +89,12 @@ static Standard_Integer igesbrep(Draw_Interpretor& di, Standard_Integer argc, co if (readstat != IFSelect_RetDone) { - if (modfic) di << "Could not read file " << fnom.ToCString() << " , abandon\n"; - else di << "No model loaded\n"; + if (modfic) theDI << "Could not read file " << fnom.ToCString() << " , abandon\n"; + else theDI << "No model loaded\n"; return 1; } // Choice of treatment - Standard_Boolean fromtcl = (argc > 3); + Standard_Boolean fromtcl = (theNbArgs > 3); Standard_Integer modepri = 1, nent, nbs; if (fromtcl) modepri = 4; @@ -183,18 +116,18 @@ static Standard_Integer igesbrep(Draw_Interpretor& di, Standard_Integer argc, co if (modepri == 0) { //fin - di << "Bye and good luck! \n"; + theDI << "Bye and good luck! \n"; break; } else if (modepri <= 2) { // 1 : Visible Roots, 2 : All Roots - di << "All Geometry Transfer\n"; - di << "spline_continuity (read) : " << Interface_Static::IVal("read.iges.bspline.continuity") << " (0 : no modif, 1 : C1, 2 : C2)\n"; - di << " To modify : command param read.iges.bspline.continuity\n"; + theDI << "All Geometry Transfer\n"; + theDI << "spline_continuity (read) : " << Interface_Static::IVal("read.iges.bspline.continuity") << " (0 : no modif, 1 : C1, 2 : C2)\n"; + theDI << " To modify : command param read.iges.bspline.continuity\n"; const Handle(XSControl_WorkSession)& thesession = Reader.WS(); thesession->TransferReader()->Context().Clear(); - XSDRAW::SetTransferProcess(thesession->TransferReader()->TransientProcess()); + XSDRAWBase::SetTransferProcess(thesession->TransferReader()->TransientProcess()); aPSRoot.SetName("Translation"); progress->Show(aPSRoot); @@ -207,7 +140,7 @@ static Standard_Integer igesbrep(Draw_Interpretor& di, Standard_Integer argc, co // result in only one shape for all the roots // or in one shape for one root. - di << "Count of shapes produced : " << Reader.NbShapes() << "\n"; + theDI << "Count of shapes produced : " << Reader.NbShapes() << "\n"; Standard_Integer answer = 1; if (Reader.NbShapes() > 1) { @@ -223,10 +156,10 @@ static Standard_Integer igesbrep(Draw_Interpretor& di, Standard_Integer argc, co { TopoDS_Shape shape = Reader.OneShape(); // save the shape - if (shape.IsNull()) { di << "No Shape produced\n"; continue; } + if (shape.IsNull()) { theDI << "No Shape produced\n"; continue; } char fname[110]; Sprintf(fname, "%s", rnom.ToCString()); - di << "Saving shape in variable Draw : " << fname << "\n"; + theDI << "Saving shape in variable Draw : " << fname << "\n"; if (answer == 3) WriteShape(shape, 1); try { @@ -235,10 +168,10 @@ static Standard_Integer igesbrep(Draw_Interpretor& di, Standard_Integer argc, co } catch (Standard_Failure const& anException) { - di << "** Exception : "; - di << anException.GetMessageString(); - di << " ** Skip\n"; - di << "Saving shape in variable Draw : " << fname << "\n"; + theDI << "** Exception : "; + theDI << anException.GetMessageString(); + theDI << " ** Skip\n"; + theDI << "Saving shape in variable Draw : " << fname << "\n"; WriteShape(shape, 1); } } @@ -250,10 +183,10 @@ static Standard_Integer igesbrep(Draw_Interpretor& di, Standard_Integer argc, co { // save all the shapes TopoDS_Shape shape = Reader.Shape(inum); - if (shape.IsNull()) { di << "No Shape produced\n"; continue; } + if (shape.IsNull()) { theDI << "No Shape produced\n"; continue; } char fname[110]; Sprintf(fname, "%s_%d", rnom.ToCString(), inum); - di << "Saving shape in variable Draw : " << fname << "\n"; + theDI << "Saving shape in variable Draw : " << fname << "\n"; if (answer == 4) WriteShape(shape, inum); try { @@ -262,9 +195,9 @@ static Standard_Integer igesbrep(Draw_Interpretor& di, Standard_Integer argc, co } catch (Standard_Failure const& anException) { - di << "** Exception : "; - di << anException.GetMessageString(); - di << " ** Skip\n"; + theDI << "** Exception : "; + theDI << anException.GetMessageString(); + theDI << " ** Skip\n"; } } } @@ -277,16 +210,16 @@ static Standard_Integer igesbrep(Draw_Interpretor& di, Standard_Integer argc, co std::cout << "spline_continuity (read) : " << Interface_Static::IVal("read.iges.bspline.continuity") << " (0 : no modif, 1 : C1, 2 : C2)" << std::endl; std::cout << " To modify : command param read.iges.bspline.continuity" << std::endl; std::cout << " give the number of the Entity : " << std::flush; - nent = XSDRAW::GetEntityNumber(); + nent = XSDRAWBase::GetEntityNumber(); if (!Reader.TransferOne(nent)) - di << "Transfer entity n0 " << nent << " : no result\n"; + theDI << "Transfer entity n0 " << nent << " : no result\n"; else { nbs = Reader.NbShapes(); char shname[30]; Sprintf(shname, "%s_%d", rnom.ToCString(), nent); - di << "Transfer entity n0 " << nent << " OK -> DRAW Shape: " << shname << "\n"; - di << "Now, " << nbs << " Shapes produced\n"; + theDI << "Transfer entity n0 " << nent << " OK -> DRAW Shape: " << shname << "\n"; + theDI << "Now, " << nbs << " Shapes produced\n"; TopoDS_Shape sh = Reader.Shape(nbs); DBRep::Set(shname, sh); } @@ -301,14 +234,14 @@ static Standard_Integer igesbrep(Draw_Interpretor& di, Standard_Integer argc, co // * donne iges-visible + xst-transferrable-roots // *r donne xst-model-roots (TOUTES racines) - if (fromtcl && argv[3][0] == '*' && argv[3][1] == '\0') + if (fromtcl && theArgVec[3][0] == '*' && theArgVec[3][1] == '\0') { - di << "All Geometry Transfer\n"; - di << "spline_continuity (read) : " << Interface_Static::IVal("read.iges.bspline.continuity") << " (0 : no modif, 1 : C1, 2 : C2)\n"; - di << " To modify : command param read.iges.bspline.continuity\n"; + theDI << "All Geometry Transfer\n"; + theDI << "spline_continuity (read) : " << Interface_Static::IVal("read.iges.bspline.continuity") << " (0 : no modif, 1 : C1, 2 : C2)\n"; + theDI << " To modify : command param read.iges.bspline.continuity\n"; const Handle(XSControl_WorkSession)& thesession = Reader.WS(); thesession->TransferReader()->Context().Clear(); - XSDRAW::SetTransferProcess(thesession->TransferReader()->TransientProcess()); + XSDRAWBase::SetTransferProcess(thesession->TransferReader()->TransientProcess()); aPSRoot.SetName("Translation"); progress->Show(aPSRoot); @@ -324,7 +257,7 @@ static Standard_Integer igesbrep(Draw_Interpretor& di, Standard_Integer argc, co // save the shape char fname[110]; Sprintf(fname, "%s", rnom.ToCString()); - di << "Saving shape in variable Draw : " << fname << "\n"; + theDI << "Saving shape in variable Draw : " << fname << "\n"; try { OCC_CATCH_SIGNALS @@ -332,10 +265,10 @@ static Standard_Integer igesbrep(Draw_Interpretor& di, Standard_Integer argc, co } catch (Standard_Failure const& anException) { - di << "** Exception : "; - di << anException.GetMessageString(); - di << " ** Skip\n"; - di << "Saving shape in variable Draw : " << fname << "\n"; + theDI << "** Exception : "; + theDI << anException.GetMessageString(); + theDI << " ** Skip\n"; + theDI << "Saving shape in variable Draw : " << fname << "\n"; WriteShape(shape, 1); } return 0; @@ -344,32 +277,32 @@ static Standard_Integer igesbrep(Draw_Interpretor& di, Standard_Integer argc, co if (fromtcl) { modepri = 0; // d office, une seule passe - if (argv[3][0] == '*' && argv[3][1] == 'r' && argv[3][2] == '\0') + if (theArgVec[3][0] == '*' && theArgVec[3][1] == 'r' && theArgVec[3][2] == '\0') { - di << "All Roots : "; - list = XSDRAW::GetList("xst-model-roots"); + theDI << "All Roots : "; + list = XSDRAWBase::GetList("xst-model-roots"); } else { - TCollection_AsciiString compart = XSDRAW_CommandPart(argc, argv, 3); - di << "List given by " << compart.ToCString() << " : "; - list = XSDRAW::GetList(compart.ToCString()); + TCollection_AsciiString compart = XSDRAW_CommandPart(theNbArgs, theArgVec, 3); + theDI << "List given by " << compart.ToCString() << " : "; + list = XSDRAWBase::GetList(compart.ToCString()); } if (list.IsNull()) { - di << "No list defined. Give a selection name or * for all visible transferrable roots\n"; + theDI << "No list defined. Give a selection name or * for all visible transferrable roots\n"; continue; } } else { std::cout << "Name of Selection :" << std::flush; - list = XSDRAW::GetList(); + list = XSDRAWBase::GetList(); if (list.IsNull()) { std::cout << "No list defined" << std::endl; continue; } } Standard_Integer nbl = list->Length(); - di << "Nb entities selected : " << nbl << "\n"; + theDI << "Nb entities selected : " << nbl << "\n"; if (nbl == 0) continue; while (answer) { @@ -388,16 +321,16 @@ static Standard_Integer igesbrep(Draw_Interpretor& di, Standard_Integer argc, co for (Standard_Integer ill = 1; ill <= nbl; ill++) { Handle(Standard_Transient) ent = list->Value(ill); - di << " ";// model->Print(ent,di); + theDI << " ";// model->Print(ent,theDI); } - di << "\n"; + theDI << "\n"; } if (answer == 1 || answer == 2) { Standard_Integer nbt = 0; Handle(XSControl_WorkSession) thesession = Reader.WS(); - XSDRAW::SetTransferProcess(thesession->TransferReader()->TransientProcess()); + XSDRAWBase::SetTransferProcess(thesession->TransferReader()->TransientProcess()); aPSRoot.SetName("Translation"); progress->Show(aPSRoot); @@ -407,13 +340,13 @@ static Standard_Integer igesbrep(Draw_Interpretor& di, Standard_Integer argc, co nent = Reader.Model()->Number(list->Value(ill)); if (nent == 0) continue; if (!Reader.TransferOne(nent, aPS.Next())) - di << "Transfer entity n0 " << nent << " : no result\n"; + theDI << "Transfer entity n0 " << nent << " : no result\n"; else { nbs = Reader.NbShapes(); char shname[30]; Sprintf(shname, "%s_%d", rnom.ToCString(), nbs); - di << "Transfer entity n0 " << nent << " OK -> DRAW Shape: " << shname << "\n"; - di << "Now, " << nbs << " Shapes produced\n"; + theDI << "Transfer entity n0 " << nent << " OK -> DRAW Shape: " << shname << "\n"; + theDI << "Now, " << nbs << " Shapes produced\n"; TopoDS_Shape sh = Reader.Shape(nbs); DBRep::Set(shname, sh); nbt++; @@ -421,55 +354,58 @@ static Standard_Integer igesbrep(Draw_Interpretor& di, Standard_Integer argc, co } if (aPSRoot.UserBreak()) return 1; - di << "Nb Shapes successfully produced : " << nbt << "\n"; + theDI << "Nb Shapes successfully produced : " << nbt << "\n"; answer = 0; // on ne reboucle pas } } } - else di << "Unknown mode n0 " << modepri << "\n"; + else theDI << "Unknown mode n0 " << modepri << "\n"; } return 0; } -//-------------------------------------------------------------- -// Function : testreadiges -// -//-------------------------------------------------------------- -static Standard_Integer testread(Draw_Interpretor& di, Standard_Integer argc, const char** argv) +//======================================================================= +//function : testread +//purpose : +//======================================================================= +static Standard_Integer testread(Draw_Interpretor& theDI, + Standard_Integer theNbArgs, + const char** theArgVec) { - if (argc != 3) + if (theNbArgs != 3) { - di << "ERROR in " << argv[0] << "Wrong Number of Arguments.\n"; - di << " Usage : " << argv[0] << " file_name shape_name\n"; + theDI << "ERROR in " << theArgVec[0] << "Wrong Number of Arguments.\n"; + theDI << " Usage : " << theArgVec[0] << " file_name shape_name\n"; return 1; } IGESControl_Reader Reader; - Standard_CString filename = argv[1]; + Standard_CString filename = theArgVec[1]; IFSelect_ReturnStatus readstat = Reader.ReadFile(filename); - di << "Status from reading IGES file " << filename << " : "; + theDI << "Status from reading IGES 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; } + case IFSelect_RetVoid: { theDI << "empty file\n"; return 1; } + case IFSelect_RetDone: { theDI << "file read\n"; break; } + case IFSelect_RetError: { theDI << "file not found\n"; return 1; } + case IFSelect_RetFail: { theDI << "error during read\n"; return 1; } + default: { theDI << "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(theArgVec[2], shape); + theDI << "Count of shapes produced : " << Reader.NbShapes() << "\n"; return 0; } -//-------------------------------------------------------------- -// Function : brepiges -// -//-------------------------------------------------------------- - -static Standard_Integer brepiges(Draw_Interpretor& di, Standard_Integer n, const char** a) +//======================================================================= +//function : brepiges +//purpose : +//======================================================================= +static Standard_Integer brepiges(Draw_Interpretor& theDI, + Standard_Integer theNbArgs, + const char** theArgVec) { - XSDRAW::SetNorm("IGES"); + XSDRAWBase::SetNorm("IGES"); // ecriture dans le model d'une entite : // - model_AddEntity(ent) : ecriture de l`entite seule // - model->AddWithRefs(ent, protocol): ecriture de l`entite et eventuellement @@ -478,115 +414,117 @@ static Standard_Integer brepiges(Draw_Interpretor& di, Standard_Integer n, const IGESControl_Writer ICW(Interface_Static::CVal("write.iges.unit"), Interface_Static::IVal("write.iges.brep.mode")); - di << "unit (write) : " << Interface_Static::CVal("write.iges.unit") << "\n"; - di << "mode write : " << Interface_Static::CVal("write.iges.brep.mode") << "\n"; - di << " To modify : command param\n"; + theDI << "unit (write) : " << Interface_Static::CVal("write.iges.unit") << "\n"; + theDI << "mode write : " << Interface_Static::CVal("write.iges.brep.mode") << "\n"; + theDI << " To modify : command param\n"; // Mode d emploi (K4B ->) : brepiges shape [+shape][ +shape] nomfic // c a d tant qu il y a des + on ajoute ce qui suit const char* nomfic = NULL; Standard_Integer npris = 0; - Handle(Draw_ProgressIndicator) progress = new Draw_ProgressIndicator(di, 1); + Handle(Draw_ProgressIndicator) progress = new Draw_ProgressIndicator(theDI, 1); Message_ProgressScope aPSRoot(progress->Start(), "Translating", 100); progress->Show(aPSRoot); Message_ProgressScope aPS(aPSRoot.Next(90), NULL, n); - for (Standard_Integer i = 1; i < n && aPS.More(); i++) + for (Standard_Integer i = 1; i < theNbArgs && aPS.More(); i++) { - const char* nomvar = a[i]; - if (a[i][0] == '+') nomvar = &(a[i])[1]; - else if (i > 1) { nomfic = a[i]; break; } + const char* nomvar = theArgVec[i]; + if (theArgVec[i][0] == '+') nomvar = &(theArgVec[i])[1]; + else if (i > 1) { nomfic = theArgVec[i]; break; } TopoDS_Shape Shape = DBRep::Get(nomvar); if (ICW.AddShape(Shape, aPS.Next())) npris++; else if (ICW.AddGeom(DrawTrSurf::GetCurve(nomvar))) npris++; else if (ICW.AddGeom(DrawTrSurf::GetSurface(nomvar))) npris++; } ICW.ComputeModel(); - XSDRAW::SetModel(ICW.Model()); - XSDRAW::SetTransferProcess(ICW.TransferProcess()); + XSDRAWBase::SetModel(ICW.Model()); + XSDRAWBase::SetTransferProcess(ICW.TransferProcess()); if (aPSRoot.UserBreak()) return 1; aPSRoot.SetName("Writing"); progress->Show(aPSRoot); - di << npris << " Shapes written, giving " << XSDRAW::Model()->NbEntities() << " Entities\n"; + theDI << npris << " Shapes written, giving " << XSDRAWBase::Model()->NbEntities() << " Entities\n"; if (!nomfic) // delayed write { - di << " Now, to write a file, command : writeall filename\n"; + theDI << " Now, to write a file, command : writeall filename\n"; return 0; } // write file - if (!ICW.Write(nomfic)) di << " Error: could not write file " << nomfic; - else di << " File " << nomfic << " written"; + if (!ICW.Write(nomfic)) theDI << " Error: could not write file " << nomfic; + else theDI << " File " << nomfic << " written"; return 0; } -//-------------------------------------------------------------- -// Function : testwriteiges -// -//-------------------------------------------------------------- - -static Standard_Integer testwrite(Draw_Interpretor& di, Standard_Integer n, const char** a) +//======================================================================= +//function : testwrite +//purpose : +//======================================================================= +static Standard_Integer testwrite(Draw_Interpretor& theDI, + Standard_Integer theNbArgs, + const char** theArgVec) { - if (n != 3) + if (theNbArgs != 3) { - di << "ERROR in " << a[0] << "Wrong Number of Arguments.\n"; - di << " Usage : " << a[0] << " file_name shape_name\n"; + theDI << "ERROR in " << theArgVec[0] << "Wrong Number of Arguments.\n"; + theDI << " Usage : " << theArgVec[0] << " file_name shape_name\n"; return 1; } IGESControl_Writer Writer; - Standard_CString filename = a[1]; - TopoDS_Shape shape = DBRep::Get(a[2]); + Standard_CString filename = theArgVec[1]; + TopoDS_Shape shape = DBRep::Get(theArgVec[2]); Standard_Boolean ok = Writer.AddShape(shape); if (!ok) { - di << "Shape not add\n"; + theDI << "Shape not add\n"; return 1; } if (!(Writer.Write(filename))) { - di << "Error on writing file\n"; + theDI << "Error on writing file\n"; return 1; } - di << "File Is Written\n"; + theDI << "File Is Written\n"; return 0; } -//-------------------------------------------------------------- -// Function : igesparam -// -//-------------------------------------------------------------- - -static Standard_Integer igesparam(Draw_Interpretor& di, Standard_Integer, const char**) +//======================================================================= +//function : igesparam +//purpose : +//======================================================================= +static Standard_Integer igesparam(Draw_Interpretor& theDI, + Standard_Integer, + const char**) { // liste des parametres - di << "List of parameters which control IGES :\n"; - di << " unit : write.iges.unit\n mode write : write.iges.brep.mode\n spline_continuity (read) : read.iges.bspline.continuity\nSee definition by defparam, read/edit value by param\n"; - di << "unit (write) : " << Interface_Static::CVal("write.iges.unit") << "\n"; - di << "mode write : " << Interface_Static::CVal("write.iges.brep.mode") << "\n"; - di << "spline_continuity (read) : " << Interface_Static::IVal("read.iges.bspline.continuity") << " (0 : no modif, 1 : C1, 2 : C2)\n"; - di << "\n To modifier, param nom_param new_val\n"; + theDI << "List of parameters which control IGES :\n"; + theDI << " unit : write.iges.unit\n mode write : write.iges.brep.mode\n spline_continuity (read) : read.iges.bspline.continuity\nSee definition by defparam, read/edit value by param\n"; + theDI << "unit (write) : " << Interface_Static::CVal("write.iges.unit") << "\n"; + theDI << "mode write : " << Interface_Static::CVal("write.iges.brep.mode") << "\n"; + theDI << "spline_continuity (read) : " << Interface_Static::IVal("read.iges.bspline.continuity") << " (0 : no modif, 1 : C1, 2 : C2)\n"; + theDI << "\n To modifier, param nom_param new_val\n"; return 0; } - -//-------------------------------------------------------------- -// Function : tplosttrim -// -//-------------------------------------------------------------- - -static Standard_Integer XSDRAWIGES_tplosttrim(Draw_Interpretor& di, Standard_Integer n, const char** a) +//======================================================================= +//function : XSDRAWIGES_tplosttrim +//purpose : +//======================================================================= +static Standard_Integer XSDRAWIGES_tplosttrim(Draw_Interpretor& theDI, + Standard_Integer theNbArgs, + const char** theArgVec) { - Handle(IFSelect_SessionPilot) pilot = XSDRAW::Pilot(); + Handle(IFSelect_SessionPilot) pilot = XSDRAWBase::Pilot(); // Standard_Integer narg = pilot->NbWords(); - Standard_Integer narg = n; + Standard_Integer narg = theNbArgs; const Handle(Transfer_TransientProcess)& TP = XSControl::Session(pilot)->TransferReader()->TransientProcess(); TColStd_Array1OfAsciiString strarg(1, 3); @@ -597,7 +535,7 @@ static Standard_Integer XSDRAWIGES_tplosttrim(Draw_Interpretor& di, Standard_Int typarg.SetValue(1, "IGESGeom_TrimmedSurface"); typarg.SetValue(2, "IGESGeom_BoundedSurface"); typarg.SetValue(3, "IGESSolid_Face"); - if (TP.IsNull()) { di << "No Transfer Read\n"; return 1; } + if (TP.IsNull()) { theDI << "No Transfer Read\n"; return 1; } Standard_Integer nbFaces = 0, totFaces = 0; Handle(IFSelect_WorkSession) WS = pilot->Session(); Transfer_IteratorOfProcessForTransient itrp = TP->AbnormalResult(); @@ -605,13 +543,13 @@ static Standard_Integer XSDRAWIGES_tplosttrim(Draw_Interpretor& di, Standard_Int if (narg > 1) { // TCollection_AsciiString Arg = pilot->Word(1); - TCollection_AsciiString Arg(a[1]); + TCollection_AsciiString Arg(theArgVec[1]); for (k = 1; k <= 3; k++) { if (typarg.Value(k).Location(Arg, 1, typarg.Value(k).Length()) != 0) break; } } - if (k == 4) { di << "Invalid argument\n"; return 0; } + if (k == 4) { theDI << "Invalid argument\n"; return 0; } for (Standard_Integer j = 1; j <= 3; j++) { TColStd_MapOfTransient aMap; @@ -620,7 +558,7 @@ static Standard_Integer XSDRAWIGES_tplosttrim(Draw_Interpretor& di, Standard_Int if (!list.IsNull()) itrp.Filter(list); else { - di << "No untrimmed faces\n"; + theDI << "No untrimmed faces\n"; return 0; } for (itrp.Start(); itrp.More(); itrp.Next()) @@ -642,56 +580,58 @@ static Standard_Integer XSDRAWIGES_tplosttrim(Draw_Interpretor& di, Standard_Int } if (nbFaces != 0) { - if (j == 1) di << "Number of untrimmed faces: \n"; + if (j == 1) theDI << "Number of untrimmed faces: \n"; switch (k) { case 1: - di << "Trimmed Surface: \n"; break; + theDI << "Trimmed Surface: \n"; break; case 2: - di << "Bounded Surface: \n"; break; + theDI << "Bounded Surface: \n"; break; case 3: - di << "Face: \n"; break; + theDI << "Face: \n"; break; } TColStd_MapIteratorOfMapOfTransient itmap; Standard_SStream aTmpStream; for (itmap.Initialize(aMap); itmap.More(); itmap.Next()) { - XSDRAW::Model()->Print(itmap.Key(), aTmpStream); + XSDRAWBase::Model()->Print(itmap.Key(), aTmpStream); aTmpStream << " "; } - di << aTmpStream.str().c_str(); - di << "\n"; - di << "\nNumber:" << nbFaces << "\n"; + theDI << aTmpStream.str().c_str(); + theDI << "\n"; + theDI << "\nNumber:" << nbFaces << "\n"; totFaces += nbFaces; } if (narg > 1) break; nbFaces = 0; } - if (totFaces == 0) di << "No untrimmed faces\n"; - else di << "Total number :" << totFaces << "\n"; + if (totFaces == 0) theDI << "No untrimmed faces\n"; + else theDI << "Total number :" << totFaces << "\n"; return 0; } -//------------------------------------------------------------------- -//-------------------------------------------------------------- -// Function : TPSTAT -// -//-------------------------------------------------------------- -static Standard_Integer XSDRAWIGES_TPSTAT(Draw_Interpretor& di, Standard_Integer n, const char** a) + +//======================================================================= +//function : XSDRAWIGES_TPSTAT +//purpose : +//======================================================================= +static Standard_Integer XSDRAWIGES_TPSTAT(Draw_Interpretor& theDI, + Standard_Integer theNbArgs, + const char** theArgVec) { - Handle(IFSelect_SessionPilot) pilot = XSDRAW::Pilot(); - Standard_Integer argc = n;//= pilot->NbWords(); - const Standard_CString arg1 = a[1];//pilot->Arg(1); + Handle(IFSelect_SessionPilot) pilot = XSDRAWBase::Pilot(); + Standard_Integer theNbArgs = theNbArgs;//= pilot->NbWords(); + const Standard_CString arg1 = theArgVec[1];//pilot->Arg(1); const Handle(Transfer_TransientProcess)& TP = XSControl::Session(pilot)->TransferReader()->TransientProcess(); IGESControl_Reader read; //(XSControl::Session(pilot),Standard_False); // **** tpent **** Handle(Interface_InterfaceModel) model = TP->Model(); - if (model.IsNull()) { di << "No Transfer Read\n"; return -1; } + if (model.IsNull()) { theDI << "No Transfer Read\n"; return -1; } Handle(XSControl_WorkSession) thesession = read.WS(); thesession->SetMapReader(TP); Standard_Integer mod1 = 0; - if (argc > 1) + if (theNbArgs > 1) { char a2 = arg1[1]; if (a2 == '\0') a2 = '!'; switch (arg1[0]) @@ -705,10 +645,10 @@ static Standard_Integer XSDRAWIGES_TPSTAT(Draw_Interpretor& di, Standard_Integer default: mod1 = -2; break; } } - if (mod1 < -1) di << "Unknown Mode\n"; + if (mod1 < -1) theDI << "Unknown Mode\n"; if (mod1 < 0) { - di << "Modes available :\n" + theDI << "Modes available :\n" << "g : general c : checks (count) C (list)\n" << "r : number of CasCade resulting shapes\n" << "s : mapping between IGES entities and CasCade shapes\n"; @@ -718,45 +658,28 @@ static Standard_Integer XSDRAWIGES_TPSTAT(Draw_Interpretor& di, Standard_Integer return 0; } -static Standard_Integer etest(Draw_Interpretor& di, Standard_Integer argc, const char** a) +//======================================================================= +//function : etest +//purpose : +//======================================================================= +static Standard_Integer etest(Draw_Interpretor& theDI, + Standard_Integer theNbArgs, + const char** theArgVec) { - if (argc < 3) + if (theNbArgs < 3) { - di << "etest igesfile shape\n"; + theDI << "etest igesfile shape\n"; return 0; } IGESControl_Reader aReader; - aReader.ReadFile(a[1]); + aReader.ReadFile(theArgVec[1]); aReader.SetReadVisible(Standard_True); aReader.TransferRoots(); TopoDS_Shape shape = aReader.OneShape(); - DBRep::Set(a[2], shape); + DBRep::Set(theArgVec[2], shape); return 0; } -extern "C" { - static void cleanpilot() - { - XSDRAW::Session()->ClearData(1); - } -} - - -//-------------------------------------------------------------- -// Function : Init(s) -// -//-------------------------------------------------------------- - -void XSDRAWIGES::InitSelect() -{ - Handle(IGESSelect_Activator) igesact = new IGESSelect_Activator; - IGESControl_Controller::Init(); - // XSDRAW::SetNorm ("IGES"); trop tot - XSDRAW::SetController(XSControl_Controller::Recorded("iges")); - - atexit(cleanpilot); -} - //======================================================================= //function : ReadIges //purpose : Read IGES to DECAF document @@ -796,18 +719,18 @@ static Standard_Integer ReadIges(Draw_Interpretor& theDI, Handle(DDocStd_DrawDocument) aDrawD = new DDocStd_DrawDocument(aDoc); Draw::Set(theArgVec[1], aDrawD); } - aNode->GlobalParameters.LengthUnit = GetLengthUnit(aDoc); + aNode->GlobalParameters.LengthUnit = XSDRAWBase::GetLengthUnit(aDoc); Handle(Draw_ProgressIndicator) aProgress = new Draw_ProgressIndicator(theDI); Handle(IGESCAFControl_Provider) aProvider = new IGESCAFControl_Provider(aNode); aProvider->SetToUpdateStaticParameters(false); - Handle(XSControl_WorkSession) aWS = XSDRAW::Session(); + Handle(XSControl_WorkSession) aWS = XSDRAWBase::Session(); if (!aProvider->Read(theArgVec[2], aDoc, aWS, aProgress->Start())) { theDI << "Error: Can't read IGES file\n"; return 1; } - CollectActiveWorkSessions(aWS, theArgVec[2], THE_PREVIOUS_WORK_SESSIONS); + XSDRAWBase::CollectActiveWorkSessions(aWS, theArgVec[2], THE_PREVIOUS_WORK_SESSIONS); Message::SendInfo() << "Document saved with name " << theArgVec[1]; return 0; } @@ -848,52 +771,41 @@ static Standard_Integer WriteIges(Draw_Interpretor& theDI, case 'l': aNode->InternalParameters.WriteLayer = aMode; break; } } - aNode->GlobalParameters.LengthUnit = GetLengthUnit(aDoc); + aNode->GlobalParameters.LengthUnit = XSDRAWBase::GetLengthUnit(aDoc); Handle(Draw_ProgressIndicator) aProgress = new Draw_ProgressIndicator(theDI); Handle(IGESCAFControl_Provider) aProvider = new IGESCAFControl_Provider(aNode); aProvider->SetToUpdateStaticParameters(false); - Handle(XSControl_WorkSession) aWS = XSDRAW::Session(); + Handle(XSControl_WorkSession) aWS = XSDRAWBase::Session(); const TCollection_AsciiString aPath = theArgVec[2]; if (!aProvider->Write(aPath, aDoc, aWS, aProgress->Start())) { theDI << "Error: Can't write IGES file\n"; return 1; } - CollectActiveWorkSessions(aWS, aPath, THE_PREVIOUS_WORK_SESSIONS); + XSDRAWBase::CollectActiveWorkSessions(aWS, aPath, THE_PREVIOUS_WORK_SESSIONS); return 0; } //======================================================================= //function : InitToBRep -//purpose : +//purpose : //======================================================================= - -void XSDRAWIGES::InitToBRep(Draw_Interpretor& theCommands) +void XSDRAWIGES::Factory(Draw_Interpretor& theDI) { const char* g = "DE: IGES"; - theCommands.Add("igesbrep", "igesbrep [file else already loaded model] [name DRAW]", __FILE__, igesbrep, g); - theCommands.Add("testreadiges", "testreadiges [file else already loaded model] [name DRAW]", __FILE__, testread, g); - theCommands.Add("igesread", "igesread [file else already loaded model] [name DRAW]", __FILE__, igesbrep, g); - theCommands.Add("igesparam", "igesparam ->list, + name ->one param, + name val->change", __FILE__, igesparam, g); - theCommands.Add("TPSTAT", " ", __FILE__, XSDRAWIGES_TPSTAT, g); - theCommands.Add("tplosttrim", "number of untrimmed faces during last transfer", __FILE__, XSDRAWIGES_tplosttrim, g); - theCommands.Add("etest", "test of eviewer", __FILE__, etest, g); + theDI.Add("igesbrep", "igesbrep [file else already loaded model] [name DRAW]", __FILE__, igesbrep, g); + theDI.Add("testreadiges", "testreadiges [file else already loaded model] [name DRAW]", __FILE__, testread, g); + theDI.Add("igesread", "igesread [file else already loaded model] [name DRAW]", __FILE__, igesbrep, g); + theDI.Add("igesparam", "igesparam ->list, + name ->one param, + name val->change", __FILE__, igesparam, g); + theDI.Add("TPSTAT", " ", __FILE__, XSDRAWIGES_TPSTAT, g); + theDI.Add("tplosttrim", "number of untrimmed faces during last transfer", __FILE__, XSDRAWIGES_tplosttrim, g); + theDI.Add("etest", "test of eviewer", __FILE__, etest, g); - theCommands.Add("ReadIges", "Doc filename: Read IGES file to DECAF document", __FILE__, ReadIges, g); - theCommands.Add("WriteIges", "Doc filename: Write DECAF document to IGES file", __FILE__, WriteIges, g); + theDI.Add("ReadIges", "Doc filename: Read IGES file to DECAF document", __FILE__, ReadIges, g); + theDI.Add("WriteIges", "Doc filename: Write DECAF document to IGES file", __FILE__, WriteIges, g); + theDI.Add("brepiges", "brepiges sh1 [+sh2 [+sh3 ..]] filename.igs", __FILE__, brepiges, g); + theDI.Add("testwriteiges", "testwriteiges filename.igs shape", __FILE__, testwrite, g); } - -//======================================================================= -//function : InitFromBRep -//purpose : -//======================================================================= - -void XSDRAWIGES::InitFromBRep(Draw_Interpretor& theCommands) -{ - const char* g = "DE: IGES"; - theCommands.Add("brepiges", "brepiges sh1 [+sh2 [+sh3 ..]] filename.igs", __FILE__, brepiges, g); - theCommands.Add("testwriteiges", "testwriteiges filename.igs shape", __FILE__, testwrite, g); -} diff --git a/src/XSDRAWIGES/XSDRAWIGES.hxx b/src/XSDRAWIGES/XSDRAWIGES.hxx index 55fb43153c..3d1e322b3c 100644 --- a/src/XSDRAWIGES/XSDRAWIGES.hxx +++ b/src/XSDRAWIGES/XSDRAWIGES.hxx @@ -19,7 +19,7 @@ #include -class XSDRAWIGES +class XSDRAWIGES { DEFINE_STANDARD_ALLOC public: diff --git a/src/XSDRAWOBJ/XSDRAWOBJ.cxx b/src/XSDRAWOBJ/XSDRAWOBJ.cxx index ef7d7ce3a9..8bb0f16027 100644 --- a/src/XSDRAWOBJ/XSDRAWOBJ.cxx +++ b/src/XSDRAWOBJ/XSDRAWOBJ.cxx @@ -13,157 +13,22 @@ #include -#include -//#include -//#include -#include -#include #include #include #include #include #include -#include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -//#include -#include -#include -#include -//#include -//#include -//#include -#include -#include -#include -#include -//#include #include #include -//#include -//#include -#include -#include -//#include -#include -//#include -//#include -//#include -//#include -//#include -//#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -//#include -//#include -//#include -//#include -//#include #include #include -#include -#include -#include -#include -#include -#include - -#ifndef _STDIO_H -#include -#endif - -extern Standard_Boolean VDisplayAISObject(const TCollection_AsciiString& theName, - const Handle(AIS_InteractiveObject)& theAISObj, - Standard_Boolean theReplaceIfExists = Standard_True); - -//============================================================================= -//function : parseNameFormat -//purpose : Parse RWMesh_NameFormat enumeration -//============================================================================= -static bool parseNameFormat(const char* theArg, - RWMesh_NameFormat& theFormat) -{ - TCollection_AsciiString aName(theArg); - aName.LowerCase(); - if (aName == "empty") - { - theFormat = RWMesh_NameFormat_Empty; - } - else if (aName == "product" - || aName == "prod") - { - theFormat = RWMesh_NameFormat_Product; - } - else if (aName == "instance" - || aName == "inst") - { - theFormat = RWMesh_NameFormat_Instance; - } - else if (aName == "instanceorproduct" - || aName == "instance||product" - || aName == "instance|product" - || aName == "instorprod" - || aName == "inst||prod" - || aName == "inst|prod") - { - theFormat = RWMesh_NameFormat_InstanceOrProduct; - } - else if (aName == "productorinstance" - || aName == "product||instance" - || aName == "product|instance" - || aName == "prodorinst" - || aName == "prod||inst" - || aName == "prod|inst") - { - theFormat = RWMesh_NameFormat_ProductOrInstance; - } - else if (aName == "productandinstance" - || aName == "prodandinst" - || aName == "product&instance" - || aName == "prod&inst") - { - theFormat = RWMesh_NameFormat_ProductAndInstance; - } - else if (aName == "productandinstanceandocaf" - || aName == "verbose" - || aName == "debug") - { - theFormat = RWMesh_NameFormat_ProductAndInstanceAndOcaf; - } - else - { - return false; - } - return true; -} +#include +#include +#include +#include +#include +#include //============================================================================= //function : parseCoordinateSystem @@ -189,25 +54,6 @@ static bool parseCoordinateSystem(const char* theArg, return Standard_True; } -//======================================================================= -//function : GetLengthUnit -//purpose : Gets length unit value from static interface and document in M -//======================================================================= -static Standard_Real GetLengthUnit(const Handle(TDocStd_Document)& theDoc = nullptr) -{ - if (!theDoc.IsNull()) - { - Standard_Real aUnit = 1.; - if (XCAFDoc_DocumentTool::GetLengthUnit(theDoc, aUnit, - UnitsMethods_LengthUnit_Millimeter)) - { - return aUnit; - } - } - XSAlgo::AlgoContainer()->PrepareForTransfer(); - return UnitsMethods::GetCasCadeLengthUnit(); -} - //============================================================================= //function : ReadObj //purpose : Reads OBJ file @@ -218,11 +64,8 @@ static Standard_Integer ReadObj(Draw_Interpretor& theDI, { TCollection_AsciiString aDestName, aFilePath; Handle(RWObj_ConfigurationNode) aNode = new RWObj_ConfigurationNode(); - aNode->GlobalParameters.LengthUnit = GetLengthUnit(); + aNode->GlobalParameters.LengthUnit = XSDRAWBase::GetLengthUnit(); Standard_Boolean toUseExistingDoc = Standard_False; - //Standard_Real aFileUnitFactor = -1.0; - //RWMesh_CoordinateSystem aResultCoordSys = RWMesh_CoordinateSystem_Zup, aFileCoordSys = RWMesh_CoordinateSystem_Yup; - //Standard_Boolean toListExternalFiles = Standard_False, isSingleFace = Standard_False, isSinglePrecision = Standard_False; Standard_Boolean isNoDoc = (TCollection_AsciiString(theArgVec[0]) == "readobj"); for (Standard_Integer anArgIter = 1; anArgIter < theNbArgs; ++anArgIter) { @@ -293,14 +136,6 @@ static Standard_Integer ReadObj(Draw_Interpretor& theDI, ++anArgIter; } } - //else if (anArgCase == "-listexternalfiles" - // || anArgCase == "-listexternals" - // || anArgCase == "-listexternal" - // || anArgCase == "-external" - // || anArgCase == "-externalfiles") - //{ - // toListExternalFiles = Standard_True; - //} else if (aDestName.IsEmpty()) { aDestName = theArgVec[anArgIter]; @@ -342,8 +177,8 @@ static Standard_Integer ReadObj(Draw_Interpretor& theDI, } } Handle(Draw_ProgressIndicator) aProgress = new Draw_ProgressIndicator(theDI, 1); - Handle(RWStl_Provider) aProvider = new RWStl_Provider(aNode); - Handle(XSControl_WorkSession) aWS = XSDRAW::Session(); + Handle(RWObj_Provider) aProvider = new RWObj_Provider(aNode); + Handle(XSControl_WorkSession) aWS = XSDRAWBase::Session(); Standard_Boolean aReadStat = Standard_False; if (isNoDoc) { @@ -382,12 +217,10 @@ static Standard_Integer WriteObj(Draw_Interpretor& theDI, { TCollection_AsciiString anObjFilePath; Handle(TDocStd_Document) aDoc; + TopoDS_Shape aShape; Handle(RWObj_ConfigurationNode) aNode = new RWObj_ConfigurationNode(); - aNode->GlobalParameters.LengthUnit = GetLengthUnit(); + aNode->GlobalParameters.LengthUnit = XSDRAWBase::GetLengthUnit(); Handle(TDocStd_Application) anApp = DDocStd::GetApplication(); - //TColStd_IndexedDataMapOfStringString aFileInfo; - //Standard_Real aFileUnitFactor = -1.0; - //RWMesh_CoordinateSystem aSystemCoordSys = RWMesh_CoordinateSystem_Zup, aFileCoordSys = RWMesh_CoordinateSystem_Yup; for (Standard_Integer anArgIter = 1; anArgIter < theNbArgs; ++anArgIter) { TCollection_AsciiString anArgCase(theArgVec[anArgIter]); @@ -445,15 +278,12 @@ static Standard_Integer WriteObj(Draw_Interpretor& theDI, DDocStd::GetDocument(aNameVar, aDoc, false); if (aDoc.IsNull()) { - TopoDS_Shape aShape = DBRep::Get(aNameVar); + aShape = DBRep::Get(aNameVar); if (aShape.IsNull()) { theDI << "Syntax error: '" << aNameVar << "' is not a shape nor document\n"; return 1; } - anApp->NewDocument(TCollection_ExtendedString("BinXCAF"), aDoc); - Handle(XCAFDoc_ShapeTool) aShapeTool = XCAFDoc_DocumentTool::ShapeTool(aDoc->Main()); - aShapeTool->AddShape(aShape); } } else if (anObjFilePath.IsEmpty()) @@ -472,11 +302,21 @@ static Standard_Integer WriteObj(Draw_Interpretor& theDI, return 1; } Handle(Draw_ProgressIndicator) aProgress = new Draw_ProgressIndicator(theDI, 1); - Handle(RWStl_Provider) aProvider = new RWStl_Provider(aNode); - Handle(XSControl_WorkSession) aWS = XSDRAW::Session(); - if (!aProvider->Write(theArgVec[2], aDoc, aWS, aProgress->Start())) + Handle(RWObj_Provider) aProvider = new RWObj_Provider(aNode); + Handle(XSControl_WorkSession) aWS = XSDRAWBase::Session(); + Standard_Boolean aWriteStatus = Standard_False; + if (aDoc.IsNull()) { - theDI << "Error: Mesh writing has been failed.\n"; + aWriteStatus = aProvider->Write(theArgVec[2], aShape, aWS, aProgress->Start()); + } + else + { + aWriteStatus = aProvider->Write(theArgVec[2], aDoc, aWS, aProgress->Start()); + } + if (!aWriteStatus) + { + theDI << "Error: Mesh writing has been failed\n"; + return 1; } return 0; } @@ -485,38 +325,38 @@ static Standard_Integer WriteObj(Draw_Interpretor& theDI, //function : InitCommands //purpose : //======================================================================= -void XSDRAWOBJ::InitCommands(Draw_Interpretor& theCommands) +void XSDRAWOBJ::Factory(Draw_Interpretor& theDI) { const char* g = "XSTEP-STL/VRML"; // Step transfer file commands - theCommands.Add("ReadObj", - "ReadObj Doc file [-fileCoordSys {Zup|Yup}] [-fileUnit Unit]" - "\n\t\t: [-resultCoordSys {Zup|Yup}] [-singlePrecision]" - "\n\t\t: [-listExternalFiles] [-noCreateDoc]" - "\n\t\t: Read OBJ file into XDE document." - "\n\t\t: -fileUnit length unit of OBJ file content;" - "\n\t\t: -fileCoordSys coordinate system defined by OBJ file; Yup when not specified." - "\n\t\t: -resultCoordSys result coordinate system; Zup when not specified." - "\n\t\t: -singlePrecision truncate vertex data to single precision during read; FALSE by default." - "\n\t\t: -listExternalFiles do not read mesh and only list external files." - "\n\t\t: -noCreateDoc read into existing XDE document.", - __FILE__, ReadObj, g); - theCommands.Add("readobj", - "readobj shape file [-fileCoordSys {Zup|Yup}] [-fileUnit Unit]" - "\n\t\t: [-resultCoordSys {Zup|Yup}] [-singlePrecision]" - "\n\t\t: [-singleFace]" - "\n\t\t: Same as ReadObj but reads OBJ file into a shape instead of a document." - "\n\t\t: -singleFace merge OBJ content into a single triangulation Face.", - __FILE__, ReadObj, g); - theCommands.Add("WriteObj", - "WriteObj Doc file [-fileCoordSys {Zup|Yup}] [-fileUnit Unit]" - "\n\t\t: [-systemCoordSys {Zup|Yup}]" - "\n\t\t: [-comments Text] [-author Name]" - "\n\t\t: Write XDE document into OBJ file." - "\n\t\t: -fileUnit length unit of OBJ file content;" - "\n\t\t: -fileCoordSys coordinate system defined by OBJ file; Yup when not specified." - "\n\t\t: -systemCoordSys system coordinate system; Zup when not specified.", - __FILE__, WriteObj, g); - theCommands.Add("writeobj", - "writeobj shape file", - __FILE__, WriteObj, g); + theDI.Add("ReadObj", + "ReadObj Doc file [-fileCoordSys {Zup|Yup}] [-fileUnit Unit]" + "\n\t\t: [-resultCoordSys {Zup|Yup}] [-singlePrecision]" + "\n\t\t: [-listExternalFiles] [-noCreateDoc]" + "\n\t\t: Read OBJ file into XDE document." + "\n\t\t: -fileUnit length unit of OBJ file content;" + "\n\t\t: -fileCoordSys coordinate system defined by OBJ file; Yup when not specified." + "\n\t\t: -resultCoordSys result coordinate system; Zup when not specified." + "\n\t\t: -singlePrecision truncate vertex data to single precision during read; FALSE by default." + "\n\t\t: -listExternalFiles do not read mesh and only list external files." + "\n\t\t: -noCreateDoc read into existing XDE document.", + __FILE__, ReadObj, g); + theDI.Add("readobj", + "readobj shape file [-fileCoordSys {Zup|Yup}] [-fileUnit Unit]" + "\n\t\t: [-resultCoordSys {Zup|Yup}] [-singlePrecision]" + "\n\t\t: [-singleFace]" + "\n\t\t: Same as ReadObj but reads OBJ file into a shape instead of a document." + "\n\t\t: -singleFace merge OBJ content into a single triangulation Face.", + __FILE__, ReadObj, g); + theDI.Add("WriteObj", + "WriteObj Doc file [-fileCoordSys {Zup|Yup}] [-fileUnit Unit]" + "\n\t\t: [-systemCoordSys {Zup|Yup}]" + "\n\t\t: [-comments Text] [-author Name]" + "\n\t\t: Write XDE document into OBJ file." + "\n\t\t: -fileUnit length unit of OBJ file content;" + "\n\t\t: -fileCoordSys coordinate system defined by OBJ file; Yup when not specified." + "\n\t\t: -systemCoordSys system coordinate system; Zup when not specified.", + __FILE__, WriteObj, g); + theDI.Add("writeobj", + "writeobj shape file", + __FILE__, WriteObj, g); } diff --git a/src/XSDRAWSTEP/XSDRAWSTEP.cxx b/src/XSDRAWSTEP/XSDRAWSTEP.cxx index b9a6e0203a..c28e28ae79 100644 --- a/src/XSDRAWSTEP/XSDRAWSTEP.cxx +++ b/src/XSDRAWSTEP/XSDRAWSTEP.cxx @@ -11,17 +11,20 @@ // Alternatively, this file may be used under the terms of Open CASCADE // commercial license or contractual agreement. +#include + #include -#include +#include +#include +#include #include #include -#include -#include -#include -#include -#include #include #include +#include +#include +#include +#include #include #include #include @@ -33,125 +36,45 @@ #include #include #include -#include -#include -#include +#include +#include #include #include -#include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include #include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include #include -#include -#include #include -#include -// Pour le transfert (write) -// Pour NewModel et Write : definition de produit (temporaire ...) -// steptrans -extern "C" { - static void cleanpilot() - { - XSDRAW::Session()->ClearData(1); - } -} - -//======================================================================= -//function : GetLengthUnit -//purpose : Gets length unit value from static interface and document in M -//======================================================================= -static Standard_Real GetLengthUnit(const Handle(TDocStd_Document)& theDoc = nullptr) -{ - if (!theDoc.IsNull()) - { - Standard_Real aUnit = 1.; - if (XCAFDoc_DocumentTool::GetLengthUnit(theDoc, aUnit, - UnitsMethods_LengthUnit_Millimeter)) - { - return aUnit; - } - } - XSAlgo::AlgoContainer()->PrepareForTransfer(); - return UnitsMethods::GetCasCadeLengthUnit(); -} - -//======================================================================= -//function : Init -//purpose : -//======================================================================= - -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")); - - atexit(cleanpilot); -} - -// ######## COMMANDE stepread : teste le Reader ######### - //======================================================================= //function : stepread -//purpose : +//purpose : //======================================================================= - -static Standard_Integer stepread(Draw_Interpretor& di, Standard_Integer argc, const char** argv) +static Standard_Integer stepread(Draw_Interpretor& theDI, + Standard_Integer theNbArgs, + const char** theArgVec) { - if (argc < 3) + if (theNbArgs < 3) { - di << "Use: stepread [file] [f or r (type of model full or reduced)]\n"; + theDI << "Use: stepread [file] [f or r (type of model full or reduced)]\n"; return 1; } // On admet le controller AP214 ou une variante - DeclareAndCast(STEPControl_Controller, ctl, XSDRAW::Controller()); - if (ctl.IsNull()) XSDRAW::SetNorm("STEP"); + DeclareAndCast(STEPControl_Controller, ctl, XSDRAWBase::Controller()); + if (ctl.IsNull()) XSDRAWBase::SetNorm("STEP"); // Progress indicator - Handle(Draw_ProgressIndicator) progress = new Draw_ProgressIndicator(di, 1); + Handle(Draw_ProgressIndicator) progress = new Draw_ProgressIndicator(theDI, 1); Message_ProgressScope aPSRoot(progress->Start(), "Reading", 100); - STEPControl_Reader sr(XSDRAW::Session(), Standard_False); + STEPControl_Reader sr(XSDRAWBase::Session(), Standard_False); TCollection_AsciiString fnom, rnom; - Standard_Boolean modfic = XSDRAW::FileAndVar - (argv[1], argv[2], "STEP", fnom, rnom); - if (modfic) di << " File STEP to read : " << fnom.ToCString() << "\n"; - else di << " Model taken from the session : " << fnom.ToCString() << "\n"; - di << " -- Names of variables BREP-DRAW prefixed by : " << rnom.ToCString() << "\n"; + Standard_Boolean modfic = XSDRAWBase::FileAndVar + (theArgVec[1], theArgVec[2], "STEP", fnom, rnom); + if (modfic) theDI << " File STEP to read : " << fnom.ToCString() << "\n"; + else theDI << " Model taken from the session : " << fnom.ToCString() << "\n"; + theDI << " -- Names of variables BREP-DRAW prefixed by : " << rnom.ToCString() << "\n"; IFSelect_ReturnStatus readstat = IFSelect_RetVoid; aPSRoot.SetName("Loading"); @@ -160,14 +83,14 @@ static Standard_Integer stepread(Draw_Interpretor& di, Standard_Integer argc, co Standard_Boolean fromtcl = Standard_False; Standard_Boolean aFullMode = Standard_False; Standard_Integer k = 3; - if (argc > k) + if (theNbArgs > k) { - if (argv[k][0] == 'f' || argv[3][0] == 'F') + if (theArgVec[k][0] == 'f' || theArgVec[3][0] == 'F') { aFullMode = Standard_True; k++; } - else if (argv[k][0] == 'r' || argv[3][0] == 'R') + else if (theArgVec[k][0] == 'r' || theArgVec[3][0] == 'R') { aFullMode = Standard_False; k++; @@ -177,7 +100,7 @@ static Standard_Integer stepread(Draw_Interpretor& di, Standard_Integer argc, co } if (!fromtcl) - fromtcl = argc > k; + fromtcl = theNbArgs > k; if (aFullMode) std::cout << "Full model for translation with additional info will be used \n" << std::flush; else @@ -187,7 +110,7 @@ static Standard_Integer stepread(Draw_Interpretor& di, Standard_Integer argc, co if (modfic) readstat = sr.ReadFile(fnom.ToCString()); - else if (XSDRAW::Session()->NbStartingEntities() > 0) readstat = IFSelect_RetDone; + else if (XSDRAWBase::Session()->NbStartingEntities() > 0) readstat = IFSelect_RetDone; aPSRoot.Next(20); // On average loading takes 20% if (aPSRoot.UserBreak()) @@ -195,8 +118,8 @@ static Standard_Integer stepread(Draw_Interpretor& di, Standard_Integer argc, co if (readstat != IFSelect_RetDone) { - if (modfic) di << "Could not read file " << fnom.ToCString() << " , abandon\n"; - else di << "No model loaded\n"; + if (modfic) theDI << "Could not read file " << fnom.ToCString() << " , abandon\n"; + else theDI << "No model loaded\n"; return 1; } @@ -211,21 +134,21 @@ static Standard_Integer stepread(Draw_Interpretor& di, Standard_Integer argc, co num = sr.NbRootsForTransfer(); if (!fromtcl) { - di << "NbRootsForTransfer=" << num << " :\n"; + theDI << "NbRootsForTransfer=" << num << " :\n"; for (i = 1; i <= num; i++) { - di << "Root." << i << ", Ent. "; + theDI << "Root." << i << ", Ent. "; Standard_SStream aTmpStream; sr.Model()->Print(sr.RootForTransfer(i), aTmpStream); - di << aTmpStream.str().c_str(); - di << " Type:" << sr.RootForTransfer(i)->DynamicType()->Name() << "\n"; + theDI << aTmpStream.str().c_str(); + theDI << " Type:" << sr.RootForTransfer(i)->DynamicType()->Name() << "\n"; } std::cout << "Mode (0 End, 1 root n0 1, 2 one root/n0, 3 one entity/n0, 4 Selection) : " << std::flush; std::cin >> modepri; } - if (modepri == 0) { di << "End Reading STEP\n"; return 0; } + if (modepri == 0) { theDI << "End Reading STEP\n"; return 0; } if (modepri <= 2) { num = 1; @@ -237,13 +160,13 @@ static Standard_Integer stepread(Draw_Interpretor& di, Standard_Integer argc, co progress->Show(aPSRoot); if (!sr.TransferRoot(num, aPSRoot.Next(80))) - di << "Transfer root n0 " << num << " : no result\n"; + theDI << "Transfer root n0 " << num << " : no result\n"; else { nbs = sr.NbShapes(); char shname[30]; Sprintf(shname, "%s_%d", rnom.ToCString(), nbs); - di << "Transfer root n0 " << num << " OK -> DRAW Shape: " << shname << "\n"; - di << "Now, " << nbs << " Shapes produced\n"; + theDI << "Transfer root n0 " << num << " OK -> DRAW Shape: " << shname << "\n"; + theDI << "Now, " << nbs << " Shapes produced\n"; TopoDS_Shape sh = sr.Shape(nbs); DBRep::Set(shname, sh); } @@ -252,15 +175,15 @@ static Standard_Integer stepread(Draw_Interpretor& di, Standard_Integer argc, co } else if (modepri == 3) { - std::cout << "Entity : " << std::flush; num = XSDRAW::GetEntityNumber(); + std::cout << "Entity : " << std::flush; num = XSDRAWBase::GetEntityNumber(); if (!sr.TransferOne(num)) - di << "Transfer entity n0 " << num << " : no result\n"; + theDI << "Transfer entity n0 " << num << " : no result\n"; else { nbs = sr.NbShapes(); char shname[30]; Sprintf(shname, "%s_%d", rnom.ToCString(), num); - di << "Transfer entity n0 " << num << " OK -> DRAW Shape: " << shname << "\n"; - di << "Now, " << nbs << " Shapes produced\n"; + theDI << "Transfer entity n0 " << num << " OK -> DRAW Shape: " << shname << "\n"; + theDI << "Now, " << nbs << " Shapes produced\n"; TopoDS_Shape sh = sr.Shape(nbs); DBRep::Set(shname, sh); } @@ -275,32 +198,32 @@ static Standard_Integer stepread(Draw_Interpretor& di, Standard_Integer argc, co if (fromtcl) { modepri = 0; // d ioffice une seule passe - if (argv[k][0] == '*' && argv[k][1] == '\0') + if (theArgVec[k][0] == '*' && theArgVec[k][1] == '\0') { - di << "Transferrable Roots : "; - list = XSDRAW::GetList("xst-transferrable-roots"); + theDI << "Transferrable Roots : "; + list = XSDRAWBase::GetList("xst-transferrable-roots"); //list = new TColStd_HSequenceOfTransient; //for(Standard_Integer j=1; j<=num; j++) // list->Append(sr.RootForTransfer(j)); } else { - di << "List given by " << argv[k]; - if (argc > k + 1) di << " " << argv[k + 1]; - di << " : "; - list = XSDRAW::GetList(argv[k], (argc > (k + 1) ? argv[k + 1] : 0)); + theDI << "List given by " << theArgVec[k]; + if (theNbArgs > k + 1) theDI << " " << theArgVec[k + 1]; + theDI << " : "; + list = XSDRAWBase::GetList(theArgVec[k], (theNbArgs > (k + 1) ? theArgVec[k + 1] : 0)); } - if (list.IsNull()) { di << "No list defined. Give a selection name or * for all transferrable roots\n"; continue; } + if (list.IsNull()) { theDI << "No list defined. Give a selection name or * for all transferrable roots\n"; continue; } } else { std::cout << "Name of Selection :" << std::flush; - list = XSDRAW::GetList(); - if (list.IsNull()) { di << "No list defined\n"; continue; } + list = XSDRAWBase::GetList(); + if (list.IsNull()) { theDI << "No list defined\n"; continue; } } Standard_Integer ill, nbl = list->Length(); - di << "Nb entities selected : " << nbl << "\n"; + theDI << "Nb entities selected : " << nbl << "\n"; if (nbl == 0) continue; aPSRoot.SetName("Translation"); @@ -312,13 +235,13 @@ static Standard_Integer stepread(Draw_Interpretor& di, Standard_Integer argc, co num = sr.Model()->Number(list->Value(ill)); if (num == 0) continue; if (!sr.TransferOne(num, aPS.Next())) - di << "Transfer entity n0 " << num << " : no result\n"; + theDI << "Transfer entity n0 " << num << " : no result\n"; else { nbs = sr.NbShapes(); char shname[30]; Sprintf(shname, "%s_%d", rnom.ToCString(), nbs); - di << "Transfer entity n0 " << num << " OK -> DRAW Shape: " << shname << "\n"; - di << "Now, " << nbs << " Shapes produced\n"; + theDI << "Transfer entity n0 " << num << " OK -> DRAW Shape: " << shname << "\n"; + theDI << "Now, " << nbs << " Shapes produced\n"; TopoDS_Shape sh = sr.Shape(nbs); DBRep::Set(shname, sh); } @@ -326,29 +249,31 @@ static Standard_Integer stepread(Draw_Interpretor& di, Standard_Integer argc, co if (aPSRoot.UserBreak()) return 1; } - else di << "Unknown mode n0 " << modepri << "\n"; + else theDI << "Unknown mode n0 " << modepri << "\n"; } return 0; } //======================================================================= //function : testreadstep -//purpose : +//purpose : //======================================================================= -static Standard_Integer testreadstep(Draw_Interpretor& di, Standard_Integer argc, const char** argv) +static Standard_Integer testreadstep(Draw_Interpretor& theDI, + Standard_Integer theNbArgs, + const char** theArgVec) { - if (argc < 3 || argc > 4) + if (theNbArgs < 3 || theNbArgs > 4) { - di << "ERROR in " << argv[0] << "Wrong Number of Arguments.\n"; - di << " Usage : " << argv[0] << " file_name shape_name [-stream]\n"; - di << " Option -stream forces usage of API accepting stream\n"; + theDI << "ERROR in " << theArgVec[0] << "Wrong Number of Arguments.\n"; + theDI << " Usage : " << theArgVec[0] << " file_name shape_name [-stream]\n"; + theDI << " Option -stream forces usage of API accepting stream\n"; return 1; } - Standard_Boolean useStream = (argc > 3 && !strcasecmp(argv[3], "-stream")); + Standard_Boolean useStream = (theNbArgs > 3 && !strcasecmp(theArgVec[3], "-stream")); STEPControl_Reader Reader; - Standard_CString filename = argv[1]; + Standard_CString filename = theArgVec[1]; IFSelect_ReturnStatus readstat; if (useStream) { @@ -362,57 +287,57 @@ static Standard_Integer testreadstep(Draw_Interpretor& di, Standard_Integer argc { readstat = Reader.ReadFile(filename); } - di << "Status from reading STEP file " << filename << " : "; + theDI << "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; } + case IFSelect_RetVoid: { theDI << "empty file\n"; return 1; } + case IFSelect_RetDone: { theDI << "file read\n"; break; } + case IFSelect_RetError: { theDI << "file not found\n"; return 1; } + case IFSelect_RetFail: { theDI << "error during read\n"; return 1; } + default: { theDI << "failure\n"; return 1; } } XSAlgo::AlgoContainer()->PrepareForTransfer(); // update unit info Reader.SetSystemLengthUnit(UnitsMethods::GetCasCadeLengthUnit()); Reader.TransferRoots(); TopoDS_Shape shape = Reader.OneShape(); - DBRep::Set(argv[2], shape); - di << "Count of shapes produced : " << Reader.NbShapes() << "\n"; + DBRep::Set(theArgVec[2], shape); + theDI << "Count of shapes produced : " << Reader.NbShapes() << "\n"; return 0; } -// ######## COMMANDE steptrans : teste les transformations ######### //======================================================================= //function : steptrans -//purpose : +//purpose : //======================================================================= - -static Standard_Integer steptrans(Draw_Interpretor& di, Standard_Integer argc, const char** argv) +static Standard_Integer steptrans(Draw_Interpretor& theDI, + Standard_Integer theNbArgs, + const char** theArgVec) { - if (argc < 5) + if (theNbArgs < 5) { - di << "give shape-name new-shape + entity-n0 entity-n0: AXIS2\n"; + theDI << "give shape-name new-shape + entity-n0 entity-n0: AXIS2\n"; return 1; } - TopoDS_Shape shape = DBRep::Get(argv[1]); - if (shape.IsNull()) { di << "Not a shape : " << argv[1] << "\n"; return 1; } + TopoDS_Shape shape = DBRep::Get(theArgVec[1]); + if (shape.IsNull()) { theDI << "Not a shape : " << theArgVec[1] << "\n"; return 1; } Handle(StepGeom_Axis2Placement3d) ax1, ax2; Standard_Integer n1 = 0, n2 = 0; - n1 = XSDRAW::GetEntityNumber(argv[3]); - if (argc > 4) n2 = XSDRAW::GetEntityNumber(argv[4]); + n1 = XSDRAWBase::GetEntityNumber(theArgVec[3]); + if (theNbArgs > 4) n2 = XSDRAWBase::GetEntityNumber(theArgVec[4]); if (n1 > 0) ax1 = Handle(StepGeom_Axis2Placement3d)::DownCast - (XSDRAW::Entity(n1)); + (XSDRAWBase::Entity(n1)); if (n2 > 0) ax2 = Handle(StepGeom_Axis2Placement3d)::DownCast - (XSDRAW::Entity(n2)); + (XSDRAWBase::Entity(n2)); StepToTopoDS_MakeTransformed mktrans; if (mktrans.Compute(ax1, ax2)) { TopLoc_Location loc(mktrans.Transformation()); shape.Move(loc); // mktrans.Transform (shape); - DBRep::Set(argv[2], shape); - di << "Transformed Shape as " << argv[2] << "\n"; + DBRep::Set(theArgVec[2], shape); + theDI << "Transformed Shape as " << theArgVec[2] << "\n"; } - else di << "No transformation computed\n"; + else theDI << "No transformation computed\n"; return 0; } @@ -420,28 +345,29 @@ static Standard_Integer steptrans(Draw_Interpretor& di, Standard_Integer argc, c //======================================================================= //function : stepwrite -//purpose : +//purpose : //======================================================================= - -static Standard_Integer stepwrite(Draw_Interpretor& di, Standard_Integer argc, const char** argv) +static Standard_Integer stepwrite(Draw_Interpretor& theDI, + Standard_Integer theNbArgs, + const char** theArgVec) { // On admet le controller AP214 ou une variante - DeclareAndCast(STEPControl_Controller, ctl, XSDRAW::Controller()); + DeclareAndCast(STEPControl_Controller, ctl, XSDRAWBase::Controller()); if (ctl.IsNull()) { - XSDRAW::SetNorm("STEP"); + XSDRAWBase::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()); + ctl = Handle(STEPControl_Controller)::DownCast(XSDRAWBase::Controller()); } - if (argc < 3) + if (theNbArgs < 3) { - di << "Give mode[1-4] and Shape name + optional file. Mode possible\n"; - di << "f ou 1 : FacettedBRep s ou 2 : ShellBasedSurfaceModel\n" + theDI << "Give mode[1-4] and Shape name + optional file. Mode possible\n"; + theDI << "f ou 1 : FacettedBRep s ou 2 : ShellBasedSurfaceModel\n" << "m ou 3 : ManifoldSolidBrep w ou 4 : GeometricCurveSet/WireFrame\n"; return 1; } - char modeshape = argv[1][0]; + char modeshape = theArgVec[1][0]; STEPControl_StepModelType mode; switch (modeshape) { @@ -455,7 +381,7 @@ static Standard_Integer stepwrite(Draw_Interpretor& di, Standard_Integer argc, c case '3': mode = STEPControl_ManifoldSolidBrep; break; case 'w': case '4': mode = STEPControl_GeometricCurveSet; break; - default: di << "1st arg = mode, incorrect [give fsmw]\n"; return 1; + default: theDI << "1st arg = mode, incorrect [give fsmw]\n"; return 1; } //:k8 abv 6 Jan 98: using parameter for writing mode (assemblies/shapes) @@ -464,23 +390,23 @@ static Standard_Integer stepwrite(Draw_Interpretor& di, Standard_Integer argc, c 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); + TopoDS_Shape shape = DBRep::Get(theArgVec[2]); + STEPControl_Writer sw(XSDRAWBase::Session(), Standard_False); Handle(Interface_InterfaceModel) stepmodel = sw.Model(); Standard_Integer nbavant = (stepmodel.IsNull() ? 0 : stepmodel->NbEntities()); - Handle(Draw_ProgressIndicator) progress = new Draw_ProgressIndicator(di, 1); + Handle(Draw_ProgressIndicator) progress = new Draw_ProgressIndicator(theDI, 1); Message_ProgressScope aPSRoot(progress->Start(), "Translating", 100); progress->Show(aPSRoot); Standard_Integer stat = sw.Transfer(shape, mode, Standard_True, aPSRoot.Next(90)); if (stat == IFSelect_RetDone) { - di << "Translation: OK\n"; + theDI << "Translation: OK\n"; } else { - di << "Error: translation failed, status = " << stat << "\n"; + theDI << "Error: translation failed, status = " << stat << "\n"; } if (aPSRoot.UserBreak()) @@ -491,40 +417,43 @@ static Standard_Integer stepwrite(Draw_Interpretor& di, Standard_Integer argc, c // Que s est-il passe stepmodel = sw.Model(); Standard_Integer nbapres = (stepmodel.IsNull() ? 0 : stepmodel->NbEntities()); - if (nbavant > 0) di << "Beware : Model not empty before transferring\n"; - if (nbapres <= nbavant) di << "Beware : No data produced by this transfer\n"; - if (nbapres == 0) { di << "No data to write\n"; return 0; } + if (nbavant > 0) theDI << "Beware : Model not empty before transferring\n"; + if (nbapres <= nbavant) theDI << "Beware : No data produced by this transfer\n"; + if (nbapres == 0) { theDI << "No data to write\n"; return 0; } - if (argc <= 3) + if (theNbArgs <= 3) { - di << " Now, to write a file, command : writeall filename\n"; + theDI << " Now, to write a file, command : writeall filename\n"; return 0; } - const char* nomfic = argv[3]; + const char* nomfic = theArgVec[3]; stat = sw.Write(nomfic); switch (stat) { - case IFSelect_RetVoid: di << "Error: No file written\n"; break; - case IFSelect_RetDone: di << "File " << nomfic << " written\n"; break; - case IFSelect_RetStop: di << "Error on writing file: no space on disk or destination is write protected\n"; break; - default: di << "Error: File " << nomfic << " written with fail messages\n"; break; + case IFSelect_RetVoid: theDI << "Error: No file written\n"; break; + case IFSelect_RetDone: theDI << "File " << nomfic << " written\n"; break; + case IFSelect_RetStop: theDI << "Error on writing file: no space on disk or destination is write protected\n"; break; + default: theDI << "Error: File " << nomfic << " written with fail messages\n"; break; } return 0; } + //======================================================================= //function : testwritestep -//purpose : +//purpose : //======================================================================= -static Standard_Integer testwrite(Draw_Interpretor& di, Standard_Integer argc, const char** argv) +static Standard_Integer testwrite(Draw_Interpretor& theDI, + Standard_Integer theNbArgs, + const char** theArgVec) { TCollection_AsciiString aFilePath; TopoDS_Shape aShape; bool toTestStream = false; - for (Standard_Integer anArgIter = 1; anArgIter < argc; ++anArgIter) + for (Standard_Integer anArgIter = 1; anArgIter < theNbArgs; ++anArgIter) { - TCollection_AsciiString anArgCase(argv[anArgIter]); + TCollection_AsciiString anArgCase(theArgVec[anArgIter]); anArgCase.LowerCase(); if (anArgCase == "-stream") { @@ -532,26 +461,26 @@ static Standard_Integer testwrite(Draw_Interpretor& di, Standard_Integer argc, c } else if (aFilePath.IsEmpty()) { - aFilePath = argv[anArgIter]; + aFilePath = theArgVec[anArgIter]; } else if (aShape.IsNull()) { - aShape = DBRep::Get(argv[anArgIter]); + aShape = DBRep::Get(theArgVec[anArgIter]); if (aShape.IsNull()) { - di << "Syntax error: '" << argv[anArgIter] << "' is not a shape"; + theDI << "Syntax error: '" << theArgVec[anArgIter] << "' is not a shape"; return 1; } } else { - di << "Syntax error: unknown argument '" << argv[anArgIter] << "'"; + theDI << "Syntax error: unknown argument '" << theArgVec[anArgIter] << "'"; return 1; } } if (aShape.IsNull()) { - di << "Syntax error: wrong number of arguments"; + theDI << "Syntax error: wrong number of arguments"; return 1; } @@ -559,7 +488,7 @@ static Standard_Integer testwrite(Draw_Interpretor& di, Standard_Integer argc, c IFSelect_ReturnStatus aStat = aWriter.Transfer(aShape, STEPControl_AsIs); if (aStat != IFSelect_RetDone) { - di << "Error on transferring shape"; + theDI << "Error on transferring shape"; return 1; } @@ -581,22 +510,22 @@ static Standard_Integer testwrite(Draw_Interpretor& di, Standard_Integer argc, c } if (aStat != IFSelect_RetDone) { - di << "Error on writing file"; + theDI << "Error on writing file"; return 1; } - di << "File Is Written"; + theDI << "File Is Written"; return 0; } //======================================================================= //function : countexpected -//purpose : +//purpose : //======================================================================= - -static Standard_Integer countexpected -(Draw_Interpretor& di, Standard_Integer /*argc*/, const char** /*argv*/) +static Standard_Integer countexpected(Draw_Interpretor& theDI, + Standard_Integer /*theNbArgs*/, + const char** /*theArgVec*/) { - Handle(IFSelect_SessionPilot) pilot = XSDRAW::Pilot(); + Handle(IFSelect_SessionPilot) pilot = XSDRAWBase::Pilot(); Handle(IFSelect_WorkSession) WS = pilot->Session(); const Interface_Graph& graph = WS->Graph(); @@ -608,25 +537,30 @@ static Standard_Integer countexpected cnt.Count(graph, roots->Value(i)); } - di << "Instances of Faces \t: " << cnt.NbInstancesOfFaces() << "\n"; - di << "Instances of Shells\t: " << cnt.NbInstancesOfShells() << "\n"; - di << "Instances of Solids\t: " << cnt.NbInstancesOfSolids() << "\n"; - di << "Instances of Wires in GS\t: " << cnt.NbInstancesOfWires() << "\n"; - di << "Instances of Edges in GS\t: " << cnt.NbInstancesOfEdges() << "\n"; + theDI << "Instances of Faces \t: " << cnt.NbInstancesOfFaces() << "\n"; + theDI << "Instances of Shells\t: " << cnt.NbInstancesOfShells() << "\n"; + theDI << "Instances of Solids\t: " << cnt.NbInstancesOfSolids() << "\n"; + theDI << "Instances of Wires in GS\t: " << cnt.NbInstancesOfWires() << "\n"; + theDI << "Instances of Edges in GS\t: " << cnt.NbInstancesOfEdges() << "\n"; - di << "Source Faces \t: " << cnt.NbSourceFaces() << "\n"; - di << "Source Shells\t: " << cnt.NbSourceShells() << "\n"; - di << "Source Solids\t: " << cnt.NbSourceSolids() << "\n"; - di << "Source Wires in GS\t: " << cnt.NbSourceWires() << "\n"; - di << "Source Edges in GS\t: " << cnt.NbSourceEdges() << "\n"; + theDI << "Source Faces \t: " << cnt.NbSourceFaces() << "\n"; + theDI << "Source Shells\t: " << cnt.NbSourceShells() << "\n"; + theDI << "Source Solids\t: " << cnt.NbSourceSolids() << "\n"; + theDI << "Source Wires in GS\t: " << cnt.NbSourceWires() << "\n"; + theDI << "Source Edges in GS\t: " << cnt.NbSourceEdges() << "\n"; return 1; } -static Standard_Integer dumpassembly -(Draw_Interpretor& /*di*/, Standard_Integer /*argc*/, const char** /*argv*/) +//======================================================================= +//function : dumpassembly +//purpose : +//======================================================================= +static Standard_Integer dumpassembly(Draw_Interpretor& /*theDI*/, + Standard_Integer /*theNbArgs*/, + const char** /*theArgVec*/) { - Handle(IFSelect_SessionPilot) pilot = XSDRAW::Pilot(); + Handle(IFSelect_SessionPilot) pilot = XSDRAWBase::Pilot(); Handle(IFSelect_WorkSession) WS = pilot->Session(); const Interface_Graph& graph = WS->Graph(); @@ -635,23 +569,29 @@ static Standard_Integer dumpassembly return 0; } -static Standard_Integer stepfileunits(Draw_Interpretor& di, Standard_Integer argc, const char** argv) +//======================================================================= +//function : stepfileunits +//purpose : +//======================================================================= +static Standard_Integer stepfileunits(Draw_Interpretor& theDI, + Standard_Integer theNbArgs, + const char** theArgVec) { - if (argc < 2) + if (theNbArgs < 2) { - di << "Error: Invalid number of parameters. Should be: getfileunits name_file\n"; + theDI << "Error: Invalid number of parameters. Should be: getfileunits name_file\n"; return 1; } STEPControl_Reader aStepReader; IFSelect_ReturnStatus readstat = IFSelect_RetVoid; - readstat = aStepReader.ReadFile(argv[1]); + readstat = aStepReader.ReadFile(theArgVec[1]); if (readstat != IFSelect_RetDone) { - di << "No model loaded\n"; + theDI << "No model loaded\n"; return 1; } @@ -661,24 +601,23 @@ static Standard_Integer stepfileunits(Draw_Interpretor& di, Standard_Integer arg aStepReader.FileUnits(anUnitLengthNames, anUnitAngleNames, anUnitSolidAngleNames); Standard_Integer i = 1; - di << "=====================================================\n"; - di << "LENGTH Unit\n"; + theDI << "=====================================================\n"; + theDI << "LENGTH Unit\n"; for (; i <= anUnitLengthNames.Length(); i++) - di << anUnitLengthNames(i).ToCString() << "\n"; + theDI << anUnitLengthNames(i).ToCString() << "\n"; - di << "=====================================================\n"; - di << "Angle Unit\n"; + theDI << "=====================================================\n"; + theDI << "Angle Unit\n"; for (i = 1; i <= anUnitAngleNames.Length(); i++) - di << anUnitAngleNames(i).ToCString() << "\n"; + theDI << anUnitAngleNames(i).ToCString() << "\n"; - di << "=====================================================\n"; - di << "Solid Angle Unit\n"; + theDI << "=====================================================\n"; + theDI << "Solid Angle Unit\n"; for (i = 1; i <= anUnitSolidAngleNames.Length(); i++) - di << anUnitSolidAngleNames(i).ToCString() << "\n"; + theDI << anUnitSolidAngleNames(i).ToCString() << "\n"; return 0; } -// ######## COMMANDE stepwrite : teste le Writer ######### //======================================================================= //function : ReadStep @@ -750,13 +689,13 @@ static Standard_Integer ReadStep(Draw_Interpretor& theDI, Handle(DDocStd_DrawDocument) aDrawDoc = new DDocStd_DrawDocument(aDoc); Draw::Set(aDocName, aDrawDoc); } - aNode->GlobalParameters.LengthUnit = GetLengthUnit(aDoc); + aNode->GlobalParameters.LengthUnit = XSDRAWBase::GetLengthUnit(aDoc); Handle(Draw_ProgressIndicator) aProgress = new Draw_ProgressIndicator(theDI); Handle(STEPCAFControl_Provider) aProvider = new STEPCAFControl_Provider(aNode); aProvider->SetToUpdateStaticParameters(false); Standard_Boolean aReadStat = Standard_False; - Handle(XSControl_WorkSession) aWS = XSDRAW::Session(); + Handle(XSControl_WorkSession) aWS = XSDRAWBase::Session(); if (aToTestStream) { std::ifstream aStream; @@ -778,7 +717,7 @@ static Standard_Integer ReadStep(Draw_Interpretor& theDI, } Handle(DDocStd_DrawDocument) aDrawDoc = new DDocStd_DrawDocument(aDoc); Draw::Set(aDocName, aDrawDoc); - CollectActiveWorkSessions(aWS, aFilePath, THE_PREVIOUS_WORK_SESSIONS); + XSDRAWBase::CollectActiveWorkSessions(aWS, aFilePath, THE_PREVIOUS_WORK_SESSIONS); Message::SendInfo() << "Document saved with name " << aDocName; return 0; } @@ -885,13 +824,13 @@ static Standard_Integer WriteStep(Draw_Interpretor& theDI, theDI << "Syntax error: wrong number of arguments\n"; return 1; } - aNode->GlobalParameters.LengthUnit = GetLengthUnit(aDoc); + aNode->GlobalParameters.LengthUnit = XSDRAWBase::GetLengthUnit(aDoc); Handle(Draw_ProgressIndicator) aProgress = new Draw_ProgressIndicator(theDI); Handle(STEPCAFControl_Provider) aProvider = new STEPCAFControl_Provider(aNode); aProvider->SetToUpdateStaticParameters(false); Standard_Boolean aReadStat = Standard_False; - Handle(XSControl_WorkSession) aWS = XSDRAW::Session(); + Handle(XSControl_WorkSession) aWS = XSDRAWBase::Session(); if (aToTestStream) { std::ofstream aStream; @@ -911,38 +850,40 @@ static Standard_Integer WriteStep(Draw_Interpretor& theDI, theDI << "Cannot write any relevant data to the STEP file\n"; return 1; } - CollectActiveWorkSessions(aWS, aFilePath, THE_PREVIOUS_WORK_SESSIONS); + XSDRAWBase::CollectActiveWorkSessions(aWS, aFilePath, THE_PREVIOUS_WORK_SESSIONS); return 0; } -void XSDRAWSTEP::InitCommands(Draw_Interpretor& theCommands) +//======================================================================= +//function : Factory +//purpose : +//======================================================================= +void XSDRAWSTEP::Factory(Draw_Interpretor& theDI) { const char* g = "DE: STEP"; // Step transfer file commands - XSDRAWSTEP::Init(); - XSDRAW::LoadDraw(theCommands); - theCommands.Add("stepwrite", "stepwrite mode[0-4 afsmw] shape", __FILE__, stepwrite, g); - theCommands.Add("testwritestep", "testwritestep filename.stp shape [-stream]", - __FILE__, testwrite, g); - theCommands.Add("stepread", "stepread [file] [f or r (type of model full or reduced)]", __FILE__, stepread, g); - theCommands.Add("testreadstep", "testreadstep file shape [-stream]", __FILE__, testreadstep, g); - theCommands.Add("steptrans", "steptrans shape stepax1 stepax2", __FILE__, steptrans, g); - theCommands.Add("countexpected", "TEST", __FILE__, countexpected, g); - theCommands.Add("dumpassembly", "TEST", __FILE__, dumpassembly, g); - theCommands.Add("stepfileunits", "stepfileunits name_file", __FILE__, stepfileunits, g); - theCommands.Add("ReadStep", - "Doc filename [mode] [-stream]" - "\n\t\t: Read STEP file to a document." - "\n\t\t: -stream read using istream reading interface (testing)", - __FILE__, ReadStep, g); - theCommands.Add("WriteStep", - "Doc filename [mode=a [multifile_prefix] [label]] [-stream]" - "\n\t\t: Write DECAF document to STEP file" - "\n\t\t: mode can be: a or 0 : AsIs (default)" - "\n\t\t: f or 1 : FacettedBRep s or 2 : ShellBasedSurfaceModel" - "\n\t\t: m or 3 : ManifoldSolidBrep w or 4 : GeometricCurveSet/WireFrame" - "\n\t\t: multifile_prefix: triggers writing assembly components as separate files," - "\n\t\t: and defines common prefix for their names" - "\n\t\t: label tag of the sub-assembly label to save only that sub-assembly" - "\n\t\t: -stream read using ostream writing interface (testing)", - __FILE__, WriteStep, g); + theDI.Add("stepwrite", "stepwrite mode[0-4 afsmw] shape", __FILE__, stepwrite, g); + theDI.Add("testwritestep", "testwritestep filename.stp shape [-stream]", + __FILE__, testwrite, g); + theDI.Add("stepread", "stepread [file] [f or r (type of model full or reduced)]", __FILE__, stepread, g); + theDI.Add("testreadstep", "testreadstep file shape [-stream]", __FILE__, testreadstep, g); + theDI.Add("steptrans", "steptrans shape stepax1 stepax2", __FILE__, steptrans, g); + theDI.Add("countexpected", "TEST", __FILE__, countexpected, g); + theDI.Add("dumpassembly", "TEST", __FILE__, dumpassembly, g); + theDI.Add("stepfileunits", "stepfileunits name_file", __FILE__, stepfileunits, g); + theDI.Add("ReadStep", + "Doc filename [mode] [-stream]" + "\n\t\t: Read STEP file to a document." + "\n\t\t: -stream read using istream reading interface (testing)", + __FILE__, ReadStep, g); + theDI.Add("WriteStep", + "Doc filename [mode=a [multifile_prefix] [label]] [-stream]" + "\n\t\t: Write DECAF document to STEP file" + "\n\t\t: mode can be: a or 0 : AsIs (default)" + "\n\t\t: f or 1 : FacettedBRep s or 2 : ShellBasedSurfaceModel" + "\n\t\t: m or 3 : ManifoldSolidBrep w or 4 : GeometricCurveSet/WireFrame" + "\n\t\t: multifile_prefix: triggers writing assembly components as separate files," + "\n\t\t: and defines common prefix for their names" + "\n\t\t: label tag of the sub-assembly label to save only that sub-assembly" + "\n\t\t: -stream read using ostream writing interface (testing)", + __FILE__, WriteStep, g); } diff --git a/src/XSDRAWSTEP/XSDRAWSTEP.hxx b/src/XSDRAWSTEP/XSDRAWSTEP.hxx index c979e3fb0b..3b6c3b42f1 100644 --- a/src/XSDRAWSTEP/XSDRAWSTEP.hxx +++ b/src/XSDRAWSTEP/XSDRAWSTEP.hxx @@ -26,7 +26,7 @@ public: Standard_EXPORT static void Init(); - //! Loads all Draw commands of XSDRAWSTL. Used for plugin. + //! Loads all Draw commands of XSDRAWSTEP. Used for plugin. Standard_EXPORT static void Factory(Draw_Interpretor& theDI); }; diff --git a/src/XSDRAWSTL/XSDRAWSTL.cxx b/src/XSDRAWSTL/XSDRAWSTL.cxx index 6745cea079..690683e7e3 100644 --- a/src/XSDRAWSTL/XSDRAWSTL.cxx +++ b/src/XSDRAWSTL/XSDRAWSTL.cxx @@ -13,200 +13,19 @@ #include -#include -//#include -//#include -#include -#include #include #include #include #include #include -#include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -//#include -#include -#include -#include -//#include -//#include -//#include -#include -#include #include #include -//#include -#include -#include -//#include -//#include -#include -#include -//#include -#include -//#include -//#include -//#include -//#include -//#include -//#include -#include -#include -#include -#include +#include +#include #include #include -#include -#include -#include #include -#include -#include -#include -#include -#include -#include -//#include -//#include -//#include -//#include -//#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef _STDIO_H -#include -#endif - -extern Standard_Boolean VDisplayAISObject(const TCollection_AsciiString& theName, - const Handle(AIS_InteractiveObject)& theAISObj, - Standard_Boolean theReplaceIfExists = Standard_True); - -//============================================================================= -//function : parseNameFormat -//purpose : Parse RWMesh_NameFormat enumeration -//============================================================================= -static bool parseNameFormat(const char* theArg, - RWMesh_NameFormat& theFormat) -{ - TCollection_AsciiString aName(theArg); - aName.LowerCase(); - if (aName == "empty") - { - theFormat = RWMesh_NameFormat_Empty; - } - else if (aName == "product" - || aName == "prod") - { - theFormat = RWMesh_NameFormat_Product; - } - else if (aName == "instance" - || aName == "inst") - { - theFormat = RWMesh_NameFormat_Instance; - } - else if (aName == "instanceorproduct" - || aName == "instance||product" - || aName == "instance|product" - || aName == "instorprod" - || aName == "inst||prod" - || aName == "inst|prod") - { - theFormat = RWMesh_NameFormat_InstanceOrProduct; - } - else if (aName == "productorinstance" - || aName == "product||instance" - || aName == "product|instance" - || aName == "prodorinst" - || aName == "prod||inst" - || aName == "prod|inst") - { - theFormat = RWMesh_NameFormat_ProductOrInstance; - } - else if (aName == "productandinstance" - || aName == "prodandinst" - || aName == "product&instance" - || aName == "prod&inst") - { - theFormat = RWMesh_NameFormat_ProductAndInstance; - } - else if (aName == "productandinstanceandocaf" - || aName == "verbose" - || aName == "debug") - { - theFormat = RWMesh_NameFormat_ProductAndInstanceAndOcaf; - } - else - { - return false; - } - return true; -} - -//============================================================================= -//function : parseCoordinateSystem -//purpose : Parse RWMesh_CoordinateSystem enumeration -//============================================================================= -static bool parseCoordinateSystem(const char* theArg, - RWMesh_CoordinateSystem& theSystem) -{ - TCollection_AsciiString aCSStr(theArg); - aCSStr.LowerCase(); - if (aCSStr == "zup") - { - theSystem = RWMesh_CoordinateSystem_Zup; - } - else if (aCSStr == "yup") - { - theSystem = RWMesh_CoordinateSystem_Yup; - } - else - { - return Standard_False; - } - return Standard_True; -} - -//======================================================================= -//function : GetLengthUnit -//purpose : Gets length unit value from static interface and document in M -//======================================================================= -static Standard_Real GetLengthUnit(const Handle(TDocStd_Document)& theDoc = nullptr) -{ - if (!theDoc.IsNull()) - { - Standard_Real aUnit = 1.; - if (XCAFDoc_DocumentTool::GetLengthUnit(theDoc, aUnit, - UnitsMethods_LengthUnit_Millimeter)) - { - return aUnit; - } - } - XSAlgo::AlgoContainer()->PrepareForTransfer(); - return UnitsMethods::GetCasCadeLengthUnit(); -} //============================================================================= //function : writestl @@ -230,10 +49,10 @@ static Standard_Integer writestl(Draw_Interpretor& theDI, isASCIIMode = (Draw::Atoi(theArgVec[3]) == 0); } Handle(RWStl_ConfigurationNode) aNode = new RWStl_ConfigurationNode(); - aNode->GlobalParameters.LengthUnit = GetLengthUnit(); + aNode->GlobalParameters.LengthUnit = XSDRAWBase::GetLengthUnit(); Handle(RWStl_Provider) aProvider = new RWStl_Provider(aNode); aNode->InternalParameters.WriteAscii = isASCIIMode; - Handle(XSControl_WorkSession) aWS = XSDRAW::Session(); + Handle(XSControl_WorkSession) aWS = XSDRAWBase::Session(); Handle(Draw_ProgressIndicator) aProgress = new Draw_ProgressIndicator(theDI); if (!aProvider->Write(theArgVec[2], aShape, aWS, aProgress->Start())) { @@ -253,10 +72,7 @@ static Standard_Integer readstl(Draw_Interpretor& theDI, { TCollection_AsciiString aShapeName, aFilePath; Handle(RWStl_ConfigurationNode) aNode = new RWStl_ConfigurationNode(); - aNode->GlobalParameters.LengthUnit = GetLengthUnit(); - //bool toCreateCompOfTris = false; - //bool anIsMulti = false; - //double aMergeAngle = M_PI / 2.0; + aNode->GlobalParameters.LengthUnit = XSDRAWBase::GetLengthUnit(); for (Standard_Integer anArgIter = 1; anArgIter < theArgc; ++anArgIter) { TCollection_AsciiString anArg(theArgv[anArgIter]); @@ -336,7 +152,7 @@ static Standard_Integer readstl(Draw_Interpretor& theDI, Handle(Draw_ProgressIndicator) aProgress = new Draw_ProgressIndicator(theDI, 1); Handle(RWStl_Provider) aProvider = new RWStl_Provider(aNode); TopoDS_Shape aShape; - Handle(XSControl_WorkSession) aWS = XSDRAW::Session(); + Handle(XSControl_WorkSession) aWS = XSDRAWBase::Session(); if (!aProvider->Read(aFilePath, aShape, aWS, aProgress->Start())) { theDI << "Cannot read any relevant data from the STL file\n"; @@ -346,24 +162,21 @@ static Standard_Integer readstl(Draw_Interpretor& theDI, return 0; } -//======================================================================= -//function : InitCommands +//============================================================================= +//function : Factory //purpose : -//======================================================================= -void XSDRAWSTL::InitCommands(Draw_Interpretor& theCommands) +//============================================================================= +void XSDRAWSTL::Factory(Draw_Interpretor& theDI) { const char* g = "XSTEP-STL/VRML"; // Step transfer file commands - //XSDRAW::LoadDraw(theCommands); - - theCommands.Add("writestl", "shape file [ascii/binary (0/1) : 1 by default] [InParallel (0/1) : 0 by default]", __FILE__, writestl, g); - theCommands.Add("readstl", - "readstl shape file [-brep] [-mergeAngle Angle] [-multi]" - "\n\t\t: Reads STL file and creates a new shape with specified name." - "\n\t\t: When -brep is specified, creates a Compound of per-triangle Faces." - "\n\t\t: Single triangulation-only Face is created otherwise (default)." - "\n\t\t: -mergeAngle specifies maximum angle in degrees between triangles to merge equal nodes; disabled by default." - "\n\t\t: -multi creates a face per solid in multi-domain files; ignored when -brep is set.", - __FILE__, readstl, g); + theDI.Add("writestl", "shape file [ascii/binary (0/1) : 1 by default] [InParallel (0/1) : 0 by default]", __FILE__, writestl, g); + theDI.Add("readstl", + "readstl shape file [-brep] [-mergeAngle Angle] [-multi]" + "\n\t\t: Reads STL file and creates a new shape with specified name." + "\n\t\t: When -brep is specified, creates a Compound of per-triangle Faces." + "\n\t\t: Single triangulation-only Face is created otherwise (default)." + "\n\t\t: -mergeAngle specifies maximum angle in degrees between triangles to merge equal nodes; disabled by default." + "\n\t\t: -multi creates a face per solid in multi-domain files; ignored when -brep is set.", + __FILE__, readstl, g); } - diff --git a/src/XSDRAWSTL/XSDRAWSTL.hxx b/src/XSDRAWSTL/XSDRAWSTL.hxx index 494e75806d..6e217031ab 100644 --- a/src/XSDRAWSTL/XSDRAWSTL.hxx +++ b/src/XSDRAWSTL/XSDRAWSTL.hxx @@ -25,7 +25,7 @@ class XSDRAWSTL public: Standard_EXPORT static void Init(); - + //! Loads all Draw commands of XSDRAWSTL. Used for plugin. Standard_EXPORT static void Factory(Draw_Interpretor& theDI); }; diff --git a/src/XSDRAWVRML/XSDRAWVRML.cxx b/src/XSDRAWVRML/XSDRAWVRML.cxx index 6a0bc75ff5..440a57741b 100644 --- a/src/XSDRAWVRML/XSDRAWVRML.cxx +++ b/src/XSDRAWVRML/XSDRAWVRML.cxx @@ -11,42 +11,46 @@ // Alternatively, this file may be used under the terms of Open CASCADE // commercial license or contractual agreement. +#include + +#include #include #include -#include -#include #include #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include #include - -#include -#include -#include -#include -#include +#include +#include +#include +#include #include -#include #include -#include -#include +//============================================================================= +//function : parseCoordinateSystem +//purpose : Parse RWMesh_CoordinateSystem enumeration +//============================================================================= +static bool parseCoordinateSystem(const char* theArg, + RWMesh_CoordinateSystem& theSystem) +{ + TCollection_AsciiString aCSStr(theArg); + aCSStr.LowerCase(); + if (aCSStr == "zup") + { + theSystem = RWMesh_CoordinateSystem_Zup; + } + else if (aCSStr == "yup") + { + theSystem = RWMesh_CoordinateSystem_Yup; + } + else + { + return Standard_False; + } + return Standard_True; +} //======================================================================= //function : ReadVrml @@ -67,7 +71,7 @@ static Standard_Integer ReadVrml(Draw_Interpretor& theDI, Standard_Boolean toUseExistingDoc = Standard_False; Standard_CString aDocName = NULL; TCollection_AsciiString aFilePath; - aNode->GlobalParameters.LengthUnit = GetLengthUnit(aDoc); + aNode->GlobalParameters.LengthUnit = XSDRAWBase::GetLengthUnit(aDoc); for (Standard_Integer anArgIt = 1; anArgIt < theNbArgs; anArgIt++) { TCollection_AsciiString anArg(theArgVec[anArgIt]); @@ -151,7 +155,7 @@ static Standard_Integer ReadVrml(Draw_Interpretor& theDI, Handle(Vrml_Provider) aProvider = new Vrml_Provider(aNode); Handle(Draw_ProgressIndicator) aProgress = new Draw_ProgressIndicator(theDI, 1); - Handle(XSControl_WorkSession) aWS = XSDRAW::Session(); + Handle(XSControl_WorkSession) aWS = XSDRAWBase::Session(); if (!aProvider->Read(aFilePath, aDoc, aWS, aProgress->Start())) { theDI << "Error: file reading failed '" << aFilePath << "'\n"; @@ -160,7 +164,7 @@ static Standard_Integer ReadVrml(Draw_Interpretor& theDI, TDataStd_Name::Set(aDoc->GetData()->Root(), aDocName); Handle(DDocStd_DrawDocument) aDD = new DDocStd_DrawDocument(aDoc); Draw::Set(aDocName, aDD); - CollectActiveWorkSessions(aWS, aFilePath, THE_PREVIOUS_WORK_SESSIONS); + XSDRAWBase::CollectActiveWorkSessions(aWS, aFilePath, THE_PREVIOUS_WORK_SESSIONS); return 0; } @@ -193,22 +197,21 @@ static Standard_Integer WriteVrml(Draw_Interpretor& theDI, } Handle(Vrml_ConfigurationNode) aNode = new Vrml_ConfigurationNode(); - aNode->GlobalParameters.LengthUnit = GetLengthUnit(aDoc); + aNode->GlobalParameters.LengthUnit = XSDRAWBase::GetLengthUnit(aDoc); Handle(Vrml_Provider) aProvider = new Vrml_Provider(aNode); Handle(Draw_ProgressIndicator) aProgress = new Draw_ProgressIndicator(theDI, 1); - Handle(XSControl_WorkSession) aWS = XSDRAW::Session(); + Handle(XSControl_WorkSession) aWS = XSDRAWBase::Session(); if (!aProvider->Write(theArgVec[2], aDoc, aWS, aProgress->Start())) { theDI << "Error: file writing failed '" << theArgVec[2] << "'\n"; return 1; } - CollectActiveWorkSessions(aWS, theArgVec[2], THE_PREVIOUS_WORK_SESSIONS); + XSDRAWBase::CollectActiveWorkSessions(aWS, theArgVec[2], THE_PREVIOUS_WORK_SESSIONS); return 0; } - //======================================================================= //function : loadvrml //purpose : @@ -224,12 +227,12 @@ static Standard_Integer loadvrml(Draw_Interpretor& theDI, } Handle(Vrml_ConfigurationNode) aNode = new Vrml_ConfigurationNode(); - aNode->GlobalParameters.LengthUnit = GetLengthUnit(); + aNode->GlobalParameters.LengthUnit = XSDRAWBase::GetLengthUnit(); Handle(Vrml_Provider) aProvider = new Vrml_Provider(aNode); TopoDS_Shape aShape; Handle(Draw_ProgressIndicator) aProgress = new Draw_ProgressIndicator(theDI, 1); - Handle(XSControl_WorkSession) aWS = XSDRAW::Session(); + Handle(XSControl_WorkSession) aWS = XSDRAWBase::Session(); if (!aProvider->Read(theArgVec[2], aShape, aWS, aProgress->Start())) { theDI << "Error: file reading failed '" << theArgVec[2] << "'\n"; @@ -269,7 +272,7 @@ static Standard_Integer writevrml(Draw_Interpretor& theDI, aType = Min(2, aType); Handle(Vrml_ConfigurationNode) aNode = new Vrml_ConfigurationNode(); - aNode->GlobalParameters.LengthUnit = GetLengthUnit(); + aNode->GlobalParameters.LengthUnit = XSDRAWBase::GetLengthUnit(); Handle(Vrml_Provider) aProvider = new Vrml_Provider(aNode); aNode->InternalParameters.WriterVersion = @@ -277,7 +280,7 @@ static Standard_Integer writevrml(Draw_Interpretor& theDI, aNode->InternalParameters.WriteRepresentationType = (Vrml_ConfigurationNode::WriteMode_RepresentationType)aType; - Handle(XSControl_WorkSession) aWS = XSDRAW::Session(); + Handle(XSControl_WorkSession) aWS = XSDRAWBase::Session(); Handle(Draw_ProgressIndicator) aProgress = new Draw_ProgressIndicator(theDI, 1); if (!aProvider->Write(theArgVec[2], aShape, aWS, aProgress->Start())) { @@ -287,7 +290,11 @@ static Standard_Integer writevrml(Draw_Interpretor& theDI, return 0; } -void XSDRAWVRML::InitCommands(Draw_Interpretor& theDI) +//============================================================================= +//function : Factory +//purpose : +//============================================================================= +void XSDRAWVRML::Factory(Draw_Interpretor& theDI) { static Standard_Boolean initactor = Standard_False; if (initactor) diff --git a/src/XSDRAWVRML/XSDRAWVRML.hxx b/src/XSDRAWVRML/XSDRAWVRML.hxx index 8a289dbb78..eb53a85efc 100644 --- a/src/XSDRAWVRML/XSDRAWVRML.hxx +++ b/src/XSDRAWVRML/XSDRAWVRML.hxx @@ -26,7 +26,7 @@ public: Standard_EXPORT static void Init(); - //! Loads all Draw commands of XSDRAWSTL. Used for plugin. + //! Loads all Draw commands of XSDRAWVRML. Used for plugin. Standard_EXPORT static void Factory(Draw_Interpretor& theDI); };