# Complex Objects

### Creation of a Prism

import geompy

import salome

gg = salome.ImportComponentGUI("GEOM")

# create a vertex and a vector

p1 = geompy.MakeVertex( 0., 0., 0.)

p2 = geompy.MakeVertex( 100., 0., 0.)

p3 = geompy.MakeVertex( 100., 100., 0.)

p4 = geompy.MakeVertex( 0., 100., 0.)

p5 = geompy.MakeVertex( 0., 0., 60.)

p6 = geompy.MakeVertex(-100., 0., 0.)

p7 = geompy.MakeVertex(-100.,-100., 0.)

p8 = geompy.MakeVertex( 0.,-100., 0.)

# create a vector from the given components

vector = geompy.MakeVectorDXDYDZ(50., 50., 50.)

#create vectors from two points

vector1_arc1 = geompy.MakeVector(p1, p2)

vector2_arc1 = geompy.MakeVector(p1, p4)

vector1_arc2 = geompy.MakeVector(p1, p6)

vector2_arc2 = geompy.MakeVector(p1, p8)

# create arcs from three points

arc1 = geompy.MakeArc(p2, p3, p4)

arc2 = geompy.MakeArc(p6, p7, p8)

# create wires

wire1 = geompy.MakeWire([vector1_arc1, arc1, vector2_arc1])

wire2 = geompy.MakeWire([vector1_arc2, arc2, vector2_arc2])

# create faces

isPlanarWanted = 1

face1 = geompy.MakeFace(wire1, isPlanarWanted)

face2 = geompy.MakeFace(wire2, isPlanarWanted)

# create prisms

prism1 = geompy.MakePrism(face2, p1, p5)

prism2 = geompy.MakePrismVecH(face1, vector, 50)

# add objects in the study

id_face1 = geompy.addToStudy(face1,"Face1")

id_face2 = geompy.addToStudy(face2,"Face2")

id_prism1 = geompy.addToStudy(prism1,"Prism1")

id_prism2 = geompy.addToStudy(prism2,"Prism2")

# display cylinders

gg.createAndDisplayGO(id_face1)

gg.setDisplayMode(id_face1,1)

gg.createAndDisplayGO(id_face2)

gg.setDisplayMode(id_face2,1)

gg.createAndDisplayGO(id_prism1)

gg.setDisplayMode(id_prism1,1)

gg.createAndDisplayGO(id_prism2)

gg.setDisplayMode(id_prism2,1)

### Creation of a Revolution

import geompy

import salome

gg = salome.ImportComponentGUI("GEOM")

# create a vertex and a vector

p1 = geompy.MakeVertex( 10., 10., 10.)

p2 = geompy.MakeVertex( 15., 15., 50.)

p3 = geompy.MakeVertex( 40., 40., 0.)

#create vectors from two points

vector1 = geompy.MakeVector(p1, p2)

vector2 = geompy.MakeVector(p1, p3)

# create a vector from the given components

vector3 = geompy.MakeVectorDXDYDZ(-20., -20., 100.)

# create a wire

wire = geompy.MakeWire([vector1, vector2])

# create a revolution

revolution = geompy.MakeRevolution(wire, vector3, 2.3)

# add objects in the study

id_vector3 = geompy.addToStudy(vector3,"Axis")

id_wire = geompy.addToStudy(wire,"Wire")

id_revolution = geompy.addToStudy(revolution,"Revolution")

# display the vector, the wire and the revolution

gg.createAndDisplayGO(id_vector3)

gg.createAndDisplayGO(id_wire)

gg.createAndDisplayGO(id_revolution)

gg.setDisplayMode(id_revolution,1)

### Creation of a Filling

import geompy

import salome

gg = salome.ImportComponentGUI("GEOM")

mindeg = 2

maxdeg = 5

tol3d = 0.0001

tol2d = 0.0001

nbiter = 5

# create a vertex and a vector

p1 = geompy.MakeVertex( -30., -30., 50.)

p2 = geompy.MakeVertex( -60., -60., 30.)

p3 = geompy.MakeVertex( -30., -30., 10.)

# create an arc from three points

arc = geompy.MakeArc(p1, p2, p3)

ShapeListCompound = []

i = 0

while i <= 3 :

S = geompy.MakeTranslation(arc, i * 50., 0., 0.)

ShapeListCompound.append(S)

i = i + 1

compound = geompy.MakeCompound(ShapeListCompound)

# create a filling

filling = geompy.MakeFilling(compound, mindeg, maxdeg, tol3d, tol2d, nbiter)

# add objects in the study

id_compound = geompy.addToStudy(compound,"Compound")

id_filling = geompy.addToStudy(filling,"Filling")

# display the compound and the filling

gg.createAndDisplayGO(id_compound)

gg.createAndDisplayGO(id_filling)

gg.setDisplayMode(id_filling,1)

### Creation of a Pipe

import geompy

import salome

gg = salome.ImportComponentGUI("GEOM")

# create vertices

p0 = geompy.MakeVertex(0. , 0. , 0. )

px = geompy.MakeVertex(100., 0. , 0. )

py = geompy.MakeVertex(0. , 100., 0. )

pz = geompy.MakeVertex(0. , 0. , 100.)

pxyz = geompy.MakeVertex(100., 100., 100.)

# create a vector from two points

vxy = geompy.MakeVector(px, py)

# create an arc from three points

arc = geompy.MakeArc(py, pz, px)

# create a wire

wire = geompy.MakeWire([vxy, arc])

# create an edge

edge = geompy.MakeEdge(p0, pxyz)

# create a pipe

pipe = geompy.MakePipe(wire, edge)

# add objects in the study

id_wire = geompy.addToStudy(wire,"Wire")

id_edge = geompy.addToStudy(edge,"Edge")

id_pipe = geompy.addToStudy(pipe,"Pipe")

# display the wire, the edge (path) and the pipe

gg.createAndDisplayGO(id_wire)

gg.createAndDisplayGO(id_edge)

gg.createAndDisplayGO(id_pipe)

gg.setDisplayMode(id_pipe,1)