示例#1
0
def test_iges_exporter_happy_path(box_shape):
    r"""Happy path"""
    filename = path_from_file(__file__, "./models_out/box.IgS")
    exporter = IgesExporter(filename)
    exporter.add_shape(box_shape)
    exporter.write_file()
    assert os.path.isfile(filename)
示例#2
0
def test_iges_exporter_happy_path_shape_subclass(box_shape):
    r"""Happy path with a subclass of TopoDS_Shape"""
    filename = path_from_file(__file__, "./models_out/box.igs")
    exporter = IgesExporter(filename)
    solid = shape_to_topology(box_shape)
    assert isinstance(solid, TopoDS.TopoDS_Solid)
    exporter.add_shape(solid)
    exporter.write_file()
    assert os.path.isfile(filename)
示例#3
0
def shape_to_file(shape, pth, filename, format='iges'):
    """write a Shape to a .iges .brep .stl or .step file"""

    from OCCDataExchange.brep import BrepExporter
    from OCCDataExchange.iges import IgesExporter
    from OCCDataExchange.step import StepExporter
    from OCCDataExchange.stl import StlExporter

    _pth = os.path.join(pth, filename)
    assert not os.path.isdir(_pth), 'wrong path, filename'
    _file = str("%s.%s" % (_pth, format))

    _formats = ['iges', 'igs', 'step', 'stp', 'brep', 'stl']
    assert format in _formats, '%s is not a readable format, should be one of %s ' % (format, _formats)

    if format in ['iges', 'igs']:
        writer = IgesExporter(_file)
        writer.add_shape(shape)
        writer.write_file()
        return _file

    elif format in ['step', 'stp']:
        writer = StepExporter(_file)
        writer.add_shape(shape)
        writer.write_file()
        return _file

    elif format == 'brep':
        writer = BrepExporter(_file)
        writer.set_shape(shape)
        writer.write_file()
        return _file

    elif format == 'stl':
        writer = StlExporter(_file)
        writer.set_shape(shape)
        writer.write_file()
        return _file

    else:
        raise ValueError('format should be one of [iges,igs], [step,stp], brep, stl\ngot %s' % (format))
示例#4
0
def test_iges_exporter_overwrite(box_shape):
    r"""Happy path with a subclass of TopoDS_Shape"""
    filename = path_from_file(__file__, "./models_out/box.igs")
    exporter = IgesExporter(filename)
    solid = shape_to_topology(box_shape)
    assert isinstance(solid, TopoDS.TopoDS_Solid)
    exporter.add_shape(solid)
    exporter.write_file()
    assert os.path.isfile(filename)

    # read the written box.igs
    importer = IgesImporter(filename)
    topo_compound = Topo(importer.compound)
    assert topo_compound.number_of_faces() == 6
    assert topo_compound.number_of_edges() == 24

    # add a sphere and write again with same exporter
    sphere = BRepPrimAPI.BRepPrimAPI_MakeSphere(10)
    exporter.add_shape(sphere.Shape())
    exporter.write_file()  # this creates a file with a box and a sphere

    # check that the file contains the box and the sphere
    importer = IgesImporter(filename)
    topo_compound = Topo(importer.compound)
    assert topo_compound.number_of_faces() == 7  # 6 from box + 1 from sphere

    # create a new exporter and overwrite with a box only
    filename = path_from_file(__file__, "./models_out/box.igs")
    exporter = IgesExporter(filename)
    solid = shape_to_topology(box_shape)
    exporter.add_shape(solid)
    exporter.write_file()
    assert os.path.isfile(filename)

    # check the file only contains a box
    importer = IgesImporter(filename)
    topo_compound = Topo(importer.compound)
    assert topo_compound.number_of_faces() == 6  # 6 from box
示例#5
0
def test_iges_exporter_wrong_format(box_shape):
    r"""Format is not 5.1 or 5.3"""
    filename = path_from_file(__file__, "./models_out/box.igs")
    with pytest.raises(ValueError):
        IgesExporter(filename, format="48.3")
