我用ABAQUS的二次开发三维建模,初学者,有好多问题,只把公式写上了,大神给点意见,谢谢,,,?

浏览:893 回答:8
#! /user/bin/python
#-*-coding: UTF-8-*-
from abaqusConstants import *  
from caeModules import *       
from abaqus import *
import sys
#################################################### 
#####本脚本用于在abaqus快速建立圆柱巨型网格##### 
####################################

from abaqus import * 
from abaqusConstants import * 
import part 
import assembly 
import sketch
#输入参数,高度h,长向网格数m,长向长度m1,长向分区m2,跨向网格数n,跨向长度n1,跨向分区n2,斜向分区k
#六边形边长为c,d,八边形长度分别为c,d,a,其中a与cd有关,用论文中的公式单独计算 
h=1
m=4
m1=12
m2=5
n=3
n1=9
n2=4
k=7
c=2
d=1
a=3
pi=3.1415926535898 

#这一步建立参考点,作为part,如果想在abaqus里建空间网格结构必须新建一个part再建空间线,
#abaqus只支持绘制平面草图 
p = mdb.models['Model-1'].Part(name='Part-1', dimensionality=THREE_D, type=DEFORMABLE_BODY) 
p.ReferencePoint(point=(0.0, 0.0, 0.0)) 
p = mdb.models['Model-1'].parts['Part-1'] 

import math 
import numpy as np

