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. applicationContext.xml 配置(扫描)

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  2. BITMAP图片压缩算法三则--bilinear、nearest、cubic

    原文:http://blog.chinaunix.net/uid-253932-id-3037805.html 工作需要,要弄截图且缩小.截图倒是好说,WIN API可以搞定,但是缩小且尽量不失真,这 ...

  3. getReadableDatabase 和 getWritableDatabase的区别

    (1)getWritableDatabase()方法以读写方式打开数据库.一旦数据库的磁盘空间满了,数据库就只能读而不能写,此时用getWritableDatabase()打开数据库就会出错. (2) ...

  4. js css优化-- 合并和压缩

    在项目框架中,首先要引用很多css和js文件,80%的用户响应时间都是浪费在前端.而这些时间主要又是因为下载图片.样式表.JavaScript脚本.flash等文件造成的.减少这些资源文件的Reque ...

  5. [Java]知乎下巴第0集:让我们一起来做一个知乎爬虫吧哦耶【转】

    文章来源:http://jp.51studyit.com/article/details/16203.htm 作者:  汪海洋 身边的小伙伴们很多都喜欢刷知乎,当然我也不例外, 但是手机刷太消耗流量, ...

  6. jsp 页面取值

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  7. CentOS6.6 搭建Zabbix_3.0

    公司有下发内网监控服务器的需求 使用zabbix监控 所以这篇文章是讲述的zabbix的搭建 其实网上很多地方都有 可以参考 环境安装 系统环境: # cat /etc/redhat-release ...

  8. CodeForces 709B Checkpoints 模拟

    题目大意:给出n个点的坐标,和你当前的坐标,求走过n-1个点的最短路程. 题目思路:走过n-1个点,为了使路程更短,那么不走的点只可能第一个点或最后一个点.模拟就行了,比较恶心. #include&l ...

  9. stl function扩展(一)

    #ifndef _FUNCTION_LIB_H_ #define _FUNCTION_LIB_H_ #include <functional> namespace function_lib ...

  10. 事务(JDBC、Hibernate、Spring)

    如果不用spring管理事务,我们自己写代码来操作事务.那么这个代码怎么写要看底层怎么访问数据库了. 当采用原生JDBC访问数据库时,操作事务需要使用java.sql.Connection的API.开 ...