示例#6
0
def test_iges_exporter_adding_not_a_shape(box_shape):
    r"""Adding something to the exporter that is not a TopoDS_Shape or a subclass"""
    filename = path_from_file(__file__, "./models_out/box.igs")
    exporter = IgesExporter(filename)
    with pytest.raises(ValueError):
        exporter.add_shape(gp.gp_Pnt(1, 1, 1))
示例#7
0
def test_iges_exporter_wrong_extension(box_shape):
    r"""Trying to write a step file with the IgesExporter"""
    filename = path_from_file(__file__, "./models_out/box.step")
    with pytest.raises(AssertionError):
        IgesExporter(filename)
示例#8
0
def test_iges_exporter_wrong_filename(box_shape):
    r"""Trying to write to a non-existent directory"""
    filename = path_from_file(__file__, "./nonexistent/box.igs")
    with pytest.raises(AssertionError):
        IgesExporter(filename)
示例#9
0
def shape_to_file(shape, pth, filename, format='iges'):
    """write a Shape to a .iges .brep .stl or .step file"""

    from OCCDataExchange.brep import BrepExporter
    from OCCDataExchange.iges import IgesExporter
    from OCCDataExchange.step import StepExporter
    from OCCDataExchange.stl import StlExporter

    _pth = os.path.join(pth, filename)
    assert not os.path.isdir(_pth), 'wrong path, filename'
    _file = str("%s.%s" % (_pth, format))

    _formats = ['iges', 'igs', 'step', 'stp', 'brep', 'stl']
    assert format in _formats, '%s is not a readable format, should be one of %s ' % (
        format, _formats)

    if format in ['iges', 'igs']:
        writer = IgesExporter(_file)
        writer.add_shape(shape)
        writer.write_file()
        return _file

    elif format in ['step', 'stp']:
        writer = StepExporter(_file)
        writer.add_shape(shape)
        writer.write_file()
        return _file

    elif format == 'brep':
        writer = BrepExporter(_file)
        writer.set_shape(shape)
        writer.write_file()
        return _file

    elif format == 'stl':
        writer = StlExporter(_file)
        writer.set_shape(shape)
        writer.write_file()
        return _file

    else:
        raise ValueError(
            'format should be one of [iges,igs], [step,stp], brep, stl\ngot %s'
            % (format))
示例#10
0
#!/usr/bin/env python
# coding: utf-8

r"""Exporting multiple shapes to IGES"""

import logging

from OCC import BRepPrimAPI

from OCCDataExchange.iges import IgesExporter
from OCCDataExchange import path_from_file

logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s :: %(levelname)6s :: %(module)20s :: %(lineno)3d :: %(message)s')

# First create a simple shape to export
box_shape = BRepPrimAPI.BRepPrimAPI_MakeBox(50, 50, 50).Shape()
sphere_shape = BRepPrimAPI.BRepPrimAPI_MakeSphere(20).Shape()

# Export to IGES
filename = path_from_file(__file__, "./models_out/result_export_multi.iges")
my_iges_exporter = IgesExporter(filename, format="5.3")
my_iges_exporter.add_shape(box_shape)
my_iges_exporter.add_shape(sphere_shape)
my_iges_exporter.write_file()
#!/usr/bin/env python
# coding: utf-8
r"""Exporting multiple shapes to IGES"""

import logging

from OCC import BRepPrimAPI

from OCCDataExchange.iges import IgesExporter
from OCCDataExchange.utils import path_from_file

logging.basicConfig(
    level=logging.DEBUG,
    format=
    '%(asctime)s :: %(levelname)6s :: %(module)20s :: %(lineno)3d :: %(message)s'
)

# First create a simple shape to export
box_shape = BRepPrimAPI.BRepPrimAPI_MakeBox(50, 50, 50).Shape()
sphere_shape = BRepPrimAPI.BRepPrimAPI_MakeSphere(20).Shape()

# Export to IGES
filename = path_from_file(__file__, "./models_out/result_export_multi.iges")
my_iges_exporter = IgesExporter(filename, format="5.3")
my_iges_exporter.add_shape(box_shape)
my_iges_exporter.add_shape(sphere_shape)
my_iges_exporter.write_file()