From ee86871bed70fb158b624c1c5c92b0e7e4a2fa29 Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 5 Jan 2015 16:28:40 +0100 Subject: [PATCH] + fixes #0000763: Bad IGS import --- src/Mod/Import/App/AppImportPy.cpp | 6 ++++++ src/Mod/Import/Gui/AppImportGuiPy.cpp | 11 +++++++++++ src/Mod/Part/App/ImportIges.cpp | 4 ++++ src/Mod/Part/App/TopoShape.cpp | 3 +++ src/Mod/Part/Gui/DlgImportExportIges.ui | 25 +++++++++++++++++++++---- src/Mod/Part/Gui/DlgSettingsGeneral.cpp | 6 ++++++ 6 files changed, 51 insertions(+), 4 deletions(-) diff --git a/src/Mod/Import/App/AppImportPy.cpp b/src/Mod/Import/App/AppImportPy.cpp index 911da923aaa5..cac2e526141b 100644 --- a/src/Mod/Import/App/AppImportPy.cpp +++ b/src/Mod/Import/App/AppImportPy.cpp @@ -116,10 +116,16 @@ static PyObject * importer(PyObject *self, PyObject *args) } } else if (file.hasExtension("igs") || file.hasExtension("iges")) { + Base::Reference hGrp = App::GetApplication().GetUserParameter() + .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/Part")->GetGroup("IGES"); + try { IGESControl_Controller::Init(); Interface_Static::SetIVal("read.surfacecurve.mode",3); IGESCAFControl_Reader aReader; + // http://www.opencascade.org/org/forum/thread_20603/?forum=3 + aReader.SetReadVisible(hGrp->GetBool("SkipBlankEntities", true) + ? Standard_True : Standard_False); aReader.SetColorMode(true); aReader.SetNameMode(true); aReader.SetLayerMode(true); diff --git a/src/Mod/Import/Gui/AppImportGuiPy.cpp b/src/Mod/Import/Gui/AppImportGuiPy.cpp index 76385f343eeb..2a62ed7b870d 100644 --- a/src/Mod/Import/Gui/AppImportGuiPy.cpp +++ b/src/Mod/Import/Gui/AppImportGuiPy.cpp @@ -157,10 +157,16 @@ static PyObject * importer(PyObject *self, PyObject *args) } } else if (file.hasExtension("igs") || file.hasExtension("iges")) { + Base::Reference hGrp = App::GetApplication().GetUserParameter() + .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/Part")->GetGroup("IGES"); + try { IGESControl_Controller::Init(); Interface_Static::SetIVal("read.surfacecurve.mode",3); IGESCAFControl_Reader aReader; + // http://www.opencascade.org/org/forum/thread_20603/?forum=3 + aReader.SetReadVisible(hGrp->GetBool("SkipBlankEntities", true) + ? Standard_True : Standard_False); aReader.SetColorMode(true); aReader.SetNameMode(true); aReader.SetLayerMode(true); @@ -509,9 +515,14 @@ static PyObject * ocaf(PyObject *self, PyObject *args) pi->EndScope(); } else if (file.hasExtension("igs") || file.hasExtension("iges")) { + Base::Reference hGrp = App::GetApplication().GetUserParameter() + .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/Part")->GetGroup("IGES"); IGESControl_Controller::Init(); Interface_Static::SetIVal("read.surfacecurve.mode",3); IGESCAFControl_Reader aReader; + // http://www.opencascade.org/org/forum/thread_20603/?forum=3 + aReader.SetReadVisible(hGrp->GetBool("SkipBlankEntities", true) + ? Standard_True : Standard_False); aReader.SetColorMode(true); aReader.SetNameMode(true); aReader.SetLayerMode(true); diff --git a/src/Mod/Part/App/ImportIges.cpp b/src/Mod/Part/App/ImportIges.cpp index e8030ee22f0e..a5734616ea57 100644 --- a/src/Mod/Part/App/ImportIges.cpp +++ b/src/Mod/Part/App/ImportIges.cpp @@ -83,6 +83,10 @@ int Part::ImportIgesParts(App::Document *pcDoc, const char* FileName) if (aReader.ReadFile((const Standard_CString)FileName) != IFSelect_RetDone) throw Base::Exception("Error in reading IGES"); + // Ignore construction elements + // http://www.opencascade.org/org/forum/thread_20603/?forum=3 + aReader.SetReadVisible(Standard_True); + // check file conformity and output stats aReader.PrintCheckLoad(Standard_True,IFSelect_GeneralInfo); diff --git a/src/Mod/Part/App/TopoShape.cpp b/src/Mod/Part/App/TopoShape.cpp index ecbe917b441d..00f12d4319fc 100644 --- a/src/Mod/Part/App/TopoShape.cpp +++ b/src/Mod/Part/App/TopoShape.cpp @@ -573,6 +573,9 @@ void TopoShape::importIges(const char *FileName) IGESControl_Controller::Init(); Interface_Static::SetIVal("read.surfacecurve.mode",3); IGESControl_Reader aReader; + // Ignore construction elements + // http://www.opencascade.org/org/forum/thread_20603/?forum=3 + aReader.SetReadVisible(Standard_True); if (aReader.ReadFile(encodeFilename(FileName).c_str()) != IFSelect_RetDone) throw Base::Exception("Error in reading IGES"); diff --git a/src/Mod/Part/Gui/DlgImportExportIges.ui b/src/Mod/Part/Gui/DlgImportExportIges.ui index 07cbfa859a38..551016de19d3 100644 --- a/src/Mod/Part/Gui/DlgImportExportIges.ui +++ b/src/Mod/Part/Gui/DlgImportExportIges.ui @@ -6,14 +6,14 @@ 0 0 - 445 - 270 + 515 + 349 IGES - + @@ -70,6 +70,22 @@ + + + Import + + + + + + Skip blank entities + + + + + + + Header @@ -108,7 +124,7 @@ - + Qt::Vertical @@ -126,6 +142,7 @@ comboBoxUnits checkBrepMode + checkSkipBlank lineEditCompany lineEditAuthor lineEditProduct diff --git a/src/Mod/Part/Gui/DlgSettingsGeneral.cpp b/src/Mod/Part/Gui/DlgSettingsGeneral.cpp index b32670170ce1..9bf888dffc0b 100644 --- a/src/Mod/Part/Gui/DlgSettingsGeneral.cpp +++ b/src/Mod/Part/Gui/DlgSettingsGeneral.cpp @@ -120,6 +120,9 @@ void DlgImportExportIges::saveSettings() hGrp->SetBool("BrepMode", ui->checkBrepMode->isChecked()); Interface_Static::SetIVal("write.iges.brep.mode",ui->checkBrepMode->isChecked() ? 1 : 0); + // Import + hGrp->SetBool("SkipBlankEntities", ui->checkSkipBlank->isChecked()); + // header info hGrp->SetASCII("Company", ui->lineEditCompany->text().toLatin1()); hGrp->SetASCII("Author", ui->lineEditAuthor->text().toLatin1()); @@ -141,6 +144,9 @@ void DlgImportExportIges::loadSettings() bool brep = hGrp->GetBool("BrepMode", value > 0); ui->checkBrepMode->setChecked(brep); + // Import + ui->checkSkipBlank->setChecked(hGrp->GetBool("SkipBlankEntities", true)); + // header info ui->lineEditCompany->setText(QString::fromStdString(hGrp->GetASCII("Company", Interface_Static::CVal("write.iges.header.company"))));