# # Connector elements in ABAQUS # EXAMPLE: FLAP MECHANISM # # from abaqus import * import testUtils testUtils.setBackwardCompatibility() from abaqusConstants import * ##--------------------------------------------------------------------------- # define all imports ##--------------------------------------------------------------------------- import sys import part import material import section import assembly import step import interaction import load import mesh import job import regionToolset import displayGroupMdbToolset as dgm from connectorBehavior import * ##--------------------------------------------------------------------------- # definition of the geometry of FLAP ##-------------------------------------------------------------------------- s1 = mdb.models['Model-1'].Sketch(name='__profile__', sheetSize=60.0) g, v, d = s1.geometry, s1.vertices, s1.dimensions s1.sketchOptions.setValues(sheetSize=60.0, gridSpacing=1.0, grid=ON, gridFrequency=2, constructionGeometry=ON, dimensionTextHeight=1.0, decimalPlaces=2) s1.setPrimaryObject(option=STANDALONE) s1.Spot(point=(0.0, 0.0)) s1.Spot(point=(30.0, 0.0)) session.viewports['Viewport: 1'].view.setValues(width=73.2179, height=43.7854) s1.ArcByCenterEnds(center=(0.0, 0.0), point1=(0.0, -3.0), point2=(0.0, 5.0)) s1.Line(point1=(0.0, 3.0), point2=(30.0, 0.0)) s1.Line(point1=(30.0, 0.0), point2=(0.0, -3.0)) p = mdb.models['Model-1'].Part(name='FLAP', dimensionality=THREE_D, type=DEFORMABLE_BODY) p = mdb.models['Model-1'].parts['FLAP'] p.BaseSolidExtrude(sketch=s1, depth=30.0) s1.unsetPrimaryObject() p = mdb.models['Model-1'].parts['FLAP'] session.viewports['Viewport: 1'].setValues(displayedObject=p) del mdb.models['Model-1'].sketches['__profile__'] p = mdb.models['Model-1'].parts['FLAP'] f, e1 = p.faces, p.edges t = p.MakeSketchTransform(sketchPlane=f.findAt((-0.758819,2.831951, 30.0), (0.0, 0.0, 1.0)), sketchUpEdge=e1.findAt((7.5, 2.25, 30.0), ),sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, origin=(8.469599, 0.0,30.0)) s1 = mdb.models['Model-1'].Sketch(name='__profile__', sheetSize=60.0, gridSpacing=1.0, transform=t) g, v, d = s1.geometry, s1.vertices, s1.dimensions s1.sketchOptions.setValues(sheetSize=60.0, gridSpacing=1.0, grid=ON, gridFrequency=2, constructionGeometry=ON, dimensionTextHeight=1.0, decimalPlaces=2) s1.setPrimaryObject(option=SUPERIMPOSE) p = mdb.models['Model-1'].parts['FLAP'] p.projectReferencesOntoSketch(sketch=s1, filter=COPLANAR_EDGES) r, r1 = s1.referenceGeometry, s1.referenceVertices s1.CircleByCenterPerimeter(center=(-0.842756599116533, 8.42756599116534), point1=(0.0, 8.0)) s1.constraintReferences(vertex1=r1.findAt((-0.842757, 8.427566), 1)) p = mdb.models['Model-1'].parts['FLAP'] f1, e2 = p.faces, p.edges p.SolidExtrude(sketchPlane=f1.findAt((-0.758819, 2.831951, 30.0), (0.0, 0.0, 1.0)), sketchUpEdge=e2.findAt((7.5, 2.25, 30.0), ), sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, sketch=s1, depth=2.0, flipExtrudeDirection=OFF) s1.unsetPrimaryObject() del mdb.models['Model-1'].sketches['__profile__'] session.viewports['Viewport: 1'].view.setValues(cameraPosition=(31.1496, 39.9752, -69.4548), cameraUpVector=(-0.642206, 0.558029, 0.525524)) p = mdb.models['Model-1'].parts['FLAP'] f, e1 = p.faces, p.edges t = p.MakeSketchTransform(sketchPlane=f.findAt((9.292893, -1.707107, 0.0), (0.0, 0.0, -1.0)), sketchUpEdge=e1.findAt((7.5, -2.25, 0.0), ), sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, origin=(8.469599, 0.0, 0.0)) s = mdb.models['Model-1'].Sketch(name='__profile__', sheetSize=60.0, gridSpacing=1.0, transform=t) g, v, d = s.geometry, s.vertices, s.dimensions s.sketchOptions.setValues(sheetSize=60.0, gridSpacing=1.0, grid=ON, gridFrequency=2, constructionGeometry=ON, dimensionTextHeight=1.0, decimalPlaces=2) s.setPrimaryObject(option=SUPERIMPOSE) p = mdb.models['Model-1'].parts['FLAP'] p.projectReferencesOntoSketch(sketch=s, filter=COPLANAR_EDGES) r, r1 = s.referenceGeometry, s.referenceVertices s.CircleByCenterPerimeter(center=(-0.842756599116533, 8.42756599116534), point1=(0.0, 8.0)) s.constraintReferences(vertex1=r1.findAt((-0.842757, 8.427566), 1)) p = mdb.models['Model-1'].parts['FLAP'] f1, e2 = p.faces, p.edges p.SolidExtrude(sketchPlane=f1.findAt((9.292893, -1.707107, 0.0), (0.0, 0.0, -1.0)), sketchUpEdge=e2.findAt((7.5, -2.25, 0.0), ), sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, sketch=s, depth=2.0, flipExtrudeDirection=OFF) s.unsetPrimaryObject() del mdb.models['Model-1'].sketches['__profile__'] ##--------------------------------------------------------------------------- # definition of the geometry of ARM ##-------------------------------------------------------------------------- s1 = mdb.models['Model-1'].Sketch(name='__profile__', sheetSize=10.0) g, v, d = s1.geometry, s1.vertices, s1.dimensions s1.sketchOptions.setValues(sheetSize=10.0, gridSpacing=0.2, grid=ON, gridFrequency=2, constructionGeometry=ON, dimensionTextHeight=0.2, decimalPlaces=2) s1.setPrimaryObject(option=STANDALONE) s1.Spot(point=(-2.0, 0.0)) s1.Spot(point=(2.0, 0.0)) s1.ConstructionCircleByCenterPerimeter(center=(-2.0, 0.0), point1=(-2.0, 1.0)) s1.ConstructionCircleByCenterPerimeter(center=(2.0, 0.0), point1=(2.0, 0.6)) s1.Line(point1=(-2.0, 1.0), point2=(2.0, 0.6)) s1.Line(point1=(2.0, -0.6), point2=(-2.0, -1.0)) s1.ArcByCenterEnds(center=(-2.0, 0.0), point1=(-2.0, -1.0), point2=(-2.0, 1.0)) s1.ArcByCenterEnds(center=(2.0, 0.0), point1=(2.0, 0.6), point2=(2.0, -0.6)) p = mdb.models['Model-1'].Part(name='ARM', dimensionality=THREE_D, type=DEFORMABLE_BODY) p = mdb.models['Model-1'].parts['ARM'] p.BaseSolidExtrude(sketch=s1, depth=0.5) s1.unsetPrimaryObject() p = mdb.models['Model-1'].parts['ARM'] session.viewports['Viewport: 1'].setValues(displayedObject=p) del mdb.models['Model-1'].sketches['__profile__'] ##--------------------------------------------------------------------------- # definition of the geometry of ROD ##-------------------------------------------------------------------------- ## ROD-1 ## s = mdb.models['Model-1'].Sketch(name='__profile__', sheetSize=30.0) g, v, d = s.geometry, s.vertices, s.dimensions s.sketchOptions.setValues(sheetSize=30.0, gridSpacing=0.5, grid=ON, gridFrequency=2, constructionGeometry=ON, dimensionTextHeight=0.5, decimalPlaces=2) s.setPrimaryObject(option=STANDALONE) s.Spot(point=(10.0, 0.0)) s.Spot(point=(-9.0, 4.0)) s.ConstructionCircleByCenterPerimeter(center=(-9.0, 4.0), point1=(-9.0, 4.5)) s.Spot(point=(10.0, 0.5)) s.Spot(point=(10.0, -0.5)) s.Spot(point=(5.0, -0.5)) s.Spot(point=(5.0, 0.5)) s.Line(point1=(-9.0, 4.5), point2=(5.0, 0.5)) s.Line(point1=(5.0, 0.5), point2=(10.0, 0.5)) s.Line(point1=(10.0, 0.5), point2=(10.0, -0.5)) s.Line(point1=(10.0, -0.5), point2=(5.0, -0.5)) s.Line(point1=(5.0, -0.5), point2=(-9.13673115157259, 3.51905863955194)) s.ArcByCenterEnds(center=(-9.0, 4.0), point1=(-9.13673115157259, 3.51905863955194), point2=(-9.0, 4.5)) s.FilletByRadius(radius=20.0, curve1=g[14], nearPoint1=(4.8070912361145, 0.551173090934753), curve2=g[15], nearPoint2=(4.53042411804199, 0.680860817432404)) s.FilletByRadius(radius=20.0, curve1=g[16], nearPoint1=(6.01750993728638, 0.551173090934753), curve2=g[15], nearPoint2=(3.49292254447937, 0.842970430850983)) s.FilletByRadius(radius=20.0, curve1=g[18], nearPoint1=(5.98292636871338, -0.551172435283661), curve2=g[20], nearPoint2=(3.94250655174255, -0.162109300494194)) p = mdb.models['Model-1'].Part(name='ROD-1', dimensionality=THREE_D, type=DEFORMABLE_BODY) p = mdb.models['Model-1'].parts['ROD-1'] p.BaseSolidExtrude(sketch=s, depth=1.0) s.unsetPrimaryObject() p = mdb.models['Model-1'].parts['ROD-1'] session.viewports['Viewport: 1'].setValues(displayedObject=p) del mdb.models['Model-1'].sketches['__profile__'] ## ROD-2 ## s1 = mdb.models['Model-1'].Sketch(name='__profile__', sheetSize=3.0) g, v, d = s1.geometry, s1.vertices, s1.dimensions s1.sketchOptions.setValues(sheetSize=3.0, gridSpacing=0.05, grid=ON, gridFrequency=2, constructionGeometry=ON, dimensionTextHeight=0.05, decimalPlaces=2) s1.setPrimaryObject(option=STANDALONE) s1.ObliqueConstructionLine(point1=(0.0, -1.5), point2=(0.0, 1.5)) s1.Spot(point=(0.0, 0.0)) session.viewports['Viewport: 1'].view.setValues(width=5.35392, height=3.20173) s1.Spot(point=(0.0, -1.15)) s1.ArcByCenterEnds(center=(0.0, 0.0), point1=(0.0, -1.15), point2=(-1.15, 0.0)) s1.Line(point1=(-1.15, 0.0), point2=(0.0, 0.0)) s1.Line(point1=(0.0, 0.0), point2=(0.0, -1.15)) p = mdb.models['Model-1'].Part(name='ROD-2', dimensionality=THREE_D, type=DEFORMABLE_BODY) p = mdb.models['Model-1'].parts['ROD-2'] p.BaseSolidRevolve(sketch=s1, angle=360.0, flipRevolveDirection=OFF) s1.unsetPrimaryObject() p = mdb.models['Model-1'].parts['ROD-2'] session.viewports['Viewport: 1'].setValues(displayedObject=p) del mdb.models['Model-1'].sketches['__profile__'] ##--------------------------------------------------------------------------- # definition of the geometry of BELLCRANK ##-------------------------------------------------------------------------- s = mdb.models['Model-1'].Sketch(name='__profile__', sheetSize=8.0) g, v, d = s.geometry, s.vertices, s.dimensions s.sketchOptions.setValues(sheetSize=8.0, gridSpacing=0.2, grid=ON, gridFrequency=2, constructionGeometry=ON, dimensionTextHeight=0.2, decimalPlaces=2) s.setPrimaryObject(option=STANDALONE) session.viewports['Viewport: 1'].view.setValues(width=14.8571, height=8.8848) s.Spot(point=(-2.6, 0.0)) s.Spot(point=(2.4, 0.0)) s.Spot(point=(-2.6, -1.6)) s.Spot(point=(-2.4, -1.6)) s.Spot(point=(-2.8, -1.6)) s.ConstructionCircleByCenterPerimeter(center=(-2.6, 0.0), point1=(-2.6, 1.0)) s.ConstructionCircleByCenterPerimeter(center=(2.4, 0.0), point1=(2.4, 0.5)) s.Spot(point=(-2.2, -1.2)) s.Spot(point=(-3.0, -1.2)) s.ObliqueConstructionLine(point1=(2.4, 0.5), point2=(-2.49949364160194, 0.994936416019416)) s.ObliqueConstructionLine(point1=(-2.2, -1.2), point2=(2.47462598216184, -0.494399598287035)) s.ObliqueConstructionLine(point1=(-3.0, -1.2), point2=(-3.43094750193111, -0.556350832689629)) s.Line(point1=(-2.6, 1.0), point2=(2.4, 0.5)) session.viewports['Viewport: 1'].view.setValues(width=10.0772, height=6.02632) s.ArcByCenterEnds(center=(2.4, 0.0), point1=(2.4, 0.5), point2=(2.4, -0.4)) s.Line(point1=(2.4, -0.5), point2=(-2.2, -1.2)) s.Line(point1=(-2.2, -1.2), point2=(-2.4, -1.6)) s.Line(point1=(-2.4, -1.6), point2=(-2.8, -1.6)) s.Line(point1=(-2.8, -1.6), point2=(-3.0, -1.2)) s.Line(point1=(-3.0, -1.2), point2=(-3.43094750193111, -0.556350832689629)) s.ArcByCenterEnds(center=(-2.6, 0.0), point1=(-3.43094750193111, -0.556350832689629), point2=(-2.6, 1.0)) s.FilletByRadius(radius=0.6, curve1=g[33], nearPoint1=(-2.27368593215942, -1.35526406764984), curve2=g[32], nearPoint2=(-1.99298393726349, -1.1447377204895)) p = mdb.models['Model-1'].Part(name='BELLCRANK-1', dimensionality=THREE_D, type=DEFORMABLE_BODY) p = mdb.models['Model-1'].parts['BELLCRANK-1'] p.BaseSolidExtrude(sketch=s, depth=0.5) s.unsetPrimaryObject() p = mdb.models['Model-1'].parts['BELLCRANK-1'] session.viewports['Viewport: 1'].setValues(displayedObject=p) del mdb.models['Model-1'].sketches['__profile__'] ## BELLCRANK-2 ## s1 = mdb.models['Model-1'].Sketch(name='__profile__', sheetSize=2.0) g, v, d = s1.geometry, s1.vertices, s1.dimensions s1.sketchOptions.setValues(sheetSize=2.0, gridSpacing=0.05, grid=ON, gridFrequency=2, constructionGeometry=ON, dimensionTextHeight=0.05, decimalPlaces=2) s1.setPrimaryObject(option=STANDALONE) s1.ObliqueConstructionLine(point1=(0.0, -1.0), point2=(0.0, 1.0)) s1.Spot(point=(0.0, 0.0)) session.viewports['Viewport: 1'].view.setValues(width=3.7613, height=2.24932) s1.Spot(point=(0.0, 0.433)) s1.Spot(point=(0.0, -0.5)) s1.HorizontalConstructionLine(point=(0.0, 0.433)) s1.ArcByCenterEnds(center=(0.0, 0.0), point1=(0.0, -0.5), point2=(-0.25, 0.45)) s1.Line(point1=(-0.242821465589316, 0.437078638060769), point2=(0.0, 0.433)) s1.Line(point1=(0.0, 0.433), point2=(0.0, -0.5)) s1.assignCenterline(line=g[3]) p = mdb.models['Model-1'].Part(name='BELLCRANK-2', dimensionality=THREE_D, type=DEFORMABLE_BODY) p = mdb.models['Model-1'].parts['BELLCRANK-2'] p.BaseSolidRevolve(sketch=s1, angle=360.0, flipRevolveDirection=OFF) s1.unsetPrimaryObject() p = mdb.models['Model-1'].parts['BELLCRANK-2'] session.viewports['Viewport: 1'].setValues(displayedObject=p) del mdb.models['Model-1'].sketches['__profile__'] ##--------------------------------------------------------------------------- # definition of the geometry of ACTUATORARM ##-------------------------------------------------------------------------- s1 = mdb.models['Model-1'].Sketch(name='__profile__', sheetSize=30.0) g, v, d = s1.geometry, s1.vertices, s1.dimensions s1.sketchOptions.setValues(sheetSize=30.0, gridSpacing=0.5, grid=ON, gridFrequency=2, constructionGeometry=ON, dimensionTextHeight=0.5, decimalPlaces=2) s1.setPrimaryObject(option=STANDALONE) s1.Spot(point=(-10.0, 0.0)) s1.Spot(point=(10.0, 0.0)) s1.Spot(point=(-10.0, -0.5)) s1.Spot(point=(-10.0, 0.5)) s1.Spot(point=(10.0, 0.5)) s1.Spot(point=(10.0, -0.5)) s1.Line(point1=(-10.0, 0.5), point2=(10.0, 0.5)) s1.Line(point1=(-10.0, -0.5), point2=(10.0, -0.5)) s1.ArcByCenterEnds(center=(-10.0, 0.0), point1=(-10.0, -0.5), point2=(-10.0, 0.5)) s1.ArcByCenterEnds(center=(10.0, 0.0), point1=(10.0, 0.5), point2=(10.0, -0.5)) p = mdb.models['Model-1'].Part(name='ACTUATORARM', dimensionality=THREE_D, type=DEFORMABLE_BODY) p = mdb.models['Model-1'].parts['ACTUATORARM'] p.BaseSolidExtrude(sketch=s1, depth=1.0) s1.unsetPrimaryObject() p = mdb.models['Model-1'].parts['ACTUATORARM'] session.viewports['Viewport: 1'].setValues(displayedObject=p) del mdb.models['Model-1'].sketches['__profile__'] ##--------------------------------------------------------------------------- # definition of the geometry of ACTUATORARM ##-------------------------------------------------------------------------- s1 = mdb.models['Model-1'].Sketch(name='__profile__', sheetSize=30.0) g, v, d = s1.geometry, s1.vertices, s1.dimensions s1.sketchOptions.setValues(sheetSize=30.0, gridSpacing=0.5, grid=ON, gridFrequency=2, constructionGeometry=ON, dimensionTextHeight=0.5, decimalPlaces=2) s1.setPrimaryObject(option=STANDALONE) s1.Spot(point=(-11.0, 0.0)) s1.Spot(point=(-12.0, 0.0)) s1.Spot(point=(10.0, 0.0)) s1.ConstructionCircleByCenterPerimeter(center=(10.0, 0.0), point1=(10.0, 1.0)) s1.Line(point1=(-12.0, 1.0), point2=(10.0, 1.0)) s1.Line(point1=(-12.0, 1.0), point2=(-12.0, -1.0)) s1.Line(point1=(-12.0, -1.0), point2=(10.0, -1.0)) s1.ArcByCenterEnds(center=(10.0, 0.0), point1=(10.0, 1.0), point2=(10.0, -1.0)) p = mdb.models['Model-1'].Part(name='ACTUATOR', dimensionality=THREE_D, type=DEFORMABLE_BODY) p = mdb.models['Model-1'].parts['ACTUATOR'] p.BaseSolidExtrude(sketch=s1, depth=2.0) s1.unsetPrimaryObject() p = mdb.models['Model-1'].parts['ACTUATOR'] session.viewports['Viewport: 1'].setValues(displayedObject=p) del mdb.models['Model-1'].sketches['__profile__'] session.viewports['Viewport: 1'].view.setValues(cameraPosition=(33.0155, -22.0959, 33.0546), cameraUpVector=(-0.235223, 0.917012, 0.322116)) session.viewports['Viewport: 1'].view.setValues(cameraPosition=(33.0155, -22.0959, 33.0546), cameraUpVector=(-0.508622, 0.723075, 0.467403)) session.viewports['Viewport: 1'].view.setValues(cameraPosition=(35.2775, -31.6997, 20.5035), cameraUpVector=(-0.350443, 0.607997, 0.712411)) session.viewports['Viewport: 1'].view.setValues(cameraPosition=(35.2775, -31.6997, 20.5035), cameraUpVector=(-0.521806, 0.431494, 0.735888)) #: Warning: Cannot continue yet--complete the step or cancel the procedure. p = mdb.models['Model-1'].parts['ACTUATOR'] f, e1 = p.faces, p.edges t = p.MakeSketchTransform(sketchPlane=f.findAt(( -4.666667, -1.0, 1.333333), (0.0, -1.0, 0.0)), sketchUpEdge=e1.findAt((10.0, -1.0, 0.5), ), sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, origin=(-1.0, -1.0, 1.0)) s = mdb.models['Model-1'].Sketch(name='__profile__', sheetSize=30.0, gridSpacing=0.5, transform=t) g, v, d = s.geometry, s.vertices, s.dimensions s.sketchOptions.setValues(sheetSize=30.0, gridSpacing=0.5, grid=ON, gridFrequency=2, constructionGeometry=ON, dimensionTextHeight=0.5, decimalPlaces=2) s.setPrimaryObject(option=SUPERIMPOSE) p = mdb.models['Model-1'].parts['ACTUATOR'] p.projectReferencesOntoSketch(sketch=s, filter=COPLANAR_EDGES) r, r1 = s.referenceGeometry, s.referenceVertices s.Spot(point=(9.0, 0.5)) s.Spot(point=(9.0, -0.5)) s.Line(point1=(9.0, 0.5), point2=(9.0, 1.0)) s.Line(point1=(9.0, 1.0), point2=(12.0, 1.0)) s.Line(point1=(12.0, 1.0), point2=(12.0, 0.5)) s.Line(point1=(12.0, 0.5), point2=(9.0, 0.5)) s.Line(point1=(9.0, -0.5), point2=(12.0, -0.5)) s.Line(point1=(12.0, -0.5), point2=(12.0, -1.0)) s.Line(point1=(12.0, -1.0), point2=(9.0, -1.0)) s.Line(point1=(9.0, -1.0), point2=(9.0, -0.5)) p = mdb.models['Model-1'].parts['ACTUATOR'] f1, e2 = p.faces, p.edges p.CutExtrude(sketchPlane=f1.findAt(( -4.666667, -1.0, 1.333333), (0.0, -1.0, 0.0)), sketchUpEdge=e2.findAt((10.0, -1.0, 0.5), ), sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, sketch=s, flipExtrudeDirection=OFF) s.unsetPrimaryObject() #: Info: No sketch placement constraints specified on Cut extrude-1 feature. del mdb.models['Model-1'].sketches['__profile__'] p = mdb.models['Model-1'].parts['ACTUATOR'] f, e1 = p.faces, p.edges t = p.MakeSketchTransform(sketchPlane=f.findAt((10.25294, -0.943984, 1.5), (0.0, 0.0, 1.0)), sketchUpEdge=e1.findAt((8.0, -0.5, 1.5), ), sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, origin=(9.401642, 0.0, 1.5)) s = mdb.models['Model-1'].Sketch(name='__profile__', sheetSize=30.0, gridSpacing=0.5, transform=t) g, v, d = s.geometry, s.vertices, s.dimensions s.sketchOptions.setValues(sheetSize=30.0, gridSpacing=0.5, grid=ON, gridFrequency=2, constructionGeometry=ON, dimensionTextHeight=0.5, decimalPlaces=2) s.setPrimaryObject(option=SUPERIMPOSE) p = mdb.models['Model-1'].parts['ACTUATOR'] p.projectReferencesOntoSketch(sketch=s, filter=COPLANAR_EDGES) r, r1 = s.referenceGeometry, s.referenceVertices s.CircleByCenterPerimeter(center=(-0.598357999999999, 0.0), point1=(-0.6, 0.5)) s.constraintReferences(vertex1=r1.findAt((-0.598358, 0.0), 1)) p = mdb.models['Model-1'].parts['ACTUATOR'] f1, e2 = p.faces, p.edges p.SolidExtrude(sketchPlane=f1.findAt((10.25294, -0.943984, 1.5), (0.0, 0.0, 1.0)), sketchUpEdge=e2.findAt((8.0, -0.5, 1.5), ), sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, sketch=s, depth=1.0, flipExtrudeDirection=OFF) s.unsetPrimaryObject() del mdb.models['Model-1'].sketches['__profile__'] session.viewports['Viewport: 1'].view.setValues(cameraPosition=(34.6208, -27.5186, -24.9719), cameraUpVector=(-0.0217718, -0.279751, 0.959826)) p = mdb.models['Model-1'].parts['ACTUATOR'] f, e1 = p.faces, p.edges t = p.MakeSketchTransform(sketchPlane=f.findAt(( 10.655309, -0.419606, 0.5), (0.0, 0.0, -1.0)), sketchUpEdge=e1.findAt((8.0, -0.5, 0.5), ), sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, origin=(9.401642, 0.0, 0.5)) s1 = mdb.models['Model-1'].Sketch(name='__profile__', sheetSize=30.0, gridSpacing=0.5, transform=t) g, v, d = s1.geometry, s1.vertices, s1.dimensions s1.sketchOptions.setValues(sheetSize=30.0, gridSpacing=0.5, grid=ON, gridFrequency=2, constructionGeometry=ON, dimensionTextHeight=0.5, decimalPlaces=2) s1.setPrimaryObject(option=SUPERIMPOSE) p = mdb.models['Model-1'].parts['ACTUATOR'] p.projectReferencesOntoSketch(sketch=s1, filter=COPLANAR_EDGES) r, r1 = s1.referenceGeometry, s1.referenceVertices s1.CircleByCenterPerimeter(center=(-0.598357999999999, 0.0), point1=(-0.5, 0.5)) s1.constraintReferences(vertex1=r1.findAt((-0.598358, 0.0), 1)) p = mdb.models['Model-1'].parts['ACTUATOR'] f1, e2 = p.faces, p.edges p.SolidExtrude(sketchPlane=f1.findAt(( 10.655309, -0.419606, 0.5), (0.0, 0.0, -1.0)), sketchUpEdge=e2.findAt((8.0, -0.5, 0.5), ), sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, sketch=s1, depth=1.0, flipExtrudeDirection=OFF) s1.unsetPrimaryObject() del mdb.models['Model-1'].sketches['__profile__'] ##--------------------------------------------------------------------------- # ASSEMBLY of the MODEL ##--------------------------------------------------------------------------- import assembly a = mdb.models['Model-1'].rootAssembly a1 = mdb.models['Model-1'].rootAssembly ##---------------------------------------------------------------- ## Create instance BELLCRANK merging BELLCRANK-1 with BELLCRANK-2 ##---------------------------------------------------------------- session.viewports['Viewport: 1'].setValues(displayedObject=a) a1.DatumCsysByDefault(CARTESIAN) p = mdb.models['Model-1'].parts['BELLCRANK-1'] a1.Instance(name='BELLCRANK-1-1', part=p, dependent=OFF) session.viewports['Viewport: 1'].view.fitView() p = mdb.models['Model-1'].parts['BELLCRANK-2'] a1.Instance(name='BELLCRANK-2-1', part=p, dependent=OFF) p3 = a1.instances['BELLCRANK-2-1'] p3.translate(vector=(3.5, 0.0, 0.0)) session.viewports['Viewport: 1'].view.fitView() session.viewports['Viewport: 1'].view.setValues(cameraPosition=(-2.77111, -16.0234, 8.50725), cameraUpVector=(-0.597682, 0.715511, 0.36169)) e11 = a.instances['BELLCRANK-1-1'].edges a.DatumPointByMidPoint(point1=a.instances['BELLCRANK-1-1'].InterestingPoint( edge=e11.findAt( (-2.5, -1.6, 0.5), ), rule=MIDDLE), point2=a.instances['BELLCRANK-1-1'].InterestingPoint(edge=e11.findAt( (-2.7, -1.6, 0.0), ), rule=MIDDLE)) session.viewports['Viewport: 1'].view.setValues(cameraPosition=(14.6115, 7.57459, 7.81128), cameraUpVector=(-0.787922, 0.0240495, 0.615305)) session.viewports['Viewport: 1'].view.setValues(cameraPosition=(11.589, -12.7062, 7.28036), cameraUpVector=(-0.597277, 0.380208, 0.706188)) p3 = a1.instances['BELLCRANK-2-1'] p3.translate(vector=(-6.1, -2.03707863806077, 0.25)) #: The instance BELLCRANK-2-1 was translated by -6.1, -2.03708, 0.25 with respect to the assembly coordinate system a1.PartFromBooleanMerge(name='BELLCRANK', instances=( a1.instances['BELLCRANK-2-1'], a1.instances['BELLCRANK-1-1'], )) p = mdb.models['Model-1'].parts['BELLCRANK'] a1.Instance(name='BELLCRANK-1', part=p, dependent=OFF) a.suppressFeatures(('BELLCRANK-2-1', 'BELLCRANK-1-1', )) ##------------------------------------------------------------------------------ ## Place ROD-1 and ROD-1 relatively to BELLCRANK + Merge ROD-1 ROD-2 into ROD ##------------------------------------------------------------------------------ a1.DatumCsysByDefault(CARTESIAN) p = mdb.models['Model-1'].parts['BELLCRANK-1'] a1.Instance(name='BELLCRANK-1-1', part=p, dependent=OFF) session.viewports['Viewport: 1'].view.fitView() p = mdb.models['Model-1'].parts['BELLCRANK-2'] a1.Instance(name='BELLCRANK-2-1', part=p, dependent=OFF) p3 = a1.instances['BELLCRANK-2-1'] p3.translate(vector=(3.5, 0.0, 0.0)) session.viewports['Viewport: 1'].view.fitView() session.viewports['Viewport: 1'].view.setValues(cameraPosition=(-2.77111, -16.0234, 8.50725), cameraUpVector=(-0.597682, 0.715511, 0.36169)) e11 = a.instances['BELLCRANK-1-1'].edges a.DatumPointByMidPoint(point1=a.instances['BELLCRANK-1-1'].InterestingPoint( edge=e11.findAt( (-2.5, -1.6, 0.5), ), rule=MIDDLE), point2=a.instances['BELLCRANK-1-1'].InterestingPoint(edge=e11.findAt( (-2.7, -1.6, 0.0), ), rule=MIDDLE)) session.viewports['Viewport: 1'].view.setValues(cameraPosition=(14.6115, 7.57459, 7.81128), cameraUpVector=(-0.787922, 0.0240495, 0.615305)) session.viewports['Viewport: 1'].view.setValues(cameraPosition=(11.589, -12.7062, 7.28036), cameraUpVector=(-0.597277, 0.380208, 0.706188)) p3 = a1.instances['BELLCRANK-2-1'] p3.translate(vector=(-6.1, -2.03707863806077, 0.25)) #: The instance BELLCRANK-2-1 was translated by -6.1, -2.03708, 0.25 with respect to the assembly coordinate system a1.PartFromBooleanMerge(name='BELLCRANK', instances=( a1.instances['BELLCRANK-2-1'], a1.instances['BELLCRANK-1-1'], )) p = mdb.models['Model-1'].parts['BELLCRANK'] a1.Instance(name='BELLCRANK-1', part=p, dependent=OFF) a.suppressFeatures(('BELLCRANK-2-1', 'BELLCRANK-1-1', )) p = mdb.models['Model-1'].parts['ROD-1'] a1.Instance(name='ROD-1-1', part=p, dependent=OFF) p3 = a1.instances['ROD-1-1'] p3.translate(vector=(14.35, 0.0, 0.0)) session.viewports['Viewport: 1'].view.fitView() p = mdb.models['Model-1'].parts['ROD-2'] a1.Instance(name='ROD-2-1', part=p, dependent=OFF) p3 = a1.instances['ROD-2-1'] p3.translate(vector=(25.73, 0.0, 0.0)) session.viewports['Viewport: 1'].view.fitView() session.viewports['Viewport: 1'].assemblyDisplay.setValues( renderStyle=WIREFRAME) p3 = a1.instances['ROD-2-1'] p3.translate(vector=(-28.33, -2.03707863806077, 0.25)) #: The instance ROD-2-1 was translated by -28.33, -2.03708, 0.25 with respect to the assembly coordinate system p3 = a1.instances['ROD-1-1'] p3.rotateAboutAxis(axisPoint=(0.0, 0.0, 0.0), axisDirection=(1.0, 0.0, 0.0), angle=-90.0) #: The instance ROD-1-1 was rotated by -90 degrees about the axis defined by the point 0, 0, 0 and the vector 1, 0, 0 session.viewports['Viewport: 1'].view.setValues(viewOffsetX=-6.0398, viewOffsetY=3.78725) p3 = a1.instances['ROD-1-1'] p3.translate(vector=(-28.1, -3.03707863806077, 0.25)) #: The instance ROD-1-1 was translated by -28.1, -3.03708, 0.25 with respect to the assembly coordinate system session.viewports['Viewport: 1'].assemblyDisplay.setValues(renderStyle=SHADED) session.viewports['Viewport: 1'].view.setValues(cameraPosition=(-14.0714, -29.098, 68.86), cameraUpVector=(-0.644525, 0.660639, -0.384896), cameraTarget=(12.9576, -1.26182, 11.1605)) session.viewports['Viewport: 1'].view.setValues(cameraPosition=(-13.052, -40.425, 63.873), cameraUpVector=(-0.0419101, 0.997329, 0.0598257), cameraTarget=(13.977, -12.5888, 6.17349)) session.viewports['Viewport: 1'].view.setValues(cameraUpVector=(-0.0800076, 0.836982, -0.541351)) session.viewports['Viewport: 1'].view.setValues(cameraPosition=(-19.2273, -8.21605, 54.7586), cameraUpVector=(-0.131864, 0.960334, -0.245703)) p3 = a1.instances['ROD-1-1'] p3.translate(vector=(0.1, 0.0, 0.0)) #: The instance ROD-1-1 was translated by 0.1, 0, 0 with respect to the assemblycoordinate system a1.PartFromBooleanMerge(name='ROD', instances=(a1.instances['ROD-1-1'], a1.instances['ROD-2-1'], )) p = mdb.models['Model-1'].parts['ROD'] a1.Instance(name='ROD-1', part=p, dependent=OFF) a.suppressFeatures(('ROD-1-1', 'ROD-2-1', )) session.viewports['Viewport: 1'].view.fitView() ##------------------------------------------------------------- ## Instance and position ARM ##------------------------------------------------------------- p = mdb.models['Model-1'].parts['ARM'] a1.Instance(name='ARM-1', part=p, dependent=OFF) p3 = a1.instances['ARM-1'] p3.translate(vector=(6.46, 0.0, 0.0)) session.viewports['Viewport: 1'].view.fitView() p3 = a1.instances['ARM-1'] p3.rotateAboutAxis(axisPoint=(0.0, 0.0, 0.0), axisDirection=(1.0, 0.0, 0.0), angle=90.0) #: The instance ARM-1 was rotated by 90 degrees about the axis defined by the point 0, 0, 0 and the vector 1, 0, 0 p3 = a1.instances['ARM-1'] p3.rotateAboutAxis(axisPoint=(0.0, 0.0, 0.0), axisDirection=(0.0, 1.0, 0.0), angle=90.0) #: The instance ARM-1 was rotated by 90 degrees about the axis defined by the point 0, 0, 0 and the vector 0, 1, 0 session.viewports['Viewport: 1'].assemblyDisplay.setValues( renderStyle=WIREFRAME) p3 = a1.instances['ARM-1'] p3.translate(vector=(-22.65, -1.53707863806077, 4.71)) #: The instance ARM-1 was translated by -22.65, -1.53708, 4.71 with respect to the assembly coordinate system ##------------------------------------------------------------- ## Instance and position FLAP ##------------------------------------------------------------- p = mdb.models['Model-1'].parts['FLAP'] a1.Instance(name='FLAP-1', part=p, dependent=OFF) p3 = a1.instances['FLAP-1'] p3.translate(vector=(9.2, 0.0, 0.0)) session.viewports['Viewport: 1'].view.fitView() f1 = a1.instances['FLAP-1'].faces f2 = a1.instances['ARM-1'].faces a1.FaceToFace(movablePlane=f1.findAt(( 9.814788, 0.245048, 32.0), (0.0, 0.0, 1.0)), fixedPlane=f2.findAt((-21.95, -2.037079, -0.794658), (0.0, -1.0, 0.0)), flip=ON, clearance=0.0) #: The instance "FLAP-1" is partially constrained with 2 unconstrained translations and 1 unconstrained rotations p3 = a1.instances['FLAP-1'] p3.ConvertConstraints() #: All position constraints of "FLAP-1" have been converted to absolute positions p3 = a1.instances['FLAP-1'] p3.rotateAboutAxis(axisPoint=(0.0, 0.0, 0.0), axisDirection=(0.0, 1.0, 0.0), angle=180.0) #: The instance FLAP-1 was rotated by 180 degrees about the axis defined by thepoint 0, 0, 0 and the vector 0, 1, 0 session.viewports['Viewport: 1'].view.setValues(viewOffsetX=7.24205, viewOffsetY=-11.1771) p3 = a1.instances['FLAP-1'] p3.translate(vector=(-13.45, 0.0, 32.25)) #: The instance FLAP-1 was translated by -13.45, 0, 32.25 with respect to the assembly coordinate system ##------------------------------------------------------------- ## Instance and position ACTUATORARM ##------------------------------------------------------------- p = mdb.models['Model-1'].parts['ACTUATORARM'] a1.Instance(name='ACTUATORARM-1', part=p, dependent=OFF) p3 = a1.instances['ACTUATORARM-1'] p3.translate(vector=(15.5, 0.0, 0.0)) session.viewports['Viewport: 1'].view.fitView() p3 = a1.instances['ACTUATORARM-1'] p3.rotateAboutAxis(axisPoint=(0.0, 0.0, 0.0), axisDirection=(0.0, 0.0, 1.0), angle=90.0) #: The instance ACTUATORARM-1 was rotated by 90 degrees about the axis defined by the point 0, 0, 0 and the vector 0, 0, 1 session.viewports['Viewport: 1'].view.setValues(width=10.3268, height=6.17561, viewOffsetX=-7.15737, viewOffsetY=-3.97852) p3 = a1.instances['ACTUATORARM-1'] p3.translate(vector=(2.4, -5.5, 0.5)) #: The instance ACTUATORARM-1 was translated by 2.4, -5.5, 0.5 with respect to the assembly coordinate system ##------------------------------------------------------------- ## Instance and position ACTUATOR ##------------------------------------------------------------- session.viewports['Viewport: 1'].view.fitView() p = mdb.models['Model-1'].parts['ACTUATOR'] a1.Instance(name='ACTUATOR-1', part=p, dependent=OFF) p3 = a1.instances['ACTUATOR-1'] p3.translate(vector=(17.2, 0.0, 0.0)) session.viewports['Viewport: 1'].view.fitView() p3 = a1.instances['ACTUATOR-1'] p3.rotateAboutAxis(axisPoint=(0.0, 0.0, 0.0), axisDirection=(0.0, 0.0, 1.0), angle=90.0) #: The instance ACTUATOR-1 was rotated by 90 degrees about the axis defined by the point 0, 0, 0 and the vector 0, 0, 1 session.viewports['Viewport: 1'].view.setValues(width=10.1072, height=6.04423, viewOffsetX=-6.71581, viewOffsetY=-2.70731) e11 = a.instances['ACTUATOR-1'].edges a.DatumPointByMidPoint(point1=a.instances['ACTUATOR-1'].InterestingPoint( edge=e11.findAt(( 0.5, 5.2, 2.0), ), rule=MIDDLE), point2=a.instances['ACTUATOR-1'].InterestingPoint(edge=e11.findAt(( -0.5, 5.2, 0.0), ), rule=MIDDLE)) e11 = a.instances['ACTUATORARM-1'].edges a.DatumPointByMidPoint(point1=a.instances['ACTUATORARM-1'].InterestingPoint( edge=e11.findAt( (2.9, 15.0, 1.5), ), rule=MIDDLE), point2=a.instances['ACTUATORARM-1'].InterestingPoint(edge=e11.findAt( (1.9, 15.0, 0.5), ), rule=MIDDLE)) p3 = a1.instances['ACTUATOR-1'] p3.translate(vector=(2.4, 4.8, 0.0)) #: The instance ACTUATOR-1 was translated by 2.4, 4.8, 0 with respect to the assembly coordinate system session.viewports['Viewport: 1'].view.fitView() session.viewports['Viewport: 1'].view.setValues(cameraPosition=(145.477, 51.8301, 60.8719), cameraUpVector=(-0.317426, -0.260938, 0.911676)) session.viewports['Viewport: 1'].assemblyDisplay.setValues(renderStyle=SHADED) ##------------------------------------------------------------- ## DEFINITION OF THE STEP ##------------------------------------------------------------- import step import regionToolset import displayGroupMdbToolset as dgm mdb.models['Model-1'].StaticStep(name='Step-1', previous='Initial', initialInc=0.05, maxInc=0.05, nlgeom=ON) session.viewports['Viewport: 1'].assemblyDisplay.setValues(step='Step-1') ##------------------------------------------------------------- ## INTERACTION DEFINITION ##------------------------------------------------------------- ## DEFINITION OF THE REFERENCE POINTS v1 = a.instances['ACTUATORARM-1'].vertices e1 = a.instances['BELLCRANK-1'].edges a.DatumPointByMidPoint(point1=v1.findAt( (1.9, 0.0, 1.5), ), point2=a.instances['BELLCRANK-1'].InterestingPoint(edge=e1.findAt(( 2.753553, 0.353553, 0.5), ), rule=MIDDLE)) e1 = a.instances['ACTUATOR-1'].edges a.ReferencePoint(point=a.instances['ACTUATOR-1'].InterestingPoint(edge=e1.findAt(( 2.401642, 31.5, 2.5), ), rule=CENTER)) #/# The reference point created in the previous step is RP-1 mdb.models['Model-1'].rootAssembly.features.changeKey(fromName='RP-1', toName='ACTUATOR-GROUND') #/# Now it has been renamed to ACTUATOR-GROUND e1 = a.instances['ACTUATOR-1'].edges a.ReferencePoint(point=a.instances['ACTUATOR-1'].InterestingPoint(edge=e1.findAt(( 2.498358, 31.5, -0.5), ), rule=CENTER)) #/# This second reference point created in the above step #/# is now named as RP-1 since the first one has been #/# renamed. Previously it used to be RP-2. If renaming had not happened, #/# then it would still have been RP-2. The same logic applies below to #/# all reference points created mdb.models['Model-1'].rootAssembly.features.changeKey(fromName='RP-1', toName='GROUND-ACTUATOR') d1 = a.datums a.ReferencePoint(point=d1[33]) mdb.models['Model-1'].rootAssembly.features.changeKey(fromName='RP-1', toName='ACTUATOR-ACTUATORARM') d1 = a.datums a.ReferencePoint(point=d1[33]) mdb.models['Model-1'].rootAssembly.features.changeKey(fromName='RP-1', toName='ACTUATORARM-ACTUATOR') d1 = a.datums a.ReferencePoint(point=d1[34]) mdb.models['Model-1'].rootAssembly.features.changeKey(fromName='RP-1', toName='ACTUATORARM-BELLCRANK') d1 = a.datums a.ReferencePoint(point=d1[34]) mdb.models['Model-1'].rootAssembly.features.changeKey(fromName='RP-1', toName='BELLCRANK-ACTUATORARM') e1 = a.instances['BELLCRANK-1'].edges a.ReferencePoint(point=a.instances['BELLCRANK-1'].InterestingPoint(edge=e1.findAt(( -3.114304, 0.857608, 0.0), ), rule=CENTER)) mdb.models['Model-1'].rootAssembly.features.changeKey(fromName='RP-1', toName='BELLCRANK-GROUND') e1 = a.instances['BELLCRANK-1'].edges a.ReferencePoint(point=a.instances['BELLCRANK-1'].InterestingPoint(edge=e1.findAt(( -3.114304, 0.857608, 0.0), ), rule=CENTER)) mdb.models['Model-1'].rootAssembly.features.changeKey(fromName='RP-1', toName='GROUND-BELLCRANK') e1 = a.instances['ROD-1'].edges a.ReferencePoint(point=a.instances['ROD-1'].InterestingPoint(edge=e1.findAt(( -2.926278, -3.139822, 0.25), ), rule=CENTER)) mdb.models['Model-1'].rootAssembly.features.changeKey(fromName='RP-1', toName='BELLCRANK-ROD') e1 = a.instances['ROD-1'].edges a.ReferencePoint(point=a.instances['ROD-1'].InterestingPoint(edge=e1.findAt(( -2.926278, -3.139822, 0.25), ), rule=CENTER)) mdb.models['Model-1'].rootAssembly.features.changeKey(fromName='RP-1', toName='ROD-BELLCRANK') e1 = a.instances['ROD-1'].edges a.ReferencePoint(point=a.instances['ROD-1'].InterestingPoint(edge=e1.findAt(( -23.068873, -2.037079, -3.476969), ), rule=CENTER)) mdb.models['Model-1'].rootAssembly.features.changeKey(fromName='RP-1', toName='ROD-ARM') e1 = a.instances['ROD-1'].edges a.ReferencePoint(point=a.instances['ROD-1'].InterestingPoint(edge=e1.findAt(( -23.068873, -2.037079, -3.476969), ), rule=CENTER)) mdb.models['Model-1'].rootAssembly.features.changeKey(fromName='RP-1', toName='ARM-ROD') e1 = a.instances['FLAP-1'].edges a.ReferencePoint(point=a.instances['FLAP-1'].InterestingPoint(edge=e1.findAt(( -23.44603, -2.037079, -0.259301), ), rule=CENTER)) mdb.models['Model-1'].rootAssembly.features.changeKey(fromName='RP-1', toName='ARM-FLAP') e1 = a.instances['FLAP-1'].edges a.ReferencePoint(point=a.instances['FLAP-1'].InterestingPoint(edge=e1.findAt(( -23.44603, -2.037079, -0.259301), ), rule=CENTER)) mdb.models['Model-1'].rootAssembly.features.changeKey(fromName='RP-1', toName='FLAP-ARM') e1 = a.instances['FLAP-1'].edges a.ReferencePoint(point=a.instances['FLAP-1'].InterestingPoint(edge=e1.findAt(( -23.44603, -36.037079, 0.759301), ), rule=CENTER)) mdb.models['Model-1'].rootAssembly.features.changeKey(fromName='RP-1', toName='FLAP-GROUND') e1 = a.instances['FLAP-1'].edges a.ReferencePoint(point=a.instances['FLAP-1'].InterestingPoint(edge=e1.findAt(( -23.44603, -36.037079, 0.759301), ), rule=CENTER)) mdb.models['Model-1'].rootAssembly.features.changeKey(fromName='RP-1', toName='GROUND-FLAP') e1 = a.instances['FLAP-1'].edges a.DatumPointByMidPoint(point1=a.instances['FLAP-1'].InterestingPoint( edge=e1.findAt(( -30.15, -4.037079, 2.5), ), rule=MIDDLE), point2=a.instances['FLAP-1'].InterestingPoint( edge=e1.findAt(( -30.15, -34.037079, -2.0), ), rule=MIDDLE)) d1 = a.datums a.ReferencePoint(point=d1[51]) mdb.models['Model-1'].rootAssembly.features.changeKey(fromName='RP-1', toName='LOAD') ## DEFINITION OF DISPLAY BODY CONTRAINS r1 = a1.referencePoints mdb.models['Model-1'].DisplayBody(name='Constraint-1', instance=a1.instances['FLAP-1'], controlPoints=(r1[52], )) r1 = a1.referencePoints mdb.models['Model-1'].DisplayBody(name='Constraint-2', instance=a1.instances['ARM-1'], controlPoints=(r1[47], )) r1 = a1.referencePoints mdb.models['Model-1'].DisplayBody(name='Constraint-3', instance=a1.instances['ROD-1'], controlPoints=(r1[45], )) r1 = a1.referencePoints mdb.models['Model-1'].DisplayBody(name='Constraint-4', instance=a1.instances['BELLCRANK-1'], controlPoints=(r1[43], )) r1 = a1.referencePoints mdb.models['Model-1'].DisplayBody(name='Constraint-5', instance=a1.instances['ACTUATORARM-1'], controlPoints=(r1[39], )) r1 = a1.referencePoints mdb.models['Model-1'].DisplayBody(name='Constraint-6', instance=a1.instances['ACTUATOR-1'], controlPoints=(r1[37], )) ## ATTACH REFERENCE NODES TO DISDPLAY BODIES r1 = a.referencePoints refPoints1=(r1[48],r1[49] ) region4=regionToolset.Region(referencePoints=refPoints1) r1 = a.referencePoints refPoints1=(r1[52], ) region1=regionToolset.Region(referencePoints=refPoints1) mdb.models['Model-1'].RigidBody(name='Constraint-7', refPointRegion=region1, tieRegion=region4) r1 = a.referencePoints refPoints1=(r1[46], ) region4=regionToolset.Region(referencePoints=refPoints1) r1 = a.referencePoints refPoints1=(r1[47], ) region1=regionToolset.Region(referencePoints=refPoints1) mdb.models['Model-1'].RigidBody(name='Constraint-8', refPointRegion=region1, tieRegion=region4) r1 = a.referencePoints refPoints1=(r1[44], ) region4=regionToolset.Region(referencePoints=refPoints1) r1 = a.referencePoints refPoints1=(r1[45], ) region1=regionToolset.Region(referencePoints=refPoints1) mdb.models['Model-1'].RigidBody(name='Constraint-9', refPointRegion=region1, tieRegion=region4) r1 = a.referencePoints refPoints1=(r1[40], r1[41], ) region4=regionToolset.Region(referencePoints=refPoints1) r1 = a.referencePoints refPoints1=(r1[43], ) region1=regionToolset.Region(referencePoints=refPoints1) mdb.models['Model-1'].RigidBody(name='Constraint-10', refPointRegion=region1, tieRegion=region4) r1 = a.referencePoints refPoints1=(r1[38], ) region4=regionToolset.Region(referencePoints=refPoints1) r1 = a.referencePoints refPoints1=(r1[39], ) region1=regionToolset.Region(referencePoints=refPoints1) mdb.models['Model-1'].RigidBody(name='Constraint-11', refPointRegion=region1, tieRegion=region4) r1 = a.referencePoints refPoints1=(r1[35], ) region4=regionToolset.Region(referencePoints=refPoints1) r1 = a.referencePoints refPoints1=(r1[37], ) region1=regionToolset.Region(referencePoints=refPoints1) mdb.models['Model-1'].RigidBody(name='Constraint-12', refPointRegion=region1, tieRegion=region4) ## DEFINITION OF CONNECTOR PROPERTIES mdb.models['Model-1'].ConnectorSection(name='HINGE', assembledType=HINGE, translationalType=NONE, rotationalType=NONE) mdb.models['Model-1'].ConnectorSection(name='JOIN', assembledType=NONE, translationalType=JOIN, rotationalType=NONE) elasticity = ConnectorElasticity(components=(4, ), table=((1000.0, ), )) mdb.models['Model-1'].ConnectorSection(name='HINGE-(JOIN-UNI-ELAS)', assembledType=NONE, translationalType=JOIN, rotationalType=UNIVERSAL, behaviorOptions=(elasticity,)) elasticity = ConnectorElasticity(components=(5, ), table=((10.0, ), )) mdb.models['Model-1'].ConnectorSection(name='JOIN-CARDAN-Y', assembledType=NONE, translationalType=JOIN, rotationalType=CARDAN, behaviorOptions=(elasticity,)) mdb.models['Model-1'].ConnectorSection(name='TRANSLATOR', assembledType=TRANSLATOR, translationalType=NONE, rotationalType=NONE) mdb.models['Model-1'].ConnectorSection(name='WELD', assembledType=WELD, translationalType=NONE, rotationalType=NONE) ## DEFINITION OF DATUM AXIS ## define point for axis a.DatumPointByCoordinate(coords=(-30.0, -30.0, -30.0)) d1 = a.datums a.DatumPointByOffset(point=d1[65], vector=(0.0, 10.0, 0.0)) d1 = a.datums a.DatumPointByOffset(point=d1[66], vector=(0.0, 10.0, 0.0)) d1 = a.datums a.DatumPointByOffset(point=d1[67], vector=(0.0, 10.0, 0.0)) d1 = a.datums a.DatumPointByOffset(point=d1[65], vector=(0.0, 0.0, 10.0)) d1 = a.datums a.DatumPointByOffset(point=d1[68], vector=(0.0, 0.0, 10.0)) d1 = a.datums a.DatumPointByOffset(point=d1[66], vector=(-10.0, 0.0, 0.0)) d1 = a.datums a.DatumPointByOffset(point=d1[67], vector=(-10.0, 0.0, 0.0)) ## define coord system d1 = a.datums a.DatumCsysByThreePoints(origin=d1[65], point1=d1[69], point2=d1[66], name='Type-1', coordSysType=CARTESIAN) d1 = a.datums a.DatumCsysByThreePoints(origin=d1[66], point1=d1[67], point2=d1[71], name='Type-2', coordSysType=CARTESIAN) d1 = a.datums a.DatumCsysByThreePoints(origin=d1[67], point1=d1[66], point2=d1[72], name='Type-3', coordSysType=CARTESIAN) d1 = a.datums a.DatumCsysByThreePoints(origin=d1[68], point1=d1[67], point2=d1[70], name='Type-4', coordSysType=CARTESIAN) ## Tilted coordinate system r1 = a.referencePoints a.DatumPointByOffset(point=r1[46], vector=(0.0, 3.0, 0.0)) r1 = a.referencePoints d1 = a.datums v1 = a.instances['ROD-1'].vertices a.DatumCsysByThreePoints(origin=r1[46], point1=d1[77], point2=v1.findAt(( -22.786731, -2.037079, -3.269059), ), name='Type-tilted', coordSysType=CARTESIAN) ## DEFINITION OF CONNECTOR ELEMENTS r11 = a1.referencePoints d11 = a1.datums point1=r11[35] point2=r11[36] orient1=d11[73] setname = 'HINGE-ACTUATOR-GROUND_CnSet' connSect = 'HINGE' edge = a.WirePolyLine(points=((point1, point2), ), mergeWire=OFF, meshable=OFF) a.Set(name=setname, edges=a.getFeatureEdges(edge.name)) csa = a.SectionAssignment(region=a.sets[setname], sectionName=connSect) co = a.ConnectorOrientation(region=csa.getSet(), localCsys1=orient1) #: The connector "HINGE-ACTUATOR-GROUND" has been created. r11 = a1.referencePoints d11 = a1.datums point1=r11[37] point2=r11[38] orient1=d11[74] setname = 'TRANS-ACTUATOR-ACTUATORARM_CnSet' connSect = 'TRANSLATOR' edge = a.WirePolyLine(points=((point1, point2), ), mergeWire=OFF, meshable=OFF) a.Set(name=setname, edges=a.getFeatureEdges(edge.name)) csa = a.SectionAssignment(region=a.sets[setname], sectionName=connSect) co = a.ConnectorOrientation(region=csa.getSet(), localCsys1=orient1) #: The connector "TRANS-ACTUATOR-ACTUATORARM" has been created. session.viewports['Viewport: 1'].view.setValues(width=5.14281, height=4.15501, viewOffsetX=-5.31842, viewOffsetY=-2.84459) r11 = a1.referencePoints d11 = a1.datums point1=r11[39] point2=r11[40] orient1=d11[75] setname = 'JOIN-ACTUATORARM-CRANK_CnSet' connSect = 'JOIN' edge = a.WirePolyLine(points=((point1, point2), ), mergeWire=OFF, meshable=OFF) a.Set(name=setname, edges=a.getFeatureEdges(edge.name)) csa = a.SectionAssignment(region=a.sets[setname], sectionName=connSect) co = a.ConnectorOrientation(region=csa.getSet(), localCsys1=orient1) #: The connector "JOIU-ACTUATORARM-CRANK" has been created. r11 = a1.referencePoints point1=r11[42] point2=r11[41] orient1=d11[74] setname = 'HINGE-CRANK-GROUND_CnSet' connSect = 'HINGE-(JOIN-UNI-ELAS)' edge = a.WirePolyLine(points=((point1, point2), ), mergeWire=OFF, meshable=OFF) a.Set(name=setname, edges=a.getFeatureEdges(edge.name)) csa = a.SectionAssignment(region=a.sets[setname], sectionName=connSect) co = a.ConnectorOrientation(region=csa.getSet(), localCsys1=orient1) #: The connector "JOIN-CRANK-GROUND" has been created. r11 = a1.referencePoints point1=r11[43] point2=r11[44] setname = 'JOIN-BELLCRANK-ROD_CnSet' connSect = 'JOIN' edge = a.WirePolyLine(points=((point1, point2), ), mergeWire=OFF, meshable=OFF) a.Set(name=setname, edges=a.getFeatureEdges(edge.name)) csa = a.SectionAssignment(region=a.sets[setname], sectionName=connSect) co = a.ConnectorOrientation(region=csa.getSet()) #: The connector "JOIN-BELLCRANK-ROD" has been created. session.viewports['Viewport: 1'].view.setValues(viewOffsetX=-2.32193, viewOffsetY=-0.0811141) r11 = a1.referencePoints d11 = a1.datums point1=r11[46] point2=r11[45] orient1=d11[74] setname = 'JOIN-ROD-ARM_CnSet' connSect = 'JOIN-CARDAN-Y' edge = a.WirePolyLine(points=((point1, point2), ), mergeWire=OFF, meshable=OFF) a.Set(name=setname, edges=a.getFeatureEdges(edge.name)) csa = a.SectionAssignment(region=a.sets[setname], sectionName=connSect) co = a.ConnectorOrientation(region=csa.getSet(), localCsys1=orient1) #: The connector "JOIN-ROD-ARM" has been created. r11 = a1.referencePoints d11 = a1.datums point1=r11[47] point2=r11[48] orient1=d11[76] setname = 'WELD-ARMFLAP_CnSet' connSect = 'WELD' edge = a.WirePolyLine(points=((point1, point2), ), mergeWire=OFF, meshable=OFF) a.Set(name=setname, edges=a.getFeatureEdges(edge.name)) csa = a.SectionAssignment(region=a.sets[setname], sectionName=connSect) co = a.ConnectorOrientation(region=csa.getSet(), localCsys1=orient1) #: The connector "WELD-ARMFLAP" has been created. session.viewports['Viewport: 1'].view.setValues(viewOffsetX=-7.10934, viewOffsetY=1.96373) session.viewports['Viewport: 1'].view.setValues(viewOffsetX=-11.9246, viewOffsetY=4.04777) session.viewports['Viewport: 1'].view.setValues(viewOffsetX=-16.0082, viewOffsetY=4.91666) r11 = a1.referencePoints d11 = a1.datums point1=r11[49] point2=r11[50] orient1=d11[76] setname = 'HINGE-FLAP-GROUND_CnSet' connSect = 'HINGE' edge = a.WirePolyLine(points=((point1, point2), ), mergeWire=OFF, meshable=OFF) a.Set(name=setname, edges=a.getFeatureEdges(edge.name)) csa = a.SectionAssignment(region=a.sets[setname], sectionName=connSect) co = a.ConnectorOrientation(region=csa.getSet(), localCsys1=orient1) #: The connector "HINGE-FLAP-GROUND" has been created. ##------------------------------------------------------------------------------ ## APPLY LOADS AND BOUNDARY CONDITIONS ##------------------------------------------------------------------------------ ## LOAD import load import regionToolset import displayGroupMdbToolset as dgm session.viewports['Viewport: 1'].assemblyDisplay.setValues(loads=ON, bcs=ON, predefinedFields=ON, connectors=ON) session.viewports['Viewport: 1'].view.fitView() mdb.models['Model-1'].TabularAmplitude(name='Amp-1', timeSpan=STEP, smooth=SOLVER_DEFAULT, data=((0.0, 1.0), (1.0, 1.0))) r1 = a.referencePoints refPoints1=(r1[52], ) region = regionToolset.Region(referencePoints=refPoints1) mdb.models['Model-1'].ConcentratedForce(name='Load-1', createStepName='Step-1' ,region=region, cf3=1000.0, amplitude='Amp-1') ## BOUNDARY CONDITIONS session.viewports['Viewport: 1'].view.setValues(cameraPosition=(177.389, -5.73594, -44.719), cameraUpVector=(0.0800414, -0.0230107, 0.996526)) r1 = a.referencePoints refPoints1=(r1[36], ) region = regionToolset.Region(referencePoints=refPoints1) mdb.models['Model-1'].EncastreBC(name='BC-1', createStepName='Step-1', region=region) session.viewports['Viewport: 1'].view.setValues(cameraPosition=(84.4043, -12.8666, -188.361), cameraUpVector=(0.775654, -0.27306, 0.569034)) session.viewports['Viewport: 1'].view.setValues(width=5.44929, height=3.25876, viewOffsetX=4.28708, viewOffsetY=12.1298) r1 = a.referencePoints refPoints1=(r1[42], ) region = regionToolset.Region(referencePoints=refPoints1) mdb.models['Model-1'].EncastreBC(name='BC-2', createStepName='Step-1', region=region) session.viewports['Viewport: 1'].view.fitView() session.viewports['Viewport: 1'].view.setValues(cameraPosition=(53.4944, -179.031, -23.2826), cameraUpVector=(0.361156, 0.164372, 0.917904)) session.viewports['Viewport: 1'].view.setValues(width=8.687, height=5.19496, viewOffsetX=-10.6341, viewOffsetY=5.38257) r1 = a.referencePoints refPoints1=(r1[50], ) region = regionToolset.Region(referencePoints=refPoints1) mdb.models['Model-1'].EncastreBC(name='BC-3', createStepName='Step-1', region=region) ## CONNECTOR MOTION (TRANSLATOR) mdb.models['Model-1'].PeriodicAmplitude(name='Amp-2', timeSpan=STEP, frequency=6.28, start=0.0, a_0=0.0, data=((0.0, 3.0), )) connectorRegion = a.sets['TRANS-ACTUATOR-ACTUATORARM_CnSet'] mdb.models['Model-1'].ConnDisplacementBC(name='BC-4', createStepName='Step-1', region=connectorRegion, u1=1.0, u2=UNSET, u3=UNSET, ur1=UNSET, ur2=UNSET, ur3=UNSET, amplitude='Amp-2', fixed=OFF, distributionType=UNIFORM) ##----------------------------------------------------------- ##OUTPUT REQUEST ##----------------------------------------------------------- mdb.models['Model-1'].HistoryOutputRequest(name='H-Output-2', createStepName='Step-1', variables=('CTF1', 'CTF2', 'CTF3', 'CTM1', 'CTM2', 'CTM3'), region=a.sets['HINGE-CRANK-GROUND_CnSet'], sectionPoints=DEFAULT, rebar=EXCLUDE) mdb.models['Model-1'].HistoryOutputRequest(name='H-Output-3', createStepName='Step-1', variables=('CTF1', 'CTF2', 'CTF3', 'CTM1', 'CTM2', 'CTM3'), region=a.sets['JOIN-ROD-ARM_CnSet'], sectionPoints=DEFAULT, rebar=EXCLUDE) ##------------------------------------------------------------- ##JOB DEFINITION ##------------------------------------------------------------- import job session.viewports['Viewport: 1'].assemblyDisplay.setValues(loads=OFF, bcs=OFF, predefinedFields=OFF, connectors=OFF) session.viewports['Viewport: 1'].view.fitView() session.viewports['Viewport: 1'].view.setValues(cameraPosition=(116.285, 84.9697, 100.033), cameraUpVector=(-0.694325, 0.0874699, 0.714326)) session.viewports['Viewport: 1'].view.setValues(cameraPosition=(116.285, 84.9697, 100.033), cameraUpVector=(-0.506119, -0.328915, 0.797282)) mdb.Job(name='flap', model='Model-1', type=ANALYSIS, explicitPrecision=SINGLE, nodalOutputPrecision=SINGLE, description='', userSubroutine='', numCpus=1, preMemory=61.0352, standardMemory=244.141, standardMemoryPolicy=MODERATE, scratch='', echoPrint=ON, modelPrint=ON, contactPrint=OFF, historyPrint=ON) mdb.saveAs('flap')