X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESH_SWIG%2FSMESH_AdvancedEditor.py;h=86e8ce1f023fbd51dd59f70b907da1e72bc3617e;hp=914cd7931d27b1b0a3c08b5df559e556dada2807;hb=127d2277c6a516d0e9fadd77b4ef0b0c6286cf17;hpb=c63ee099ad2b149bd70136839c973e8910137bc5 diff --git a/src/SMESH_SWIG/SMESH_AdvancedEditor.py b/src/SMESH_SWIG/SMESH_AdvancedEditor.py index 914cd7931..86e8ce1f0 100644 --- a/src/SMESH_SWIG/SMESH_AdvancedEditor.py +++ b/src/SMESH_SWIG/SMESH_AdvancedEditor.py @@ -1,4 +1,6 @@ -# Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +# +# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS # # This library is free software; you can redistribute it and/or @@ -15,10 +17,9 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # import smesh -import SMESH import math def GetNewNodes(mesh,Elems,OldNodes): @@ -51,45 +52,44 @@ def GetNewNodes(mesh,Elems,OldNodes): # create empty mesh -mesh = smesh.smesh.CreateEmptyMesh() +mesh = smesh.Mesh() -ed = mesh.GetMeshEditor() tol = 0.001 # create a cross from quadrangle faces # 1. create first edge and make extrusion along 0x -n1 = ed.AddNode(55,-5,0) -n2 = ed.AddNode(55,5,0) -e1 = ed.AddEdge([n1,n2]) -dir1 = SMESH.DirStruct(SMESH.PointStruct(-10,0,0)) -ed.ExtrusionSweep([e1],dir1,11) +n1 = mesh.AddNode(55,-5,0) +n2 = mesh.AddNode(55,5,0) +e1 = mesh.AddEdge([n1,n2]) +dir1 = smesh.DirStruct(smesh.PointStruct(-10,0,0)) +mesh.ExtrusionSweep([e1],dir1,11) # 2. create second edge and make extrusion along 0y -n3 = ed.AddNode(-5,-55,0) -n4 = ed.AddNode(5,-55,0) -e2 = ed.AddEdge([n3,n4]) -dir2 = SMESH.DirStruct(SMESH.PointStruct(0,10,0)) -ed.ExtrusionSweep([e2],dir2,11) +n3 = mesh.AddNode(-5,-55,0) +n4 = mesh.AddNode(5,-55,0) +e2 = mesh.AddEdge([n3,n4]) +dir2 = smesh.DirStruct(smesh.PointStruct(0,10,0)) +mesh.ExtrusionSweep([e2],dir2,11) # since result has coincident nodes and faces # we have to make merge -nodes = ed.FindCoincidentNodes(0.001) -ed.MergeNodes(nodes) -ed.MergeEqualElements() +nodes = mesh.FindCoincidentNodes(0.001) +mesh.MergeNodes(nodes) +mesh.MergeEqualElements() # make extrusion faces along 0z -faces = mesh.GetElementsByType(SMESH.FACE) +faces = mesh.GetElementsByType(smesh.FACE) nbf = len(faces) maxang = 2.0 zstep = 5 nbzsteps = 50 -dir3 = SMESH.DirStruct(SMESH.PointStruct(0,0,zstep)) +dir3 = smesh.DirStruct(smesh.PointStruct(0,0,zstep)) newfaces = [] # list for keeping created top faces # during extrusion for i in range(0,nbzsteps): - ed.ExtrusionSweep(faces,dir3,1) + mesh.ExtrusionSweep(faces,dir3,1) # find top faces after each extrusion and keep them - res = ed.GetLastCreatedElems() + res = mesh.GetLastCreatedElems() nbr = len(res) nfaces = [] for j in res: @@ -115,23 +115,23 @@ for i in range(0,nbzsteps): pass # rotate faces from newfaces -axisr1 = SMESH.AxisStruct(0,0,0,0,0,1) +axisr1 = smesh.AxisStruct(0,0,0,0,0,1) for i in range(0,nbzsteps): ang = maxang*(1-math.cos((i+1)*math.pi/nbzsteps)) - ed.Rotate(newfaces[i],axisr1,ang,0) + mesh.Rotate(newfaces[i],axisr1,ang,0) # create circles # create two edges and rotate them for creation # full circle -n5 = ed.AddNode(65,0,0) -n6 = ed.AddNode(67.5,0,0) -n7 = ed.AddNode(70,0,0) -e56 = ed.AddEdge([n5,n6]) -e67 = ed.AddEdge([n6,n7]) -axisr2 = SMESH.AxisStruct(65,0,0,0,1,0) -ed.RotationSweep([e56,e67],axisr2, math.pi/6, 12, tol) -res = ed.GetLastCreatedElems() +n5 = mesh.AddNode(65,0,0) +n6 = mesh.AddNode(67.5,0,0) +n7 = mesh.AddNode(70,0,0) +e56 = mesh.AddEdge([n5,n6]) +e67 = mesh.AddEdge([n6,n7]) +axisr2 = smesh.AxisStruct(65,0,0,0,1,0) +mesh.RotationSweep([e56,e67],axisr2, math.pi/6, 12, tol) +res = mesh.GetLastCreatedElems() faces1 = [] for i in res: nbn = mesh.GetElemNbNodes(i) @@ -141,14 +141,14 @@ nbf1 = len(faces1) # create other two edges and rotate them for creation # other full circle -n8 = ed.AddNode(-65,0,0) -n9 = ed.AddNode(-67.5,0,0) -n10 = ed.AddNode(-70,0,0) -e8 = ed.AddEdge([n8,n9]) -e9 = ed.AddEdge([n9,n10]) -axisr3 = SMESH.AxisStruct(-65,0,0,0,-1,0) -ed.RotationSweep([e8,e9],axisr3, math.pi/6, 12, tol) -res = ed.GetLastCreatedElems() +n8 = mesh.AddNode(-65,0,0) +n9 = mesh.AddNode(-67.5,0,0) +n10 = mesh.AddNode(-70,0,0) +e8 = mesh.AddEdge([n8,n9]) +e9 = mesh.AddEdge([n9,n10]) +axisr3 = smesh.AxisStruct(-65,0,0,0,-1,0) +mesh.RotationSweep([e8,e9],axisr3, math.pi/6, 12, tol) +res = mesh.GetLastCreatedElems() faces2 = [] for i in res: nbn = mesh.GetElemNbNodes(i) @@ -158,8 +158,8 @@ nbf2 = len(faces2) # there are coincident nodes after rotation # therefore we have to merge nodes -nodes = ed.FindCoincidentNodes(0.001) -ed.MergeNodes(nodes) +nodes = mesh.FindCoincidentNodes(0.001) +mesh.MergeNodes(nodes) nbcircs = 2 nbrsteps = 24 @@ -172,8 +172,8 @@ newnodes = GetNewNodes(mesh,faces1,oldnodes) oldnodes = newnodes nodes = [] -ed.RotationSweep(faces1,axisr1, math.pi*2/nbrsteps, nbrs, tol) -res = ed.GetLastCreatedElems() +mesh.RotationSweep(faces1,axisr1, math.pi*2/nbrsteps, nbrs, tol) +res = mesh.GetLastCreatedElems() for i in range(0,nbrs): volumes = [] @@ -181,7 +181,7 @@ for i in range(0,nbrs): newnodes = GetNewNodes(mesh,volumes,oldnodes) for j in newnodes: xyz = mesh.GetNodeXYZ(j) - ed.MoveNode(j,xyz[0],xyz[1],xyz[2]+dz*(i+1)) + mesh.MoveNode(j,xyz[0],xyz[1],xyz[2]+dz*(i+1)) pass oldnodes = newnodes pass @@ -192,8 +192,8 @@ newnodes = GetNewNodes(mesh,faces2,oldnodes) oldnodes = newnodes nodes = [] -ed.RotationSweep(faces2,axisr1, math.pi*2/nbrsteps, nbrs, tol) -res = ed.GetLastCreatedElems() +mesh.RotationSweep(faces2,axisr1, math.pi*2/nbrsteps, nbrs, tol) +res = mesh.GetLastCreatedElems() for i in range(0,nbrs): volumes = [] @@ -201,9 +201,9 @@ for i in range(0,nbrs): newnodes = GetNewNodes(mesh,volumes,oldnodes) for j in newnodes: xyz = mesh.GetNodeXYZ(j) - ed.MoveNode(j,xyz[0],xyz[1],xyz[2]+dz*(i+1)) + mesh.MoveNode(j,xyz[0],xyz[1],xyz[2]+dz*(i+1)) pass oldnodes = newnodes pass - +smesh.salome.sg.updateObjBrowser(1)