# -*- coding: mbcs -*- # Do not delete the following import lines from abaqus import * from abaqusConstants import * import __main__ import section import regionToolset import displayGroupMdbToolset as dgm import part import material import assembly import step import interaction import load import mesh import optimization import job import sketch import visualization import xyPlot import displayGroupOdbToolset as dgo import connectorBehavior # 画线 num_section = 50 line_length = [0,0.01046,0.02092,0.03138,0.04184,0.0523,0.06276,0.07322,0.08368,0.09414,0.1046,0.11506,0.12552,0.13598,0.14644,0.1569,0.16736,0.17782,0.18828,0.19874,0.2092,0.21966,0.23012,0.24058,0.25104,0.2615,0.27196,0.28242,0.29288,0.30334,0.3138,0.32426,0.33472,0.34518,0.35564,0.3661,0.37656,0.38702,0.39748,0.40794,0.4184,0.42886,0.43932,0.44978,0.46024,0.4707,0.48116,0.49162,0.50208,0.51254,0.523] s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=1.2) g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints s.setPrimaryObject(option=STANDALONE) s.Line(point1=(line_length[0], 0.0), point2=(line_length[1], 0.0)) s.HorizontalConstraint(entity=g[2], addUndoState=False) for i in range(num_section-1): s.Line(point1=(line_length[i+1], 0.0), point2=(line_length[i+2], 0.0)) s.HorizontalConstraint(entity=g[i+3], addUndoState=False) s.ParallelConstraint(entity1=g[i+2], entity2=g[i+3], addUndoState=False) p = mdb.models['Model-1'].Part(name='Part-1', dimensionality=TWO_D_PLANAR, type=DEFORMABLE_BODY) p = mdb.models['Model-1'].parts['Part-1'] p.BaseWire(sketch=s) s.unsetPrimaryObject() p = mdb.models['Model-1'].parts['Part-1'] del mdb.models['Model-1'].sketches['__profile__'] # 剖面 b = [0.020047,0.020303,0.02056,0.020816,0.021073,0.02133,0.021586,0.021843,0.022099,0.022356,0.022613,0.022869,0.023126,0.023382,0.023639,0.023895,0.024152,0.024408,0.024665,0.024922,0.025178,0.025435,0.025691,0.025948,0.026204,0.026461,0.026717,0.026974,0.027231,0.027487,0.027744,0.028,0.028257,0.028513,0.02877,0.029026,0.029283,0.029539,0.029796,0.030052,0.030309,0.030565,0.030822,0.031078,0.031335,0.031591,0.031848,0.032105,0.032361,0.032618] a = [0.14295,0.14486,0.14677,0.14868,0.15059,0.1525,0.15441,0.15632,0.15823,0.16014,0.16205,0.16396,0.16587,0.16778,0.16969,0.1716,0.17351,0.17542,0.17733,0.17924,0.18115,0.18306,0.18497,0.18688,0.18879,0.1907,0.19261,0.19452,0.19643,0.19834,0.20025,0.20216,0.20407,0.20598,0.20789,0.2098,0.21171,0.21362,0.21553,0.21744,0.21935,0.22126,0.22317,0.22508,0.22699,0.2289,0.23081,0.23272,0.23463,0.23654] for i in range(num_section): mdb.models['Model-1'].BoxProfile(name='Profile-'+str(i+1), b=b[i], a=a[i], uniformThickness=ON, t1=0.001) # 材料 mdb.models['Model-1'].Material(name='Material-1') mdb.models['Model-1'].materials['Material-1'].Elastic(table=((69000000000.0, 0.3), )) # 截面 for i in range(num_section): mdb.models['Model-1'].BeamSection(name='Section-'+str(i+1), integration=DURING_ANALYSIS, poissonRatio=0.0, profile='Profile-'+str(i+1), material='Material-1', temperatureVar=LINEAR, consistentMassMatrix=False) # 指派 for i in range(num_section): p = mdb.models['Model-1'].parts['Part-1'] e = p.edges edges = e.findAt(((line_length[i], 0, 0),)) region = p.Set(edges=edges, name='Set-'+str(i+1)) p = mdb.models['Model-1'].parts['Part-1'] p.SectionAssignment(region=region, sectionName='Section-'+str(i+1), offset=0.0, offsetType=MIDDLE_SURFACE, offsetField='', thicknessAssignment=FROM_SECTION) # 指派截面方向 p = mdb.models['Model-1'].parts['Part-1'] e = p.edges edges = e.getSequenceFromMask(mask=('[#ffffffff #3ffff ]', ), ) region=p.Set(edges=edges, name='Set-'+str(num_section+1)) p = mdb.models['Model-1'].parts['Part-1'] p.assignBeamSectionOrientation(region=region, method=N1_COSINES, n1=(0.0, 0.0, -1.0)) # 装配 a = mdb.models['Model-1'].rootAssembly a = mdb.models['Model-1'].rootAssembly a.DatumCsysByDefault(CARTESIAN) p = mdb.models['Model-1'].parts['Part-1'] a.Instance(name='Part-1-1', part=p, dependent=OFF) # 分析步 a = mdb.models['Model-1'].rootAssembly session.viewports['Viewport: 1'].setValues(displayedObject=a) session.viewports['Viewport: 1'].assemblyDisplay.setValues( adaptiveMeshConstraints=ON, optimizationTasks=OFF, geometricRestrictions=OFF, stopConditions=OFF) mdb.models['Model-1'].StaticStep(name='Step-1', previous='Initial') session.viewports['Viewport: 1'].assemblyDisplay.setValues(step='Step-1') # 边界条件 a = mdb.models['Model-1'].rootAssembly v1 = a.instances['Part-1-1'].vertices verts1 = v1.getSequenceFromMask(mask=('[#100000 ]', ), ) region = a.Set(vertices=verts1, name='Set-1') mdb.models['Model-1'].EncastreBC(name='BC-1', createStepName='Initial', region=region, localCsys=None) # 力 session.viewports['Viewport: 1'].assemblyDisplay.setValues(step='Step-1') load = [178.06,180.46,182.85,185.25,187.65,190.04,192.44,194.84,197.23,199.63,202.02,204.42,206.82,209.21,211.61,214,216.4,218.8,221.19,223.59,225.99,228.38,230.78,233.17,235.57,237.97,240.36,242.76,245.16,247.55,249.95,252.34,254.74,257.14,259.53,261.93,264.33,266.72,269.12,271.51,273.91,276.31,278.7,281.1,283.5,285.89,288.29,290.68,293.08,295.48] for i in range(num_section): a = mdb.models['Model-1'].rootAssembly e1 = a.instances['Part-1-1'].edges edges1 = e1.findAt(((line_length[i], 0, 0),)) region = a.Set(edges=edges1, name='Set-'+str(i+2)) mdb.models['Model-1'].LineLoad(name='Load-'+str(i+1), createStepName='Step-1', region=region, comp2=load[i]) # 网格 a = mdb.models['Model-1'].rootAssembly partInstances =(a.instances['Part-1-1'], ) a.seedPartInstance(regions=partInstances, size=0.0026, deviationFactor=0.1, minSizeFactor=0.1) a = mdb.models['Model-1'].rootAssembly partInstances =(a.instances['Part-1-1'], ) a.generateMesh(regions=partInstances) elemType1 = mesh.ElemType(elemCode=B23, elemLibrary=STANDARD) a = mdb.models['Model-1'].rootAssembly e1 = a.instances['Part-1-1'].edges edges1 = e1.getSequenceFromMask(mask=('[#fffff ]', ), ) pickedRegions =(edges1, ) a.setElementType(regions=pickedRegions, elemTypes=(elemType1, )) # 作业 session.viewports['Viewport: 1'].assemblyDisplay.setValues(mesh=OFF) session.viewports['Viewport: 1'].assemblyDisplay.meshOptions.setValues( meshTechnique=OFF) mdb.Job(name='Job-1', model='Model-1', description='', type=ANALYSIS, atTime=None, waitMinutes=0, waitHours=0, queue=None, memory=90, memoryUnits=PERCENTAGE, getMemoryFromAnalysis=True, explicitPrecision=SINGLE, nodalOutputPrecision=SINGLE, echoPrint=OFF, modelPrint=OFF, contactPrint=OFF, historyPrint=OFF, userSubroutine='', scratch='', resultsFormat=ODB, multiprocessingMode=DEFAULT, numCpus=1, numGPUs=0) mdb.jobs['Job-1'].writeInput(consistencyChecking=OFF)python

在Model-1中创建草图_profile_,并定义草图大小sheetSize;
mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=1.2)python
s = mdb.models[‘Model-1’].ConstrainedSketch(name=‘草图名称’, sheetSize=草图网格大小,gridSpacing=网格间隔(默认2%草图大小,transform=(坐标变换列表,4*4,默认草图平面为 xy )))
mdb.models[name].ConstrainedSketch(name,objectToCopy被复制的草图对象)
(geometry草图对象;vertices顶点;)可通过findAt(coordinates)方法查找过某个点的几何对象。
dimensions尺寸;constraints约束仓库。
features部件特征;datuns部件基准;cells体;faces面;edges边;vertices点;elements单元;nodes节点;referencePoints参考点;sets集合;surfaces表面;
fieldOutputRequests场变量输出
historyOutputRequests历史变量输出
interactionProperties相互作用属性
constraints约束
boundaryConditions边界条件
loads载荷
predefinedFields预定义场