mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2024-11-14 09:38:34 +05:00
0023125: EDF 11112 GEOM: Choose the unity of length when exporting to STEP
This commit is contained in:
parent
f83b8bcd3a
commit
80a0257573
@ -24,6 +24,23 @@
|
|||||||
|
|
||||||
module GEOM
|
module GEOM
|
||||||
{
|
{
|
||||||
|
/*!
|
||||||
|
* \brief Units of length
|
||||||
|
*/
|
||||||
|
enum length_unit
|
||||||
|
{
|
||||||
|
LU_INCH,
|
||||||
|
LU_MILLIMETER,
|
||||||
|
LU_FOOT,
|
||||||
|
LU_MILE,
|
||||||
|
LU_METER,
|
||||||
|
LU_KILOMETER,
|
||||||
|
LU_MILLIINCH,
|
||||||
|
LU_MICROMETER,
|
||||||
|
LU_CENTIMETER,
|
||||||
|
LU_MICROINCH
|
||||||
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Interface for STEPPlugin modeling functions.
|
* \brief Interface for STEPPlugin modeling functions.
|
||||||
*/
|
*/
|
||||||
@ -34,9 +51,11 @@ module GEOM
|
|||||||
*
|
*
|
||||||
* \param theObject Shape to be stored in the file.
|
* \param theObject Shape to be stored in the file.
|
||||||
* \param theFileName Name of the file to store the given shape in.
|
* \param theFileName Name of the file to store the given shape in.
|
||||||
|
* \param theUnit the length unit.
|
||||||
*/
|
*/
|
||||||
void ExportSTEP( in GEOM::GEOM_Object theObject,
|
void ExportSTEP( in GEOM::GEOM_Object theObject,
|
||||||
in string theFileName );
|
in string theFileName,
|
||||||
|
in GEOM::length_unit theUnit);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Import a shape from the STEP file.
|
* \brief Import a shape from the STEP file.
|
||||||
|
@ -3563,7 +3563,10 @@ void GEOM_Superv_i::ExportSTEP( GEOM::GEOM_Object_ptr theObject,
|
|||||||
beginService( " GEOM_Superv_i::ExportSTEP" );
|
beginService( " GEOM_Superv_i::ExportSTEP" );
|
||||||
MESSAGE("GEOM_Superv_i::ExportSTEP");
|
MESSAGE("GEOM_Superv_i::ExportSTEP");
|
||||||
getSTEPPluginOp();
|
getSTEPPluginOp();
|
||||||
mySTEPOp->ExportSTEP( theObject, theFileName );
|
|
||||||
|
const GEOM::length_unit aUnit = GEOM::LU_METER;
|
||||||
|
|
||||||
|
mySTEPOp->ExportSTEP( theObject, theFileName, aUnit );
|
||||||
endService( " GEOM_Superv_i::ExportSTEP" );
|
endService( " GEOM_Superv_i::ExportSTEP" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
from GEOM import ISTEPOperations
|
from GEOM import ISTEPOperations
|
||||||
|
import GEOM
|
||||||
|
|
||||||
# Engine Library Name
|
# Engine Library Name
|
||||||
__libraryName__ = "STEPPluginEngine"
|
__libraryName__ = "STEPPluginEngine"
|
||||||
@ -30,17 +31,19 @@ def GetSTEPPluginOperations(self):
|
|||||||
## Export the given shape into a file with given name in STEP format.
|
## Export the given shape into a file with given name in STEP format.
|
||||||
# @param theObject Shape to be stored in the file.
|
# @param theObject Shape to be stored in the file.
|
||||||
# @param theFileName Name of the file to store the given shape in.
|
# @param theFileName Name of the file to store the given shape in.
|
||||||
|
# @param theUnit the length unit (see GEOM::length_unit). In meters by default.
|
||||||
# @ingroup l2_import_export
|
# @ingroup l2_import_export
|
||||||
def ExportSTEP(self, theObject, theFileName):
|
def ExportSTEP(self, theObject, theFileName, theUnit=GEOM.LU_METER):
|
||||||
"""
|
"""
|
||||||
Export the given shape into a file with given name in STEP format.
|
Export the given shape into a file with given name in STEP format.
|
||||||
|
|
||||||
Parameters:
|
Parameters:
|
||||||
theObject Shape to be stored in the file.
|
theObject Shape to be stored in the file.
|
||||||
theFileName Name of the file to store the given shape in.
|
theFileName Name of the file to store the given shape in.
|
||||||
|
theUnit the length unit (see GEOM::length_unit). In meters by default.
|
||||||
"""
|
"""
|
||||||
anOp = GetSTEPPluginOperations(self)
|
anOp = GetSTEPPluginOperations(self)
|
||||||
anOp.ExportSTEP(theObject, theFileName)
|
anOp.ExportSTEP(theObject, theFileName, theUnit)
|
||||||
if anOp.IsDone() == 0:
|
if anOp.IsDone() == 0:
|
||||||
raise RuntimeError, "Export : " + anOp.GetErrorCode()
|
raise RuntimeError, "Export : " + anOp.GetErrorCode()
|
||||||
pass
|
pass
|
||||||
|
@ -95,6 +95,7 @@ SET(STEPPluginEngine_HEADERS
|
|||||||
STEPPlugin_IExport.hxx
|
STEPPlugin_IExport.hxx
|
||||||
STEPPlugin_IImport.hxx
|
STEPPlugin_IImport.hxx
|
||||||
STEPPlugin_ImportDriver.hxx
|
STEPPlugin_ImportDriver.hxx
|
||||||
|
STEPPlugin_ExportDlg.h
|
||||||
STEPPlugin_ExportDriver.hxx
|
STEPPlugin_ExportDriver.hxx
|
||||||
STEPPlugin_IECallBack.hxx
|
STEPPlugin_IECallBack.hxx
|
||||||
)
|
)
|
||||||
@ -103,6 +104,7 @@ IF(SALOME_BUILD_GUI)
|
|||||||
# header files / to be processed by moc
|
# header files / to be processed by moc
|
||||||
SET(_moc_HEADERS
|
SET(_moc_HEADERS
|
||||||
STEPPlugin_GUI.h
|
STEPPlugin_GUI.h
|
||||||
|
STEPPlugin_ExportDlg.h
|
||||||
)
|
)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
@ -114,6 +116,7 @@ IF(SALOME_BUILD_GUI)
|
|||||||
|
|
||||||
SET(STEPPluginGUI_SOURCES
|
SET(STEPPluginGUI_SOURCES
|
||||||
STEPPlugin_GUI.cxx
|
STEPPlugin_GUI.cxx
|
||||||
|
STEPPlugin_ExportDlg.cxx
|
||||||
${_moc_SOURCES}
|
${_moc_SOURCES}
|
||||||
)
|
)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
109
src/STEPPlugin/STEPPlugin_ExportDlg.cxx
Normal file
109
src/STEPPlugin/STEPPlugin_ExportDlg.cxx
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
// Copyright (C) 2014-2015 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "STEPPlugin_ExportDlg.h"
|
||||||
|
|
||||||
|
#include <QApplication>
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QLayout>
|
||||||
|
#include <QComboBox>
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
// Constructor
|
||||||
|
//=============================================================================
|
||||||
|
STEPPlugin_ExportDlg::STEPPlugin_ExportDlg(QWidget *parent)
|
||||||
|
: SUIT_FileDlg (parent, false, true, true),
|
||||||
|
myUnitCB (0)
|
||||||
|
{
|
||||||
|
QLabel* aUnitLabel = new QLabel(tr("STEP_LENGTH_UNITS"), this);
|
||||||
|
|
||||||
|
myUnitCB = new QComboBox(this);
|
||||||
|
myUnitCB->addItem(tr("STEP_UNITS_KILOMETER"), GEOM::LU_KILOMETER);
|
||||||
|
myUnitCB->addItem(tr("STEP_UNITS_METER"), GEOM::LU_METER);
|
||||||
|
myUnitCB->addItem(tr("STEP_UNITS_CENTIMETER"), GEOM::LU_CENTIMETER);
|
||||||
|
myUnitCB->addItem(tr("STEP_UNITS_MILLIMETER"), GEOM::LU_MILLIMETER);
|
||||||
|
myUnitCB->addItem(tr("STEP_UNITS_MICROMETER"), GEOM::LU_MICROMETER);
|
||||||
|
myUnitCB->addItem(tr("STEP_UNITS_MILE"), GEOM::LU_MILE);
|
||||||
|
myUnitCB->addItem(tr("STEP_UNITS_FOOT"), GEOM::LU_FOOT);
|
||||||
|
myUnitCB->addItem(tr("STEP_UNITS_INCH"), GEOM::LU_INCH);
|
||||||
|
myUnitCB->addItem(tr("STEP_UNITS_MILLIINCH"), GEOM::LU_MILLIINCH);
|
||||||
|
myUnitCB->addItem(tr("STEP_UNITS_MICROINCH"), GEOM::LU_MICROINCH);
|
||||||
|
|
||||||
|
// Meters by default.
|
||||||
|
myUnitCB->setCurrentIndex(1);
|
||||||
|
|
||||||
|
layout()->addWidget(aUnitLabel);
|
||||||
|
layout()->addWidget(myUnitCB);
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
// Destructor
|
||||||
|
//=============================================================================
|
||||||
|
STEPPlugin_ExportDlg::~STEPPlugin_ExportDlg()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
// getUnits
|
||||||
|
//=============================================================================
|
||||||
|
GEOM::length_unit STEPPlugin_ExportDlg::getUnits() const
|
||||||
|
{
|
||||||
|
const GEOM::length_unit anUnit =
|
||||||
|
(GEOM::length_unit) myUnitCB->itemData(myUnitCB->currentIndex()).toInt();
|
||||||
|
|
||||||
|
return anUnit;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
// getFileName
|
||||||
|
//=============================================================================
|
||||||
|
QString STEPPlugin_ExportDlg::getFileName(const QString &theInitial,
|
||||||
|
const QString &theFilters,
|
||||||
|
const QString &theCaption,
|
||||||
|
QWidget *theParent,
|
||||||
|
GEOM::length_unit &theUnits)
|
||||||
|
{
|
||||||
|
QStringList aFls = theFilters.split(";;", QString::SkipEmptyParts);
|
||||||
|
QString aTmpFileName = theInitial;
|
||||||
|
|
||||||
|
aTmpFileName = aTmpFileName.simplified();
|
||||||
|
aTmpFileName =
|
||||||
|
aTmpFileName.replace(QRegExp("\\*"), "").replace(QRegExp("\\?"), "");
|
||||||
|
|
||||||
|
STEPPlugin_ExportDlg aDlg(theParent);
|
||||||
|
|
||||||
|
aDlg.setFileMode(AnyFile);
|
||||||
|
aDlg.setFilters(aFls);
|
||||||
|
aDlg.setWindowTitle(theCaption);
|
||||||
|
|
||||||
|
if (!aTmpFileName.isEmpty()) {
|
||||||
|
aDlg.processPath(aTmpFileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
QString aFileName;
|
||||||
|
|
||||||
|
if (aDlg.exec() == QDialog::Accepted) {
|
||||||
|
aFileName = aDlg.selectedFile();
|
||||||
|
theUnits = aDlg.getUnits();
|
||||||
|
}
|
||||||
|
|
||||||
|
QApplication::processEvents();
|
||||||
|
|
||||||
|
return aFileName;
|
||||||
|
}
|
52
src/STEPPlugin/STEPPlugin_ExportDlg.h
Normal file
52
src/STEPPlugin/STEPPlugin_ExportDlg.h
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
// Copyright (C) 2014-2015 CEA/DEN, EDF R&D, OPEN CASCADE
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 2.1 of the License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License along with this library; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
//
|
||||||
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef STEPPlugin_ExportDlg_H
|
||||||
|
#define STEPPlugin_ExportDlg_H
|
||||||
|
|
||||||
|
#include <SUIT_FileDlg.h>
|
||||||
|
#include <SALOMEconfig.h>
|
||||||
|
#include CORBA_CLIENT_HEADER(STEPPlugin)
|
||||||
|
|
||||||
|
class QComboBox;
|
||||||
|
|
||||||
|
class STEPPlugin_ExportDlg: public SUIT_FileDlg
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
STEPPlugin_ExportDlg(QWidget *parent);
|
||||||
|
~STEPPlugin_ExportDlg();
|
||||||
|
|
||||||
|
GEOM::length_unit getUnits() const;
|
||||||
|
|
||||||
|
static QString getFileName(const QString &theInitial,
|
||||||
|
const QString &theFilters,
|
||||||
|
const QString &theCaption,
|
||||||
|
QWidget *theParent,
|
||||||
|
GEOM::length_unit &theUnits);
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
QComboBox *myUnitCB;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // STEPPlugin_ExportDlg_H
|
@ -20,6 +20,7 @@
|
|||||||
// internal includes
|
// internal includes
|
||||||
#include "STEPPlugin_ExportDriver.hxx"
|
#include "STEPPlugin_ExportDriver.hxx"
|
||||||
#include "STEPPlugin_IExport.hxx"
|
#include "STEPPlugin_IExport.hxx"
|
||||||
|
#include "STEPPlugin_IOperations.hxx"
|
||||||
|
|
||||||
// KERNEL includes
|
// KERNEL includes
|
||||||
#include <utilities.h>
|
#include <utilities.h>
|
||||||
@ -74,6 +75,43 @@ Standard_Integer STEPPlugin_ExportDriver::Execute( TFunction_Logbook& log ) cons
|
|||||||
aFunction->SetValue( aShape );
|
aFunction->SetValue( aShape );
|
||||||
|
|
||||||
TCollection_AsciiString aFileName = aData.GetFileName();
|
TCollection_AsciiString aFileName = aData.GetFileName();
|
||||||
|
Standard_Integer anUnit = aData.GetUnit();
|
||||||
|
TCollection_AsciiString aWriteUnit;
|
||||||
|
|
||||||
|
switch (anUnit) {
|
||||||
|
case STEPPlugin_IOperations::LengthUnit_Inch:
|
||||||
|
aWriteUnit = "INCH";
|
||||||
|
break;
|
||||||
|
case STEPPlugin_IOperations::LengthUnit_Millimeter:
|
||||||
|
aWriteUnit = "MM";
|
||||||
|
break;
|
||||||
|
case STEPPlugin_IOperations::LengthUnit_Foot:
|
||||||
|
aWriteUnit = "FT";
|
||||||
|
break;
|
||||||
|
case STEPPlugin_IOperations::LengthUnit_Mile:
|
||||||
|
aWriteUnit = "MI";
|
||||||
|
break;
|
||||||
|
case STEPPlugin_IOperations::LengthUnit_Meter:
|
||||||
|
aWriteUnit = "M";
|
||||||
|
break;
|
||||||
|
case STEPPlugin_IOperations::LengthUnit_Kilometer:
|
||||||
|
aWriteUnit = "KM";
|
||||||
|
break;
|
||||||
|
case STEPPlugin_IOperations::LengthUnit_Milliinch:
|
||||||
|
aWriteUnit = "MIL";
|
||||||
|
break;
|
||||||
|
case STEPPlugin_IOperations::LengthUnit_Micrometer:
|
||||||
|
aWriteUnit = "UM";
|
||||||
|
break;
|
||||||
|
case STEPPlugin_IOperations::LengthUnit_Centimeter:
|
||||||
|
aWriteUnit = "CM";
|
||||||
|
break;
|
||||||
|
case STEPPlugin_IOperations::LengthUnit_Microinch:
|
||||||
|
aWriteUnit = "UIN";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
MESSAGE("Export STEP into file " << aFileName.ToCString());
|
MESSAGE("Export STEP into file " << aFileName.ToCString());
|
||||||
|
|
||||||
@ -86,7 +124,7 @@ Standard_Integer STEPPlugin_ExportDriver::Execute( TFunction_Logbook& log ) cons
|
|||||||
//VRV: OCC 4.0 migration
|
//VRV: OCC 4.0 migration
|
||||||
STEPControl_Writer aWriter;
|
STEPControl_Writer aWriter;
|
||||||
Interface_Static::SetCVal("xstep.cascade.unit","M");
|
Interface_Static::SetCVal("xstep.cascade.unit","M");
|
||||||
Interface_Static::SetCVal("write.step.unit", "M");
|
Interface_Static::SetCVal("write.step.unit", aWriteUnit.ToCString());
|
||||||
Interface_Static::SetIVal("write.step.nonmanifold", 1);
|
Interface_Static::SetIVal("write.step.nonmanifold", 1);
|
||||||
status = aWriter.Transfer( aShape, STEPControl_AsIs );
|
status = aWriter.Transfer( aShape, STEPControl_AsIs );
|
||||||
//VRV: OCC 4.0 migration
|
//VRV: OCC 4.0 migration
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
#include "GEOMBase.h"
|
#include "GEOMBase.h"
|
||||||
#include "GEOM_Displayer.h"
|
#include "GEOM_Displayer.h"
|
||||||
#include "GEOM_GenericObjPtr.h"
|
#include "GEOM_GenericObjPtr.h"
|
||||||
|
#include "STEPPlugin_ExportDlg.h"
|
||||||
|
|
||||||
#include <SALOMEconfig.h>
|
#include <SALOMEconfig.h>
|
||||||
#include CORBA_SERVER_HEADER(STEPPlugin)
|
#include CORBA_SERVER_HEADER(STEPPlugin)
|
||||||
@ -250,11 +251,12 @@ bool STEPPlugin_GUI::exportSTEP( SUIT_Desktop* parent )
|
|||||||
|
|
||||||
if ( CORBA::is_nil( obj ) ) continue;
|
if ( CORBA::is_nil( obj ) ) continue;
|
||||||
|
|
||||||
QString fileName = app->getFileName( false,
|
GEOM::length_unit anUnit;
|
||||||
QString( io->getName() ),
|
QString fileName = STEPPlugin_ExportDlg::getFileName
|
||||||
|
(QString( io->getName() ),
|
||||||
tr( "STEP_FILES" ),
|
tr( "STEP_FILES" ),
|
||||||
tr( "EXPORT_TITLE" ),
|
tr( "EXPORT_TITLE" ),
|
||||||
parent );
|
parent, anUnit);
|
||||||
|
|
||||||
if ( fileName.isEmpty() )
|
if ( fileName.isEmpty() )
|
||||||
return false;
|
return false;
|
||||||
@ -268,7 +270,7 @@ bool STEPPlugin_GUI::exportSTEP( SUIT_Desktop* parent )
|
|||||||
app->putInfo( tr( "GEOM_PRP_EXPORT" ).arg( fileName ) );
|
app->putInfo( tr( "GEOM_PRP_EXPORT" ).arg( fileName ) );
|
||||||
transaction.start();
|
transaction.start();
|
||||||
|
|
||||||
stepOp->ExportSTEP( obj, fileName.toUtf8().constData() );
|
stepOp->ExportSTEP( obj, fileName.toUtf8().constData(), anUnit);
|
||||||
|
|
||||||
if ( stepOp->IsDone() )
|
if ( stepOp->IsDone() )
|
||||||
{
|
{
|
||||||
|
4
src/STEPPlugin/STEPPlugin_IECallBack.cxx
Executable file → Normal file
4
src/STEPPlugin/STEPPlugin_IECallBack.cxx
Executable file → Normal file
@ -52,7 +52,9 @@ STEPPlugin_IECallBack::Export( int theDocId,
|
|||||||
const TCollection_AsciiString& theFormatName )
|
const TCollection_AsciiString& theFormatName )
|
||||||
{
|
{
|
||||||
STEPPlugin_IOperations* aPluginOperations = STEPPlugin_OperationsCreator::get( GetEngine(), theDocId );
|
STEPPlugin_IOperations* aPluginOperations = STEPPlugin_OperationsCreator::get( GetEngine(), theDocId );
|
||||||
aPluginOperations->ExportSTEP( theOriginal, theFileName );
|
const STEPPlugin_IOperations::LengthUnit aUnit = STEPPlugin_IOperations::LengthUnit_Meter;
|
||||||
|
|
||||||
|
aPluginOperations->ExportSTEP( theOriginal, theFileName, aUnit );
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
|
|
||||||
#define EXPORTSTEP_ARG_ORIGINAL 1
|
#define EXPORTSTEP_ARG_ORIGINAL 1
|
||||||
#define EXPORTSTEP_ARG_FILENAME 2
|
#define EXPORTSTEP_ARG_FILENAME 2
|
||||||
|
#define EXPORTSTEP_ARG_UNIT 3
|
||||||
|
|
||||||
class STEPPlugin_IExport
|
class STEPPlugin_IExport
|
||||||
{
|
{
|
||||||
@ -41,6 +42,11 @@ public:
|
|||||||
TCollection_AsciiString GetFileName()
|
TCollection_AsciiString GetFileName()
|
||||||
{ return _func->GetString( EXPORTSTEP_ARG_FILENAME ); }
|
{ return _func->GetString( EXPORTSTEP_ARG_FILENAME ); }
|
||||||
|
|
||||||
|
void SetUnit(const Standard_Integer theUnit)
|
||||||
|
{ _func->SetInteger(EXPORTSTEP_ARG_UNIT, theUnit); }
|
||||||
|
Standard_Integer GetUnit()
|
||||||
|
{ return _func->GetInteger(EXPORTSTEP_ARG_UNIT); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Handle(GEOM_Function) _func;
|
Handle(GEOM_Function) _func;
|
||||||
};
|
};
|
||||||
|
@ -54,18 +54,66 @@ STEPPlugin_IOperations::~STEPPlugin_IOperations()
|
|||||||
MESSAGE( "STEPPlugin_IOperations::~STEPPlugin_IOperations" );
|
MESSAGE( "STEPPlugin_IOperations::~STEPPlugin_IOperations" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
/*!
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
//=============================================================================
|
||||||
|
static GEOM::TPythonDump& operator<<
|
||||||
|
(GEOM::TPythonDump &theDump,
|
||||||
|
const STEPPlugin_IOperations::LengthUnit theState)
|
||||||
|
{
|
||||||
|
switch (theState) {
|
||||||
|
case STEPPlugin_IOperations::LengthUnit_Inch:
|
||||||
|
theDump << "GEOM.LU_INCH";
|
||||||
|
break;
|
||||||
|
case STEPPlugin_IOperations::LengthUnit_Millimeter:
|
||||||
|
theDump << "GEOM.LU_MILLIMETER";
|
||||||
|
break;
|
||||||
|
case STEPPlugin_IOperations::LengthUnit_Foot:
|
||||||
|
theDump << "GEOM.LU_FOOT";
|
||||||
|
break;
|
||||||
|
case STEPPlugin_IOperations::LengthUnit_Mile:
|
||||||
|
theDump << "GEOM.LU_MILE";
|
||||||
|
break;
|
||||||
|
case STEPPlugin_IOperations::LengthUnit_Meter:
|
||||||
|
theDump << "GEOM.LU_METER";
|
||||||
|
break;
|
||||||
|
case STEPPlugin_IOperations::LengthUnit_Kilometer:
|
||||||
|
theDump << "GEOM.LU_KILOMETER";
|
||||||
|
break;
|
||||||
|
case STEPPlugin_IOperations::LengthUnit_Milliinch:
|
||||||
|
theDump << "GEOM.LU_MILLIINCH";
|
||||||
|
break;
|
||||||
|
case STEPPlugin_IOperations::LengthUnit_Micrometer:
|
||||||
|
theDump << "GEOM.LU_MICROMETER";
|
||||||
|
break;
|
||||||
|
case STEPPlugin_IOperations::LengthUnit_Centimeter:
|
||||||
|
theDump << "GEOM.LU_CENTIMETER";
|
||||||
|
break;
|
||||||
|
case STEPPlugin_IOperations::LengthUnit_Microinch:
|
||||||
|
theDump << "GEOM.LU_MICROINCH";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return theDump;
|
||||||
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
* ExportSTEP
|
* ExportSTEP
|
||||||
* Export a shape to STEP format
|
* Export a shape to STEP format
|
||||||
* \param theOriginal The shape to export
|
* \param theOriginal The shape to export
|
||||||
* \param theFileName The name of the file to exported
|
* \param theFileName The name of the file to exported
|
||||||
* \param theIsASCII The format of the exported file (ASCII or Binary)
|
* \param theUnit the length unit
|
||||||
* \param theDeflection The deflection of the shape to exported
|
|
||||||
*/
|
*/
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
void STEPPlugin_IOperations::ExportSTEP( const Handle(GEOM_Object) theOriginal,
|
void STEPPlugin_IOperations::ExportSTEP
|
||||||
const TCollection_AsciiString& theFileName )
|
(const Handle(GEOM_Object) theOriginal,
|
||||||
|
const TCollection_AsciiString &theFileName,
|
||||||
|
const LengthUnit theUnit)
|
||||||
{
|
{
|
||||||
SetErrorCode(KO);
|
SetErrorCode(KO);
|
||||||
if( theOriginal.IsNull() ) return;
|
if( theOriginal.IsNull() ) return;
|
||||||
@ -87,6 +135,7 @@ void STEPPlugin_IOperations::ExportSTEP( const Handle(GEOM_Object) theOrigi
|
|||||||
STEPPlugin_IExport aCI( aFunction );
|
STEPPlugin_IExport aCI( aFunction );
|
||||||
aCI.SetOriginal( aRefFunction );
|
aCI.SetOriginal( aRefFunction );
|
||||||
aCI.SetFileName( theFileName );
|
aCI.SetFileName( theFileName );
|
||||||
|
aCI.SetUnit( theUnit );
|
||||||
|
|
||||||
//Perform the Export
|
//Perform the Export
|
||||||
try {
|
try {
|
||||||
@ -104,7 +153,7 @@ void STEPPlugin_IOperations::ExportSTEP( const Handle(GEOM_Object) theOrigi
|
|||||||
|
|
||||||
//Make a Python command
|
//Make a Python command
|
||||||
GEOM::TPythonDump(aFunction) << "geompy.ExportSTEP(" << theOriginal << ", \""
|
GEOM::TPythonDump(aFunction) << "geompy.ExportSTEP(" << theOriginal << ", \""
|
||||||
<< theFileName.ToCString() << "\" )";
|
<< theFileName.ToCString() << "\", " << theUnit << " )";
|
||||||
|
|
||||||
SetErrorCode(OK);
|
SetErrorCode(OK);
|
||||||
}
|
}
|
||||||
|
@ -29,12 +29,33 @@
|
|||||||
|
|
||||||
class STEPPLUGINENGINE_EXPORT STEPPlugin_IOperations: public GEOMImpl_IBaseIEOperations
|
class STEPPLUGINENGINE_EXPORT STEPPlugin_IOperations: public GEOMImpl_IBaseIEOperations
|
||||||
{
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Units of length
|
||||||
|
*/
|
||||||
|
enum LengthUnit
|
||||||
|
{
|
||||||
|
LengthUnit_Inch,
|
||||||
|
LengthUnit_Millimeter,
|
||||||
|
LengthUnit_Foot,
|
||||||
|
LengthUnit_Mile,
|
||||||
|
LengthUnit_Meter,
|
||||||
|
LengthUnit_Kilometer,
|
||||||
|
LengthUnit_Milliinch,
|
||||||
|
LengthUnit_Micrometer,
|
||||||
|
LengthUnit_Centimeter,
|
||||||
|
LengthUnit_Microinch
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
STEPPlugin_IOperations( GEOM_Engine*, int );
|
STEPPlugin_IOperations( GEOM_Engine*, int );
|
||||||
~STEPPlugin_IOperations();
|
~STEPPlugin_IOperations();
|
||||||
|
|
||||||
void ExportSTEP( const Handle(GEOM_Object),
|
void ExportSTEP( const Handle(GEOM_Object),
|
||||||
const TCollection_AsciiString& );
|
const TCollection_AsciiString&, const LengthUnit );
|
||||||
|
|
||||||
Handle(TColStd_HSequenceOfTransient) ImportSTEP( const TCollection_AsciiString&,
|
Handle(TColStd_HSequenceOfTransient) ImportSTEP( const TCollection_AsciiString&,
|
||||||
const bool );
|
const bool );
|
||||||
|
@ -53,10 +53,12 @@ STEPPlugin_IOperations_i::~STEPPlugin_IOperations_i()
|
|||||||
* Export a shape to STEP format
|
* Export a shape to STEP format
|
||||||
* \param theOriginal The shape to export
|
* \param theOriginal The shape to export
|
||||||
* \param theFileName The name of the exported file
|
* \param theFileName The name of the exported file
|
||||||
|
* \param theUnit the length unit.
|
||||||
*/
|
*/
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
void STEPPlugin_IOperations_i::ExportSTEP(GEOM::GEOM_Object_ptr theOriginal,
|
void STEPPlugin_IOperations_i::ExportSTEP(GEOM::GEOM_Object_ptr theOriginal,
|
||||||
const char* theFileName )
|
const char* theFileName,
|
||||||
|
GEOM::length_unit theUnit)
|
||||||
{
|
{
|
||||||
// duplicate the original shape
|
// duplicate the original shape
|
||||||
GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_duplicate( theOriginal );
|
GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_duplicate( theOriginal );
|
||||||
@ -68,8 +70,45 @@ void STEPPlugin_IOperations_i::ExportSTEP( GEOM::GEOM_Object_ptr theOriginal,
|
|||||||
Handle(GEOM_Object) anOriginal = GetObjectImpl( theOriginal );
|
Handle(GEOM_Object) anOriginal = GetObjectImpl( theOriginal );
|
||||||
if (anOriginal.IsNull()) return;
|
if (anOriginal.IsNull()) return;
|
||||||
|
|
||||||
|
STEPPlugin_IOperations::LengthUnit aUnit;
|
||||||
|
|
||||||
|
switch (theUnit) {
|
||||||
|
case GEOM::LU_INCH:
|
||||||
|
aUnit = STEPPlugin_IOperations::LengthUnit_Inch;
|
||||||
|
break;
|
||||||
|
case GEOM::LU_MILLIMETER:
|
||||||
|
aUnit = STEPPlugin_IOperations::LengthUnit_Millimeter;
|
||||||
|
break;
|
||||||
|
case GEOM::LU_FOOT:
|
||||||
|
aUnit = STEPPlugin_IOperations::LengthUnit_Foot;
|
||||||
|
break;
|
||||||
|
case GEOM::LU_MILE:
|
||||||
|
aUnit = STEPPlugin_IOperations::LengthUnit_Mile;
|
||||||
|
break;
|
||||||
|
case GEOM::LU_METER:
|
||||||
|
aUnit = STEPPlugin_IOperations::LengthUnit_Meter;
|
||||||
|
break;
|
||||||
|
case GEOM::LU_KILOMETER:
|
||||||
|
aUnit = STEPPlugin_IOperations::LengthUnit_Kilometer;
|
||||||
|
break;
|
||||||
|
case GEOM::LU_MILLIINCH:
|
||||||
|
aUnit = STEPPlugin_IOperations::LengthUnit_Milliinch;
|
||||||
|
break;
|
||||||
|
case GEOM::LU_MICROMETER:
|
||||||
|
aUnit = STEPPlugin_IOperations::LengthUnit_Micrometer;
|
||||||
|
break;
|
||||||
|
case GEOM::LU_CENTIMETER:
|
||||||
|
aUnit = STEPPlugin_IOperations::LengthUnit_Centimeter;
|
||||||
|
break;
|
||||||
|
case GEOM::LU_MICROINCH:
|
||||||
|
aUnit = STEPPlugin_IOperations::LengthUnit_Microinch;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
//Export the shape to the file
|
//Export the shape to the file
|
||||||
GetOperations()->ExportSTEP( anOriginal, theFileName );
|
GetOperations()->ExportSTEP( anOriginal, theFileName, aUnit );
|
||||||
}
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
@ -43,7 +43,8 @@ public:
|
|||||||
STEPPlugin_IOperations* theImpl );
|
STEPPlugin_IOperations* theImpl );
|
||||||
~STEPPlugin_IOperations_i();
|
~STEPPlugin_IOperations_i();
|
||||||
|
|
||||||
void ExportSTEP( GEOM::GEOM_Object_ptr, const char* );
|
void ExportSTEP( GEOM::GEOM_Object_ptr, const char*,
|
||||||
|
GEOM::length_unit );
|
||||||
GEOM::ListOfGO* ImportSTEP( const char*, const bool );
|
GEOM::ListOfGO* ImportSTEP( const char*, const bool );
|
||||||
char* ReadValue( const char*, const char* );
|
char* ReadValue( const char*, const char* );
|
||||||
|
|
||||||
|
@ -48,4 +48,51 @@
|
|||||||
Ignoring units will cause model scaling (as dimensions are supposed to be specified in meters).</translation>
|
Ignoring units will cause model scaling (as dimensions are supposed to be specified in meters).</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>STEPPlugin_ExportDlg</name>
|
||||||
|
<message>
|
||||||
|
<source>STEP_LENGTH_UNITS</source>
|
||||||
|
<translation>Length units</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>STEP_UNITS_INCH</source>
|
||||||
|
<translation>inch</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>STEP_UNITS_MILLIMETER</source>
|
||||||
|
<translation>millimeter</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>STEP_UNITS_FOOT</source>
|
||||||
|
<translation>foot</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>STEP_UNITS_MILE</source>
|
||||||
|
<translation>mile</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>STEP_UNITS_METER</source>
|
||||||
|
<translation>meter</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>STEP_UNITS_KILOMETER</source>
|
||||||
|
<translation>kilometer</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>STEP_UNITS_MILLIINCH</source>
|
||||||
|
<translation>milliinch</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>STEP_UNITS_MICROMETER</source>
|
||||||
|
<translation>micrometer</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>STEP_UNITS_CENTIMETER</source>
|
||||||
|
<translation>centimeter</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>STEP_UNITS_MICROINCH</source>
|
||||||
|
<translation>microinch</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
Loading…
Reference in New Issue
Block a user