ABAQUS切削快速建模python程序


  1 # -*- coding: mbcs -*-
  2 #
  3 # Abaqus/CAE Release 6.14-4 replay file
  4 # Internal Version: 2015_06_12-04.41.13 135079
  5 # Run by Administrator on Wed Apr 12 08:41:02 2017
  6 #
  7 
  8 # from driverUtils import executeOnCaeGraphicsStartup
  9 # executeOnCaeGraphicsStartup()
 10 #: Executing "onCaeGraphicsStartup()" in the site directory ...
 11 #: Abaqus Error: 
 12 #: This error may have occurred due to a change to the Abaqus Scripting
 13 #: Interface. Please see the Abaqus Scripting Manual for the details of
 14 #: these changes. Also see the "Example environment files" section of 
 15 #: the Abaqus Site Guide for up-to-date examples of common tasks in the
 16 #: environment file.
 17 #: Execution of "onCaeGraphicsStartup()" in the site directory failed.
 18 from abaqus import *
 19 from abaqusConstants import *
 20 session.Viewport(name='Viewport: 1', origin=(0.0, 0.0), width=414.662475585938, 
 21     height=253.647216796875)
 22 session.viewports['Viewport: 1'].makeCurrent()
 23 session.viewports['Viewport: 1'].maximize()
 24 from caeModules import *
 25 from driverUtils import executeOnCaeStartup
 26 executeOnCaeStartup()
 27 session.viewports['Viewport: 1'].partDisplay.geometryOptions.setValues(
 28     referenceRepresentation=ON)
 29 Mdb()
 30 
 31 # set the absoluteZero
 32 mdb.models['Model-1'].setValues(absoluteZero=-273)
 33 
 34 from math import *
 35 
 36 # make the cutter dimension that you want
 37 cutterLength = 0.5
 38 cutterPointPos = cutterLength/2
 39 rakeAngle = 8.0
 40 clearanceAngle = 15.0
 41 
 42 
 43 #: A new model database has been created.
 44 #: The model "Model-1" has been created.
 45 session.viewports['Viewport: 1'].setValues(displayedObject=None)
 46 s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=cutterLength)
 47 g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints
 48 s.setPrimaryObject(option=STANDALONE)
 49 s.rectangle(point1=(-cutterPointPos, cutterPointPos), point2=(cutterPointPos, -cutterPointPos))
 50 p = mdb.models['Model-1'].Part(name='cutter', dimensionality=THREE_D, 
 51     type=DISCRETE_RIGID_SURFACE)
 52 p = mdb.models['Model-1'].parts['cutter']
 53 p.BaseShellExtrude(sketch=s, depth=cutterLength)
 54 s.unsetPrimaryObject()
 55 
 56 # make rake angle
 57 p = mdb.models['Model-1'].parts['cutter']
 58 f1, e1 = p.faces, p.edges
 59 t = p.MakeSketchTransform(sketchPlane=f1[2], sketchUpEdge=e1[8], 
 60     sketchPlaneSide=SIDE1, sketchOrientation=TOP)
 61 s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=cutterLength**2, 
 62     gridSpacing=cutterLength**2/50, transform=t)
 63 g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints
 64 s.setPrimaryObject(option=SUPERIMPOSE)
 65 p = mdb.models['Model-1'].parts['cutter']
 66 p.projectReferencesOntoSketch(sketch=s, filter=COPLANAR_EDGES)
 67 s.Line(point1=(cutterPointPos, -cutterPointPos), point2=(0, cutterPointPos))
 68 s.CoincidentConstraint(entity1=v[4], entity2=g[4], addUndoState=False)
 69 s.Line(point1=(0, cutterPointPos), point2=(cutterPointPos, cutterPointPos))
 70 s.HorizontalConstraint(entity=g[9], addUndoState=False)
 71 s.Line(point1=(cutterPointPos, cutterPointPos), point2=(cutterPointPos, -cutterPointPos))
 72 s.VerticalConstraint(entity=g[10], addUndoState=False)
 73 s.PerpendicularConstraint(entity1=g[9], entity2=g[10], addUndoState=False)
 74 s.AngularDimension(line1=g[3], line2=g[8], textPoint=(cutterPointPos - tan(rakeAngle*pi/180)*cutterPointPos/2, 
 75     0.0), value=rakeAngle)
 76 p = mdb.models['Model-1'].parts['cutter']
 77 f, e = p.faces, p.edges
 78 p.CutExtrude(sketchPlane=f[2], sketchUpEdge=e[8], sketchPlaneSide=SIDE1, 
 79     sketchOrientation=TOP, sketch=s, flipExtrudeDirection=ON)
 80 s.unsetPrimaryObject()
 81 del mdb.models['Model-1'].sketches['__profile__']
 82 
 83 # make clearance angle
 84 p = mdb.models['Model-1'].parts['cutter']
 85 f, e = p.faces, p.edges
 86 t = p.MakeSketchTransform(sketchPlane=f[0], sketchUpEdge=e[1], 
 87     sketchPlaneSide=SIDE1, sketchOrientation=TOP, origin=(cutterPointPos, 0.0, cutterPointPos))
 88 s1 = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', 
 89     sheetSize=cutterLength**2, gridSpacing=cutterLength**2/50, transform=t)
 90 g, v, d, c = s1.geometry, s1.vertices, s1.dimensions, s1.constraints
 91 s1.setPrimaryObject(option=SUPERIMPOSE)
 92 p = mdb.models['Model-1'].parts['cutter']
 93 p.projectReferencesOntoSketch(sketch=s1, filter=COPLANAR_EDGES)
 94 session.viewports['Viewport: 1'].setValues(displayedObject=p)
 95 s1.Line(point1=(cutterPointPos, -cutterPointPos), point2=(-cutterPointPos, 0))
 96 s1.CoincidentConstraint(entity1=v[4], entity2=g[4], addUndoState=False)
 97 s1.Line(point1=(-cutterPointPos, 0), point2=(-cutterPointPos, -cutterPointPos))
 98 s1.VerticalConstraint(entity=g[9], addUndoState=False)
 99 s1.Line(point1=(-cutterPointPos, -cutterPointPos), point2=(cutterPointPos, -cutterPointPos))
