mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2024-12-30 19:30:36 +05:00
202 lines
6.9 KiB
Python
202 lines
6.9 KiB
Python
# Creation of a PipeWithShellSections
|
|
|
|
import salome
|
|
salome.salome_init()
|
|
import GEOM
|
|
from salome.geom import geomBuilder
|
|
geompy = geomBuilder.New(salome.myStudy)
|
|
import math
|
|
gg = salome.ImportComponentGUI("GEOM")
|
|
|
|
# create path
|
|
WirePath = geompy.MakeSketcher("Sketcher:F 0 0:TT 100 0:R 0:C 100 90:T 0 200", [0, 0, 0, 0, 0, 1, 1, 0, -0])
|
|
|
|
# get sub-shapes
|
|
edges = geompy.SubShapeAll(WirePath, geompy.ShapeType["EDGE"])
|
|
vertices = geompy.SubShapeAll(WirePath, geompy.ShapeType["VERTEX"])
|
|
|
|
|
|
#=======================================================
|
|
# Create shell sections
|
|
#=======================================================
|
|
ps = [vertices[0],vertices[1],vertices[2],vertices[3]]
|
|
theLocations = [vertices[0],vertices[1],vertices[2],vertices[3]]
|
|
VC = geompy.MakeCompound(theLocations)
|
|
geompy.addToStudy(VC,"VC")
|
|
vs = [edges[0],edges[0],edges[2],edges[2]]
|
|
hs = [20,40,30,20]
|
|
shells = []
|
|
subbases = []
|
|
|
|
# 1 section
|
|
c0 = geompy.PointCoordinates(ps[0])
|
|
c1 = geompy.PointCoordinates(ps[1])
|
|
nx = c1[0] - c0[0]
|
|
ny = c1[1] - c0[1]
|
|
nz = c1[2] - c0[2]
|
|
|
|
faces = []
|
|
f1 = geompy.MakeSketcher("Sketcher:F 0 0:TT 20 0:TT 20 20:TT 0 20:WF",
|
|
[c0[0], c0[1], c0[2], nx, ny, nz, 0, 0, 1])
|
|
f2 = geompy.MakeSketcher("Sketcher:F 0 0:TT 0 20:TT -20 20:TT -20 0:WF",
|
|
[c0[0], c0[1], c0[2], nx, ny, nz, 0, 0, 1])
|
|
f3 = geompy.MakeSketcher("Sketcher:F 0 0:TT -20 0:TT -20 -20:TT 0 -20:WF",
|
|
[c0[0], c0[1], c0[2], nx, ny, nz, 0, 0, 1])
|
|
f4 = geompy.MakeSketcher("Sketcher:F 0 0:TT 0 -20:TT 20 -20:TT 20 0:WF",
|
|
[c0[0], c0[1], c0[2], nx, ny, nz, 0, 0, 1])
|
|
faces.append(f1)
|
|
faces.append(f2)
|
|
faces.append(f3)
|
|
faces.append(f4)
|
|
shell = geompy.MakeSewing(faces,1.e-6)
|
|
shells.append(shell)
|
|
faces = geompy.SubShapeAllSortedCentres(shell, geompy.ShapeType["FACE"])
|
|
subbases.append(faces[0])
|
|
|
|
# 2 section
|
|
faces = []
|
|
|
|
w = geompy.MakeSketcher("Sketcher:F 20 20:TT 0 20:TT 0 0:TT 20 0",
|
|
[c1[0], c1[1], c1[2], nx, ny, nz, 0, 0, 1])
|
|
contour = geompy.CloseContour(w, [], isCommonVertex=False)
|
|
[e1,e2,e3,e4] = geompy.SubShapeAll(contour, geompy.ShapeType["EDGE"])
|
|
w = geompy.MakeWire([e1,e2,e3,e4])
|
|
f1 = geompy.MakeFace(w,1)
|
|
|
|
w = geompy.MakeSketcher("Sketcher:F -20 0:TT 0 0:TT 0 20:TT -20 20",
|
|
[c1[0], c1[1], c1[2], nx, ny, nz, 0, 0, 1])
|
|
contour = geompy.CloseContour(w, [], isCommonVertex=False)
|
|
[e1,e2,e3,e4] = geompy.SubShapeAll(contour, geompy.ShapeType["EDGE"])
|
|
w = geompy.MakeWire([e1,e2,e3,e4])
|
|
f2 = geompy.MakeFace(w,1)
|
|
|
|
w = geompy.MakeSketcher("Sketcher:F 20 0:TT 0 0:TT 0 -20:TT 20 -20",
|
|
[c1[0], c1[1], c1[2], nx, ny, nz, 0, 0, 1])
|
|
contour = geompy.CloseContour(w, [], isCommonVertex=False)
|
|
[e1,e2,e3,e4] = geompy.SubShapeAll(contour, geompy.ShapeType["EDGE"])
|
|
w = geompy.MakeWire([e1,e2,e3,e4])
|
|
f3 = geompy.MakeFace(w,1)
|
|
|
|
w = geompy.MakeSketcher("Sketcher:F -20 -20:TT 0 -20:TT 0 0:TT -20 0",
|
|
[c1[0], c1[1], c1[2], nx, ny, nz, 0, 0, 1])
|
|
contour = geompy.CloseContour(w, [], isCommonVertex=False)
|
|
[e1,e2,e3,e4] = geompy.SubShapeAll(contour, geompy.ShapeType["EDGE"])
|
|
w = geompy.MakeWire([e1,e2,e3,e4])
|
|
f4 = geompy.MakeFace(w,1)
|
|
|
|
faces.append(f1)
|
|
faces.append(f2)
|
|
faces.append(f3)
|
|
faces.append(f4)
|
|
shell = geompy.MakeSewing(faces,1.e-6)
|
|
shells.append(shell)
|
|
faces = geompy.SubShapeAllSortedCentres(shell, geompy.ShapeType["FACE"])
|
|
subbases.append(faces[0])
|
|
|
|
# 3 section
|
|
faces = []
|
|
c2 = geompy.PointCoordinates(ps[2])
|
|
c3 = geompy.PointCoordinates(ps[3])
|
|
nx = c3[0] - c2[0]
|
|
ny = c3[1] - c2[1]
|
|
nz = c3[2] - c2[2]
|
|
|
|
w = geompy.MakeSketcher("Sketcher:F 20 20:TT 0 20:TT 0 0:TT 20 0",
|
|
[c2[0], c2[1], c2[2], nx, ny, nz, 0, 0, 1])
|
|
contour = geompy.CloseContour(w, [], isCommonVertex=False)
|
|
[e1,e2,e3,e4] = geompy.SubShapeAll(contour, geompy.ShapeType["EDGE"])
|
|
w = geompy.MakeWire([e1,e2,e3,e4])
|
|
f1 = geompy.MakeFace(w,1)
|
|
|
|
w = geompy.MakeSketcher("Sketcher:F -20 0:TT 0 0:TT 0 20:TT -20 20",
|
|
[c2[0], c2[1], c2[2], nx, ny, nz, 0, 0, 1])
|
|
contour = geompy.CloseContour(w, [], isCommonVertex=False)
|
|
[e1,e2,e3,e4] = geompy.SubShapeAll(contour, geompy.ShapeType["EDGE"])
|
|
w = geompy.MakeWire([e1,e2,e3,e4])
|
|
f2 = geompy.MakeFace(w,1)
|
|
|
|
w = geompy.MakeSketcher("Sketcher:F 20 0:TT 0 0:TT 0 -20:TT 20 -20",
|
|
[c2[0], c2[1], c2[2], nx, ny, nz, 0, 0, 1])
|
|
contour = geompy.CloseContour(w, [], isCommonVertex=False)
|
|
[e1,e2,e3,e4] = geompy.SubShapeAll(contour, geompy.ShapeType["EDGE"])
|
|
w = geompy.MakeWire([e1,e2,e3,e4])
|
|
f3 = geompy.MakeFace(w,1)
|
|
|
|
w = geompy.MakeSketcher("Sketcher:F -20 -20:TT 0 -20:TT 0 0:TT -20 0",
|
|
[c2[0], c2[1], c2[2], nx, ny, nz, 0, 0, 1])
|
|
contour = geompy.CloseContour(w, [], isCommonVertex=False)
|
|
[e1,e2,e3,e4] = geompy.SubShapeAll(contour, geompy.ShapeType["EDGE"])
|
|
w = geompy.MakeWire([e1,e2,e3,e4])
|
|
f4 = geompy.MakeFace(w,1)
|
|
|
|
faces.append(f1)
|
|
faces.append(f2)
|
|
faces.append(f3)
|
|
faces.append(f4)
|
|
shell = geompy.MakeSewing(faces,1.e-6)
|
|
shells.append(shell)
|
|
faces = geompy.SubShapeAllSortedCentres(shell, geompy.ShapeType["FACE"])
|
|
subbases.append(faces[2])
|
|
|
|
# 4 section
|
|
faces = []
|
|
|
|
kk = 4
|
|
dx = c3[0] - nx/kk
|
|
dy = c3[1] - ny/kk
|
|
dz = c3[2] - nz/kk
|
|
rad = math.sqrt(nx*nx+ny*ny+nz*nz)
|
|
vc = geompy.MakeVertex(dx,dy,dz)
|
|
sph = geompy.MakeSpherePntR(vc,rad/kk)
|
|
shellsph = geompy.SubShapeAll(sph, geompy.ShapeType["SHELL"])
|
|
|
|
fs = []
|
|
vec = geompy.MakeVectorDXDYDZ(0,0,1)
|
|
ff = geompy.MakePlane(ps[3],vec,40)
|
|
fs.append(ff)
|
|
vp = geompy.MakeVertex(c3[0],c3[1],c3[2]+20)
|
|
ff = geompy.MakePlane(vp,vec,40)
|
|
fs.append(ff)
|
|
vp = geompy.MakeVertex(c3[0],c3[1],c3[2]-20)
|
|
ff = geompy.MakePlane(vp,vec,40)
|
|
fs.append(ff)
|
|
vec = geompy.MakeVectorDXDYDZ(1,0,0)
|
|
ff = geompy.MakePlane(ps[3],vec,40)
|
|
fs.append(ff)
|
|
vp = geompy.MakeVertex(c3[0]+20,c3[1],c3[2])
|
|
ff = geompy.MakePlane(vp,vec,40)
|
|
fs.append(ff)
|
|
vp = geompy.MakeVertex(c3[0]-20,c3[1],c3[2])
|
|
ff = geompy.MakePlane(vp,vec,40)
|
|
fs.append(ff)
|
|
aPartition = geompy.MakePartition(shellsph,fs)
|
|
fs = geompy.SubShapeAllSortedCentres(aPartition, geompy.ShapeType["FACE"])
|
|
|
|
for face in fs:
|
|
if ( 4 == geompy.NbShapes(face, geompy.ShapeType["VERTEX"]) ):
|
|
faces.append(face)
|
|
pass
|
|
pass
|
|
shell = geompy.MakeSewing(faces,1.e-6)
|
|
shells.append(shell)
|
|
faces = geompy.SubShapeAllSortedCentres(shell, geompy.ShapeType["FACE"])
|
|
subbases.append(faces[2])
|
|
|
|
#===========================================================
|
|
# Create Pipe
|
|
#===========================================================
|
|
Pipe = geompy.MakePipeWithShellSections(shells, subbases, theLocations, WirePath,
|
|
theWithContact=0, theWithCorrection=0)
|
|
|
|
# add objects in the study
|
|
resc = geompy.MakeCompound(shells)
|
|
id_sec = geompy.addToStudy(resc,"sections")
|
|
id_wire = geompy.addToStudy(WirePath,"WirePath")
|
|
id_pipe = geompy.addToStudy(Pipe, "Pipe")
|
|
|
|
# display the wire(path), sections and the pipe
|
|
gg.createAndDisplayGO(id_wire)
|
|
gg.createAndDisplayGO(id_sec)
|
|
gg.createAndDisplayGO(id_pipe)
|
|
gg.setDisplayMode(id_pipe,1)
|