mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2025-03-24 11:17:56 +05:00
PAL12003: Problem when importing IGS geometry. Export to IGES 5.3 (supporting BRep) introduced in GUI.
This commit is contained in:
parent
b3bc1fb824
commit
9c64633f71
@ -1,5 +1,5 @@
|
|||||||
Import: BREP|IGES|STEP
|
Import: BREP|IGES|STEP
|
||||||
Export: BREP|IGES|STEP
|
Export: BREP|IGES|IGES_5_3|STEP
|
||||||
|
|
||||||
BREP.Import: libBREPImport.so
|
BREP.Import: libBREPImport.so
|
||||||
BREP.Export: libBREPExport.so
|
BREP.Export: libBREPExport.so
|
||||||
@ -8,6 +8,10 @@ BREP.Pattern: BREP Files ( *.brep )
|
|||||||
IGES.Import: libIGESImport.so
|
IGES.Import: libIGESImport.so
|
||||||
IGES.Export: libIGESExport.so
|
IGES.Export: libIGESExport.so
|
||||||
IGES.Pattern: IGES Files ( *.iges *.igs )
|
IGES.Pattern: IGES Files ( *.iges *.igs )
|
||||||
|
IGES.ExportPattern: IGES 5.1 Files ( *.iges *.igs )
|
||||||
|
|
||||||
|
IGES_5_3.Export: libIGESExport.so
|
||||||
|
IGES_5_3.Pattern: IGES 5.3 Files ( *.iges *.igs )
|
||||||
|
|
||||||
STEP.Import: libSTEPImport.so
|
STEP.Import: libSTEPImport.so
|
||||||
STEP.Export: libSTEPExport.so
|
STEP.Export: libSTEPExport.so
|
||||||
|
@ -21,7 +21,9 @@ extern "C"
|
|||||||
#ifdef WNT
|
#ifdef WNT
|
||||||
__declspec(__dllexport)
|
__declspec(__dllexport)
|
||||||
#endif
|
#endif
|
||||||
int Export(const TopoDS_Shape& theShape, const TCollection_AsciiString& theFileName)
|
int Export(const TopoDS_Shape& theShape,
|
||||||
|
const TCollection_AsciiString& theFileName,
|
||||||
|
const TCollection_AsciiString& /*theFormatName*/)
|
||||||
{
|
{
|
||||||
MESSAGE("Export BREP into file " << theFileName.ToCString());
|
MESSAGE("Export BREP into file " << theFileName.ToCString());
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@ extern "C"
|
|||||||
__declspec(__dllexport)
|
__declspec(__dllexport)
|
||||||
#endif
|
#endif
|
||||||
TopoDS_Shape Import (const TCollection_AsciiString& theFileName,
|
TopoDS_Shape Import (const TCollection_AsciiString& theFileName,
|
||||||
|
const TCollection_AsciiString& /*theFormatName*/,
|
||||||
TCollection_AsciiString& theError)
|
TCollection_AsciiString& theError)
|
||||||
{
|
{
|
||||||
MESSAGE("Import BREP from file " << theFileName);
|
MESSAGE("Import BREP from file " << theFileName);
|
||||||
|
@ -28,7 +28,9 @@ using namespace std;
|
|||||||
#define UnLoadLib( handle ) dlclose( handle );
|
#define UnLoadLib( handle ) dlclose( handle );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef int (*funcPoint)(const TopoDS_Shape&, const TCollection_AsciiString&);
|
typedef int (*funcPoint)(const TopoDS_Shape&,
|
||||||
|
const TCollection_AsciiString&,
|
||||||
|
const TCollection_AsciiString&);
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : GetID
|
//function : GetID
|
||||||
@ -70,9 +72,10 @@ Standard_Integer GEOMImpl_ExportDriver::Execute(TFunction_Logbook& log) const
|
|||||||
aFunction->SetValue(aShape);
|
aFunction->SetValue(aShape);
|
||||||
|
|
||||||
// retrieve the file and format names
|
// retrieve the file and format names
|
||||||
TCollection_AsciiString aFileName = aCI.GetFileName();
|
TCollection_AsciiString aFileName = aCI.GetFileName();
|
||||||
TCollection_AsciiString aLibName = aCI.GetPluginName();
|
TCollection_AsciiString aFormatName = aCI.GetFormatName();
|
||||||
if (aFileName.IsEmpty() || aLibName.IsEmpty())
|
TCollection_AsciiString aLibName = aCI.GetPluginName();
|
||||||
|
if (aFileName.IsEmpty() || aFormatName.IsEmpty() || aLibName.IsEmpty())
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
// load plugin library
|
// load plugin library
|
||||||
@ -85,7 +88,7 @@ Standard_Integer GEOMImpl_ExportDriver::Execute(TFunction_Logbook& log) const
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
// perform the export
|
// perform the export
|
||||||
int res = fp( aShape, aFileName );
|
int res = fp( aShape, aFileName, aFormatName );
|
||||||
|
|
||||||
// unload plugin library
|
// unload plugin library
|
||||||
UnLoadLib( anExportLib );
|
UnLoadLib( anExportLib );
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#define EXP_ARG_REF 1
|
#define EXP_ARG_REF 1
|
||||||
#define EXP_ARG_FILE 2
|
#define EXP_ARG_FILE 2
|
||||||
#define EXP_ARG_PLUG 3
|
#define EXP_ARG_PLUG 3
|
||||||
|
#define EXP_ARG_FORM 4
|
||||||
|
|
||||||
class GEOMImpl_IImportExport
|
class GEOMImpl_IImportExport
|
||||||
{
|
{
|
||||||
@ -17,15 +18,21 @@ class GEOMImpl_IImportExport
|
|||||||
|
|
||||||
Handle(GEOM_Function) GetOriginal() { return _func->GetReference(EXP_ARG_REF); }
|
Handle(GEOM_Function) GetOriginal() { return _func->GetReference(EXP_ARG_REF); }
|
||||||
|
|
||||||
void SetFileName(const TCollection_AsciiString& theFileName) { _func->SetString(EXP_ARG_FILE, theFileName); }
|
void SetFileName(const TCollection_AsciiString& theFileName)
|
||||||
|
{ _func->SetString(EXP_ARG_FILE, theFileName); }
|
||||||
|
|
||||||
TCollection_AsciiString GetFileName() { return _func->GetString(EXP_ARG_FILE); }
|
TCollection_AsciiString GetFileName() { return _func->GetString(EXP_ARG_FILE); }
|
||||||
|
|
||||||
void SetPluginName(const TCollection_AsciiString& theFormatName)
|
void SetPluginName(const TCollection_AsciiString& thePluginLibName)
|
||||||
{ _func->SetString(EXP_ARG_PLUG, theFormatName); }
|
{ _func->SetString(EXP_ARG_PLUG, thePluginLibName); }
|
||||||
|
|
||||||
TCollection_AsciiString GetPluginName() { return _func->GetString(EXP_ARG_PLUG); }
|
TCollection_AsciiString GetPluginName() { return _func->GetString(EXP_ARG_PLUG); }
|
||||||
|
|
||||||
|
void SetFormatName(const TCollection_AsciiString& theFormatName)
|
||||||
|
{ _func->SetString(EXP_ARG_FORM, theFormatName); }
|
||||||
|
|
||||||
|
TCollection_AsciiString GetFormatName() { return _func->GetString(EXP_ARG_FORM); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
Handle(GEOM_Function) _func;
|
Handle(GEOM_Function) _func;
|
||||||
|
@ -126,18 +126,19 @@ void GEOMImpl_IInsertOperations::Export
|
|||||||
//Check if the function is set correctly
|
//Check if the function is set correctly
|
||||||
if (aFunction->GetDriverGUID() != GEOMImpl_ExportDriver::GetID()) return;
|
if (aFunction->GetDriverGUID() != GEOMImpl_ExportDriver::GetID()) return;
|
||||||
|
|
||||||
//Set parameters
|
|
||||||
GEOMImpl_IImportExport aCI (aFunction);
|
|
||||||
aCI.SetOriginal(aRefFunction);
|
|
||||||
char* aFileName = (char*)theFileName;
|
|
||||||
aCI.SetFileName(aFileName);
|
|
||||||
|
|
||||||
char* aFormatName = (char*)theFormatName;
|
char* aFormatName = (char*)theFormatName;
|
||||||
Handle(TCollection_HAsciiString) aHLibName;
|
Handle(TCollection_HAsciiString) aHLibName;
|
||||||
if (!IsSupported(Standard_False, aFormatName, aHLibName)) {
|
if (!IsSupported(Standard_False, aFormatName, aHLibName)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
TCollection_AsciiString aLibName = aHLibName->String();
|
TCollection_AsciiString aLibName = aHLibName->String();
|
||||||
|
|
||||||
|
//Set parameters
|
||||||
|
GEOMImpl_IImportExport aCI (aFunction);
|
||||||
|
aCI.SetOriginal(aRefFunction);
|
||||||
|
char* aFileName = (char*)theFileName;
|
||||||
|
aCI.SetFileName(aFileName);
|
||||||
|
aCI.SetFormatName(aFormatName);
|
||||||
aCI.SetPluginName(aLibName);
|
aCI.SetPluginName(aLibName);
|
||||||
|
|
||||||
//Perform the Export
|
//Perform the Export
|
||||||
@ -189,17 +190,18 @@ Handle(GEOM_Object) GEOMImpl_IInsertOperations::Import
|
|||||||
//Check if the function is set correctly
|
//Check if the function is set correctly
|
||||||
if (aFunction->GetDriverGUID() != GEOMImpl_ImportDriver::GetID()) return result;
|
if (aFunction->GetDriverGUID() != GEOMImpl_ImportDriver::GetID()) return result;
|
||||||
|
|
||||||
//Set parameters
|
|
||||||
GEOMImpl_IImportExport aCI (aFunction);
|
|
||||||
char* aFileName = (char*)theFileName;
|
|
||||||
aCI.SetFileName(aFileName);
|
|
||||||
|
|
||||||
char* aFormatName = (char*)theFormatName;
|
char* aFormatName = (char*)theFormatName;
|
||||||
Handle(TCollection_HAsciiString) aHLibName;
|
Handle(TCollection_HAsciiString) aHLibName;
|
||||||
if (!IsSupported(Standard_True, aFormatName, aHLibName)) {
|
if (!IsSupported(Standard_True, aFormatName, aHLibName)) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
TCollection_AsciiString aLibName = aHLibName->String();
|
TCollection_AsciiString aLibName = aHLibName->String();
|
||||||
|
|
||||||
|
//Set parameters
|
||||||
|
GEOMImpl_IImportExport aCI (aFunction);
|
||||||
|
char* aFileName = (char*)theFileName;
|
||||||
|
aCI.SetFileName(aFileName);
|
||||||
|
aCI.SetFormatName(aFormatName);
|
||||||
aCI.SetPluginName(aLibName);
|
aCI.SetPluginName(aLibName);
|
||||||
|
|
||||||
//Perform the Import
|
//Perform the Import
|
||||||
@ -262,14 +264,18 @@ Standard_Boolean GEOMImpl_IInsertOperations::ImportTranslators
|
|||||||
// Read Patterns for each supported format
|
// Read Patterns for each supported format
|
||||||
int j = 1, len = theFormats->Length();
|
int j = 1, len = theFormats->Length();
|
||||||
for (; j <= len; j++) {
|
for (; j <= len; j++) {
|
||||||
TCollection_AsciiString aPattern;
|
TCollection_AsciiString aKey, aPattern;
|
||||||
TCollection_AsciiString aKey (theFormats->Value(j));
|
aKey = theFormats->Value(j) + ".ImportPattern";
|
||||||
aKey += ".Pattern";
|
|
||||||
if (myResMgr->Find(aKey.ToCString()))
|
if (myResMgr->Find(aKey.ToCString()))
|
||||||
aPattern = myResMgr->Value(aKey.ToCString());
|
aPattern = myResMgr->Value(aKey.ToCString());
|
||||||
else {
|
else {
|
||||||
aPattern = theFormats->Value(j);
|
aKey = theFormats->Value(j) + ".Pattern";
|
||||||
aPattern += " Files ( *.* )";
|
if (myResMgr->Find(aKey.ToCString()))
|
||||||
|
aPattern = myResMgr->Value(aKey.ToCString());
|
||||||
|
else {
|
||||||
|
aPattern = theFormats->Value(j);
|
||||||
|
aPattern += " Files ( *.* )";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
thePatterns->Append(aPattern);
|
thePatterns->Append(aPattern);
|
||||||
}
|
}
|
||||||
@ -311,14 +317,18 @@ Standard_Boolean GEOMImpl_IInsertOperations::ExportTranslators
|
|||||||
// Read Patterns for each supported format
|
// Read Patterns for each supported format
|
||||||
int j = 1, len = theFormats->Length();
|
int j = 1, len = theFormats->Length();
|
||||||
for (; j <= len; j++) {
|
for (; j <= len; j++) {
|
||||||
TCollection_AsciiString aPattern;
|
TCollection_AsciiString aKey, aPattern;
|
||||||
TCollection_AsciiString aKey (theFormats->Value(j));
|
aKey = theFormats->Value(j) + ".ExportPattern";
|
||||||
aKey += ".Pattern";
|
|
||||||
if (myResMgr->Find(aKey.ToCString()))
|
if (myResMgr->Find(aKey.ToCString()))
|
||||||
aPattern = myResMgr->Value(aKey.ToCString());
|
aPattern = myResMgr->Value(aKey.ToCString());
|
||||||
else {
|
else {
|
||||||
aPattern = theFormats->Value(j);
|
aKey = theFormats->Value(j) + ".Pattern";
|
||||||
aPattern += " Files ( *.* )";
|
if (myResMgr->Find(aKey.ToCString()))
|
||||||
|
aPattern = myResMgr->Value(aKey.ToCString());
|
||||||
|
else {
|
||||||
|
aPattern = theFormats->Value(j);
|
||||||
|
aPattern += " Files ( *.* )";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
thePatterns->Append(aPattern);
|
thePatterns->Append(aPattern);
|
||||||
}
|
}
|
||||||
|
@ -30,7 +30,9 @@ using namespace std;
|
|||||||
#define UnLoadLib( handle ) dlclose( handle );
|
#define UnLoadLib( handle ) dlclose( handle );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef TopoDS_Shape (*funcPoint)(const TCollection_AsciiString&, TCollection_AsciiString&);
|
typedef TopoDS_Shape (*funcPoint)(const TCollection_AsciiString&,
|
||||||
|
const TCollection_AsciiString&,
|
||||||
|
TCollection_AsciiString&);
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : GetID
|
//function : GetID
|
||||||
@ -64,9 +66,10 @@ Standard_Integer GEOMImpl_ImportDriver::Execute(TFunction_Logbook& log) const
|
|||||||
//Standard_Integer aType = aFunction->GetType();
|
//Standard_Integer aType = aFunction->GetType();
|
||||||
|
|
||||||
// retrieve the file and plugin library names
|
// retrieve the file and plugin library names
|
||||||
TCollection_AsciiString aFileName = aCI.GetFileName();
|
TCollection_AsciiString aFileName = aCI.GetFileName();
|
||||||
TCollection_AsciiString aLibName = aCI.GetPluginName();
|
TCollection_AsciiString aFormatName = aCI.GetFormatName();
|
||||||
if (aFileName.IsEmpty() || aLibName.IsEmpty())
|
TCollection_AsciiString aLibName = aCI.GetPluginName();
|
||||||
|
if (aFileName.IsEmpty() || aFormatName.IsEmpty() || aLibName.IsEmpty())
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
// load plugin library
|
// load plugin library
|
||||||
@ -80,7 +83,7 @@ Standard_Integer GEOMImpl_ImportDriver::Execute(TFunction_Logbook& log) const
|
|||||||
|
|
||||||
// perform the import
|
// perform the import
|
||||||
TCollection_AsciiString anError;
|
TCollection_AsciiString anError;
|
||||||
TopoDS_Shape aShape = fp( aFileName, anError );
|
TopoDS_Shape aShape = fp( aFileName, aFormatName, anError );
|
||||||
|
|
||||||
// unload plugin library
|
// unload plugin library
|
||||||
UnLoadLib( anImportLib );
|
UnLoadLib( anImportLib );
|
||||||
|
@ -23,26 +23,35 @@ extern "C"
|
|||||||
#ifdef WNT
|
#ifdef WNT
|
||||||
__declspec(__dllexport)
|
__declspec(__dllexport)
|
||||||
#endif
|
#endif
|
||||||
int Export(const TopoDS_Shape& theShape, const TCollection_AsciiString& theFileName)
|
int Export(const TopoDS_Shape& theShape,
|
||||||
|
const TCollection_AsciiString& theFileName,
|
||||||
|
const TCollection_AsciiString& theFormatName)
|
||||||
{
|
{
|
||||||
MESSAGE("Export IGES into file " << theFileName.ToCString());
|
MESSAGE("Export IGES into file " << theFileName.ToCString());
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
//VRV: OCC 4.0 migration
|
// define, whether to write only faces (5.1 IGES format)
|
||||||
IGESControl_Controller::Init();
|
// or shells and solids also (5.3 IGES format)
|
||||||
IGESControl_Writer ICW (Interface_Static::CVal("XSTEP.iges.unit"),
|
int aBrepMode = 0;
|
||||||
Interface_Static::IVal("XSTEP.iges.writebrep.mode"));
|
if (theFormatName.IsEqual("IGES_5_3"))
|
||||||
//VRV: OCC 4.0 migration
|
aBrepMode = 1;
|
||||||
|
|
||||||
|
// initialize writer
|
||||||
|
IGESControl_Controller::Init();
|
||||||
|
//IGESControl_Writer ICW (Interface_Static::CVal("write.iges.unit"),
|
||||||
|
// Interface_Static::IVal("write.iges.brep.mode"));
|
||||||
|
IGESControl_Writer ICW (Interface_Static::CVal("write.iges.unit"), aBrepMode);
|
||||||
|
|
||||||
ICW.AddShape( theShape );
|
// perform shape writing
|
||||||
ICW.ComputeModel();
|
ICW.AddShape( theShape );
|
||||||
if ( ICW.Write( theFileName.ToCString() ) )
|
ICW.ComputeModel();
|
||||||
return 1;
|
if ( ICW.Write( theFileName.ToCString() ) )
|
||||||
}
|
return 1;
|
||||||
|
}
|
||||||
catch(Standard_Failure)
|
catch(Standard_Failure)
|
||||||
{
|
{
|
||||||
//THROW_SALOME_CORBA_EXCEPTION("Exception catched in IGESExport", SALOME::BAD_PARAM);
|
//THROW_SALOME_CORBA_EXCEPTION("Exception catched in IGESExport", SALOME::BAD_PARAM);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@ extern "C"
|
|||||||
__declspec(__dllexport)
|
__declspec(__dllexport)
|
||||||
#endif
|
#endif
|
||||||
TopoDS_Shape Import (const TCollection_AsciiString& theFileName,
|
TopoDS_Shape Import (const TCollection_AsciiString& theFileName,
|
||||||
|
const TCollection_AsciiString& /*theFormatName*/,
|
||||||
TCollection_AsciiString& theError)
|
TCollection_AsciiString& theError)
|
||||||
{
|
{
|
||||||
IGESControl_Reader aReader;
|
IGESControl_Reader aReader;
|
||||||
|
@ -23,7 +23,9 @@ extern "C"
|
|||||||
#ifdef WNT
|
#ifdef WNT
|
||||||
__declspec(__dllexport)
|
__declspec(__dllexport)
|
||||||
#endif
|
#endif
|
||||||
int Export(const TopoDS_Shape& theShape, const TCollection_AsciiString& theFileName)
|
int Export(const TopoDS_Shape& theShape,
|
||||||
|
const TCollection_AsciiString& theFileName,
|
||||||
|
const TCollection_AsciiString& /*theFormatName*/)
|
||||||
{
|
{
|
||||||
MESSAGE("Export STEP into file " << theFileName.ToCString());
|
MESSAGE("Export STEP into file " << theFileName.ToCString());
|
||||||
|
|
||||||
|
@ -29,6 +29,7 @@ extern "C"
|
|||||||
__declspec(__dllexport)
|
__declspec(__dllexport)
|
||||||
#endif
|
#endif
|
||||||
TopoDS_Shape Import (const TCollection_AsciiString& theFileName,
|
TopoDS_Shape Import (const TCollection_AsciiString& theFileName,
|
||||||
|
const TCollection_AsciiString& /*theFormatName*/,
|
||||||
TCollection_AsciiString& theError)
|
TCollection_AsciiString& theError)
|
||||||
{
|
{
|
||||||
MESSAGE("Import STEP model from file " << theFileName.ToCString());
|
MESSAGE("Import STEP model from file " << theFileName.ToCString());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user