""" Script for constructing the cylinder-cam mechanism model in ABAQUS/CAE for Example Problem 4.1.6 from ABAQUS Example Problems Manual. The script creates an ABAQUS/Explicit model that can be submitted for analysis. This example illustrates the use of connector elements to model a cylinder-cam mechanism. The script reads an ACIS sat file (cylcammech.sat) for constructing the display body of cylinder. USAGE: ABAQUS/CAE-> File-> Run Script """ # connector examples # cylinder cam mechanicsm # # model from abaqus import * import testUtils testUtils.setBackwardCompatibility() from abaqusConstants import * from connectorBehavior import * from caeModules import * import regionToolset # Create the model database. # Mdb() myModel = mdb.models['Model-1'] vp=session.viewports[session.currentViewportName] #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Create the parts. # Create a reference point on each part. # Create a display name for the part and # Display it in the current viewport. # Create part 'track', assign reference pt. # track = myModel.Part(name='track', dimensionality=THREE_D, type=DISCRETE_RIGID_SURFACE) track.ReferencePoint(point=(0.0, 0.0, 0.0)) partTrack = myModel.parts['track'] vp.setValues(displayedObject=partTrack) # Create part 'pinTailRIGID', assign reference pt. # pinTailRIGID = myModel.Part(name='pinTailRIGID', dimensionality=THREE_D, type=DISCRETE_RIGID_SURFACE) pinTailRIGID.ReferencePoint(point=(0.0, 0.0, 0.0)) partPinTailRIGID = myModel.parts['pinTailRIGID'] vp.setValues(displayedObject=partPinTailRIGID) # Create part 'pinHeadRIGID', assign reference pt. # pinHeadRIGID = myModel.Part(name='pinHeadRIGID', dimensionality=THREE_D, type=DISCRETE_RIGID_SURFACE) pinHeadRIGID.ReferencePoint(point=(3.0, 0.0, 0.0)) partPinHeadRIGID = myModel.parts['pinHeadRIGID'] vp.setValues(displayedObject=partPinHeadRIGID) # Create part 'CylCenter', assign reference pt. # cylCenter = myModel.Part(name='CylCenter', dimensionality=THREE_D, type=DISCRETE_RIGID_SURFACE) cylCenter.ReferencePoint(point=(3.5, 0.0, 0.0)) partCylCenter = myModel.parts['CylCenter'] vp.setValues(displayedObject=partCylCenter) # Create part 'CylBottom', assign reference pt. # cylBottom = myModel.Part(name='CylBottom', dimensionality=THREE_D, type=DISCRETE_RIGID_SURFACE) cylBottom.ReferencePoint(point=(3.5, 0.0, 2.0)) partCylBottom = myModel.parts['CylBottom'] vp.setValues(displayedObject=partCylBottom) refPtPartCylBottom = partCylBottom.referencePoints refPointCylBottom = (refPtPartCylBottom[1], ) #Create mass inertia at refPts of cylinder bottom # region = regionToolset.Region(referencePoints=refPointCylBottom) partCylBottom.engineeringFeatures.PointMassInertia( name='mass_zero', region=region, mass=1e-05, i11=1e-06, i22=1e-06, i33=1e-06, alpha=0.0, composite=0.0) pinTailRIGID_refPts = partPinTailRIGID.referencePoints refPointPinTail = (pinTailRIGID_refPts[1], ) #Create mass inertia at refPts of pinTailRIGID # region = regionToolset.Region(referencePoints=refPointPinTail) partPinTailRIGID.engineeringFeatures.PointMassInertia( name='mass_pin', region=region, mass=0.00777025, i11=1e-05, i22=1e-05, i33=1e-05, alpha=0.0, composite=0.0) refPoints = partTrack.referencePoints refPointTrack = (refPoints[1], ) #Create mass inertia at refPts of partTrack # region = regionToolset.Region(referencePoints=refPointTrack) partTrack.engineeringFeatures.PointMassInertia( name='mass_zero', region=region, mass=1e-05, i11=1e-06, i22=1e-06, i33=1e-06, alpha=0.0, composite=0.0) # Create mass inertia at refPts of partCylCenter # refPoints = partCylCenter.referencePoints refPointCylCenter = (refPoints[1], ) region = regionToolset.Region(referencePoints=refPointCylCenter) partCylCenter.engineeringFeatures.PointMassInertia( name='mass_zero', region=region, mass=1e-05, i11=1e-06, i22=1e-06, i33=1e-06, alpha=0.0, composite=0.0) # Create mass inertia for refPts of partPinHeadRIGID # refPt = partPinHeadRIGID.referencePoints refPointPinHead=(refPt[1], ) region = regionToolset.Region(referencePoints=refPointPinHead) partPinHeadRIGID.engineeringFeatures.PointMassInertia( name='mass_zero', region=region, mass=1e-05, i11=1e-06, i22=1e-06, i33=1e-06, alpha=0.0, composite=0.0) #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #Create instances # myAssembly = myModel.rootAssembly vp.setValues(displayedObject=myAssembly) myAssembly.DatumCsysByDefault(CARTESIAN) myAssembly.Instance(name='CylBottom-1', part=cylBottom, dependent=OFF) myAssembly.Instance(name='CylCenter-1', part=cylCenter, dependent=OFF) myAssembly.Instance(name='pinHeadRIGID-1', part=pinHeadRIGID, dependent=OFF) myAssembly.Instance(name='pinTailRIGID-1', part=pinTailRIGID, dependent=OFF) myAssembly.Instance(name='track-1', part=track, dependent=OFF) vp.view.setValues(width=0.25593, height=0.16361, viewOffsetX=-0.0043824, viewOffsetY=0.15046) vp.view.fitView() #Create a dynamic explicit step # myModel.ExplicitDynamicsStep(name='Step-1', previous='Initial', timePeriod=4.0, timeIncrementationMethod=FIXED_USER_DEFINED_INC, userDefinedInc=0.0001, massScaling=PREVIOUS_STEP) # Define Connector section # myModel.ConnectorSection(name='ConnProp-1', assembledType=BEAM, translationalType=NONE, rotationalType=NONE) point1 = myAssembly.instances['pinTailRIGID-1'].referencePoints[1] point2 = myAssembly.instances['pinHeadRIGID-1'].referencePoints[1] edge = myAssembly.WirePolyLine(points=((point1, point2), ), mergeWire=OFF, meshable=OFF) myAssembly.Set(name='TailHead-conn', edges=myAssembly.getFeatureEdges(edge.name)) csa = myAssembly.SectionAssignment(region=myAssembly.sets['TailHead-conn'], sectionName='ConnProp-1') myAssembly.ConnectorOrientation(region=csa.getSet()) point1 = myAssembly.instances['CylCenter-1'].referencePoints[1] point2 = myAssembly.instances['CylBottom-1'].referencePoints[1] edge = myAssembly.WirePolyLine(points=((point1, point2), ), mergeWire=OFF, meshable=OFF) myAssembly.Set(name='center-bottom-conn', edges=myAssembly.getFeatureEdges(edge.name)) csa = myAssembly.SectionAssignment(region=myAssembly.sets['center-bottom-conn'], sectionName='ConnProp-1') myAssembly.ConnectorOrientation(region=csa.getSet()) #Create connector property 2 with damping # damping = ConnectorDamping(components=(1, ), table=((1.0, ), )) myModel.ConnectorSection(name='ConnProp-2', translationalType=SLOT, rotationalType=ALIGN, behaviorOptions=(damping,)) myAssembly.DatumCsysByThreePoints(name='Datum csys-2', coordSysType=CARTESIAN, origin=(0.0, 0.0, 0.0), point1=(0.0, 0.0, 1.0), point2=(1.0, 0.0, 0.0)) myAssembly.DatumCsysByThreePoints(name='Datum csys-3', coordSysType=CARTESIAN, origin=(3.5, 0.0, 0.0), point1=(3.5, 0.7, -0.7), point2=(3.0, 0.0, 0.0)) point1 = myAssembly.instances['track-1'].referencePoints[1] point2 = myAssembly.instances['pinTailRIGID-1'].referencePoints[1] orient1 = myAssembly.datums[16] edge = myAssembly.WirePolyLine(points=((point1, point2), ), mergeWire=OFF, meshable=OFF) myAssembly.Set(name='track-conn', edges=myAssembly.getFeatureEdges(edge.name)) csa = myAssembly.SectionAssignment(region=myAssembly.sets['track-conn'], sectionName='ConnProp-2') myAssembly.ConnectorOrientation(region=csa.getSet(), localCsys1=orient1) cstop = ConnectorStop(components=(1, ), minMotion=-0.03536, maxMotion=0.03536) myModel.ConnectorSection(name='ConnProp-3', assembledType=NONE, translationalType=CARTESIAN, rotationalType=NONE, behaviorOptions=(cstop,)) point1 = myAssembly.instances['CylCenter-1'].referencePoints[1] point2 = myAssembly.instances['pinHeadRIGID-1'].referencePoints[1] orient1 = myAssembly.datums[17] edge = myAssembly.WirePolyLine(points=((point1, point2), ), mergeWire=OFF, meshable=OFF) myAssembly.Set(name='slot-conn', edges=myAssembly.getFeatureEdges(edge.name)) csa = myAssembly.SectionAssignment(region=myAssembly.sets['slot-conn'], sectionName='ConnProp-3') myAssembly.ConnectorOrientation(region=csa.getSet(), localCsys1=orient1) #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Create Boundary conditions # refpts = (myAssembly.instances['track-1'].referencePoints[1], ) region = myAssembly.Set(referencePoints=refpts, name='track') myModel.DisplacementBC(name='BC-1', createStepName='Step-1', region=region, u1=0.0, u2=0.0, u3=0.0, ur1=0.0, ur2=0.0, ur3=0.0, amplitude=UNSET, fixed=OFF, distributionType=UNIFORM, localCsys=None) refpts = (myAssembly.instances['CylBottom-1'].referencePoints[1], ) region = regionToolset.Region(referencePoints=refpts) myModel.VelocityBC(name='BC-2', createStepName='Step-1', region=region, v1=0.0, v2=0.0, v3=0.0, vr1=0.0, vr2=0.0, vr3=3.1415926, amplitude=UNSET, localCsys=None, distributionType=UNIFORM) #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Create deformable cylinder part # sketchCyl = myModel.Sketch(name='__profile__', sheetSize=2.0) geomCyl, vertCyl, dimCyl = sketchCyl.geometry, sketchCyl.vertices, sketchCyl.dimensions sketchCyl.sketchOptions.setValues(sheetSize=2.0, gridSpacing=0.05, grid=ON, gridFrequency=2, constructionGeometry=ON, dimensionTextHeight=0.05, decimalPlaces=2) sketchCyl.setPrimaryObject(option=STANDALONE) sketchCyl.CircleByCenterPerimeter(center=(0.0, 0.0), point1=(0.5, 0.0)) cyl = myModel.Part(name='cylinder', dimensionality=THREE_D, type=DEFORMABLE_BODY) cyl.BaseSolidExtrude(sketch=sketchCyl, depth=3.0) sketchCyl.unsetPrimaryObject() vp.setValues(displayedObject=cyl) del myModel.sketches['__profile__'] partCyl = myModel.parts['cylinder'] partCyl.DatumPointByCoordinate(coords=(0.0, 0.0, 1.5)) partCyl.DatumPointByCoordinate(coords=(0.0, 0.5, 2.0)) datumCyl = partCyl.datums partCyl.DatumAxisByTwoPoint(point1=datumCyl[2], point2=datumCyl[3]) partCyl.DatumPlaneByPointNormal(point=datumCyl[2], normal=datumCyl[4]) cellsCyl = partCyl.cells cells = (cellsCyl.findAt((0.178993, -0.109401, 0.0), ), ) partCyl.PartitionCellByDatumPlane(datumPlane=datumCyl[5], cells=cells) #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Create cylinder from imported .sat sketch # acis = session.openAcis('cylcammech.sat') myModel.SketchFromGeometryFile(name='cylcammech', geometryFile=acis) edgesCyl= partCyl.edges trans = partCyl.MakeSketchTransform(sketchPlane=datumCyl[5], sketchUpEdge=edgesCyl.findAt((0.0, 0.5, 0.0), ), sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, origin=(0.0, 0.0, 1.5)) sketchSweep = myModel.Sketch(name='__sweep__', sheetSize=2.0, gridSpacing=0.05, transform=trans) geomsketchSweep, vertsketchSweep, dimsketchSweep = sketchSweep.geometry, sketchSweep.vertices,sketchSweep.dimensions sketchSweep.sketchOptions.setValues(sheetSize=2.0, gridSpacing=0.05, grid=ON, gridFrequency=2, constructionGeometry=ON, dimensionTextHeight=0.05,decimalPlaces=2) sketchSweep.setPrimaryObject(option=SUPERIMPOSE) partCyl.projectReferencesOntoSketch(sketch=sketchSweep, filter=COPLANAR_EDGES) refGeom, refVert = sketchSweep.referenceGeometry, sketchSweep.referenceVertices sketchSweep.retrieveSketch(sketch=myModel.sketches['cylcammech']) sketchSweep.unsetPrimaryObject() sketch1 = myModel.Sketch(name='__profile__', sheetSize=2.0, transform=(1.0, 0.0, 0.0, 0.0, 0.707106781186548, 0.707106781186548, 0.0, -0.707106781186548, 0.707106781186548, 0.5, 3.06151588455594e-17, 1.5) ) geomsketch1, vertsketch1, dimsketch1 = sketch1.geometry, sketch1.vertices, sketch1.dimensions sketch1.sketchOptions.setValues(sheetSize=2.0, gridSpacing=0.05, grid=ON, gridFrequency=2, constructionGeometry=ON, dimensionTextHeight=0.05, decimalPlaces=2) sketch1.setPrimaryObject(option=SUPERIMPOSE) sketch1.ObliqueConstructionLine(point1=(-1.0, 0.0), point2=(1.0, 0.0)) sketch1.ObliqueConstructionLine(point1=(0.0, -1.0), point2=(0.0, 1.0)) partCyl.projectReferencesOntoSketch(sketch=sketch1, filter=COPLANAR_EDGES) refGeomsketch1, refVertsketch1 = sketch1.referenceGeometry, sketch1.referenceVertices sketch1.CircleByCenterPerimeter(center=(0.0, 0.0), point1=(-0.3, 0.0)) sketch1.constraintReferences(vertex1=refVertsketch1.findAt((0.0, 0.0), 1)) partCyl.CutSweep(pathPlane=datumCyl[5], pathUpEdge=edgesCyl.findAt((0.0, 0.5, 0.0), ), sketchUpEdge=edgesCyl.findAt((0.0, 0.5, 0.0), ), pathOrientation=RIGHT, path=sketchSweep, sketchOrientation=RIGHT, sketch=sketch1) sketch1.unsetPrimaryObject() vp.setValues(displayedObject=myAssembly) myAssembly.DatumCsysByDefault(CARTESIAN) myAssembly.Instance(name='cylinder-1', part=partCyl, dependent=OFF) #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Creating pin # sketch4 = myModel.Sketch(name='__profile__', sheetSize=10.0) geomsketch4, vertsketch4, dimsketch4 = sketch4.geometry, sketch4.vertices, sketch4.dimensions sketch4.sketchOptions.setValues(sheetSize=10.0, gridSpacing=0.2, grid=ON, gridFrequency=2, constructionGeometry=ON, dimensionTextHeight=0.2, decimalPlaces=2) sketch4.setPrimaryObject(option=STANDALONE) sketch4.ObliqueConstructionLine(point1=(0.0, -5.0), point2=(0.0, 5.0)) vp.view.fitView() myModel.sketches['__profile__'].sketchOptions.setValues( sheetSize=10.0, gridSpacing=0.05, grid=ON, gridFrequency=2, constructionGeometry=ON, dimensionTextHeight=0.2, decimalPlaces=2, gridSnap=ON, preselection=ON) sketch4.Spot(point=(0.0, -0.25)) sketch4.Spot(point=(0.0, -0.5)) sketch4.CircleByCenterPerimeter(center=(0.0, -0.5), point1=(0.0, -0.25)) sketch4.Spot(point=(0.05, -3.0)) sketch4.delete(objectList=(geomsketch4[11], )) sketch4.Spot(point=(0.0, -3.0)) sketch4.Spot(point=(0.3, -3.0)) sketch4.Spot(point=(0.2, -0.7)) sketch4.Line(point1=(0.0, -3.0), point2=(0.2, -3.0)) sketch4.Line(point1=(0.2, -3.0), point2=(0.2, -0.7)) sketch4.delete(objectList=(geomsketch4[9], )) sketch4.ArcByCenterEnds(center=(0.0, -0.5), point1=(0.0, -0.25), point2=(0.2, -0.7)) sketch4.undo() sketch4.ArcByCenterEnds(center=(0.0, -0.5), point1=(0.0, -0.25), point2=(0.2, -0.7)) sketch4.Spot(point=(0.176776695296637, -0.676776695296637)) sketch4.Line(point1=(0.176776695296637, -0.676776695296637), point2=(0.25, -0.8)) sketch4.undo() sketch4.undo() sketch4.delete(objectList=(geomsketch4[20], )) sketch4.delete(objectList=(geomsketch4[29], )) sketch4.delete(objectList=(geomsketch4[27], geomsketch4[27])) sketch4.delete(objectList=(geomsketch4[17], )) sketch4.Spot(point=(0.176776695296637, -0.676776695296637)) sketch4.Line(point1=(0.176776695296637, -0.676776695296637), point2=(0.2, -3.0)) pinHead = myModel.Part(name='pinHead', dimensionality=THREE_D, type=DEFORMABLE_BODY) partPinHead = myModel.parts['pinHead'] partPinHead.BaseShellRevolve(sketch=sketch4, angle=360.0, flipRevolveDirection=OFF) sketch4.unsetPrimaryObject() del myModel.sketches['__profile__'] instCyl = myAssembly.instances['cylinder-1'] instCyl.translate(vector=(0.0, 0.0, -1.5)) instPinHead = myAssembly.Instance(name='pinHead-1', part=partPinHead, dependent=OFF) instPinHead = myAssembly.instances['pinHead-1'] instPinHead.rotateAboutAxis(axisPoint=(0.0, 0.0, 0.0), axisDirection=(0.0, 0.0, 1.0), angle=90.0) #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Creating pin tail # sketch5 = myModel.Sketch(name='__profile__', sheetSize=10.0) geomsketch5, vertsketch5, dimsketch5 = sketch5.geometry, sketch5.vertices, sketch5.dimensions sketch5.sketchOptions.setValues(sheetSize=10.0, gridSpacing=0.2, grid=ON, gridFrequency=2, constructionGeometry=ON, dimensionTextHeight=0.2, decimalPlaces=2) sketch5.setPrimaryObject(option=STANDALONE) sketch5.Spot(point=(0.0, -3.0)) sketch5.Line(point1=(0.0, -3.0), point2=(0.4, -3.0)) sketch5.Line(point1=(0.4, -3.0), point2=(0.4, -3.8)) sketch5.Line(point1=(0.4, -3.8), point2=(-0.4, -3.8)) sketch5.Line(point1=(-0.4, -3.8), point2=(-0.4, -3.0)) sketch5.Line(point1=(-0.4, -3.0), point2=(0.0, -3.0)) pinTail = myModel.Part(name='pinTail', dimensionality=THREE_D, type=DEFORMABLE_BODY) pinTail.BaseSolidExtrude(sketch=sketch5, depth=0.8) sketch5.unsetPrimaryObject() del myModel.sketches['__profile__'] #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Create material and section definitions # mat1 = myModel.Material('Material-1') mat1.Elastic(table=((1.0, 0.0), )) mat1.Density(table=((1e-05, ), )) myModel.HomogeneousSolidSection(name='Section-1', material='Material-1', thickness=1.0) partCyl.SectionAssignment(region=region, sectionName='Section-1') pinTailCells = pinTail.cells cells = pinTailCells.findAt(((-0.133333, -3.8, 0.533333), ), ) region = regionToolset.Region(cells=cells) pinTail.SectionAssignment(region=region, sectionName='Section-1') vp.setValues(displayedObject=myAssembly) instPinTail = myAssembly.Instance(name='pinTail-1', part=pinTail, dependent=OFF) instPinTail.translate(vector=(-3.0, 0.0, 0.0)) instPinTail.translate(vector=(3.0, 0.0, 0.0)) instPinTail.rotateAboutAxis(axisPoint=(0.0, 0.0, 0.0), axisDirection=(0.0, 0.0, 1.0), angle=90.0) instPinTail.translate(vector=(0.0, 0.0, -0.4)) # Creating the track part # sketch6 = myModel.Sketch(name='__profile__', sheetSize=200.0) geomsketch6, vertsketch6, dimsketch6 = sketch6.geometry, sketch6.vertices, sketch6.dimensions sketch6.sketchOptions.setValues(sheetSize=200.0, gridSpacing=5.0, grid=ON, gridFrequency=2, constructionGeometry=ON, dimensionTextHeight=5.0, decimalPlaces=2) sketch6.setPrimaryObject(option=STANDALONE) vp.view.setValues(width=264.73, height=169.23) vp.view.setValues(width=442.04, height=282.58) sketch6.unsetPrimaryObject() del myModel.sketches['__profile__'] sketch7 = myModel.Sketch(name='__profile__', sheetSize=10.0) geomsketch7, vertsketch7, dimsketch7 = sketch7.geometry, sketch7.vertices, sketch7.dimensions sketch7.sketchOptions.setValues(sheetSize=10.0, gridSpacing=0.2, grid=ON, gridFrequency=2, constructionGeometry=ON, dimensionTextHeight=0.2, decimalPlaces=2) sketch7.setPrimaryObject(option=STANDALONE) vp.view.setValues(width=14.402, height=9.207) vp.view.setValues(width=16.545, height=10.577) sketch7.Spot(point=(0.0, -3.0)) sketch7.Spot(point=(0.4, -3.0)) sketch7.Spot(point=(0.4, -3.8)) sketch7.Spot(point=(-0.4, -3.8)) sketch7.Spot(point=(-0.4, -3.0)) myModel.sketches['__profile__'].sketchOptions.setValues( sheetSize=10.0, gridSpacing=0.025, grid=ON, gridFrequency=2, constructionGeometry=ON, dimensionTextHeight=0.2, decimalPlaces=2, gridSnap=ON, preselection=ON) vp.view.setValues(width=3.136, height=2.0048, cameraPosition=(-0.14978, -3.5257, 9.4281), cameraTarget=(-0.14978, -3.5257, 0)) vp.view.fitView() vp.view.setValues(width=2.1941, height=1.4026) sketch7.Spot(point=(0.3, -2.95)) sketch7.Spot(point=(0.45, -2.95)) sketch7.Line(point1=(0.3, -2.95), point2=(0.45, -2.95)) sketch7.Line(point1=(0.45, -2.95), point2=(0.45, -3.85)) sketch7.Line(point1=(0.45, -3.85), point2=(-0.45, -3.85)) sketch7.Line(point1=(-0.45, -3.85), point2=(-0.45, -2.95)) sketch7.Line(point1=(-0.45, -2.95), point2=(-0.3, -2.95)) sketch7.Line(point1=(-0.3, -2.95), point2=(-0.3, -2.9)) sketch7.Line(point1=(-0.3, -2.9), point2=(-0.5, -2.9)) sketch7.Line(point1=(-0.5, -2.9), point2=(-0.5, -3.9)) sketch7.Line(point1=(-0.5, -3.9), point2=(0.5, -3.9)) sketch7.Line(point1=(0.5, -3.9), point2=(0.5, -2.9)) sketch7.Line(point1=(0.5, -2.9), point2=(0.3, -2.9)) sketch7.Line(point1=(0.3, -2.9), point2=(0.3, -2.95)) slot = myModel.Part(name='slot', dimensionality=THREE_D, type=DEFORMABLE_BODY) partSlot = myModel.parts['slot'] slot.BaseSolidExtrude(sketch=sketch7, depth=3.0) sketch7.unsetPrimaryObject() partSlot = myModel.parts['slot'] vp.setValues(displayedObject=partSlot) del myModel.sketches['__profile__'] slotCells = partSlot.cells cells = slotCells.findAt(((0.433333, -2.9, 2.0), ), ) region = regionToolset.Region(cells=cells) partSlot.SectionAssignment(region=region, sectionName='Section-1') #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Position all the instances # myAssembly.Instance(name='slot-1', part=partSlot, dependent=OFF) instSlot = myAssembly.instances['slot-1'] instSlot.rotateAboutAxis(axisPoint=(0.0, 0.0, 0.0), axisDirection=(0.0, 0.0, 1.0), angle=90.0) instSlot.translate(vector=(0.0, 0.0, -1.5)) instCyl.rotateAboutAxis(axisPoint=(0.0, 0.0, 1.0), axisDirection=(0.0, 0.0, 1.0), angle=180.0) instPinHead.rotateAboutAxis(axisPoint=(0.0, 0.0, 1.0), axisDirection=(0.0, 0.0, 1.0), angle=180.0) instSlot.rotateAboutAxis(axisPoint=(0.0, 0.0, 1.0), axisDirection=(0.0, 0.0, 1.0), angle=180.0) instPinTail = myAssembly.instances['pinTail-1'] instPinTail.rotateAboutAxis(axisPoint=(0.0, 0.0, 1.0), axisDirection=(0.0, 0.0, 1.0), angle=180.0) instCyl.translate(vector=(3.0, 0.0, 0.0)) instPinHead.translate(vector=(3.0, 0.0, 0.0)) instPinTail.translate(vector=(3.0, 0.0, 0.0)) instSlot.translate(vector=(3.0, 0.0, 0.0)) instCyl.translate(vector=(0.5, 0.0, 0.0)) instPinHead.translate(vector=(0.5, 0.0, 0.0)) instSlot.translate(vector=(0.5, 0.0, 0.0)) instPinTail.translate(vector=(0.5, 0.0, 0.0)) #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Creating display body # vp.assemblyDisplay.setValues(interactions=ON, constraints=ON, connectors=ON) cylBottom = myAssembly.instances['CylBottom-1'] refpt = cylBottom.referencePoints myModel.DisplayBody(name='Constraint-1', instance=myAssembly.instances['cylinder-1'], controlPoints=(refpt[1], )) phrInst = myAssembly.instances['pinHeadRIGID-1'] refpt = phrInst.referencePoints myModel.DisplayBody(name='Constraint-2', instance=instPinHead, controlPoints=(refpt[1], )) refpt = myAssembly.instances['pinHeadRIGID-1'].referencePoints myModel.DisplayBody(name='Constraint-3', instance=instPinTail, controlPoints=(refpt[1], )) refpt = myAssembly.instances['track-1'].referencePoints myModel.DisplayBody(name='Constraint-4', instance=myAssembly.instances['slot-1'], controlPoints=(refpt[1], )) myAssembly.regenerate() vp.setValues(displayedObject=myAssembly) #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Create HistoryOutputRequests # refpts = myAssembly.instances['CylBottom-1'].referencePoints refPoints1 = (refpts[1], ) regionDef = myAssembly.Set(referencePoints=refPoints1, name='cylinder') vp.assemblyDisplay.setValues(step='Step-1') myModel.historyOutputRequests['H-Output-1'].setValues( variables=('RF1', 'RF2', 'RF3', 'RM1', 'RM2', 'RM3'), frequency=200, region=regionDef) #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Create Job # myJob = mdb.Job(name='cylcammech', model='Model-1', type=ANALYSIS, explicitPrecision=SINGLE, nodalOutputPrecision=SINGLE, description='', userSubroutine='', numCpus=1, preMemory=256.0, standardMemory=256.0, standardMemoryPolicy=MODERATE, scratch='', echoPrint=OFF, modelPrint=OFF, contactPrint=OFF, historyPrint=OFF) myJob.writeInput() mdb.saveAs('cylcammech')