import salome, geompy

# Quickly define a custom "addToStudy" function
def addToStudyAll( array , name ):
	
	i = 0
	
	for element in array:
		
		geompy.addToStudy( element , name + "_" + str(i) )
		i += 1
	

# Create vertexes
Vertexes = []

Vertexes.append( geompy.MakeVertex( -1.414 , 0.7071 , 0.000 ))
Vertexes.append( geompy.MakeVertex( -1.414 , 0.000 , 0.7071 ))
Vertexes.append( geompy.MakeVertex( -1.414 , -0.7071 , 0.000 ))
Vertexes.append( geompy.MakeVertex( -1.414 , 0.000 , -0.7071 ))
Vertexes.append( geompy.MakeVertex( 1.414 , 0.7071 , 0.000 ))
Vertexes.append( geompy.MakeVertex( 1.414 , 0.000 , 0.7071 ))
Vertexes.append( geompy.MakeVertex( 1.414 , -0.7071 , 0.000 ))
Vertexes.append( geompy.MakeVertex( 1.414 , 0.000 , -0.7071 ))
Vertexes.append( geompy.MakeVertex( 0.7071 , -1.414 , 0.000 ))
Vertexes.append( geompy.MakeVertex( 0.000 , -1.414 , 0.7071 ))
Vertexes.append( geompy.MakeVertex( -0.7071 , -1.414 , 0.000 ))
Vertexes.append( geompy.MakeVertex( 0.000 , -1.414 , -0.7071 ))
Vertexes.append( geompy.MakeVertex( 0.7071 , 1.414 , 0.000 ))
Vertexes.append( geompy.MakeVertex( 0.000 , 1.414 , 0.7071 ))
Vertexes.append( geompy.MakeVertex( -0.7071 , 1.414 , 0.000 ))
Vertexes.append( geompy.MakeVertex( 0.000 , 1.414 , -0.7071 ))
Vertexes.append( geompy.MakeVertex( 0.7071 , 0.000 , -1.414 ))
Vertexes.append( geompy.MakeVertex( 0.000 , 0.7071 , -1.414 ))
Vertexes.append( geompy.MakeVertex( -0.7071 , 0.000 , -1.414 ))
Vertexes.append( geompy.MakeVertex( 0.000 , -0.7071 , -1.414 ))
Vertexes.append( geompy.MakeVertex( 0.7071 , 0.000 , 1.414 ))
Vertexes.append( geompy.MakeVertex( 0.000 , 0.7071 , 1.414 ))
Vertexes.append( geompy.MakeVertex( -0.7071 , 0.000 , 1.414 ))
Vertexes.append( geompy.MakeVertex( 0.000 , -0.7071 , 1.414 ))

#addToStudyAll( Vertexes , "Vertex" )

# Create vectors
Vectors = []

for i in range( len( Vertexes ) / 4 ):
	
	i *= 4
	
	Vectors.append( geompy.MakeVector( Vertexes[i] , Vertexes[i+1] ) )
	Vectors.append( geompy.MakeVector( Vertexes[i+1] , Vertexes[i+2] ) )
	Vectors.append( geompy.MakeVector( Vertexes[i+2] , Vertexes[i+3] ) )
	Vectors.append( geompy.MakeVector( Vertexes[i+3] , Vertexes[i] ) )
	

firstVertexIDs = [ 1,5,9,13,3,7,11,15,2,8,4,14 ]
secondVertexIDs = [ 22,20,23,21,18,16,19,17,10,6,12,0 ]

for i in range( len( firstVertexIDs ) ):
	
	Vectors.append( geompy.MakeVector( Vertexes[ firstVertexIDs[i] ] , Vertexes[ secondVertexIDs[i] ] ) )
	

#addToStudyAll( Vectors , "Vector" )

# Create cylinders
Cylinders = []

pi = 3.141592654

for i in range( len( Vertexes ) ):
	
	Cylinder = geompy.MakeCylinder( Vertexes[i] , Vectors[i] , 0.2 , 1.001 )
	Cylinders.append( Cylinder )
	

VertexIDs = [ 1,5,9,13,3,7,11,15,2,8,4,14 ]
VectorIDs = [ 24,25,26,27,28,29,30,31,32,33,34,35 ]

for i in range( len( VertexIDs ) ):
	
	Cylinder = geompy.MakeCylinder( Vertexes[ VertexIDs[i] ] , Vectors[ VectorIDs[i] ] , 0.2 , 1.001 )
	Cylinders.append( Cylinder )
	

#addToStudyAll( Cylinders , "Cylinder" )

# Fuse cylinders

Fuses = []

for i in range( len( Vertexes ) / 4 ):
	
	i *= 4
	
	Fuse = geompy.MakeFuse( Cylinders[i] , Cylinders[i+1] )
	Fuse = geompy.MakeFuse( Fuse , Cylinders[i+2] )
	Fuse = geompy.MakeFuse( Fuse , Cylinders[i+3] )
	
	Fuses.append( Fuse )
	

FuseIDs = [ 0,1 ]
CylinderIDs = [ [ 24,28,32,35 ] , [ 25,29,33,34 ] ]

for i in range( len( FuseIDs ) ):
	
	Fuse = Fuses[ FuseIDs[i] ]
	
	for j in range( len( CylinderIDs[i] ) ):
		
		Fuse = geompy.MakeFuse( Fuse , Cylinders[ CylinderIDs[i][j] ] )
		
	
	Fuses.append(Fuse)
	

elementIDs = [ 2,26,5,27,3,31,4,30 ]

for i in range( len( elementIDs ) ):
	
	if i == 0:
		
		Fuse = Fuses[ elementIDs[0] ]
		
	
	elif i % 2:
		
		Fuse = geompy.MakeFuse( Fuse , Cylinders[ elementIDs[i] ] )
		
	
	else:
		
		Fuse = geompy.MakeFuse( Fuse , Fuses[ elementIDs[i] ] )
		
	

Fuses.append(Fuse)

#addToStudyAll( Fuses , "Fuse" )

KelvinStructure = geompy.MakeFuse( Fuses[8] , Fuses[7] )
KelvinStructure = geompy.MakeFuse( KelvinStructure , Fuses[6] )

geompy.addToStudy( KelvinStructure , 'KelvinStructure' )

if salome.sg.hasDesktop():
 salome.sg.updateObjBrowser(1)

