Samples [2]

This commit is contained in:
L-Nafaryus 2021-03-23 14:05:55 +05:00
parent d13ff1bc7d
commit 34b993715a
7 changed files with 452 additions and 80 deletions

View File

@ -1,79 +0,0 @@
from .src import geometry_utils
import GEOM
from .src import mesh_utils
import SMESH
from .src import anisotropeCubic
import salome
import math
def genMesh(ctype, theta, flowdirection):
_G = globals()
for g in _G:
func = g.get(ctype)
if func:
salome.salome_init()
func(theta, flowdirection)
salome.salome_close()
else:
raise Exception("Unknown type of the sample function")
def simpleCubic(theta, flowdirection):
radius = 1
stackAngle = [0.5 * math.pi, 0.5 * math.pi, 0.5 * math.pi]
theta = theta if theta else 0.1
layers = [3, 3, 3]
grains = anisotropeCubic.StructuredGrains(radius, stackAngle, theta, layers)
scale = [2 * math.sqrt(2), 2 * math.sqrt(2), 2]
flowdirection = flowdirection if flowdirection else [1, 0, 0]
style = 0
cubic = anisotropeCubic.AnisotropeCubic(scale, grains, style)
boundary = geometry_utils.boundaryCreate(cubic, flowdirection, grains)
fineness = 3
mesh = mesh_utils.meshCreate(cubic, boundary, fineness)
mesh_utils.meshCompute(mesh)
def bodyCenteredCubic(theta, flowdirection):
radius = 1
stackAngle = [0.5 * math.pi, 0.25 * math.pi, 0.25 * math.pi]
theta = theta if theta else 0.1
layers = [3, 3, 3]
grains = anisotropeCubic.StructuredGrains(radius, stackAngle, theta, layers)
scale = [2 / math.sqrt(2), 2 / math.sqrt(2), 1]
flowdirection = flowdirection if flowdirection else [1, 0, 0]
style = 0
cubic = anisotropeCubic.AnisotropeCubic(scale, grains, style)
boundary = geometry_utils.boundaryCreate(cubic, flowdirection, grains)
fineness = 3
mesh = mesh_utils.meshCreate(cubic, boundary, fineness)
mesh_utils.meshCompute(mesh)
def faceCenteredCubic(theta, flowdirection):
radius = 1
stackAngle = [0.5 * math.pi, 0.5 * math.pi, 0.5 * math.pi]
theta = theta if theta else 0.1
layers = [3, 3, 3]
grains = anisotropeCubic.StructuredGrains(radius, stackAngle, theta, layers)
scale = [1 / math.sqrt(2), 1 / math.sqrt(2), 1]
flowdirection = flowdirection if flowdirection else [1, 0, 0]
style = 0
cubic = anisotropeCubic.AnisotropeCubic(scale, grains, style)
boundary = geometry_utils.boundaryCreate(cubic, flowdirection, grains)
fineness = 3
mesh = mesh_utils.meshCreate(cubic, boundary, fineness)
mesh_utils.meshCompute(mesh)

3
samples/__init__.py Normal file
View File

@ -0,0 +1,3 @@
from .simpleCubic import simpleCubic
from .faceCenteredCubic import faceCenteredCubic
from .bodyCenteredCubic import bodyCenteredCubic

View File

