版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于dxf文件利用vb编程实现对图形文件内线段相交的检查【摘要】:本文在对autocad中dxf文件进行深入研究的基础上, 实现了脱离autocad环境通过对dxf文件进行读取,并条件提取相关内容, 通过vb编程实现对图形数据线段的相交检查。【关键词】:dxf文件,vb ,向量,跨立【abstract 】this paper in autocad dxf file based on a thorough investigation, realize the autocad dxf through to the environment from the documents are read, a
2、nd extraction conditions related content, through the vb programming realize to the graphics data 1ine fellowship inspection.【key words 】:dxf f订e, vb, vector, cross made屮图分类号:tu74文献标识码:a文章编号:0、前言autocad平台的数字测图软件,因其简单易用,界面开放友好,而被广范应用。实际工作中,由于工作习惯和疏忽而导致某些线段没有完全捕 捉到位,而存在或多或少的相交问题。这种问题在数据入库时会造成拓扑 结构不严谨,
3、数据冗余过大。本文针对这种情况,通过对dxf文件进行深 入研究,结合vb编程,实现了对图形数据内所冇相交点的检查。1、dxf文件结构dxf格式是autocad图形文件中包含的所有信息的一种带标记数据的 表示方式。带标记数据是指文件中的每个数据元素前面都带有一个称为组 码的整数。组码的值表明了随后的数据元素的类型。还指出了数据元素对 于给定对象(或记录)类型的含义。实际上,图形文件中所冇用户指定的 信息都可以用dxf格式表示。完整的dxf文件山六个段和结朿标志组成,每段都是以一个其后跟随 着字符串“section”的组码“0”开始,接着是组码“2”和表示段名称 的字符串(例如“header”)。
4、每个段内容都是由元素的组码和组值组成, 其后跟着字符串“endsec”的组码“0”表示该段结束。文件结束标志用 组码“0”和字符串“eof”。完整的dxf文件结构详见图1图1 dxf文件数据结构图“header”段:包含图形的基木信息,它由许多autocad系统变量组 成;“classes”段:包含有关应用程序定义类的信息;“tables”段:包含九个符号表的定义(appid-应用程序标识表; bl()ck_rec()rd-块引用表;dimstyle-标注样式表;layer-图层表;ltype-线型表;style-文本样式表;ucs-用户坐标系表;view-视图表;vp0rt- 视口配置表);
5、“blocks”段:包括块定义和组成图形中每个块引用的图形图元;"entities”段:包含图形屮的图形对象(图元),包括块引用(插 入图元)。“objects”段:包含图形中非图形对象,所有那些非符号记录的、 符号表的非图元的对象都存储在此段中。在“objects”段中的条目样例 是包含多线和组的字典。2、图元结构在dxf文件中,图元可以出现在“blocks”段和“entities”段中, 两个段中的图元用法一致。值得注意的是某些定义的图元组码始终出现, 而其他的组码仅在它的值与缺省值不同时才出现。以下列出lwpolyline (多段线)、line (直线)的图元结构。2. 1 l
6、wpolyline (多段线)图元结构图元字段说明lwpolyline app:图元名5句柄4a7句柄值330所冇者词典的软指针id/句柄acdbenti ty 类8图层0层名 6线型continuous 线型名acdbpolyline子类标记90顶点数5值70闭合,1二闭合;128=多段线生成128值43宽度0.0值10多段线第1顶点x坐标125.615734460 值20多段线第1顶点y坐标27.5486692667 值 10多段线第n顶点x坐标665.9800429696 值20多段线第n顶点y坐标172.858233892 值2. 1 line (直线)图元结构图元字段说明line a
7、pp:图元名5句柄 4a8句柄值330所有者词典的软指针id/句柄acdbentity 类8图层0层名6线型continuous 线型名acdbline子类标记10直线段第1顶点x坐标230.741154653 值20直线段笫1顶点y坐标-54. 9243272804 值30直线段第1顶点z坐标0.0值11直线段第2顶点x坐标525.485323089 值21直线段第2顶点y坐标-67.68800526216 值31直线段第2顶点z坐标0.0值3、利用vb编程对图形内线段交点进行检索的算法3.1设计思路利用vb编程,读取dxf文件内所有的lwpolyline (多段线)和line(直线),提起
8、其顶点x、y坐标值,并将其分界为线段,以数组的形式进 行存储,以每条线段与英他各条进行求交解算,采取递归调用的方式遍丿力 所冇线段后,求出该条线段与其他的线段是否存在交点,如冇,则记录交 点坐标。3.2设计原理1) 快速排斥试验设以线段p1p2为对角线的矩形为p;设以线段q1q2为对角线的矩形为q;如果p和q不相交,显然两线段不会相交。2) 跨立试验如果两线段相交,则两线段必然相互跨立对方。若p1p2跨立q1q2,则矢量(pl- q1)和(p2-q1)位于矢量(q2-q1)的两侧,即(pl- qi) x (q2 -qi) * (p2 - qi) x ( q2 - qi ) >0o上式可改
9、写成(pl-ql) x (q2 -qi) * (q2 - qi) x (p2 -q1) > 0。当(pl -qi) x (q2 -q1)二0 时,说明(p1 - q1)和(q2 - q1)共线,但 是因为已经通过快速排斥试验,所以p1 一定在线段q1q2上;同理,(q2 -qi) x (p2 -q1)二0说明p2 一定在线段q1q2上。所以判断p1p2跨立q1q2的依据是:(pl - qi ) x (q2 - qi) * (q2 -qi) x ( p2 -qi) >=0o同理判断q1q2跨立p1p2的依据是:(qi - pl ) x ( p2 - pl) * ( p2-pl) x
10、(q2 - pl) >= 0ox:为叉积 叉积的计算公式为:p1xp2二xly2 - x2yl;3. 3部分源码function l2l_intersect(pl_s() as double, pie() as double,p2 s() as double, p2 e() as double) as booleandim xmax_l, xmax_2, xmin_l, xmin_2, ymax_l, ymax_2, ymin_l,ymin 2 as doubledim vlas double, v2 as doubledim v3as double, v4 as doubleif pl
11、_s(0) > pl_e(0) thenxmax l 二 pl s (0)xmin 1 = pl e(0)elsexmax l 二 pi e (0)xmin_l = pl_s(0)end iftf pl s (1) > pl e (1) thenymax_l = pl_s(1)ymin l 二 pi e (1)elseymaxl 二 pl_e(l)ymin_l 二 pl_s(1)end ifif p2_s(0) > p2_e(0) thenxmax_2 二 p2_s (0)xmin_2 二 p2_e (0)elsexmax 2 = p2 e(0)xmin_2 = p2_s(0
12、)end ifif p2_s(1) > p2_e(1) thenymax_2 二 p2_s(1)ymin 2 = p2 e(l)elseymax_2 二 p2_e(1)ymin_2 二 p2_s(1)end ifl2l intersect 二 falseif xmax_l xmax_2 or ymin_l > ymax_2 or ymax_l < ymin_2 then'两线段最小矩形不相交,得出两线段不相交l2l intersect = falseexit functionelse '利用向量的叉积性质,当其中一条线段的两个端点在另一条线 段的同一侧时,不相
13、交。否则,相交。vi = (pl e (0) - pl s (0) * (p2 s (1) - pl s (1) 一 (p2 s (0) 一 pl_s(0) * (pl_e(l) 一 pl_s(l)v2 二(pl_e(0) - pl_s (0) * (p2_e(l) - pl_s(l) - (p2_e(0)- pl_s(0) * (pl_e(l) - pl_s(l)v3 = (p2_o(0) 一 p2_s(0) * (pl_s(1) 一 p2_s(1) 一 (pl_s(0)- p2_s(0) * (p2_e(l) 一 p2_s)v4 = (p2_e(0) - p2_s(0) * (pl_e(1) - p2_s(1) - (pl_e(0) - p2_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 康养综合项目环境影响报告书
- 混凝土施工月度总结报告
- 富硒产业园项目环境影响报告书
- 三力考试题目及答案解析
- 一汽模具笔试题库及答案
- 混凝土施工团队沟通方案
- 中新钢铁集团招聘面试题及答案
- 招聘企业人力资源管理师试题及答案
- 招聘景区讲解员面试题及答案
- 招聘电力聚合运营员面试题及答案
- 【新】国开2024年秋《经济法学》1234形考任务答案
- 2026届甘肃省兰州市一中生物高一第一学期期末检测模拟试题含解析
- 最美的事800字作文
- 医院教学工作记录本
- 销售宝典输赢之摧龙六式课件
- 新时代创业思维知到章节答案智慧树2023年东北大学秦皇岛分校
- 重钢环保搬迁1780热轧宽带建设项目工程初步设计
- 房地产开发公司建立质量保证体系情况说明
- GB/T 19025-2023质量管理能力管理和人员发展指南
- 群文阅读把数字写进诗
- 光学零件加工课件
评论
0/150
提交评论