许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  Abaqus读取OBJ/INP文件内部点坐标并统计

Abaqus读取OBJ/INP文件内部点坐标并统计

阅读数 5
点赞 0
article_banner

任务描述:对一个三维的带网格的模型,生成一个二维平面的 图像描述  ,其中每个空格内部显示这个坐标下在z方向具有多少网格,类似于三维模型的深度图

   方法:有两个方法

   1.从网格文件OBJ内部读取点坐标,统计(x,y)的个数

   2.从Inp文件内部读取点坐标,统计(x,y)的个数

   在 实验 过程中,发现方法1 的obj文件内部的点的信息比较杂,可能包含除了网格以外的其他的点的信息,所以放弃了这种方法。这里主要介绍方法2

inp文件读取

writenode = []
#writenode 点集
write_flag = False
input = open("new_1.inp","r")
#读取inp文件
astring = input.readlines()
#这里这种读入方式的好处是astring是list类型,其余方式可能是str类型
for i,line in enumerate(astring):
    if line =="*Node\n":
    #找到inp文件内部开始记录点信息的地方
        write_flag = True
    #写入文件标志位开始
        continue
    #跳出当前循环,执行下一次循环,这样*Node就不会写入文件内部
        print(i)
    if line =="*Element, type=C3D8R\n":
        break
    #点描述信息结束后是描述单元信息,正好这里截止,挑出for循环
    if write_flag ==True:
       writenode.append(line.replace(",",""))

点集写出

接下来可以将我们的点 信息 输出另一个文件:

f=open('point.txt','w') 
for i in writenode:
    f.write(i)
f.close()

重新读入生成numpy array

a = np.loadtxt('zz.txt') 
a = np.around(a)
#四舍五入,可能出现一些不准的点,防止出问题 

删除无关信息

c= np.delete(a,0,axis=1)
#删除第一列:各个点的标号[1,2,3,4,5...]
c= np.delete(c,2,axis=1)
#删除Z坐标,只需要统计xy坐标

统计 xy 相同的点的个数

e = []
for (x,y) in (c):
#这里如果直接统计列表是会报错的,无法生成hash表所以要先生成这样的数组的类型,后面才好统计
    e.append((x,y))

然后做一个 字典 ,记录各个点的个数

h = {}
for i in e:
    h[i] = e.count(i)
print()

这样就可以看到各个点的坐标的个数了

{(-139.0, -18.0): 23,
 (199.0, -96.0): 23,
 (-199.0, -60.0): 23,
 (-182.0, -150.0): 23,
 (251.0, -60.0): 23,
 (-243.0, -102.0): 23,
 (208.0, 66.0): 23,...
 
 
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空