@ -0,0 +1,126 @@
import sys
import salome
salome.salome_init()
import GEOM
from salome.geom import geomBuilder
import math
import SALOMEDS
geompy = geomBuilder.New()
def bodyCenteredCubic(alpha):
O = geompy.MakeVertex(0, 0, 0)
OX = geompy.MakeVectorDXDYDZ(1, 0, 0)
OY = geompy.MakeVectorDXDYDZ(0, 1, 0)
OZ = geompy.MakeVectorDXDYDZ(0, 0, 1)
V_1 = geompy.MakeVectorDXDYDZ(1, 1, 0)
V_2 = geompy.MakeVectorDXDYDZ(1, -1, 0)
L = 1.0
L2 = L/2
r0 = L*math.sqrt(3)/4
a = L*math.sqrt(2)
a2 = a/2
h4 = L/4
Pi_4 = 45*math.pi/180.0
sk = geompy.Sketcher3D()
sk.addPointsAbsolute(0, 0, 2*L) #Vertex_1 of Rombus
sk.addPointsAbsolute(L, 0, L) #Vertex_2 of Rombus
sk.addPointsAbsolute(L, L, 0) #Vertex_3 of Rombus
sk.addPointsAbsolute(0, L, L) #Vertex_4 of Rombus
sk.addPointsAbsolute(0, 0, 2*L) #Vertex_1 of Rombus
a3D_Sketcher_1 = sk.wire()
Face_1 = geompy.MakeFaceWires([a3D_Sketcher_1], 1)
Extrusion_1 = geompy.MakePrismDXDYDZ(Face_1, L2, L2, L2)
sk2 = geompy.Sketcher3D()
sk2.addPointsAbsolute(L/3, L/3, 4*L/3) #Vertex_1 of Rombus
sk2.addPointsAbsolute(L, 0, L) #Vertex_2 of Rombus
sk2.addPointsAbsolute(2*L/3, 2*L/3, 2*L/3) #Vertex_3 of Rombus
#sk2.addPointsAbsolute(0, L, L) #Vertex_4 of Rombus
sk2.addPointsAbsolute(L/3, L/3, 4*L/3) #Vertex_1 of Rombus
a3D_Sketcher_2 = sk2.wire()
Face_2 = geompy.MakeFaceWires([a3D_Sketcher_2], 1)
Extrusion_2 = geompy.MakePrismDXDYDZ(Face_2, L2, L2, L2)
Box_1 = geompy.MakeBoxDXDYDZ(a, a, L)
Rotation_1 = geompy.MakeRotation(Box_1, OZ, Pi_4)
Translation_1 = geompy.MakeTranslation(Rotation_1, L, 0, 0)
Translation_2 = geompy.MakeTranslation(Translation_1, 0, 0, h4)
Box_2 = geompy.MakeBoxDXDYDZ(a2, a2, L)
Rotation_2 = geompy.MakeRotation(Box_2, OZ, Pi_4)
Translation_3 = geompy.MakeTranslation(Rotation_2, L, 0, h4)
Box_3 = geompy.MakeBoxDXDYDZ(a2, a2, L2)
Rotation_3 = geompy.MakeRotation(Box_3, OZ, Pi_4)
Translation_4 = geompy.MakeTranslation(Rotation_3, L, 0, h4)
geompy.addToStudy( O, 'O' )
geompy.addToStudy( OX, 'OX' )
geompy.addToStudy( OY, 'OY' )
geompy.addToStudy( OZ, 'OZ' )
geompy.addToStudy( V_1, 'V_1' )
geompy.addToStudy( V_2, 'V_2' )
geompy.addToStudy( Box_1, 'Box_1' )
geompy.addToStudy( Rotation_1, 'Rotation_1' )
geompy.addToStudy( Translation_1, 'Translation_1' )
geompy.addToStudy( Translation_2, 'Translation_2' )
geompy.addToStudy( Box_2, 'Box_2' )
geompy.addToStudy( Rotation_2, 'Rotation_2' )
geompy.addToStudy( Translation_3, 'Translation_3' )
geompy.addToStudy( Rotation_3, 'Rotation_3' )
geompy.addToStudy( Translation_4, 'Translation_4' )
#geompy.addToStudy( a3D_Sketcher_1, 'a3D_Sketcher_1' )
#geompy.addToStudy( Face_1, 'Face_1' )
geompy.addToStudy( Extrusion_1, 'Extrusion_1' )
#geompy.addToStudy( a3D_Sketcher_2, 'a3D_Sketcher_1' )
#geompy.addToStudy( Face_2, 'Face_2' )
geompy.addToStudy( Extrusion_2, 'Extrusion_2' )
Radius = r0/(1-alpha)
Sphere_1 = geompy.MakeSphereR(Radius)
Down = geompy.MakeMultiTranslation2D(Sphere_1, OX, L, 3, OY, L, 3)
Up = geompy.MakeTranslation(Down, 0, 0, 2*L)
Up_Down = geompy.MakeMultiTranslation1D(Down, OZ, L, 3)
Cut_1a = geompy.MakeCutList(Translation_1, [Up_Down])
Cut_1b = geompy.MakeCutList(Translation_2, [Up_Down])
Cut_2a = geompy.MakeCutList(Translation_3, [Up_Down])
Cut_2b = geompy.MakeCutList(Translation_4, [Up_Down])
Cut_3a = geompy.MakeCutList(Extrusion_1, [Up_Down])
Cut_3b = geompy.MakeCutList(Extrusion_2, [Up_Down])
Middle = geompy.MakeTranslation(Up_Down, L2, L2, L2)
Pore_1a = geompy.MakeCutList(Cut_1a, [Middle])
Pore_1b = geompy.MakeCutList(Cut_1b, [Middle])
Pore_2a = geompy.MakeCutList(Cut_2a, [Middle])
Pore_2b = geompy.MakeCutList(Cut_2b, [Middle])
Pore_3a = geompy.MakeCutList(Cut_3a, [Middle])
Pore_3b = geompy.MakeCutList(Cut_3b, [Middle])
geompy.addToStudy( Sphere_1, 'Sphere_' )
geompy.addToStudy( Down, 'Down_' )
geompy.addToStudy( Up, 'Up_' )
geompy.addToStudy( Up_Down, 'Up_Down_' )
geompy.addToStudy( Cut_1a, 'Cut_1a_' )
geompy.addToStudy( Cut_1b, 'Cut_1b_' )
geompy.addToStudy( Middle, 'Middle_' )
geompy.addToStudy( Pore_1a, 'Pore_1a_' )
geompy.addToStudy( Pore_1b, 'Pore_1b_' )
geompy.addToStudy( Pore_2a, 'Pore_2a_' )
geompy.addToStudy( Pore_2b, 'Pore_2b_' )
geompy.addToStudy( Pore_3a, 'Pore_3a_' )
geompy.addToStudy( Pore_3b, 'Pore_3b_' )
if salome.sg.hasDesktop():
salome.sg.updateObjBrowser()
grains = geompy.ExtractShapes(Up_Down, geompy.ShapeType["SOLID"], True)
grains += geompy.ExtractShapes(Middle, geompy.ShapeType["SOLID"], True)
grains = geompy.MakeFuseList(grains, False, False)
return grains, Pore_1a, Pore_3a

