首页 > 解决方案 > Abaqus python脚本中的连接器位移分配-输入文件中的空元素

问题描述

我一直在尝试设置一个脚本来自动分配连接器位移边界条件。当我运行脚本时,它在 GUI 中看起来一切正常(创建了电线,创建了 BC 并分配了正确的值),但是当我提交时,我收到以下错误:“类型为“CONN3D2”的元素 x 缺少元素连接并且输入文件中实际上缺少元素连接性。我通过使用导线起点和终点之间的中点来分配边,但由于某种原因,它没有将它们分配给元素。这是我的连接器分配功能:

def assignConnectors(self):
        p = self.m.parts[self.partName]
        a = self.m.rootAssembly
        a.Instance(name=self.instanceName, part=p, dependent=ON) 
        e = a.edges
        n = a.instances[self.instanceName].nodes
        #allelements = p.Set(name='allElements', elements=self.listObjElem)
        elset = a.instances[self.instanceName].elements
        elsetAssembly = a.Set('assemblyElements', elements=elset)
      
        a.regenerate() 
        
        v1 = a.instances[self.instanceName].vertices
            
        rows = len(self.listConstraints)
        columns = len(self.listConstraints[0])
        total = rows*columns
     
        listObjNode=[];                        
        self.listObjElem=[];                   
        self.listObjConnector=[];
        for j,pairElem in enumerate(self.listElem):
            
            p1 = a.getCoordinates(self.listNodes[pairElem[0]-1])
            p2 = a.getCoordinates(self.listNodes[pairElem[1]-1])
            #print(p1,p2)
            wires = a.WirePolyLine(points=((p1,p2),), mergeType=IMPRINT, meshable=OFF)
            a.regenerate()
            


            pt1 = a.getCoordinates(self.listNodes[pairElem[0]-1])
            pt2 = a.getCoordinates(self.listNodes[pairElem[1]-1])
            print(pt1,pt2)
            pt11 = np.asarray(pt1[0])
            pt12 = np.asarray(pt1[1])
            pt13 = np.asarray(pt1[2])
            pt21 = np.asarray(pt2[0])
            pt22 = np.asarray(pt2[1])
            pt23 = np.asarray(pt2[2])
            new_p1 = (pt11+pt21)/2
            new_p2 = (pt12+pt22)/2
            new_p3 = (pt13+pt23)/2
            new_p = tuple([new_p1,new_p2,new_p3])
            print(new_p)
            
            a = self.m.rootAssembly
            e = a.edges
            edges1 = e.findAt((new_p, ))
            print(edges1)
            
            region = a.Set(edges = edges1, name='Set'+str(j))
            
            self.m.ConnectorSection(name='ConnSect-1'+str(j),translationalType=AXIAL) 
  
            csa = a.SectionAssignment(sectionName='ConnSect-1'+str(j), region=region)
            
            self.m.ConnDisplacementBC(name='BC-'+str(j+total), createStepName=self.stepName, fastenerSetName='Set'+str(j), u1=float(self.listElongations[j]), u2=UNSET, u3=UNSET, ur1=UNSET, ur2=UNSET, ur3=UNSET, amplitude=UNSET, fixed=OFF, distributionType=UNIFORM) 
            a.regenerate()

我是否以某种方式错误地分配了元素?非常感谢您的帮助!

标签: pythonconnectorabaqus

解决方案


推荐阅读