read_ifc代码如下:

Write_ifc代码分析如下:

(1)将数字转换为字符串的函数。

function ntoc,a
return,string(a,format='(g0)')
end

(2)程序的开始和结尾,分号;代表注释

pro 程序名

end

pro write_ifc
;......
end

FILE='D:\1.3D';要读写的3D文件路径

格式:openr 变量1,'文件名'[,/delete][,/error=变量2][,/get_lun]

功能:按照变量指定的逻辑设备号,以只读方式打开已经存在的文件

说明:1.变量1,指定的逻辑设备设备号

   2.文件名:要打开的文件的名字,可以包含盘符和路径

    3.[,/delete]:在使用Close命令关闭文件时,同时删除该文件

    4.Ereor=变量2:在打开文件出现错误时,将错误信息存入变量2

    5./get_lun :申请一个100-128中当前还没有被使用的合法逻辑设备号 。

openr,fp,file,/get_lun;申请的逻辑设备号放在fp中,以只读方式打开文件file

result=lonarr(n):返回指定长度为n的有符号长整型数组

num=lonarr(3);返回长度为3的有符号长整型数组

格式:readf,设备号变量,变量1,...变量n[,/format='(格式描述)']

功能:按照格式描述的格式从设备号变量所对应的文本文件中读取多种类型的数据,并以此读取到变量1,,,,,,变量n中

说明:设备号变量是打开文件时候付给该文件的逻辑设备号。

readf,fp,num;从sp标示的文件中读取3个数字存入 num中

r=lonarr(4);返回长度为4的有符号长整型数组

r[0]=10,表示点数,r[1]=5,表示面数,r[2]=0,r[3]=64,表示组成面表的数字。

readf,fp,r

str=''

readf,fp,str;读一个字符串

nip=r[3]
ip=lonarr(nip)
    readf,fp,ip        ;面表

