论文部分内容阅读
随着科学技术的发展,人-机之间用图形进行通讯日益受到重视,在许多场合显示出其重要性。为使计算机能“看”懂物体投影线图,需要研究计算机解释投影线图的机理。计算机分析、处理和理解线图的研究成果可用于互联网、CAD系统中的人-机通讯接口、逆向工程及计算机视觉系统中,能缩短图形输入时间,减轻人-机通讯中“人”的工作量。
本文旨在研究判别法国学者Cooper对曲面物体的线图标记中给出的新的节点标记分类。其节点代表分类有:terminal、C、curvature—L、L、3-tangent、W、Y、T、4一tangent、Xo、K、V、Peak、Multi、X、L0等。本文对立体线图的线条标记中常见的这16种节点的判定给出了多种较为详细的算法,并且给出了每种算法的数学推理过程,对于判断同一节点类型的算法进行了对比以寻求更优的算法。在前期的部分节点算法验证中,利用Visual C++6.0进行了编程,并通过MFc界面输入节点坐标和节点相邻点坐标及输出节点图形与判断结果的一致性,验证了这些算法的可行性。
由于立体线图的线条标记在二维平面中进行,所以选择在AutoCAD中判别线画图标记中节点的类型。通过对立体线图的线条标记中节点的类型判别的要求分析,进一步明确得出了所二次开发的AutoCAD软件的功能。
并通过对AutoCAD系统结构和接口语言的深入了解以及对前人在AutoCAD二次开发扩展功能时的相关经验的总结,得出了在AutoCAD 2002平台上以二次开发形式解决线画图标记中节点类型判别问题的可行性并给出了整个节点类型判别系统的总体设计方案和相应的各种判别流程图。通过对AutoCAD二次开发工具特点的对比和分析,结合AutoCAD 2002节点判别功能需求,决定以VisualC++6.0为平台、以Object ARX为开发工具。
在节点类型判别系统开发中,通过对各种节点组成线型的分析,选用对应各种线型的类,如AcDbLinc类,AcDbCurve类对应直线和曲线,选用相应的获取直线和曲线的起点和终点函数,如对于曲线利用AcDbCurve类定义对象,通过函数getStartPoint()和getEndPoint()获取起点和终点坐标。除获取起点和终点外,还可以通过获取曲线和直线的特征点等方法获取所需点,如使用函数getosnaints()获取椭圆、椭圆弧等对象捕捉点。
在一个节点的的所有的获取的点中,通过比较算法实现获取节点坐标,进而可以通过其余获取点的坐标、节点坐标与其余点坐标问的数学关系及统计曲线和亢线的条数来分类节点的算法等实现节点类型的判别。
为了使AutoCAD二次开发扩展界面符合人们的操作习惯及与原来界面的区分,除了让用户使用自定义的命令外,还加入了功能菜单,使用开发工具ObjectARX的MFC功能创建了非模态对话框的可停靠窗口。