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. 超界文字滚动 (id和类型两种实现方式)

    //根据元素id <!DOCTYPE html><html lang="zh-CN"><head> <meta charset=" ...

  2. jsp之用户自定义标签

    创建一个类,引入外部jsp-api.jar包(在tomcat 下lib包里有),这个类继承SimpleTagSupport 重写doTag()方法. jspprojec包下的helloTag类: pu ...

  3. android log 学习

    一,Bug出现了, 需要“干掉”它 bug一听挺吓人的,但是只要你懂了,android里的bug是很好解决的,因为android里提供了LOG机制,具体的底层代码,以后在来分析,只要你会看bug, a ...

  4. 辨别 ShopEX Ecshop

    御剑可以识别ShopEX 或者 Ecshop 特征 ShopEX : 蓝色的icon js里有很多Cookie. <link rel="stylesheet" href=&q ...

  5. hdu_3966_Aragorn's Story(树链剖分裸题)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3966 题意:给你一棵树,然后给定点之间的路径权值修改,最后单点查询 题解:树链剖分裸题,这里我用树状数 ...

  6. org.hibernate.exception.JDBCConnectionException: could not execute query

    最近在做一个项目,测试的时候是没有问题的,但是放到服务器上以后,第二天就会出现下面的异常.重启Tomcat服务器后就正常了,但是下一天还是会出现同样的异常..... 我就查了一些资料最终把问题给解决了 ...

  7. C#输出日历

    用C#输出日历,此功能可用于Ajax方式列出计划日程相关的内容,由于是C#控制输出,可以方便加上自己需要的业务处理逻辑. 1.控制台输出: using System; namespace 控制台日历 ...

  8. MySQL 索引 总结

    1.索引的种类(六种) 普通索引,唯一索引,全文索引,单列索引,多列索引,空间索引 2.优缺点及注意事项 优点:有了索引,对于记录数量很多的表,可以提高查询速度. 缺点:索引是占用空间的,索引会影响u ...

  9. VC2010编译错误

    1. cannot convert parameter 1 from 'const char [43]' to 'LPCWSTR' 我是看了这个之后解决问题的~ http://blog.163.com ...

  10. POJ 1182 食物链 经典并查集+关系向量简单介绍

    题目: 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种. 有 ...