function ntoc,a
return,string(a,format='(g0)')
end
pro write_ifc
;file='E:\几个工区\昆明\20130402打通格式\ifc\1.3D'
FILE='D:\IDL-毛\工作\7.3-下午\1.3D'
openr,fp,file,/get_lun
num=lonarr()
readf,fp,num
r=lonarr();
readf,fp,r
str=''
readf,fp,str
nip=r[];nip=
ip=lonarr(nip);64大小的数组
readf,fp,ip ;面表
np=r[];np=;np三维图形中点数
p=dblarr(,np);双精度浮点型数组
readf,fp,p ;三维图形中10个点的坐标表
free_lun,fp
;;============ newFile='D:\2.ifc'
openw,fp,newFile,/get_lun
printf,fp,'ISO-10303-21;'
printf,fp,'HEADER;'
printf,fp,"FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1');"
printf,fp,"FILE_NAME($,'2013-06-28T10:41:04',(''),(''),'Autodesk Revit 2013','20121003_2115(x64)','');"
printf,fp,"FILE_SCHEMA(('IFC2X3'));"
printf,fp,"ENDSEC;"
printf,fp,"DATA;"
printf,fp,"#1= IFCORGANIZATION($,'Autodesk Revit 2013',$,$,$);"
printf,fp,"#2= IFCAPPLICATION(#1,'2013','Autodesk Revit 2013','Revit');"
printf,fp,"#3= IFCCARTESIANPOINT((0.,0.,0.));"
printf,fp,"#5= IFCCARTESIANPOINT((0.,0.));"
printf,fp,"#7= IFCDIRECTION((1.,0.,0.));"
printf,fp,"#9= IFCDIRECTION((-1.,0.,0.));"
printf,fp,"#11= IFCDIRECTION((0.,1.,0.));"
printf,fp,"#13= IFCDIRECTION((0.,-1.,0.));"
printf,fp,"#15= IFCDIRECTION((0.,0.,1.));"
printf,fp,"#17= IFCDIRECTION((0.,0.,-1.));"
printf,fp,"#19= IFCDIRECTION((1.,0.));"
printf,fp,"#21= IFCDIRECTION((-1.,0.));"
printf,fp,"#23= IFCDIRECTION((0.,1.));"
printf,fp,"#25= IFCDIRECTION((0.,-1.));"
printf,fp,"#27= IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.);"
printf,fp,"#28= IFCSIUNIT(*,.AREAUNIT.,.MILLI.,.SQUARE_METRE.);"
printf,fp,"#29= IFCSIUNIT(*,.VOLUMEUNIT.,.MILLI.,.CUBIC_METRE.);"
printf,fp,"#30= IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.);"
printf,fp,"#31= IFCDIMENSIONALEXPONENTS(0,0,0,0,0,0,0);"
printf,fp,"#32= IFCMEASUREWITHUNIT(IFCRATIOMEASURE(0.0174532925199433),#30);"
printf,fp,"#33= IFCCONVERSIONBASEDUNIT(#31,.PLANEANGLEUNIT.,'DEGREE',#32);"
printf,fp,"#34= IFCSIUNIT(*,.TIMEUNIT.,$,.SECOND.);"
printf,fp,"#35= IFCUNITASSIGNMENT((#27,#28,#29,#33,#34));"
printf,fp,"#37= IFCAXIS2PLACEMENT3D(#3,$,$);"
bh=;逻辑编号#,先存起来
bhs=lonarr(np);np点数
for k=,np- do begin;k由np控制循环10次,np是点数,(x,y,z)
bh=bh+
printf,fp,'#'+ntoc(bh)+'= IFCCARTESIANPOINT(('+$
ntoc(p[,k])+','+ntoc(p[,k])+','+ntoc(p[,k])+'));'
bhs[k]=bh;bhs[]=#...
endfor
nip=nip/;几个面,nip=
ip=reform(ip,,nip)
facebh=lonarr(nip)
for i=,nip- do begin ;ip[,nip]即ip=[,]
dh=ip[:,i]
a=bhs[dh];bhs[,,]当i=0时候。a[]=bhs[]=,当i=,
bh=bh+;bh=
printf,fp,'#'+ntoc(bh)+'= IFCPOLYLOOP((#'+$
ntoc(a[])+',#'+ntoc(a[])+',#'+ntoc(a[])+'));'
bh=bh+
printf,fp,'#'+ntoc(bh)+'= IFCFACEOUTERBOUND(#'+ntoc(bh-)+',.T.);'
bh=bh+
printf,fp,'#'+ntoc(bh)+'= IFCFACE((#'+ntoc(bh-)+'));'
facebh[i]=bh
endfor
bh=bh+
str='#'+ntoc(bh)+'= IFCCLOSEDSHELL(('
str=str+strjoin('#'+ntoc(facebh),',')
str=str+'));'
printf,fp,str
;#= IFCPOLYLOOP((#,#,#));
;#= IFCFACEOUTERBOUND(#,.T.);
;#= IFCFACE((#));
;#= IFCCLOSEDSHELL((#,#,#,#,#,#
;#= IFCFACETEDBREP(#);
free_lun,fp
end

