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. Android:如何实现更换主题

    关键代码:setTheme(int ID); 注意点: 1.设置主题必须要在setContentView() 之前调用,所以需要写个Intent去重新开启Activity. 2.为了切换主题保证流畅性 ...

  2. python 自动认证登录

    import urllib import base64 import urllib2 def auto_login(urllink,username,password): authstr = 'Bas ...

  3. μCos-ii学习笔记2_任务管理

    二.任务管理 任务管理是ucos-ii操作系统的核心内容.这一章大致就以下流程来介绍和总结任务管理的相关知识. 要实现复杂任务管理,必然要定义众多数据来描述任务状态,为了精简,建立了许多不同的数据结构 ...

  4. Chapter 2 Open Book——3

    But when I walked into the cafeteria with Jessica — 但是当我和Jessica 一起走进自助餐厅的时候 trying to keep my eyes ...

  5. Java中的String[] args

    在每个java程序中都有一个方法,public static void main(String[] args)方法,这个参数看了好久没看懂,但是细细看来,还是挺简单的,所有的方法的参数都是一个道理,而 ...

  6. UI篇—UITableview

    一.基本介绍 在众多移动应⽤用中,能看到各式各样的表格数据 . 在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView,UITableView继承自UIScrollView,因此支 ...

  7. springsecurity源码查看网址

    http://www.boyunjian.com/javasrc/org.springframework.security/spring-security-web/3.1.3.RELEASE/_/or ...

  8. 关于Spring Security 3获取用户信息的问题

    标签: spring security 3标签获取用户信息 2013-01-05 10:40 5342人阅读 评论(0) 收藏 举报  分类: Spring(25) java(70) 前端(7)    ...

  9. document.createDocumentFragment 方法

    基本概念 document.createDocumentFragment 方法会创建一个 DocumentFragment 对象,该对象是一个存在于 DOM 树之外的 DOM 节点.它有一个非常有用的 ...

  10. 官方windows10升级工具

    https://www.microsoft.com/zh-cn/software-download/windows10