View File

@ -0,0 +1,134 @@
import sys
import salome
salome.salome_init()
import GEOM
from salome.geom import geomBuilder
import math
import SALOMEDS
geompy = geomBuilder.New()
def faceCenteredCubic(alpha):
O = geompy.MakeVertex(0, 0, 0)
OX = geompy.MakeVectorDXDYDZ(1, 0, 0)
OY = geompy.MakeVectorDXDYDZ(0, 1, 0)
OZ = geompy.MakeVectorDXDYDZ(0, 0, 1)
V = geompy.MakeVectorDXDYDZ(1, 1, 1)
V_1 = geompy.MakeVectorDXDYDZ(1, 1, 0)
V_2 = geompy.MakeVectorDXDYDZ(1, -1, 0)
L = 1.0
r0 = L*math.sqrt(2)/4
a=2*r0
b=L/2
#c=b/2
h=L/math.sqrt(3)
Pi_4 = 45*math.pi/180.0
Vertex_1 = geompy.MakeVertex(-a, -a, -b)
Vertex_2 = geompy.MakeVertex(a, a, b)
Vertex_3 = geompy.MakeVertex(-1, 0, -b) # Center of Sphere_1
Vertex_4 = geompy.MakeVertex(-b, 0, -0)
Vertex_5 = geompy.MakeVertex(0, 0, -b)
sk = geompy.Sketcher3D() # Rombus
sk.addPointsAbsolute(-b, -b, b) #Vertex_1 of Rombus
sk.addPointsAbsolute(0, -b, 0) #Vertex_2 of Rombus
sk.addPointsAbsolute(0, 0, -b) #Vertex_3 of Rombus
sk.addPointsAbsolute(-b, 0, 0) #Vertex_4 of Rombus
sk.addPointsAbsolute(-b, -b, b) #Vertex_1 of Rombus
a3D_Sketcher_1 = sk.wire()
Face_1 = geompy.MakeFaceWires([a3D_Sketcher_1], 1)
Face_1_Up = geompy.MakeTranslation(Face_1, b, b, 0)
Rhombohedron = geompy.MakeHexa2Faces(Face_1, Face_1_Up)
sk_2 = geompy.Sketcher3D() # Triangle
sk_2.addPointsAbsolute(-2*b/3, -2*b/3, b/3) #Vertex_1 of Triangle
sk_2.addPointsAbsolute(0, -b, 0) #Vertex_2 of Triangle
sk_2.addPointsAbsolute(-b/3, -b/3, -b/3) #Vertex_3 of Triangle
sk_2.addPointsAbsolute(-2*b/3, -2*b/3, b/3) #Vertex_1 of Triangle
a3D_Sketcher_2 = sk_2.wire()
Face_2 = geompy.MakeFaceWires([a3D_Sketcher_2], 1)
Extrusion_2 = geompy.MakePrismVecH(Face_2, V, h)
sk_3 = geompy.Sketcher3D() # Hexagon
sk_3.addPointsAbsolute(-2*b/3, -2*b/3, b/3) #Vertex_1 of Hexagon
sk_3.addPointsAbsolute(0, -b, 0) #Vertex_2 of Hexagon
sk_3.addPointsAbsolute(b/3, -2*b/3, -2*b/3) #Vertex_3 of Hexagon
sk_3.addPointsAbsolute(0, 0, -b) #Vertex_4 of Hexagon
sk_3.addPointsAbsolute(-2*b/3, b/3, -2*b/3) #Vertex_5 of Hexagon
sk_3.addPointsAbsolute(-b, 0, 0) #Vertex_6 of Hexagon
sk_3.addPointsAbsolute(-2*b/3, -2*b/3, b/3) #Vertex_1 of Hexagon
a3D_Sketcher_3 = sk_3.wire()
Face_3 = geompy.MakeFaceWires([a3D_Sketcher_3], 1)
Extrusion_3 = geompy.MakePrismVecH(Face_3, V, h)
Box_1 = geompy.MakeBoxTwoPnt(Vertex_1, Vertex_2)
Rotation_1 = geompy.MakeRotation(Box_1, OZ, Pi_4)
Box_2 = geompy.MakeBoxTwoPnt(Vertex_5, Vertex_2)
Rotation_2 = geompy.MakeRotation(Box_2, OZ, Pi_4)
geompy.addToStudy( O, 'O' )
geompy.addToStudy( OX, 'OX' )
geompy.addToStudy( OY, 'OY' )
geompy.addToStudy( OZ, 'OZ' )
geompy.addToStudy( V_1, 'V_1' )
geompy.addToStudy( V_2, 'V_2' )
geompy.addToStudy( Box_1, 'Box_1' )
geompy.addToStudy( Rotation_1, 'Rotation_1' )
geompy.addToStudy( Box_2, 'Box_2' )
geompy.addToStudy( Rotation_2, 'Rotation_2_' )
geompy.addToStudy( a3D_Sketcher_1, 'a3D_Sketcher_1' )
geompy.addToStudy( Face_1, 'Face_1' )
geompy.addToStudy( Face_1_Up, 'Face_1_Up' )
geompy.addToStudy( Rhombohedron, 'Rhombohedron' )
geompy.addToStudy( a3D_Sketcher_2, 'a3D_Sketcher_2' )
geompy.addToStudy( Face_2, 'Face_2' )
geompy.addToStudy( Extrusion_2, 'Extrusion_2' )
geompy.addToStudy( a3D_Sketcher_3, 'a3D_Sketcher_3' )
geompy.addToStudy( Face_3, 'Face_3' )
geompy.addToStudy( Extrusion_3, 'Extrusion_3' )
Radius = r0/(1-alpha)
Sphere_1 = geompy.MakeSpherePntR(Vertex_3, Radius)
Down = geompy.MakeMultiTranslation2D(Sphere_1, V_1, a, 3, V_2, a, 3)
Up_Down = geompy.MakeMultiTranslation1D(Down, OZ, 1, 2)
Cut_1 = geompy.MakeCutList(Rotation_1, [Up_Down], True)
Sphere_2 = geompy.MakeSpherePntR(Vertex_4, Radius)
Middle = geompy.MakeMultiTranslation2D(Sphere_2, V_1, a, 2, V_2, a, 2)
Cut_2 = geompy.MakeCutList(Cut_1, [Middle], True)
Common = geompy.MakeCommonList([Cut_2, Rotation_2], True)
Pore_3 = geompy.MakeCommonList([Rhombohedron, Cut_2], True)
Cut_3 = geompy.MakeCutList(Extrusion_2, [Up_Down], True)
Cut_4 = geompy.MakeCutList(Cut_3, [Middle], True)
Cut_5 = geompy.MakeCutList(Extrusion_3, [Up_Down], True)
Cut_6 = geompy.MakeCutList(Cut_5, [Middle], True)
#geompy.addToStudy( Sphere_1, 'Sphere_' )
geompy.addToStudy( Down, 'Down_' )
geompy.addToStudy( Up_Down, 'Up_Down_' )
geompy.addToStudy( Cut_1, 'Cut_1_' )
geompy.addToStudy( Middle, 'Middle_' )
geompy.addToStudy( Cut_2, 'Pore_' )
geompy.addToStudy( Common, 'Pore_2_' )
geompy.addToStudy( Pore_3, 'Pore_3_' )
geompy.addToStudy( Cut_4, 'Pore_3a_' )
geompy.addToStudy( Cut_6, 'Pore_3b_' )
if salome.sg.hasDesktop():
salome.sg.updateObjBrowser()
grains = geompy.ExtractShapes(Up_Down, geompy.ShapeType["SOLID"], True)
grains += geompy.ExtractShapes(Middle, geompy.ShapeType["SOLID"], True)
grains = geompy.MakeFuseList(grains, False, False)
return grains, Common, Pore_3

