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. CodeForces 754C Vladik and chat (DP+暴力)

    题意:给定n个人的m个对话,问能不能找一个方式使得满足,上下楼层人名不同,并且自己不提及自己. 析:首先预处理每一层能有多少个user可选,dp[i][j] 表示第 i 层是不是可以选第 j 个use ...

  2. 《剑指Offer》算法题——二维数组查找

    题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. class Solutio ...

  3. thinkphp 实现微信公众号开发(一)

    打算用php做一个微信公众号管理平台.用thinkphp框架 教程上面是是应用下面会自动生成Lib文件夹.但是我的3.2.3自动生成目录不一样 我修改了我项目文件夹下面的IndexController ...

  4. hdu_5044_Tree(树链剖分)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5044 题意:给一棵树,在点和边上操作 题解:树链剖分,剖完后用树状数组维护即可,因为只有加减操作,连树 ...

  5. Storm官方文档翻译之创建Storm项目

    本文将讲述如何在开发环境创建一个Storm项目,下面是步骤: 1.将Storm的相关jar包添加到classpath中: 2.如果使用多语言开发,也要将多语言目录添加到classpath; 点击sto ...

  6. Centos7下安装pip

    Linux 通过 pip 安装使用 Shadowsocks - CentOS 7 (06) Pip是安装Python包的工具,提供了安装.列举已安装包.升级以及卸载包的功能.Pip 是对easy_in ...

  7. SpringSecurity自定义过滤器

    applicationContext-security.xml: <beans:beans xmlns="http://www.springframework.org/schema/s ...

  8. 个人linux简单笔记,随时更新

    vim显示行数 :set nu 查找文件 find /home -name config.txt 重命名文件或者文件夹 mv a b centos中phpize的安装 yum install php- ...

  9. Linux系统的时区和时间调整

     linux调整系统时区: 1)tzselect命令 找到相应的时区文件/usr/share/zoneinfo/Asia/Shanghai,用这个文件替换当前的/etc/localtime文件. 或者 ...

  10. PCI源码学习笔记

    这个是PCI的关键结构体. static const struct file_operations proc_bus_pci_operations = { .owner = THIS_MODULE, ...