1115900334
:这个模型5.0能用么?
(2016-04-24 17:30)
2.3.4.4 flac3d5.0版本和3.0版本模型网格信息差异
要把FLAC3D5.0建立的模型带组导入3.0版本使用,首先需要知道两个版本网格信息文档*.flac3d之间格式的差别,将5.0版本的*.flac3d修改成3.0版本的*.flac3d格式即可供3.0版本使用,否则导入的模型将没有分组信息,给后续开挖等步骤带来不便。
分别在5.0和3.0版本FLAC3D中运行如下命令:
Flac3d Code
1
2
3
4
5
6 new
gen zon bri size 3 3 3
group roof range z 2 3
group floor range z 0 1
plot zone
expgrid flac3d300modelgroup.flac3d
与前面flac3d3.0版本建立同样模型并导出网格信息,内容简要如下:
* FLAC3D grid produced by FLAC3D 5.00 Release 093
* 周四 四月 23 13:51:42 2015
* GRIDPOINTS
G 1 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00
G 2 1.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00
G 3 0.00000000000000e+00 1.00000000000000e+00 0.00000000000000e+00
......
* ZONES
Z B8 1 1 2 3 4 5 6 7 8
Z B8 2 2 9 5 7 10 8 11 12
Z B8 3 9 13 10 11 14 12 15 16
......
* GROUPS
ZGROUP 'floor' SLOT 1
1 2 3 4 5 6 7 8 9
ZGROUP 'roof' SLOT 1
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
25 26 27
可以看出flac3d3.0版本和5.0版本只有第一行注释行内容以及各组组名后内容不同,其余信息完全一样。需要注意的是,flac3d5.00可以直接读入flac3d3.00版本用expgrid 输出的带组的模型信息,但3.0版本直接读5.0版本expgrid 输出的带组的模型信息会忽略已经分好的组。基于此做法就是把相应的题头改为相同即可。把组名的单引号和后面的SLOT 1去掉,比如 'floor' SLOT 1改为floor即可,余同。FLAC3D5.0版本生成的模型信息文档做此改动完成后即可供3.0版本带组读入。
2.3.4.5 flac3d5.0版本建模供3.0版本使用的Python语言处理
根据以上原理,只需要替换的函数将之替换为符合要求的形式即可,具体代码如下:
Python Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 # -*- coding: cp936 -*-
"""
Created on Sun Dec 27 08:00:44 2015
@author: binglongzhu
"""
temp=input('flac3d5.0model.flac3d模型信息文档输出后改名为flac3d5.flac3d,然后把这个小软件和flac3d5.flac3d放在同目录文件夹下,双击这个小程序就可以得到结果,最后会在同目录下生成flac3d300.flac3d供flac3d3.0直接使用。下面输入1后回车开始转换:')
import os
os.chdir(os.getcwd()) # 跳到当前目录
if not os.path.exists('flac3d5.flac3d'): # 看一下这个文件是否存在
print('没有找到flac3d5.flac3d')
exit(-1)
else: #不存在就退出
os.rename('flac3d5.flac3d','flac3d5.txt')
lines = open('flac3d5.txt').readlines() #打开文件,读入每一行
fp = open('flac3d3.txt','w') #打开你要写得文件test2.txt
for s in lines:
# replace是替换,write是写入
fp.write( s.replace("'",'').replace('SLOT 1',''))
fp.close() # 关闭文件
os.rename('flac3d3.txt','flac3d300.flac3d')
os.rename('flac3d5.txt','flac3d5.flac3d')
print '已经在同目录下生成了flac3d5.flac3d供flac3d3.0使用'
但这段代码仅适用于电脑上安装有Python2.7的用户,若没有安装则无法使用。若把这段代码转换为可执行程序就可以使用了,下面介绍这一过程。
写好Python代码调试成功后另存为myscript.py。之后下载py2exe软件软件链接:
http://pan.baidu.com/s/1qWTeGwO 密码:kqhx(或在网上下载一个)并安装。
首先在D盘新建一个example的文件,里面存放着mysetup.py和自己的Python代码myscript.py文档。其中mysetup.py的内容为:
Python Code
1
2
3
4
5
# mysetup.py
from distutils.core import setup
import py2exe
setup(console=["myscript.py"])
myscript.py文档内容即为上述不能直接执行的转换代码。
菜单-运行-输入cmd-进入控制台命令窗口:
依次输入:
d: 回车(进入d盘)
cd "D:\example" 回车(进入d盘的example文件夹)
mysetup.py py2exe 回车(开始执行转换,最终在dist文件夹内生成myscript.exe)
图2.35 控制台输入命令执行py2exe
Fig.2.35 Input command in console to execute py2exe
执行成功结果:
图2.36 转换成功提示
Fig.2.36 Tips of successful conversion
软件作用:解决flac3d5.0版本模型节点信息供FLAC3D3.0版本建模时无法带组导入的问题。
使用方法:把flac3d500生成的模型节点信息export为flac3d5.flac3d后,将软件和flac3d5.flac3d放在“flac3d模型格式转换软件.exe”同目录下(即“flac3d5.0版本带组export供3.0版本import转换软件”文件夹里),运行“flac3d模型格式转换软件.exe”即可生成flac3d300.flac3d直接供flac3d3.0软件import生成模型。
注意:
1.如果想自己在flac3d 3.0版本里给已经命名的组重新命名的话请用:group new_name range group old_name[81]。
2.如果在flac3d3.0里发现有None组的情况,请运行:group my_name_none range group 即可,group后面不加老名称即默认把None重命名为my_name_none。
3.如果想观察到底哪些部分是None组,在进行第2步之后,可以输入: model null range group my_name_none 然后再输入: plot sur yellow null on即可。
4.需要注意的是,flac3d500可以直接读入flac3d300版本用expgrid 输出的带组的模型信息