Exemple #1
0
def iges_144_000():
    import pyiges.IGESGeomLib as IGES
    from pyiges.IGESGeomLib import IGESPoint
    from pyiges.IGESCore import IGEStorage

    system = IGEStorage()
    examples.benchmarks.standard_iges_setup(system, "144-000-benchmark.igs")

    para_spline_surface = IGES.IGESTestSplineSurf()
    system.Commit(para_spline_surface)

    circle = IGES.IGESGeomCircle(IGESPoint(6, 7.25, 0), IGESPoint(6.25, 7.25))
    system.Commit(circle)

    para_spline_curve = IGES.IGESTestSplineCurve()
    system.Commit(para_spline_curve)

    curve_on_parametric_surface = IGES.IGESCurveOnParametricSurface(
        para_spline_surface, circle, para_spline_curve, 2)
    system.Commit(curve_on_parametric_surface)

    trimmed_parametric_surface = IGES.IGESTrimmedParaSurface(
        para_spline_surface, curve_on_parametric_surface)
    system.Commit(trimmed_parametric_surface)

    system.save("144-000-benchmark.igs")

    if not os.environ.get('READTHEDOCS', None):
        print(system)
        os.startfile("144-000-benchmark.igs")
def iges_144_000():
    import pyiges.IGESGeomLib as IGES
    from pyiges.IGESCore import IGEStorage
    from pyiges.IGESGeomLib import IGESPoint

    filename = "144-000-example-1.igs"

    system = IGEStorage()
    examples.benchmarks.standard_iges_setup(system, filename)

    # Circular flat surface profile
    circular_flat_surface_profile = IGES.IGESGeomCircle(
        IGESPoint(0, 0, 0), IGESPoint(10, 10, 0))
    system.Commit(circular_flat_surface_profile)

    # Make the surface from out outer profile, this is to be trimmed
    circular_flat_surface = IGES.IGESGeomPlane(circular_flat_surface_profile)
    system.Commit(circular_flat_surface)

    # We're going to put a bunch of holes into the surface
    hole = []  # Hole profiles
    hole_copse = []  # Curve on Parametric Surface entries (required!)

    for i in range(0, 6):
        hole.append(
            IGES.IGESGeomCircle(IGESPoint(-5 + i * 3, 0, 0),
                                IGESPoint(-5 + i * 3, 1, 0)))
        system.Commit(hole[-1])

        # Make those tubes, given we are not using them as a reference,
        # Lets directly add them to the system.
        system.Commit(IGES.IGESExtrude(hole[-1], IGESPoint(0, 0, i + 1)))
        system.Commit(IGES.IGESExtrude(hole[-1], IGESPoint(0, 0, -i - 1)))

        hole_copse.append(
            IGES.IGESCurveOnParametricSurface(circular_flat_surface, hole[-1],
                                              hole[-1], 1))
        system.Commit(hole_copse[-1])

    # Setup the surface we are to put holes into, we're using the whole surface,
    #   as indicated by the 0 in the outer profile parameter
    trimmed_surface = IGES.IGESTrimmedParaSurface(circular_flat_surface, 0)
    trimmed_surface.N1 = 0

    # Lets put those holes in!
    for _hole in hole_copse:
        trimmed_surface.add_bounding_profile(_hole)

    system.Commit(trimmed_surface)

    system.save(filename)

    if not os.environ.get('READTHEDOCS', None):
        print(system)
        os.startfile(filename)
def iges_144_000():
    import pyiges.IGESGeomLib as IGES
    from pyiges.IGESCore import IGEStorage
    from pyiges.IGESGeomLib import IGESPoint

    filename = "144-000-example-2.igs"

    system = IGEStorage()
    examples.benchmarks.standard_iges_setup(system, filename)

    # Setup a cone like surface, the cone is boring but whatever!
    cone_surface_profile = IGES.IGESGeomPolyline(IGESPoint(-10, 0, 0),
                                                 IGESPoint(0, 0, 10))
    system.Commit(cone_surface_profile)

    # The centre of the revolve
    center_line = IGES.IGESGeomLine(IGESPoint(0, 0, 0), IGESPoint(0, 0, 10))
    system.Commit(center_line)

    # Make the surface from the profile, this is to be trimmed
    cone_surface = IGES.IGESRevolve(cone_surface_profile, center_line)
    system.Commit(cone_surface)

    #Setup the surface we are to put holes into, we're using the whole surface,
    #  as indicated by the 0 in the outer profile parameter
    trimmed_surface = IGES.IGESTrimmedParaSurface(cone_surface, 0)
    trimmed_surface.N1 = 0

    hole = []
    hole_copse = []

    # We're going to put a bunch of holes into the surface, because we don't
    # care about the index of the hole we can get away with specifying -8 to 8
    for holenum in range(-8, 8):
        hole.append(IGES.IGESGeomPolyline())
        hole_data = [[], [], []]

        # Top line following the cone profile
        for i in range(21 * holenum, 20 + 21 * holenum):
            hole_data[0].append(3)
            hole_data[1].append(i)
            hole_data[2].append(7)

        # Line down the cone profile
        hole_data[0].append(7)
        hole_data[1].append(hole_data[1][-1])
        hole_data[2].append(3)

        # Bottom line following the cone profile
        for i in range(20 + 21 * holenum, 21 * holenum, -1):
            hole_data[0].append(7)
            hole_data[1].append(i)
            hole_data[2].append(3)

        # Line back to start of the cone profile
        hole_data[0].append(hole_data[0][0])
        hole_data[1].append(hole_data[1][0])
        hole_data[2].append(hole_data[2][0])

        # Convert to rectangular coordinate system
        hole_rect_cs = cyl_to_rect(hole_data)

        # Push the points into the common format
        for i in range(0, len(hole_rect_cs[0])):
            hole[-1].AddPoint(
                IGESPoint(hole_rect_cs[0][i], hole_rect_cs[1][i],
                          hole_rect_cs[2][i]))

        # Commit this hole
        system.Commit(hole[-1])

        # Lets make a really very crazy looking thing!
        # And revolve the cutting profile by a bit
        # Setup Revolve Line data
        random_line_data = cyl_to_rect([[-10, 10],
                                        [(20 * holenum) + 90,
                                         (20 * holenum) + 90], [10, 10]])

        # Make revolve line
        revolve_line = IGES.IGESGeomLine(
            IGESPoint(random_line_data[0][0], random_line_data[1][0],
                      random_line_data[2][0]),
            IGESPoint(random_line_data[0][1], random_line_data[1][1],
                      random_line_data[2][1]))

        # Commit revolve line
        system.Commit(revolve_line)

        # Make the revolve
        system.Commit(IGES.IGESRevolve(hole[-1], revolve_line, -1, 0))

        # Create the Curve on Parametric Surface
        hole_copse.append(
            IGES.IGESCurveOnParametricSurface(cone_surface, hole[-1], hole[-1],
                                              2))
        system.Commit(hole_copse[-1])

        # Lets put that holes in!
        trimmed_surface.add_bounding_profile(hole_copse[-1])

    # commit that surface!
    system.Commit(trimmed_surface)

    system.save(filename)

    if not os.environ.get('READTHEDOCS', None):
        print(system)
        os.startfile(filename)