mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2025-04-25 06:22:04 +05:00
PAL12003: Problem when importing IGS geometry. Export to IGES 5.3 (supporting BRep) introduced in GUI.
This commit is contained in:
parent
9af6cf04a1
commit
fef01ebcd4
@ -1,5 +1,5 @@
|
||||
Import: BREP|IGES|STEP
|
||||
Export: BREP|IGES|STEP
|
||||
Export: BREP|IGES|IGES_5_3|STEP
|
||||
|
||||
BREP.Import: libBREPImport.so
|
||||
BREP.Export: libBREPExport.so
|
||||
@ -8,6 +8,10 @@ BREP.Pattern: BREP Files ( *.brep )
|
||||
IGES.Import: libIGESImport.so
|
||||
IGES.Export: libIGESExport.so
|
||||
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.Export: libSTEPExport.so
|
||||
|
@ -44,7 +44,9 @@
|
||||
extern "C"
|
||||
{
|
||||
SALOME_WNT_EXPORT
|
||||
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());
|
||||
|
||||
|
@ -46,6 +46,7 @@ extern "C"
|
||||
{
|
||||
SALOME_WNT_EXPORT
|
||||
TopoDS_Shape Import (const TCollection_AsciiString& theFileName,
|
||||
const TCollection_AsciiString& /*theFormatName*/,
|
||||
TCollection_AsciiString& theError)
|
||||
{
|
||||
MESSAGE("Import BREP from file " << theFileName);
|
||||
|
@ -48,7 +48,9 @@
|
||||
#define UnLoadLib( handle ) dlclose( handle );
|
||||
#endif
|
||||
|
||||
typedef int (*funcPoint)(const TopoDS_Shape&, const TCollection_AsciiString&);
|
||||
typedef int (*funcPoint)(const TopoDS_Shape&,
|
||||
const TCollection_AsciiString&,
|
||||
const TCollection_AsciiString&);
|
||||
|
||||
//=======================================================================
|
||||
//function : GetID
|
||||
@ -91,8 +93,9 @@ Standard_Integer GEOMImpl_ExportDriver::Execute(TFunction_Logbook& log) const
|
||||
|
||||
// retrieve the file and format names
|
||||
TCollection_AsciiString aFileName = aCI.GetFileName();
|
||||
TCollection_AsciiString aFormatName = aCI.GetFormatName();
|
||||
TCollection_AsciiString aLibName = aCI.GetPluginName();
|
||||
if (aFileName.IsEmpty() || aLibName.IsEmpty())
|
||||
if (aFileName.IsEmpty() || aFormatName.IsEmpty() || aLibName.IsEmpty())
|
||||
return 0;
|
||||
|
||||
// load plugin library
|
||||
@ -105,7 +108,7 @@ Standard_Integer GEOMImpl_ExportDriver::Execute(TFunction_Logbook& log) const
|
||||
return 0;
|
||||
|
||||
// perform the export
|
||||
int res = fp( aShape, aFileName );
|
||||
int res = fp( aShape, aFileName, aFormatName );
|
||||
|
||||
// unload plugin library
|
||||
UnLoadLib( anExportLib );
|
||||
|
@ -25,6 +25,7 @@
|
||||
#define EXP_ARG_REF 1
|
||||
#define EXP_ARG_FILE 2
|
||||
#define EXP_ARG_PLUG 3
|
||||
#define EXP_ARG_FORM 4
|
||||
|
||||
class GEOMImpl_IImportExport
|
||||
{
|
||||
@ -36,15 +37,21 @@ class GEOMImpl_IImportExport
|
||||
|
||||
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); }
|
||||
|
||||
void SetPluginName(const TCollection_AsciiString& theFormatName)
|
||||
{ _func->SetString(EXP_ARG_PLUG, theFormatName); }
|
||||
void SetPluginName(const TCollection_AsciiString& thePluginLibName)
|
||||
{ _func->SetString(EXP_ARG_PLUG, thePluginLibName); }
|
||||
|
||||
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:
|
||||
|
||||
Handle(GEOM_Function) _func;
|
||||
|
@ -140,16 +140,17 @@ void GEOMImpl_IInsertOperations::Export
|
||||
//Check if the function is set correctly
|
||||
if (aFunction->GetDriverGUID() != GEOMImpl_ExportDriver::GetID()) return;
|
||||
|
||||
//Set parameters
|
||||
GEOMImpl_IImportExport aCI (aFunction);
|
||||
aCI.SetOriginal(aRefFunction);
|
||||
aCI.SetFileName(theFileName);
|
||||
|
||||
Handle(TCollection_HAsciiString) aHLibName;
|
||||
if (!IsSupported(Standard_False, theFormatName, aHLibName)) {
|
||||
return;
|
||||
}
|
||||
TCollection_AsciiString aLibName = aHLibName->String();
|
||||
|
||||
//Set parameters
|
||||
GEOMImpl_IImportExport aCI (aFunction);
|
||||
aCI.SetOriginal(aRefFunction);
|
||||
aCI.SetFileName(theFileName);
|
||||
aCI.SetFormatName(theFormatName);
|
||||
aCI.SetPluginName(aLibName);
|
||||
|
||||
//Perform the Export
|
||||
@ -195,15 +196,16 @@ Handle(GEOM_Object) GEOMImpl_IInsertOperations::Import
|
||||
//Check if the function is set correctly
|
||||
if (aFunction->GetDriverGUID() != GEOMImpl_ImportDriver::GetID()) return result;
|
||||
|
||||
//Set parameters
|
||||
GEOMImpl_IImportExport aCI (aFunction);
|
||||
aCI.SetFileName(theFileName);
|
||||
|
||||
Handle(TCollection_HAsciiString) aHLibName;
|
||||
if (!IsSupported(Standard_True, theFormatName, aHLibName)) {
|
||||
return result;
|
||||
}
|
||||
TCollection_AsciiString aLibName = aHLibName->String();
|
||||
|
||||
//Set parameters
|
||||
GEOMImpl_IImportExport aCI (aFunction);
|
||||
aCI.SetFileName(theFileName);
|
||||
aCI.SetFormatName(theFormatName);
|
||||
aCI.SetPluginName(aLibName);
|
||||
|
||||
//Perform the Import
|
||||
@ -261,15 +263,19 @@ Standard_Boolean GEOMImpl_IInsertOperations::ImportTranslators
|
||||
// Read Patterns for each supported format
|
||||
int j = 1, len = theFormats->Length();
|
||||
for (; j <= len; j++) {
|
||||
TCollection_AsciiString aPattern;
|
||||
TCollection_AsciiString aKey (theFormats->Value(j));
|
||||
aKey += ".Pattern";
|
||||
TCollection_AsciiString aKey, aPattern;
|
||||
aKey = theFormats->Value(j) + ".ImportPattern";
|
||||
if (myResMgr->Find(aKey.ToCString()))
|
||||
aPattern = myResMgr->Value(aKey.ToCString());
|
||||
else {
|
||||
aKey = theFormats->Value(j) + ".Pattern";
|
||||
if (myResMgr->Find(aKey.ToCString()))
|
||||
aPattern = myResMgr->Value(aKey.ToCString());
|
||||
else {
|
||||
aPattern = theFormats->Value(j);
|
||||
aPattern += " Files ( *.* )";
|
||||
}
|
||||
}
|
||||
thePatterns->Append(aPattern);
|
||||
}
|
||||
|
||||
@ -310,15 +316,19 @@ Standard_Boolean GEOMImpl_IInsertOperations::ExportTranslators
|
||||
// Read Patterns for each supported format
|
||||
int j = 1, len = theFormats->Length();
|
||||
for (; j <= len; j++) {
|
||||
TCollection_AsciiString aPattern;
|
||||
TCollection_AsciiString aKey (theFormats->Value(j));
|
||||
aKey += ".Pattern";
|
||||
TCollection_AsciiString aKey, aPattern;
|
||||
aKey = theFormats->Value(j) + ".ExportPattern";
|
||||
if (myResMgr->Find(aKey.ToCString()))
|
||||
aPattern = myResMgr->Value(aKey.ToCString());
|
||||
else {
|
||||
aKey = theFormats->Value(j) + ".Pattern";
|
||||
if (myResMgr->Find(aKey.ToCString()))
|
||||
aPattern = myResMgr->Value(aKey.ToCString());
|
||||
else {
|
||||
aPattern = theFormats->Value(j);
|
||||
aPattern += " Files ( *.* )";
|
||||
}
|
||||
}
|
||||
thePatterns->Append(aPattern);
|
||||
}
|
||||
|
||||
|
@ -50,7 +50,9 @@
|
||||
#define UnLoadLib( handle ) dlclose( handle );
|
||||
#endif
|
||||
|
||||
typedef TopoDS_Shape (*funcPoint)(const TCollection_AsciiString&, TCollection_AsciiString&);
|
||||
typedef TopoDS_Shape (*funcPoint)(const TCollection_AsciiString&,
|
||||
const TCollection_AsciiString&,
|
||||
TCollection_AsciiString&);
|
||||
|
||||
//=======================================================================
|
||||
//function : GetID
|
||||
@ -85,8 +87,9 @@ Standard_Integer GEOMImpl_ImportDriver::Execute(TFunction_Logbook& log) const
|
||||
|
||||
// retrieve the file and plugin library names
|
||||
TCollection_AsciiString aFileName = aCI.GetFileName();
|
||||
TCollection_AsciiString aFormatName = aCI.GetFormatName();
|
||||
TCollection_AsciiString aLibName = aCI.GetPluginName();
|
||||
if (aFileName.IsEmpty() || aLibName.IsEmpty())
|
||||
if (aFileName.IsEmpty() || aFormatName.IsEmpty() || aLibName.IsEmpty())
|
||||
return 0;
|
||||
|
||||
// load plugin library
|
||||
@ -100,7 +103,7 @@ Standard_Integer GEOMImpl_ImportDriver::Execute(TFunction_Logbook& log) const
|
||||
|
||||
// perform the import
|
||||
TCollection_AsciiString anError;
|
||||
TopoDS_Shape aShape = fp( aFileName, anError );
|
||||
TopoDS_Shape aShape = fp( aFileName, aFormatName, anError );
|
||||
|
||||
// unload plugin library
|
||||
UnLoadLib( anImportLib );
|
||||
|
@ -46,17 +46,26 @@
|
||||
extern "C"
|
||||
{
|
||||
SALOME_WNT_EXPORT
|
||||
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());
|
||||
try
|
||||
{
|
||||
//VRV: OCC 4.0 migration
|
||||
IGESControl_Controller::Init();
|
||||
IGESControl_Writer ICW (Interface_Static::CVal("XSTEP.iges.unit"),
|
||||
Interface_Static::IVal("XSTEP.iges.writebrep.mode"));
|
||||
//VRV: OCC 4.0 migration
|
||||
// define, whether to write only faces (5.1 IGES format)
|
||||
// or shells and solids also (5.3 IGES format)
|
||||
int aBrepMode = 0;
|
||||
if (theFormatName.IsEqual("IGES_5_3"))
|
||||
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);
|
||||
|
||||
// perform shape writing
|
||||
ICW.AddShape( theShape );
|
||||
ICW.ComputeModel();
|
||||
if ( ICW.Write( theFileName.ToCString() ) )
|
||||
|
@ -46,6 +46,7 @@ extern "C"
|
||||
{
|
||||
SALOME_WNT_EXPORT
|
||||
TopoDS_Shape Import (const TCollection_AsciiString& theFileName,
|
||||
const TCollection_AsciiString& /*theFormatName*/,
|
||||
TCollection_AsciiString& theError)
|
||||
{
|
||||
IGESControl_Reader aReader;
|
||||
|
@ -46,7 +46,9 @@
|
||||
extern "C"
|
||||
{
|
||||
SALOME_WNT_EXPORT
|
||||
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());
|
||||
|
||||
|
@ -52,6 +52,7 @@ extern "C"
|
||||
{
|
||||
SALOME_WNT_EXPORT
|
||||
TopoDS_Shape Import (const TCollection_AsciiString& theFileName,
|
||||
const TCollection_AsciiString& /*theFormatName*/,
|
||||
TCollection_AsciiString& theError)
|
||||
{
|
||||
MESSAGE("Import STEP model from file " << theFileName.ToCString());
|
||||
|
Loading…
x
Reference in New Issue
Block a user