#绘制六角锥上节点,利用循环生成内部和长向上的六角锥,跨向两端为八边形 
#i为奇数
for i in range(1,2*n+2):
 for j in range(1,m+1):
	xx1(i,j)=c*cos(pi/2-atan(n1/2/m1))+(j-1)*m1
  yy1(i,j)=d/2+(i-1)*n1
	zz1(i,j)=-h
	xx2(i,j)=c*cos(pi/2-atan(n1/2/m1))+(j-1)*m1
	yy2(i,j)=(i-1)*n1-d/2
	zz2(i,j)=-h
	xx3(i,j)=(j-1)*m1
	yy3(i,j)=-(c*sin(pi/2-atan(n1/2/m1))+d/2)+n1*(i-1)
	zz3(i,j)=-h
	xx4(i,j)=-c*cos(pi/2-atan(n1/2/m1)+(j-1)*m1
	yy4(i,j)=(i-1)*n1-d/2
	zz4(i,j)=-h
	xx5(i,j)=-c*cos(pi/2-atan(n1/2/m1))+(j-1)*m1
	yy5(i,j)=d/2+(i-1)*n1
	zz5(i,j)=-h
	xx6(i,j)=(j-1)*m1
	yy6(i,j)=m1*c*sin(pi/2-atan(n1/2/m1))/n1+n1*(i-1)
	zz6(i,j)=-h
	i=i+2
#i为偶数
for i in range (2,2n+1):
 for j in range(1,m+1):
	x11(i,j)=c*cos(pi/2-atan(n1/2/m1))+j*m1-3*m1/2
	y11(i,j)=d/2+(i-1)*n1
	z11(i,j)=-h
	x22(i,j)=c*cos(pi/2-atan(n1/2/m1))+j*m1-3*m1/2
	y22(i,j)=(i-1)*n1-d/2
	z22(i,j)=-h
	x33(i,j)=-m1/2+(j-1)*m1
	y33(i,j)=c*cos(pi/2-atan(n1/2/m1))+d/2+n1*(i-1)
	z33(i,j)=-h
	x44(i,j)=-c*cos(pi/2-atan(n1/2/m1))+(j-3/2)*m1
	y44(i,j)=(i-1)*n1-d/2
	z44(i,j)=-h
	x55(i,j)=c*cos(pi/2-atan(n1/2/m1))+j*m1-3*m1/2
	y55(i,j)=d/2+(i-1)*n1
	z55(i,j)=-h
	x66(i,j)=-m1/2+(j-1)*m1
	y66(i,j)=d/2+(i-1)*n1+2*c*cos(pi/2-atan(n1/2/m1))+d/2
	z66(i,j)=-h
#八角锥的绘制(只存在长向的两端)
#左端 i为奇数
for i in range(2,2*n+1):
	x81(i,1)=-m1+a/2
	y81(i,1)=c*sin(pi/2-atan(n1/(2*m))+d/2+2*(i-2)*n1
	z81(i,1)=-h
	x82(i,1)=a/2+c*cos(pi/2-atan(n1/(2*m))-m1
	y82(i,1)=d/2+(i-2)*2*n1
	z82(i,1)=-h
	x83(i,1)=a/2+c*cos(pi/2-atan(n1/(2*m))-m1
	y83(i,1)=-d/2+(i-2)*2*n1
	z83(i,1)=-h
	x84(i,1)=-m1+a/2
	y84(i,1)=-c*sin(pi/2-atan(n1/(2*m))-d/2+2*(i-2)*n1
	z84(i,1)=-h
	x85(i,1)=-m1-a/2
	y85(i,1)=-c*sin(pi/2-atan(n1/(2*m))-d/2+2*(i-2)*n1
	z85(i,1)=-h
	x86(i,1)=-m1-*c*cos(pi/2-atan(n1/(2*m))-a/2
	y86(i,1)=a/2+c*cos(pi/2-atan(n1/(2*m))-m1
	z86(i,1)=-h
	x87(i,1)=-m1-*c*cos(pi/2-atan(n1/(2*m))-a/2
	y87(i,1)=d/2+(i-2)*2*n1
	z87(i,1)=-h
	x88(i,1)=-m1-a/2
	y88(i,1)=c*sin(pi/2-atan(n1/(2*m))+d/2+2*(i-2)*n1
	z88(i,1)=-h
#右端
	x81(i,m+1)=-m1+a/2+m1*m
	y81(i,m+1)=c*sin(pi/2-atan(n1/(2*m))+d/2+2*(i-2)*n1
	z81(i,m+1)=-h
	x82(i,m+1)=a/2+c*cos(pi/2-atan(n1/(2*m))+m1*(m-1)
	y82(i,m+1)=d/2+(i-2)*2*n1
	z82(i,m+1)=-h
	x83(i,m+1)=a/2+c*cos(pi/2-atan(n1/(2*m))+m1*(m-1)
	y83(i,m+1)=-d/2+(i-2)*2*n1
	z83(i,m+1)=-h
	x84(i,m+1)=-m1+a/2+m1*m
	y84(i,m+1)=-c*sin(pi/2-atan(n1/(2*m))-d/2+2*(i-2)*n1
	z84(i,m+1)=-h
	x85(i,m+1)=-a/2+(m-1)*m1
	y85(i,m+1)=-c*sin(pi/2-atan(n1/(2*m))-d/2+2*(i-2)*n1
	z85(i,m+1)=-h
	x86(i,m+1)=-a/2+(m-1)*m1-c*cos(pi/2-atan(n1/(2*m))
	y86(i,m+1)=a/2+c*cos(pi/2-atan(n1/(2*m))-m1
	z86(i,m+1)=-h
	x87(i,m+1)=-a/2+(m-1)*m1-c*cos(pi/2-atan(n1/(2*m))
	y87(i,m+1)=d/2+(i-2)*2*n1
	z87(i,m+1)=-h
	x88(i,m+1)=-a/2+m1*(m-1)
	y88(i,m+1)=c*sin(pi/2-atan(n1/(2*m))+d/2+2*(i-2)*n1
	z88(i,m+1)=-h
i=i+2
#连接六角锥,形成巨型网格结构 
	p = mdb.models['Model-1'].parts['Part-1'] 
	m=mdb.Model(name='Model')
	p=m.Part(name='Part')
	p.WirePolyLine(points=(((x1(i,j), y1(i,j), z1(i,j)), (x33(i+1,j+1)), y33(i+1,j+1), z33(i+1,j+1)),) mergeWire=OFF
	, meshable=ON)
	p.WirePolyLine(points=(((x1(i,j), y1(i,j), z1(i,j)), (x5(i,j+1), y5(i,j+1), z5(i,j+1)), )mergeWire=OF
	F, meshable=ON)
	p.WirePolyLine(points=(((x2(i,j), y2(i,j), z2(i,j)), (x4(i,j+1), y4(i,j+1), z4(i,j+1)),) mergeWire=OFF, 
	meshable=ON)
	p.WirePolyLine(points=(((x2(i,j), y2(i,j), z2(i,j)), (x66(i-1,j+1), y66(i-1,j+1), z66(i-1,j+1)), ), mergeWire=OFF, 
	meshable=ON)
	p.WirePolyLine(points=(((x3(i,j), y3(i,j), z3(i,j)), (x55(i-1,j+1), y55(i-1,j+1), z55(i-1,j+1)), ), mergeWire=OFF, 
	meshable=ON)
	p.WirePolyLine(points=(((x3(i,j), y3(i,j), z3(i,j)), (x11(i-1,j), y11(i-1,j), z11(i-1,j)), ), mergeWire=OFF, 
	meshable=ON)
	p.WirePolyLine(points=(((x4(i,j), y4(i,j), z4(i,j)), (x66(i-1,j), y66(i-1,j), z66(i-1,j)), ), mergeWire=OFF, 
	meshable=ON)
	p.WirePolyLine(points=(((x11(i,j), y11(i,j), z11(i,j), (x55(i,j+1), y11(i,j+1), z11(i,j+1)), ), mergeWire=OFF, 
	meshable=ON)
	p.WirePolyLine(points=(((x22(i,j), y22(i,j), z22(i,j), (x44(i,j+1), y44(i,j+1), z44(i,j+1)), ), mergeWire=OFF, 
	meshable=ON)
#连接六角锥和八八角锥
 for i in range(1,2n+2)
	p.WirePolyLine(points=(((x5(i,j), y5(i,j), z5(i,j), (x82(1,j), y82(1,j), z82(1,j)), ), mergeWire=OFF, 
	meshable=ON)
	p.WirePolyLine(points=(((x4(i,j), y4(i,j), z4(i,j), (x83(1,j), y83(1,j), z83(1,j)), ), mergeWire=OFF, 
	meshable=ON)
	p.WirePolyLine(points=(((x1(i,j), y1(i,j), z1(i,j), (x87(i,m+1), y83(i,m+1), z83(i,m+1)), ), mergeWire=OFF, 
	meshable=ON)
	p.WirePolyLine(points=(((x4(i,j), y4(i,j), z4(i,j), (x83(i,m+1), y83(i,m+1), z83(i,m+1)), ), mergeWire=OFF, 
	meshable=ON)
	p.WirePolyLine(points=(((x81(i,1), y81(i,1), z81(i,1), (x84(i+1,1), y84(i,1), z81(i,1)), ), mergeWire=OFF, 
	meshable=ON)
	p.WirePolyLine(points=(((x88(i,1), y88(i,1), z88(i,1), (x85(i+1,1), y85(i,1), z85(i,1)), ), mergeWire=OFF, 
	meshable=ON)
	p.WirePolyLine(points=(((x81(i,m+1), y81(i,m+1), z81(i,m+1), (x84(i+1,m+1), y84(i,m+1), z84(i,m+1)), ), mergeWire=OFF, 
	meshable=ON)
	p.WirePolyLine(points=(((x88(i,m+1), y88(i,m+1), z88(i,m+1), (x84(i+1,m+1), y84(i+1,m+1), z81(i+1,m+1)), ), mergeWire=OFF, 
	meshable=ON)
i=i+2

#建立视图 
	session.viewports['Viewport: 1'].setValues(displayedObject=p)

大神帮忙看看

邀请回答 我来回答

全部回答

(2)
默认 最新
有限元与近场动力学
楼主你这个是什么编写软件啊
2017年4月19日
评论 1 点赞
diaoerlangdang
你这个是直接写的还是通过录制宏啊?
2017年4月18日
评论 5 点赞

没解决?试试专家一对一服务

换一批