103
samples/simpleCubic.py Normal file
View File

@ -0,0 +1,103 @@
import sys
import salome
salome.salome_init()
import GEOM
from salome.geom import geomBuilder
import math
import SALOMEDS
geompy = geomBuilder.New()
def simpleCubic(alpha):
O = geompy.MakeVertex(0, 0, 0)
OX = geompy.MakeVectorDXDYDZ(1, 0, 0)
OY = geompy.MakeVectorDXDYDZ(0, 1, 0)
OZ = geompy.MakeVectorDXDYDZ(0, 0, 1)
r0 = 1.0
L = 2*r0
h = L
h2 = 2*h
d1 = L*math.sqrt(2)
d2 = L*math.sqrt(3)
d = 1/math.sqrt(3)
pi_4 = 45*math.pi/180.0
pi_2 = 90*math.pi/180.0
Box_1 = geompy.MakeBoxDXDYDZ(d1, d1, h)
Rotation_1 = geompy.MakeRotation(Box_1, OZ, pi_4)
Translation_2 = geompy.MakeTranslation(Rotation_1, h, 0, 0)
Vertex_1 = geompy.MakeVertex(h, 0, 0)
Vertex_2 = geompy.MakeVertex(h, h, 0)
Vertex_3 = geompy.MakeVertex(h, h, h)
Line_1 = geompy.MakeLineTwoPnt(Vertex_2, Vertex_3)
sk = geompy.Sketcher3D()
sk.addPointsAbsolute(0, 0, h2) #Vertex_1 of Rombus
sk.addPointsAbsolute(h, 0, h) #Vertex_2 of Rombus
sk.addPointsAbsolute(h, h, 0) #Vertex_3 of Rombus
sk.addPointsAbsolute(0, h, h) #Vertex_4 of Rombus
sk.addPointsAbsolute(0, 0, h2) #Vertex_1 of Rombus
sk_2 = geompy.Sketcher3D()
sk_2.addPointsAbsolute(L, L, L) #Vertex_1 of Hexagon
sk_2.addPointsAbsolute(5*L/3, 2*L/3, 2*L/3) #Vertex_2 of Hexagon
sk_2.addPointsAbsolute(2*L, L, 0) #Vertex_3 of Hexagon
sk_2.addPointsAbsolute(5*L/3, 5*L/3, -L/3) #Vertex_4 of Hexagon
sk_2.addPointsAbsolute(L, 2*L, 0) #Vertex_5 of Hexagon
sk_2.addPointsAbsolute(2*L/3, 5*L/3, 2*L/3) #Vertex_6 of Hexagon
sk_2.addPointsAbsolute(L, L, L) #Vertex_1 of Hexagon
a3D_Sketcher_1 = sk.wire()
Face_1 = geompy.MakeFaceWires([a3D_Sketcher_1], 1)
Vector_1 = geompy.MakeVectorDXDYDZ(1, 1, 0)
Extrusion_1 = geompy.MakePrismVecH(Face_1, Vector_1, d1)
a3D_Sketcher_2 = sk_2.wire()
Face_2 = geompy.MakeFaceWires([a3D_Sketcher_2], 1)
Vector_2 = geompy.MakeVectorDXDYDZ(1, 1, 1)
Extrusion_2 = geompy.MakePrismVecH(Face_2, Vector_2, d2/3)
geompy.addToStudy( O, 'O' )
geompy.addToStudy( OX, 'OX' )
geompy.addToStudy( OY, 'OY' )
geompy.addToStudy( OZ, 'OZ' )
geompy.addToStudy( Vertex_1, 'Vertex_1' )
geompy.addToStudy( Vertex_2, 'Vertex_2' )
geompy.addToStudy( Vertex_3, 'Vertex_3' )
geompy.addToStudy( Line_1, 'Line_1' )
geompy.addToStudy( Box_1, 'Box_1' )
geompy.addToStudy( Rotation_1, 'Rotation_1' )
geompy.addToStudy( Translation_2, 'Translation_2' )
geompy.addToStudy( a3D_Sketcher_1, 'a3D_Sketcher_1' )
geompy.addToStudy( Face_1, 'Face_1' )
geompy.addToStudy( Vector_1, 'Vector_1' )
geompy.addToStudy( Extrusion_1, 'Extrusion_1' )
geompy.addToStudy( a3D_Sketcher_2, 'a3D_Sketcher_2' )
geompy.addToStudy( Face_2, 'Face_2' )
geompy.addToStudy( Vector_2, 'Vector_2' )
geompy.addToStudy( Extrusion_2, 'Extrusion_2' )
Sphere_1 = geompy.MakeSphereR(r0/(1-alpha))
Multi_Translation_2 = geompy.MakeMultiTranslation2D(Sphere_1, OX, 2, 3, OY, 2, 3)
Multi_Translation_3 = geompy.MakeMultiTranslation1D(Multi_Translation_2, OZ, 2, 3)
Cut_1 = geompy.MakeCutList(Translation_2, [Multi_Translation_3])
Cut_2 = geompy.MakeCutList(Extrusion_1, [Multi_Translation_3])
Cut_3 = geompy.MakeCutList(Extrusion_2, [Multi_Translation_3])
Cut_V = geompy.MakeCutList(Cut_1, [Cut_3])
#Cut_2.SetColor(SALOMEDS.Color(0,0,1))
geompy.addToStudy( Sphere_1, 'Sphere_' )
geompy.addToStudy( Multi_Translation_2, 'Multi-Translation_2_' )
geompy.addToStudy( Multi_Translation_3, 'Multi-Translation_3_' )
geompy.addToStudy( Cut_1, 'Pore1_' )
geompy.addToStudy( Cut_2, 'Pore2_' )
geompy.addToStudy( Cut_3, 'Pore3_' )
geompy.addToStudy( Cut_V, 'Cut_V_' )
if salome.sg.hasDesktop():
salome.sg.updateObjBrowser()
return Multi_Translation_3, Cut_1, Cut_2

