20190714getPartCircleOrBallInfos.zip

  • PUDN用户
    了解作者
  • Python
    开发工具
  • 1KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 0
    下载次数
  • 2019-10-27 17:33
    上传日期
提取随机圆形分布的形心点,为划分泰森多边形做准备。
20190714getPartCircleOrBallInfos.zip
  • 20190714getPartCircleOrBallInfos.py
    4.7KB
内容介绍
# -*-coding:GBK-*- # Author : POLARIS_CN # Date : 2019-07-14 # Function: 读取部件信息,输出二维圆面或三维球体的中心坐标位置 # 运行方式: # 1、菜单栏File->Run Script... #================================================================================ from abaqus import * from abaqusConstants import * from caeModules import * from driverUtils import executeOnCaeStartup import displayGroupOdbToolset as dgo import customKernel #================================================================================ modelName = "Model-1" #模型名称 partName = "Part-1-GeoType" #部件名称 limitR = 0.5 #剔除小尺寸骨料 #====================================定义函数==================================== def get2DCircleInfos(p,limitR): #提取二维模型中圆面信息 xmin,ymin,zmin = p.faces.getBoundingBox()['low'] #整个区域的最小点坐标 xmax,ymax,zmax = p.faces.getBoundingBox()['high'] #整个区域的最大点坐标 fout=open("%s.voro"%(p.name),"w") #输出文件 #写入头文件,为二维,且定义边界 fout.write("""partType,2D_Plane xmax,%f ymax,%f zmax,%f isOptimize,0 optimizeTimes,1 isDel,0 delEdgeLen,0.200000 isScale,0 scaleType,Equal Ratio scaleData,0.900000 isSmooth,0 VoroDatas"""%((xmax-xmin),(ymax-ymin),(zmax-zmin))) pFaces = p.faces #部件的所有面 limitArea = pi*limitR**2/2.0 #小于这个面积的区域不做圆考虑(剔除部分存在相交的情况) for f in pFaces: #遍历部件的所有面 if len(f.getVertices())%2==1: #当面的边节点数量为奇数时,表示为圆形骨料 faceArea = f.getSize(False) #获得面的面积 if faceArea<limitArea:continue #剔除小尺寸情况 fxmin,fymin,fzmin = pFaces[f.index:(f.index+1)].getBoundingBox()['low'] #面的最小点 fxmax,fymax,fzmax = pFaces[f.index:(f.index+1)].getBoundingBox()['high'] #面的最大点 x = (fxmax+fxmin)/2.0-xmin #最小最大中点作为圆心(近似处理) y = (fymax+fymin)/2.0-ymin fout.write("\n%f,%f"%(x,y)) #输出圆心 #创建辅助点 #p.DatumPointByCoordinate(coords=((fxmax+fxmin)/2.0, (fymax+fymin)/2.0, 0)) fout.close() #关闭文件 print "File has been saved: %s.voro"%(p.name) #提示信息 def get3DBallInfos(p,limitR): xmin,ymin,zmin = p.faces.getBoundingBox()['low'] #整个区域的最小点坐标 xmax,ymax,zmax = p.faces.getBoundingBox()['high'] #整个区域的最大点坐标 fout=open("%s.voro"%(p.name),"w") #输出文件 #写入头文件,为三维,且定义边界 fout.write("""partType,3D_Solid xmax,%f ymax,%f zmax,%f isOptimize,0 optimizeTimes,1 isDel,0 delEdgeLen,0.200000 isScale,0 scaleType,Equal Ratio scaleData,0.900000 isSmooth,0 VoroDatas"""%((xmax-xmin),(ymax-ymin),(zmax-zmin))) pCells = p.cells #所有的cell limitVolume = 4/3.0*pi*limitR**3/2.0 #限制查询球体积大小 for c in pCells: #遍历所有的cell区域 if len(c.getEdges())<12: #边数量小于12时,则可能是球 cVolume = c.getSize(False) #获得cell的体积 if cVolume<limitVolume:continue #剔除小尺寸情况 faces = p.faces[0:0] #用于记录cell的所有面的array for fId in c.getFaces(): #遍历cell的面 faces += p.faces[fId:(fId+1)] #累加cell的所有面对象 cxmin,cymin,czmin = faces.getBoundingBox()['low'] #面的最小点 cxmax,cymax,czmax = faces.getBoundingBox()['high'] #面的最大点 x = (cxmax+cxmin)/2.0-xmin #最小最大中点作为圆心(近似处理) y = (cymax+cymin)/2.0-ymin z = (czmax+czmin)/2.0-ymin fout.write("\n%f,%f,%f"%(x,y,z)) #创建辅助点 #p.DatumPointByCoordinate(coords=((cxmax+cxmin)/2.0, (cymax+cymin)/2.0, (czmax+czmin)/2.0)) fout.close() #关闭文件 print "File has been saved: %s.voro"%(p.name) #提示信息 #运行 p = mdb.models[modelName].parts[partName] #获得部件对象 if p.space == TWO_D_PLANAR: #当部件为二维模型时 get2DCircleInfos(p,limitR) elif p.space == THREE_D: #当部件为三维模型时 get3DBallInfos(p,limitR) print "==================Finish=================="
评论
    相关推荐
    • leiyuan.rar
      一种类圆随机Hough变换及其在油茶果实遮挡识别中的应用 更多论文www.bysjaid.com
    • xuanyifeiji.zip
      旋翼飞行机器人视觉定位方法及系统_李力旋翼飞行机器人视觉定位方法及系统_李力
    • 软件开发计划书 .asp.rar
      一个完整的项目开发文档,可以看看.没有坏处.
    • wavelet.rar
      关于小波去噪的几十篇经典论文,对利用小波去噪的朋友很有帮助的
    • bldc.matlab.rar
      在分析无刷直流电机(BLDC)数学模型的基础上,提出了一种无刷直流电机控制系统仿 真建模的新方法。在Matlab/Simulink环境下,把独立的功能模块和S函数相结合,构建了无刷直流 电机系统的仿真模型。系统采用双闭环控制:速度环采用离散PID控制,根据滞环电流跟踪型PWM 逆变器原理实现电流控制。仿真和试验结果与理论分析一致,验证了该方法的合理性和有效性。 此方法也适用于验证其他控制算法的合理性,为实际电机控制系统的设计和调试提供了新的思路。
    • JSP课件.rar
      JSP课件 主要是个人在学习JSP时,总结一些重要的源码,大家有可以做为参考资料阅读,谢谢!
    • i386.rar
      i386 windowxp系统
    • DICOM标准.rar
      想深入研究dicom的一定要看这个标准,已经翻译成中文,不是我翻译的,有的翻译的不是很好,但是作为英文对照看,可以学习的很快的。
    • KPCA(classicc).rar
      这是目前最经典的matlab实现的kpca代码,代码量已经很精简,但相信还有高手能做出最简化的代码
    • isoline.rar
      画等值线程序源代码,用矩形网格法。用于地质、水文、石油、气象等方面,绘制等高线、等值线。