IDL 的读写的更多相关文章

  1. 关于文件读写IDL

    1.打开文件 IDL从磁盘上的文件读写数据,必须首先把一盒逻辑设备号连接到一个指定的文件,然后进行文件操作,如打开,关闭和读取等.IDL中的逻辑设备号的范围是-2——128,其中1-99是用户可以任意 ...

  2. 【180】IDL 读写 HDF 文件

    HDF(Hierarchical Data Formats)数据格式由 NCSA 开发.HDF 提供了大量的数据模式,包括多维数组.表格.图像.注解和调色板.在下面的章节中,将描述 HDF 科学数据系 ...

  3. 【179】IDL 读写 NetCDF 文件

    NetCDF(network Common Data Form)由位于科罗拉多州波尔市的 Unidata 程序中心开发,主要应用于大气科学的研究.NetCDF 的数据模式具有简单性和灵活性的特点.Ne ...

  4. 2014年ENVI/IDL遥感应用与开发培训班-11月重庆站 開始报名了

    主办单位: 中国遥感应用协会 Esri中国信息技术有限公司 内容简单介绍: 依据中国遥感应用协会栾恩杰理事长推动国内遥感技术和应用的指示精神,2014年中国遥感应用协会组织培训交流部与Esri中国信息 ...

  5. 【224】◀▶ IDL NetCDF 文件操作说明

    参考:I/O - NetCDF Routines —— NetCDF 操作函数 01   NCDF_OPEN 打开一个 NetCDF 文件. 02   NCDF_CLOSE 关闭一个 NetCDF 文 ...

  6. 【223】◀▶ IDL HDF 文件操作说明

    参考:I/O - HDF Routines —— HDF 操作函数 01   HDF_SD_START 打开一个 SDS 模式的 HDF 文件. 02   HDF_SD_END 关闭一个 SDS 模式 ...

  7. Hadoop 中利用 mapreduce 读写 mysql 数据

    Hadoop 中利用 mapreduce 读写 mysql 数据   有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...

  8. 【造轮子】打造一个简单的万能Excel读写工具

    大家工作或者平时是不是经常遇到要读写一些简单格式的Excel? shit!~很蛋疼,因为之前吹牛,就搞了个这东西,还算是挺实用,和大家分享下. 厌烦了每次搞简单类型的Excel读写?不怕~来,喜欢流式 ...

  9. ArcGIS 10.0紧凑型切片读写方法

    首先介绍一下ArcGIS10.0的缓存机制: 切片方案 切片方案包括缓存的比例级别.切片尺寸和切片原点.这些属性定义缓存边界的存在位置,在某些客户端中叠加缓存时匹配这些属性十分重要.图像格式和抗锯齿等 ...

随机推荐

  1. JQuery 多选按钮checkbox

    JQuery 多选按钮checkbox 在需要全选和选择部分的时候我们就需要多选在这里主要介绍了具体的实现 JQuery $(function () { //全选或全不选 $("#allbo ...

  2. linux中iptables配置文件及命令详解详解

    iptables配置文件 直接改iptables配置就可以了:vim /etc/sysconfig/iptables. 1.关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放. 下 ...

  3. 样式的操作-不同浏览器加载不同的css文件

    ———————————————————— <script type="text/javascript">            //body加载事件监听函数       ...

  4. git 忽略已跟踪的文件

    对于未跟踪的文件,可以编辑.gitignore文件进行忽略. 对于已跟踪的文件,编辑.gitignore文件不会起作用,它只针对未被跟踪的文件,也就是你先设置规则,然后添加的新文件符合这些规则的就会被 ...

  5. 素数槽csuoj

    超时代码: #include <iostream> using namespace std;//写一个函数判断是否是素数bool isPrime(int num){int i=2;//co ...

  6. 妙用transform

    往前移动 transform.Translate transform.Translate( transform.up* speed*Time.deltaTime , Space.World); 移动t ...

  7. 读苹果开发文档时遇到瓶颈,转而花2天看了Objc基本语法

    根据这篇博客中列出的文章开始看Objc基本语法: http://blog.hellolucky.info/articles/ios-beginner-ios-development/ 看完以后,明白多 ...

  8. Eclipse报错 due to restriction on required library C:/Java/jdk1.7.51/jre/lib/rt.jar 解决方案

    Eclipse报错 due to restriction on required library C:/Java/jdk1.6.0_10/jre/lib/rt.jar 解决方案 Eclipse 编译时 ...

  9. Cowrie蜜罐部署教程【转载】

    0.蜜罐分类: 低交互:模拟服务和漏洞以便收集信息和恶意软件,但是攻击者无法和该系统进行交互: 中等交互:在一个特有的控制环境中模拟一个生产服务,允许攻击者的部分交互: 高交互:攻击者可以几乎自由的访 ...

  10. uCOS-II的信号量及使用

    uCOS-II的信号量及使用 信号量的定义: OS_EVENT* Key1_SEM; OS_EVENT* Key2_SEM; OS_EVENT* Key3_SEM; 信号量的创建: Key1_SEM= ...