100 s1.HorizontalConstraint(entity=g[10], addUndoState=False)
101 s1.PerpendicularConstraint(entity1=g[9], entity2=g[10], addUndoState=False)
102 s1.AngularDimension(line1=g[8], line2=g[5], textPoint=(0, 
103     -cutterPointPos + tan(clearanceAngle*pi/180)*cutterPointPos/2), value=clearanceAngle)
104 p = mdb.models['Model-1'].parts['cutter']
105 f1, e1 = p.faces, p.edges
106 p.CutExtrude(sketchPlane=f1[0], sketchUpEdge=e1[1], sketchPlaneSide=SIDE1, 
107     sketchOrientation=TOP, sketch=s1, flipExtrudeDirection=ON)
108 s1.unsetPrimaryObject()
109 del mdb.models['Model-1'].sketches['__profile__']
110 
111 # connect the separete faces
112 p = mdb.models['Model-1'].parts['cutter']
113 e = p.edges
114 p.ShellLoft(loftsections=((e[0], ), (e[7], )), startCondition=NONE, 
115     endCondition=NONE)
116 p = mdb.models['Model-1'].parts['cutter']
117 e1 = p.edges
118 p.ShellLoft(loftsections=((e1[4], ), (e1[11], )), startCondition=NONE, 
119     endCondition=NONE)
120 p = mdb.models['Model-1'].parts['cutter']
121 e = p.edges
122 p.ShellLoft(loftsections=((e[8], ), (e[11], )), startCondition=NONE, 
123     endCondition=NONE)
124 
125 # make the reference point
126 p = mdb.models['Model-1'].parts['cutter']
127 v1, e, d1, n = p.vertices, p.edges, p.datums, p.nodes
128 p.ReferencePoint(point=p.InterestingPoint(edge=e[1], rule=MIDDLE))
129 
130 
131 # set the reference point named cutter
132 p = mdb.models['Model-1'].parts['cutter']
133 r = p.referencePoints
134 refPoints=(r[7], )
135 p.Set(referencePoints=refPoints, name='cutter')
136 
137 
138 # make the workpiece dimension that you want
139 workpieceLength = 0.2 #the length of the workpiece
140 workpieceHeight = 0.1 #the thickness of the workpiece
141 workpieceDepth = 0.1 #the width of the workpiece  
142 workpiecePointPosX = workpieceLength/2
143 workpiecePointPosY = workpieceHeight/2
144 cutDepth = 0.01 #the equivalent thickness of the workpiece
145 
146 
147 # make the workpiece
148 s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=workpieceLength)
149 g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints
150 s.setPrimaryObject(option=STANDALONE)
151 s.rectangle(point1=(-workpiecePointPosX, workpiecePointPosY), point2=(workpiecePointPosX, -workpiecePointPosY))
152 p = mdb.models['Model-1'].Part(name='workpiece', dimensionality=THREE_D, 
153     type=DEFORMABLE_BODY)
154 p = mdb.models['Model-1'].parts['workpiece']
155 p.BaseSolidExtrude(sketch=s, depth=workpieceDepth)
156 s.unsetPrimaryObject()
157 
158 
159 # make the seperate part
160 p = mdb.models['Model-1'].parts['workpiece']
161 f, e, d1 = p.faces, p.edges, p.datums
162 t = p.MakeSketchTransform(sketchPlane=f[4], sketchUpEdge=e[10], 
163     sketchPlaneSide=SIDE1, sketchOrientation=TOP)
164 s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', 
165     sheetSize=workpieceLength*2, gridSpacing=workpieceLength*2/50, transform=t)
166 g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints
167 s.setPrimaryObject(option=SUPERIMPOSE)
168 p = mdb.models['Model-1'].parts['workpiece']
169 p.projectReferencesOntoSketch(sketch=s, filter=COPLANAR_EDGES)
170 s.Line(point1=(-workpiecePointPosX, workpiecePointPosY), point2=(-workpiecePointPosX, workpiecePointPosY - cutDepth*2))
171 s.VerticalConstraint(entity=g[6], addUndoState=False)
172 s.ParallelConstraint(entity1=g[4], entity2=g[6], addUndoState=False)
173 s.CoincidentConstraint(entity1=v[4], entity2=g[4], addUndoState=False)
174 s.Line(point1=(-workpiecePointPosX, workpiecePointPosY - cutDepth*2), point2=(workpiecePointPosX, workpiecePointPosY - cutDepth*2))
175 s.HorizontalConstraint(entity=g[7], addUndoState=False)
176 s.PerpendicularConstraint(entity1=g[6], entity2=g[7], addUndoState=False)
177 s.CoincidentConstraint(entity1=v[5], entity2=g[2], addUndoState=False)
178 s.Line(point1=(workpiecePointPosX, workpiecePointPosY - cutDepth*2), point2=(workpiecePointPosX, workpiecePointPosY))
179 s.VerticalConstraint(entity=g[8], addUndoState=False)
180 s.PerpendicularConstraint(entity1=g[7], entity2=g[8], addUndoState=False)
181 s.Line(point1=(workpiecePointPosX, workpiecePointPosY), point2=(-workpiecePointPosX, workpiecePointPosY))
182 s.HorizontalConstraint(entity=g[9], addUndoState=False)
183 s.PerpendicularConstraint(entity1=g[8], entity2=g[9], addUndoState=False)
184 p = mdb.models['Model-1'].parts['workpiece']
185 f = p.faces
186 pickedFaces = f.getSequenceFromMask(mask=('[#10 ]', ), )
187 e1, d2 = p.edges, p.datums
188 p.PartitionFaceBySketch(sketchUpEdge=e1[10], faces=pickedFaces, 
189     sketchOrientation=TOP, sketch=s)
190 s.unsetPrimaryObject()
191 del mdb.models['Model-1'].sketches['__profile__']
192 p = mdb.models['Model-1'].parts['workpiece']
193 c = p.cells
194 pickedCells = c.getSequenceFromMask(mask=('[#1 ]', ), )
195 e, d1 = p.edges, p.datums
196 pickedEdges =(e[0], )
197 p.PartitionCellByExtrudeEdge(line=e[7], cells=pickedCells, edges=pickedEdges, 
198     sense=REVERSE)
199 
200 #give the TC4 material to the workpiece
201 #create the material
202 from material import createMaterialFromDataString
203 createMaterialFromDataString('Model-1', 'Ti6Al4V-Shenyang', '6-14', 
204     """{
205     'description': '', 
206     'inelasticHeatFraction': {'fraction': 0.9}, 
207     'expansion': {'temperatureDependency': OFF, 'userSubroutine': OFF, 'zero': 0.0, 'dependencies': 0, 'table': ((9.1e-06,),), 'type': ISOTROPIC}, 
208     'materialIdentifier': '', 
209     'johnsonCookDamageInitiation': {'temperatureDependency': OFF, 'definition': MSFLD, 'direction': NMORI, 'fnt': 10.0, 'position': CENTROID, 'damageEvolution': {'temperatureDependency': OFF, 'dependencies': 0, 'softening': LINEAR, 'power': None, 'table': ((0.05,),), 'mixedModeBehavior': MODE_INDEPENDENT, 'type': DISPLACEMENT, 'modeMixRatio': ENERGY, 'degradation': MAXIMUM}, 'table': ((-0.09, 0.25, -0.5, 0.014, 3.87, 1650.0, 20.0, 1.0),), 'ks': 0.0, 'tolerance': 0.05, 'dependencies': 0, 'frequency': 1, 'feq': 10.0, 'alpha': 0.0, 'fnn': 10.0, 'omega': 1.0, 'numberImperfections': 4}, 
210     'conductivity': {'temperatureDependency': ON, 'table': ((6.8, 20.0), (7.4, 100.0), (8.7, 200.0), (9.8, 300.0), (10.3, 400.0), (11.8, 500.0)), 'dependencies': 0, 'type': ISOTROPIC}, 
211     'name': 'Ti6Al4V-Shenyang', 
212     'elastic': {'temperatureDependency': ON, 'moduli': LONG_TERM, 'noCompression': OFF, 'noTension': OFF, 'dependencies': 0, 'table': ((109000.0, 0.34, 20.0), (97000.0, 0.34, 150.0), (91000.0, 0.34, 250.0), (85000.0, 0.34, 350.0), (75000.0, 0.34, 450.0)), 'type': ISOTROPIC}, 
213     'density': {'temperatureDependency': OFF, 'table': ((4.44e-09,),), 'dependencies': 0, 'fieldName': '', 'distributionType': UNIFORM}, 
214     'plastic': {'temperatureDependency': OFF, 'strainRangeDependency': OFF, 'rate': OFF, 'dependencies': 0, 'hardening': JOHNSON_COOK, 'rateDependent': {'temperatureDependency': OFF, 'table': ((0.01, 1.0),), 'dependencies': 0, 'type': JOHNSON_COOK}, 'dataType': HALF_CYCLE, 'table': ((875.0, 793.0, 0.386, 0.71, 1650.0, 20.0),), 'numBackstresses': 1}, 
215     'specificHeat': {'temperatureDependency': ON, 'table': ((611000000.0, 20.0), (624000000.0, 100.0), (653000000.0, 300.0), (674000000.0, 400.0), (691000000.0, 500.0), (703000000.0, 600.0)), 'dependencies': 0, 'law': CONSTANTVOLUME}
216     }""")
217 #: Material 'Ti6Al4V-Shenyang' has been copied to the current model.
218 # give the material to the section
219 mdb.models['Model-1'].HomogeneousSolidSection(name='TC4', 
220     material='Ti6Al4V-Shenyang', thickness=None)
221 # give the section to the model
222 p = mdb.models['Model-1'].parts['workpiece']
223 c = p.cells
224 cells = c.getSequenceFromMask(mask=('[#3 ]', ), )
225 region = regionToolset.Region(cells=cells)
226 p = mdb.models['Model-1'].parts['workpiece']
227 p.SectionAssignment(region=region, sectionName='TC4', offset=0.0, 
228     offsetType=MIDDLE_SURFACE, offsetField='', 
229     thicknessAssignment=FROM_SECTION)
230 
231 #the size of the cutting region
232 sizeOfCutting = 0.05
233 numOfNoneCutting = 4
234 
235 
236 # mesh the workpiece
237 p = mdb.models['Model-1'].parts['workpiece']
238 e = p.edges
239 pickedEdges = e.getSequenceFromMask(mask=('[#c2025 ]', ), )
240 #p.seedEdgeByNumber(edges=pickedEdges, number=int(workpieceLength/sizeOfCutting), constraint=FINER)
241 p.seedEdgeByNumber(edges=pickedEdges, number=, constraint=FINER)
242 p = mdb.models['Model-1'].parts['workpiece']
243 e = p.edges
244 pickedEdges = e.getSequenceFromMask(mask=('[#2890a ]', ), )
245 #p.seedEdgeByNumber(edges=pickedEdges, number=int(workpieceDepth/sizeOfCutting), constraint=FINER)
246 p.seedEdgeByNumber(edges=pickedEdges, number=20, constraint=FINER)
247 p = mdb.models['Model-1'].parts['workpiece']
248 p = mdb.models['Model-1'].parts['workpiece']
249 e = p.edges
250 pickedEdges = e.getSequenceFromMask(mask=('[#14280 ]', ), )
251 #p.seedEdgeByNumber(edges=pickedEdges, number=int(cutDepth*2/sizeOfCutting)*2, constraint=FINER)
252 p.seedEdgeByNumber(edges=pickedEdges, number=10, constraint=FINER)
253 p = mdb.models['Model-1'].parts['workpiece']
254 e = p.edges
255 pickedEdges = e.getSequenceFromMask(mask=('[#1450 ]', ), )
256 p.seedEdgeByNumber(edges=pickedEdges, number=numOfNoneCutting, constraint=FINER)
257 
258 # assign mesh type
259 elemType1 = mesh.ElemType(elemCode=C3D8T, elemLibrary=EXPLICIT, 
260     secondOrderAccuracy=OFF, distortionControl=DEFAULT, elemDeletion=ON)
261 elemType2 = mesh.ElemType(elemCode=C3D6T, elemLibrary=EXPLICIT)
262 elemType3 = mesh.ElemType(elemCode=C3D4T, elemLibrary=EXPLICIT)
263 p = mdb.models['Model-1'].parts['workpiece']
264 c = p.cells
265 cells = c.getSequenceFromMask(mask=('[#3 ]', ), )
266 pickedRegions =(cells, )
267 p.setElementType(regions=pickedRegions, elemTypes=(elemType1, elemType2, 
268     elemType3))
269 p = mdb.models['Model-1'].parts['workpiece']
270 p.generateMesh()
271 
272 # creat mesh part
273 p = mdb.models['Model-1'].parts['workpiece']
274 p.PartFromMesh(name='workpiece-mesh-1', copySets=True)
275 
276 
277 # the size of the mesh cutter
278 sizeOfCutter = 0.01
279 # mesh the cutter
280 p = mdb.models['Model-1'].parts['cutter']
281 p.seedPart(size=sizeOfCutter, deviationFactor=0.1, minSizeFactor=0.1)
282 p = mdb.models['Model-1'].parts['cutter']
283 p.generateMesh()
284 
285 
286 # assemble the parts
287 # first assemble the workpiece
288 a = mdb.models['Model-1'].rootAssembly
289 a.DatumCsysByDefault(CARTESIAN)
290 p = mdb.models['Model-1'].parts['workpiece-mesh-1']
291 a.Instance(name='workpiece-mesh-1-1', part=p, dependent=ON)
292 a = mdb.models['Model-1'].rootAssembly
293 a.translate(instanceList=('workpiece-mesh-1-1', ), vector=(-workpiecePointPosX, -workpiecePointPosY, -workpieceDepth/2))
294 
295 # input the inclination angle that you want to change
296 inclinationAngle = 45
297 
298 # second assemble the cutter                   
299 a = mdb.models['Model-1'].rootAssembly                   
300 p = mdb.models['Model-1'].parts['cutter']                   
301 a.Instance(name='cutter-1', part=p, dependent=ON)                   
302 a = mdb.models['Model-1'].rootAssembly                   
303 a.rotate(instanceList=('cutter-1', ), axisPoint=(cutterPointPos, cutterPointPos, 0.0),                    
304     axisDirection=(0.0, -cutterPointPos, 0.0), angle=90.0)                   
305 a = mdb.models['Model-1'].rootAssembly                   
306 a.translate(instanceList=('cutter-1', ), vector=(cutterPointPos, cutterPointPos, cutterPointPos))                   
307 a = mdb.models['Model-1'].rootAssembly # move the workpiece to the cutting depth                   
308 a.translate(instanceList=('cutter-1', ), vector=(0.0, -cutDepth, 0.0))                   
309 a = mdb.models['Model-1'].rootAssembly # rotate the cutter to the inclination angle                
310 a.rotate(instanceList=('cutter-1', ), axisPoint=(0.0, -0.0, 0.0),                    
311     axisDirection=(0.0, -0.1, 0.0), angle=inclinationAngle)                   
312 a = mdb.models['Model-1'].rootAssembly # move the rutter to the safe region              
313 a.translate(instanceList=('cutter-1', ), vector=(tan(inclinationAngle*pi/180)*workpieceDepth/2 + 0.005, 0.0, 0.0))
314 
315 
316 # cutting speed 
317 cuttingSpeed = 314.2
318 cuttingTime = workpieceLength/cuttingSpeed
319 
320 # set the step
321 mdb.models['Model-1'].ExplicitDynamicsStep(name='cutting', previous='Initial', 
322     description='cutting the workpiece', timePeriod=cuttingTime, adiabatic=ON)
323 
324 # set the field output
325 mdb.models['Model-1'].fieldOutputRequests['F-Output-1'].setValues(variables=(
326     'S', 'SVAVG', 'PE', 'PEVAVG', 'PEEQ', 'PEEQVAVG', 'LE', 'U', 'V', 'A', 
327     'RF', 'CSTRESS', 'EVF', 'STATUS'), numIntervals=500)
328 
329 # set the history output
330 regionDef=mdb.models['Model-1'].rootAssembly.allInstances['cutter-1'].sets['cutter']
331 mdb.models['Model-1'].historyOutputRequests['H-Output-1'].setValues(variables=(
332     'RF1', 'RF2', 'RF3', 'ALLAE', 'ALLCD', 'ALLDMD', 'ALLFD', 'ALLIE', 'ALLKE', 
333     'ALLPD', 'ALLSE', 'ALLVD', 'ALLWK', 'ETOTAL'), region=regionDef, 
334     sectionPoints=DEFAULT, rebar=EXCLUDE, numIntervals=500)
335 
336 
337 # set the interface nodes
338 a = mdb.models['Model-1'].rootAssembly
339 n = a.instances['workpiece-mesh-1-1'].nodes
340 nodes = n.getByBoundingBox(xMin=-workpieceLength, xMax=0, yMin=-2*cutDepth,yMax=0,zMin=-workpieceDepth/2,zMax=workpieceDepth/2)
341 a.Set(name = 'interface', nodes = nodes)
342 
343 # set the interation properties
344 mdb.models['Model-1'].ContactProperty('IntProp-1')
345 mdb.models['Model-1'].interactionProperties['IntProp-1'].TangentialBehavior(
346     formulation=PENALTY, directionality=ISOTROPIC, slipRateDependency=OFF, 
347     pressureDependency=OFF, temperatureDependency=OFF, dependencies=0, table=((
348     0.3, ), ), shearStressLimit=None, maximumElasticSlip=FRACTION, 
349     fraction=0.005, elasticSlipStiffness=None)
350 mdb.models['Model-1'].interactionProperties['IntProp-1'].NormalBehavior(
351     pressureOverclosure=HARD, allowSeparation=ON, 
352     constraintEnforcementMethod=DEFAULT)
353 mdb.models['Model-1'].interactionProperties['IntProp-1'].HeatGeneration(
354     conversionFraction=1.0, slaveFraction=0.5)
355 
356 # set the interaction of cutter and workpiece
357 a4 = mdb.models['Model-1'].rootAssembly
358 s1 = a4.instances['cutter-1'].faces
359 side1Faces1 = s1.getSequenceFromMask(mask=('[#6 ]', ), )
360 side2Faces1 = s1.getSequenceFromMask(mask=('[#39 ]', ), )
361 region1=regionToolset.Region(side1Faces=side1Faces1, side2Faces=side2Faces1)
362 a4 = mdb.models['Model-1'].rootAssembly
363 region2=a4.sets['interface']
364 mdb.models['Model-1'].SurfaceToSurfaceContactExp(name ='Int-1', 
365     createStepName='cutting', master = region1, slave = region2, 
366     mechanicalConstraint=KINEMATIC, sliding=FINITE, 
367     interactionProperty='IntProp-1', initialClearance=OMIT, datumAxis=None, 
368     clearanceRegion=None)
369 
370 # set the boundary of no movement
371 a4 = mdb.models['Model-1'].rootAssembly
372 n1 = a4.instances['workpiece-mesh-1-1'].nodes
373 nodes = n1.getByBoundingBox(xMin=-workpieceLength, xMax=0, yMin=-workpieceHeight-0.01,yMax=-workpieceHeight+0.01,zMin=-workpieceDepth/2,zMax=workpieceDepth/2)
374 a4.Set(nodes=nodes, name='noMovement')
375 
376 
377 # set the no movement boundary
378 a5 = mdb.models['Model-1'].rootAssembly
379 region = a5.sets['noMovement']
380 mdb.models['Model-1'].EncastreBC(name='BC-1', createStepName='Initial', 
381     region=region, localCsys=None)
382 
383 
384 # set the cutter boundary
385 a5 = mdb.models['Model-1'].rootAssembly
386 region = a5.instances['cutter-1'].sets['cutter']
387 mdb.models['Model-1'].VelocityBC(name='BC-2', createStepName='cutting', 
388     region=region, v1=-cuttingSpeed, v2=0.0, v3=UNSET, vr1=0.0, vr2=0.0, vr3=0.0, 
389     amplitude=UNSET, localCsys=None, distributionType=UNIFORM, fieldName='')
390 
391 # input the ultrasonic parameters
392 ultrasonicFre = 31000.0
393 frequency = 2*pi*ultrasonicFre
394 ultrasonicAmp = 0.003
395 Adata = ultrasonicAmp*frequency
396 
397 
398 # set the amplitude boundary
399 mdb.models['Model-1'].PeriodicAmplitude(name='Amp-1', timeSpan=STEP, 
400     frequency=frequency, start=0.0, a_0=0.0, data=((Adata, 0.0), ))
401 a7 = mdb.models['Model-1'].rootAssembly
402 region = a7.instances['cutter-1'].sets['cutter']
403 mdb.models['Model-1'].VelocityBC(name='BC-3', createStepName='cutting', 
404     region=region, v1=UNSET, v2=UNSET, v3=1.0, vr1=UNSET, vr2=UNSET, vr3=UNSET, 
405     amplitude='Amp-1', localCsys=None, distributionType=UNIFORM, fieldName='')
406 
407 # set the all workpiece
408 a5 = mdb.models['Model-1'].rootAssembly
409 n1 = a5.instances['workpiece-mesh-1-1'].nodes
410 nodes = n1.getByBoundingBox(xMin=-workpieceLength, xMax=0, yMin=-workpieceHeight-0.01,yMax=0.01,zMin=-workpieceDepth/2,zMax=workpieceDepth/2)
411 a4.Set(nodes=nodes, name='allWorkpiece')
412 
413 # define the initial workpiece temperature
414 a6 = mdb.models['Model-1'].rootAssembly
415 region = a6.sets['allWorkpiece']
416 mdb.models['Model-1'].Temperature(name='Predefined Field-1', 
417     createStepName='Initial', region=region, distributionType=UNIFORM, 
418     crossSectionDistribution=CONSTANT_THROUGH_THICKNESS, magnitudes=(20.0, ))

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM