大家好,我是小鲸鱼,这是hypermesh二次开发的第三篇文章,前两篇文章如下:
一、
小鲸鱼的小鲸鱼,公 众号:CAE中学生hypermesh二次开发之“无用”小工具
二、
小鲸鱼的小鲸鱼,公 众号:CAE中学生Hypermesh二次开发之批量选择相同面
关于创建temp node点云数据的创建,如果你有很多个点的坐标,需要一次性创建临时节点,那下面这两种方法不妨一试:
方法一
①将点云数据文件后缀改成tcl或者txt,然后用nodepad++软件打开,如图
重点来了,按住ALT键,给下拉到底部,就会看到这块有个闪烁的光标,然后就输入*createnode在前面
输入一次就可以看到所有的行都会同时存在*createnode,然后把文本框所有的内容复 制到hm底下的代码输入行,就可以创建点云数据了,如果有读者不知道hm底下的代码输出行在哪里调出来,接着给下看:标题栏的View里面有个Command window打上勾,就看到hm底部会出来一个输入代码的窗口,直接把刚才文本中的内容复 制到代码窗口按回车即可
方法二
②读取CSV文件中的数据并创建点云
一般对于比较方便读取的格式为CSV,所以无论点云数据的格式是excel的格式还是文本格式都需要先更改为CSV,然后再进行操作
短短6行代码用来读取CSV文件并创建临时节点,接下来我就细说一下这几行代码分别操作是什么
set file [tk_getOpenFile]
弹出选择文件的窗口,把选取之后的文件的路径和名称存入file这个变量中
set filename [open $file "r"]
打开 file的文件路径,并read,也就是读取,如果要写入,那就将r变成w,读文件的时候会产生一串名称代码,将这串名称代码赋予给filename这个变量
set content [read $filename]
再通过这串名称代码来读取这个文件的所有内容并赋予给content,这块其实也可以写成set content [gets $filename],但是用gets的话,每次只能输出一行内容赋予给content这个变量,所以此处用read比较合适,直接读取文本的所有内容
foreach a $content {
*createnode $a
}
foreach这个函数就是对列表进行遍历操作,就比如列表中有abcde这5个,先把a拿出来进行操作,再把b拿出来进行操作,以此类推,直到把最后一个e操作完停止,其实这就相当于python中的for a in content:这样的操作,这段代码就是从content这个变量中拿出来一个数据并赋予a,然后用*createnode 创建节点,一直把content变量中的内容循环完停止