84
samples_.py Normal file
View File

@ -0,0 +1,84 @@
from src import geometry_utils
import GEOM
from src import mesh_utils
import SMESH
from src import anisotropeCubic
import salome
import math
import samples
def genMesh(ctype, theta, flowdirection):
_G = globals()
#for g in _G:
func = _G.get(ctype)
if func:
salome.salome_init()
func(theta, flowdirection)
salome.salome_close()
else:
raise Exception("Unknown type of the sample function")
def simpleCubic(theta, flowdirection):
#radius = 1
#stackAngle = [0.5 * math.pi, 0.5 * math.pi, 0.5 * math.pi]
theta = theta if theta else 0.1
#layers = [3, 3, 3]
#grains = anisotropeCubic.StructuredGrains(radius, stackAngle, theta, layers)
#scale = [2 * math.sqrt(2), 2 * math.sqrt(2), 2]
flowdirection = flowdirection if flowdirection else [1, 0, 0]
#style = 0
#cubic = anisotropeCubic.AnisotropeCubic(scale, grains, style)
grains, cubic, _ = samples.simpleCubic(theta)
boundary = geometry_utils.boundaryCreate(cubic, flowdirection, grains)
fineness = 3
mesh = mesh_utils.meshCreate(cubic, boundary, fineness)
mesh_utils.meshCompute(mesh)
def bodyCenteredCubic(theta, flowdirection):
#radius = 1
#stackAngle = [0.5 * math.pi, 0.25 * math.pi, 0.25 * math.pi]
theta = theta if theta else 0.1
#layers = [3, 3, 3]
#grains = anisotropeCubic.StructuredGrains(radius, stackAngle, theta, layers)
#scale = [2 / math.sqrt(2), 2 / math.sqrt(2), 1]
flowdirection = flowdirection if flowdirection else [1, 0, 0]
#style = 0
#cubic = anisotropeCubic.AnisotropeCubic(scale, grains, style)
grains, cubic, _ = samples.bodyCenteredCubic(theta)
boundary = geometry_utils.boundaryCreate(cubic, flowdirection, grains)
fineness = 3
mesh = mesh_utils.meshCreate(cubic, boundary, fineness)
mesh_utils.meshCompute(mesh)
def faceCenteredCubic(theta, flowdirection):
#radius = 1
#stackAngle = [0.5 * math.pi, 0.5 * math.pi, 0.5 * math.pi]
theta = theta if theta else 0.1
#layers = [3, 3, 3]
#grains = anisotropeCubic.StructuredGrains(radius, stackAngle, theta, layers)
#scale = [1 / math.sqrt(2), 1 / math.sqrt(2), 1]
flowdirection = flowdirection if flowdirection else [1, 0, 0]
#style = 0
#cubic = anisotropeCubic.AnisotropeCubic(scale, grains, style)
grains, cubic, _ = samples.faceCenteredCubic(theta)
boundary = geometry_utils.boundaryCreate(cubic, flowdirection, grains)
fineness = 3
mesh = mesh_utils.meshCreate(cubic, boundary, fineness)
mesh_utils.meshCompute(mesh)

View File

@ -18,6 +18,7 @@ def rotate(gobj, ang):
# yaw
rotated = geompy.MakeRotation(gobj, z, ang[2])
print(rotated)
# pitch
rotated = geompy.MakeRotation(rotated, y, ang[1])
# roll
@ -42,7 +43,7 @@ def boundaryCreate(gobj, dvec, grains):
xvec = geompy.MakeVector(
geompy.MakeVertex(0, 0, 0),
geompy.MakeVertex(dvec[0], dvec[1], dvec[2]))
xvec = rotate(dvec, self.angle)
#xvec = rotate(dvec, self.angle)
yvec = rotate(xvec, [0.5 * math.pi, 0, 0])
zvec = rotate(xvec, [0, 0.5 * math.pi, 0])