CN104679814A - 基于dwg、dxf文件格式图形的管理方法 - Google Patents
基于dwg、dxf文件格式图形的管理方法 Download PDFInfo
- Publication number
- CN104679814A CN104679814A CN201410740510.2A CN201410740510A CN104679814A CN 104679814 A CN104679814 A CN 104679814A CN 201410740510 A CN201410740510 A CN 201410740510A CN 104679814 A CN104679814 A CN 104679814A
- Authority
- CN
- China
- Prior art keywords
- view
- autocad
- database
- function
- record
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
基于dwg、dxf文件格式图形的管理方法,其属于文档处理技术领域。利用Access建立图形标题栏信息数据库,确定访问数据库的方法为ODBC,基于ODBC访问数据库,并使其与数据源相连接,通过VisualC++提取dxf文件中的图元信息,将dxf文件中的数据存储在数据库和所设置的动态数组中,建立三个视图的管理界面,运用ActiveX控件实现dwg文件的预览显示;对图形数据库的增加、删除、查询、预览、平移操作。直接依据图形标题栏的信息对图形进行定位,结合ActiveX组件,通过VisualC++6.0语言编程,开发了基于AutoCAD的dwg、dxf文件格式图形数据库管理系统,从而实现对AutoCAD所绘制的图形进行全面的快速、安全、有效管理。
Description
技术领域
本发明涉及基于dwg、dxf文件格式图形的管理方法,其属于文档处理技术领域。
背景技术
随着计算机技术的不断发展与更新,CAD技术在工程图纸和管理活动中得到了广泛应用。AutoCAD是美国Autodesk公司开发的用于个人计算机的辅助绘图设计系统。据不完全统计,目前世界上大约90个国家的300万人正在使用AutoCAD软件绘制各种各样的图纸,计算机绘图量之大可想而知。
进入21世纪,电子、微计算机技术高速发展,信息产业高度发达,文件管理工作在信息化的浪潮中也发生着巨大而带有革命性的变化。在这种新趋势下,如何科学有效的管理电子文件并使之成为一笔永久的财富,是摆在各国档案管理工作者面前的一项重大课题,也是各国专家学者们一直研究的热点问题。尤其是近些年来,世界各种大型工厂、设计院、研究所等工程设计人员需要使用AutoCAD软件绘制大量的工程图纸,那么,如何从海量的工程图纸中快速而准确的找到自己想要的图形,并对图形进行科学有效的维护和安全管理,这不仅关系到数据安全问题,更关系到企业的生存和发展问题。而直至目前,还没有实现对工程图纸进行科学有效地管理,还没有解决直接依据图形标题栏的各种信息对图形进行查询、修改等操作。
发明内容
鉴于已有技术存在的缺陷,本发明的目的是提供一种基于dwg、dxf文件格式图形的管理方法,采用直接依据图形标题栏的信息对图形进行定位,结合 ActiveX组件,通过VisualC++6.0语言编程,开发了基于AutoCAD的dwg、dxf文件格式图形数据库管理系统,从而实现对AutoCAD所绘制的图形进行全面的快速、安全、有效管理。
为实现上述目的,本发明通过以下技术方案来实现的:
AutoCAD绘制的零件图,分别以dwg及dxf格式保存,利用Access建立图形标题栏信息数据库,确定访问数据库的方法为ODBC,,基于ODBC访问数据库,并使其与数据源相连接,通过VisualC++提取dxf文件中的图元信息,将dxf文件中的数据存储在数据库和所设置的动态数组中,建立三个视图的管理界面,运用ActiveX控件实现dwg文件的预览显示;对图形数据库的增加、删除、查询、预览、平移操作。
使用MicrosoftAccess软件创建数据库,数据库存有两个数据表,分别为零件表和人员表,零件表和人员表的结构中包括字段名字、数据类型,其中零件表中存储图形信息,人员表中存储管理员及一般用户的相关信息。
管理界面包括三个视图:
数据库视图CDbmanageView;用来浏览数据库,基于CListView和CListCtrl,CListCtrl打包了列表视图控件的功能,显示列表视图中每个包含图标和标签;通过调用函数OnMenuDatabase()连接并打开数据库,并使记录集指针指向零件表,再通过调用函数FillListCtrl()设置列表视图的风格,并填充数据库列表视图。AutoCAD图形的预览视图CPredrawdlg;添加一个ActiveX控件中的AutoCAD DwgThumbnail Control控件,预览AutoCAD图形。
AutoCAD图形的重现视图CCadView;通过读取AutoCAD图形的dxf文件,然后用画笔重新绘制图形,CCadView是基于CScrollView类,通过重载它的虚 函数OnDraw()进行图形的绘制,对图形进行放大、缩小、平移。
对三个视图的框架窗口进行动态分割,先把框架窗口分割成两个窗格,左边窗格为数据库视图CDbmanageView,右边窗格为AutoCAD图形的预览视图CPredrawdlg或者为AutoCAD图形的重现视图CCadView;右边窗格从CPredrawdlg切换为CCadView,设置CCadView视图为全屏而CDbmanageView视图的大小为零,CCadView视图占据整个框架窗口。
视图切换通过函数OnViewCaddraw()和函数OnViewPrecaddraw()在图形预览视图和图形重现视图之间来回切换;在切换时,通过函数DeleteView来从分割器窗口中删除一个视图,然后再创建一个新的视图来实现视图间的切换,在此同时,调用SetColumnInfo来动态设置每个视图的宽度,实现在显示AutoCAD图形的视图CCadView时为全屏;在CCadView视图中实现滚动视图以及图形的放大、缩小、平移操作。
基于AutoCAD图形数据库的管理系统,左边视图里显示的是数据库记录,一条记录对应一张图纸,浏览图纸信息;单击其中的任何一条记录时,在右边的视图里显示出该条记录所对应的AutoCAD图形的预览视图,当双击其中的任何一条记录时,切换到该条记录所对应的AutoCAD图形的重现视图。
实现主界面左边记录集列表的浏览,是通过函数OnMenuDatabase()连接打开数据库,并把记录集指针指向零件表,再通过调用函数FillListCtrl()设置列表视图的风格,填充数据库列表视图完成;对于右边视图的预览,是通过类Cpredrawdlg预览AutoCAD图形的,添加名为AutoCAD DWGThumbnail Control的ActiveX控件。
查询功能需要调用功能函数OnMenuAdvancedRequire(),打开数据库并将记 录集中的数据库指针指向已打开数据库中的零件表。
增加记录是调用函数TitleArray.RemoveAll()清空动态数组,获取文件路径名,调用函数FileRead读取文件,并且把所读的数据存进动态数组TitleArray中,最后从TitleArray取出数据判断零件名称,制图者,设计者内容,并为编辑框赋值。
删除记录调用了函数OnMenuDelrecord;再调用函数FillListCtrl()来刷新数据库视图。
查询记录调用函数OnMenuAdvancedRequire,再调用函数FillListCtrl()把相应记录集数据在列表视图中显示出来。
修改记录通过调用函数ShellExecute实现。
AutoCAD图形的重现视图按固定比例放大或缩小时,通过变量iZoom来控制;
AutoCAD图形的重现视图移动,参数m_xStart,m_yStart发生变化,而放大倍数iZoom不变。
采用上述方案,与现有技术相比具有以下有益效果:直接依据图形标题栏的信息对图形进行定位,结合ActiveX组件,通过VisualC++6.0语言编程,开发了基于AutoCAD的dwg、dxf文件格式图形数据库管理系统,从而实现对AutoCAD所绘制的图形进行全面的快速、安全、有效管理。
附图说明
图1是管理系统总体结构图;
图2是表的结构信息图;
图3是窗口切分示意图;
图4是窗口实现的功能流程图;
图5是DwgThumbnail注册安装示意图;
图6是软件注册示意图;
图7是控件创建界面图;
图8是预览类的关系图;
图9是查询功能流程图;
图10是增加记录功能流程图;
图11是删除记录功能流程图;
图12是查询功能流程图;
图13是修改记录功能流程图;
图14是图形局部放大示意图;
图15是图形移动示意图;
图16是软件登陆窗口示意图;
图17是图形管理系统主界面。
具体实施方式
使用AutoCAD绘制的零件图,分别以dwg及dxf格式保存,利用Access建立图形标题栏信息数据库,确定访问数据库的方法ODBC,并使其与数据源相连接,通过VisualC++6.0语言编程,提取dxf文件中的图元信息,将dxf文件中的数据存储在数据库和所设置的动态数组中,运用ActiveX控件技术实现dwg文件的预览显示,设置管理员及用户的权限限制,实现对图形数据库的增加、删除、查询、预览、平移等各种操作。本发明系统总体框图如图1所示。
Access数据库的建立,数据的集成便形成数据库,而表则是数据库中存储数据的基本单元。使用MicrosoftAccess软件创建数据库acad.mdb,数据库存有两个数据表,分别为零件表和人员表,表的结构信息分别如表1和表2所示,其中零件表中存储的是图形信息,人员表中存储的是管理员及一般用户的相关信息,表的结构信息如图2所示。
字段名字 | 数据类型 |
序号 | 数字 |
零件名称 | 文本 |
制图 | 文本 |
设计 | 文本 |
审核 | 文本 |
制图日期 | 文本 |
图号 | 文本 |
材料 | 文本 |
文件路径 | 文本 |
表1零件表的结构
字段名字 | 数据类型 |
部门 | 文本 |
姓名 | 文本 |
密码 | 文本 |
表2人员表的结构
程序界面的布局
为了对所绘制的图形进行有效的管理,本发明采用三个视图来管理。
第一个视图:数据库视图CDbmanageView。它主要用来浏览数据库,基于CListView。同时,因为CListCtrl打包了列表视图控件的功能,能够显示每个包含图标(列表视图中)和标签的收集,所以CListView和CListCtrl通常一起使用。实现过程主要是通过调用函数OnMenuDatabase()连接并打开数据库,并使记录集指针指向零件表。再通过调用函数FillListCtrl()设置列表视图的风格,并填充数据库列表视图。
第二个视图:AutoCAD图形的预览视图CPredrawdlg。它主要用于预览AutoCAD图形,为了能够预览图形,需要添加一个ActiveX控件AutoCAD DwgThumbnail Control控件。
第三个视图:绘制AutoCAD图形的视图CCadView。它是通过读取AutoCAD图形的dxf文件,然后用画笔重新绘制,绘制AutoCAD图形的视图CCadView是基于CScrollView类的,通过重载它的虚函数OnDraw()进行图形的绘制,可以对图形进行放大、缩小、平移等。
由于本发明共包含一个文档和三个视图,故而必须对框架窗口进行动态分割。先把框架窗口分割成两个窗格,左边视图为数据库视图CDbmanageView,右边为AutoCAD图形的预览视图CPredrawdlg或者可以切换为AutoCAD图形重现视图CCadView,不同的是CCadView视图占据整个窗口。即在与CPredrawdlg切换的同时设置CCadView视图为全屏而CDbmanageView视图的大小为零。窗口切分如图3所示。
窗口切分的具体实现过程如下:
(1)CSplitterWnd类能够实现分隔器的功能,而分隔器窗口中含有多个窗格的窗口,所以需要在父框架中加入一个CSplitterWnd类的成员变量。
(2)重载OnCreateClient()成员函数。经过此函数的窗口分隔,构建一个用户的框架窗口。创建框架窗口与文档视图时,要调用CCreateContext结构并将结果值用于文档组件和文档数据的视图连接。CCreateContext结构含有指向文档、框架窗口和文档模板的指针,包括CRuntimeClass指针(标记待创建的视图类型),运行时上述类信息与文档指针能够动态地创建视图。
(3)在OnCreateClient函数中调用CSplitterWnd的Create或CreateStatic成员函数。Create成员函数用来建立一个动态的分隔器窗口(用于创建多个窗格和视以及滚动文件),框架自动为该分隔器建立了一个初始窗格,随后调用SetColumnInfo设定每列的宽度。在CAD绘图预览视图类CPredrawdlg和数据库视图CDbmanageView时,设置视图CDbmanageView的宽度为整个宽度的5/7,而在AutoCAD图形的视图CCadView和数据库视图CDbmanageView时,设置视图CDbmanageView的宽度为0,即整个视图区域就是视图CCadView,从而实现了窗口之间的切分。
由三个视图实现的功能如图4所示。
视图切换主要通过函数OnViewCaddraw()和函数OnViewPrecaddraw()在图形预览视图和图形重现视图之间来回切换。在切换时,实际上是通过函数DeleteView来从分割器窗口中删除一个视图,然后再创建一个新的视图来实现视图间的切换,在此同时,也调用SetColumnInfo来动态设置每个视图的宽度,从而可以实现在AutoCAD图形的视图CCadView时是全屏的,可以更好地看清楚图形结构,且CCadView视图是模拟AutoCAD2007环境。在CCadView视图里也 同样可以滚动视图以及实现图形的放大、缩小、平移等操作。不过,在调用SetColumnInfo成员函数调整了列的大小后,还需调用RecalcLayout函数来正确地重新显示此分割窗口。
图形数据库管理功能的实现
控件的注册、属性设置与操作
(1)控件的注册
首先,进行系统注册。拷贝控件至“C:\WINDOWS\system32”中,点击“开始”→“运行”→输入“regsvr32”(含有一个空格),将“C:\WINDOWS\system32”路径下文件夹下的“AutoCAD DwgThumbnail Control”控件选中,直接用鼠标拖到“运行”界面的输入框,点击确定,若出现图5所示的结果,则表示控件系统注册成功;
其次,进行VC++6.0软件注册,如图6所示,这样就将控件添加到VC++6.0的控件容器内了。
(2)控件的创建
本发明为单文档应用程序,如图7所示创建控件时,系统会自动添加CPicture和CDwgThumbnail两个属性类,用于支持图形属性,包括位图,图形文件和图标等。
(3)图形预览
系统程序中,CPredrawdlg主要用来实现AutoCAD图形预览的,但还需要在对话框里添加AutoCAD DwgThumbnail Control控件。图8表明了预览类的父子关系。
ActiveX控件最突出的特点就是它的属性和方法。AutoCAD DwgThumbnail Control控件同样具有其属性和方法,它可以访问的属性有Appearance,BackColor,BitMapBackColor,BorderStyle,DwgFileName,Nomagnify,StrechBitMode。然而,在程序里我们直接使用的属性是DwgFileName,即Dwg图形文件名,而对于其他的属性访问可以直接安排在对话框的外部操作里。虽然没有直接使用CPicture类,但是必须使用MFC提供的CPictureHolder类。事实上,我们主要是采用位图形式来显示AutoCAD图形。MFC中的CPictureHolder类正是Picture属性的实现,这使得用户可以在其控件中显示一幅图画。通过固有的Picture属性,我们就能够指定用于显示的位图、图标或图元文件,即实现图形的预览。
为了访问CPictureHolder类声明和代码,需要在StdAxf.h中加入下面一行代码:
#include“afxctl.h”
同时,调用函数GetPictureDispatch()来返回CPictureHolder对象的Idispicture接口,获得通过函数SetDwgFileName()传递而来的图形存取路径,从而实现图形预览。
预览功能的具体操作过程:在执行应用程序时,显示的是第一条记录的AutoCAD图形。当用鼠标单击左边列表视图中的记录集时,右边的预览视图就能够显示出该条记录的AutoCAD图形。
功能实现过程:当用鼠标单击左边列表视图中的记录集时,就调用文档里的函数pDoc->PreView(),并且把该条记录所对应的图纸的文件路径保存在全局变量filepathname中。
PreView()函数的原代码如下:
void CDbmanageDoc::PreView()
{CPredrawdlg*pView;//先定义一个Cpredrawdlg指针pView
POSITION ps;//返回文档列表的第一个位置,用做迭代查找的开始
ps=GetFirstViewPosition();//调用该函数获得与文档相关的视图列表中的第一个视图
do{/*通过与文档相联系的文档列表迭代调用该函数来迭代所有的文档视图,函数通过ps返回视图并将ps设置为列表中下一个视图的ps值,如果获得的是列表视图中的最后一个,则设置ps为NULL*/
pView=(CPredrawdlg*)GetNextView(ps);
if(pView==NULL)
return;}
while(!pView->IsKindOf(RUNTIME_CLASS(CPredrawdlg)));
//这个宏断言指向的对象属于指定的类,等价于
ASSERT_KINDOF(CPredrawdlg,pView)
pView->m_dwgthumbnailctrl.SetDwgFileName(filepathname);
//传递图形存取路径,实现图形预览
/*等同于下面语句。此函数再次调用Cpredrawdlg类里的PreView(LPCSTR path),再通过函数PreView(LPCSTR path)调用ActiveX控件的属性函数SetDwgFileName就可以得到所要显示的AutoCAD图形的文件路径,也就可以显示单击记录所对应的AutoCAD图形*/
//pView->PreView(filepathname);
//m_dwgthumbnailctrl.SetDwgFileName((LPCSTR)path);}
图形管理系统主要功能
(1)浏览
要实现主界面左边记录集列表的浏览,是通过函数OnMenuDatabase()连接打开数据库,并把记录集指针指向零件表,再通过调用函数FillListCtrl()设置列表视图的风格,填充数据库列表视图完成。
对于右边视图的预览,是通过类Cpredrawdlg预览AutoCAD图形的,添加名为AutoCAD DWGThumbnail Control的ActiveX控件。
查询功能需要调用功能函数OnMenuAdvancedRequire()。当按下查询记录按钮时,就激发函数OnMenuAdvancedRequire()。此函数通过requiredlg1.DoModal()调用查询对话框。然后就按往查询对话框中输入相关信息,再按确定或者取消按钮。若按取消,就退出查询操作;若按确定,即requiredlg1.DoModal()==IIDOK,就打开数据库并将记录集中的数据库指针指向已打开数据库中的零件表。
查询功能的流程图如图9所示。
(2)增加记录
增加记录时,需要调用函数TitleArray.RemoveAll()清空动态数组,然后根据文件路径名调用stream.open(strFilePosition,ios::in)打开文件,strFilePosition=dlg.GetPathName(),获取文件路径名。如果打开文件成功,就调用函数FileRead(stream)读取文件,并且把所读的数据存进动态数组TitleArray中,最后从TitleArray取出数据判断零件名称,制图者,设计者等内容,并为编辑框赋值。关键程序如下:
//在此根据文件路径及判断文件路径,若此文件已经存在,提示是否覆盖原先的记录
int size2;
size2=FilenameArray.GetSize();
for(j=0;j<size2;j++)
{p_filename=(CFilename*)FilenameArray.GetAt(j);
if(p_filename->filename==addrecord.m_edit_filename)
{CString strmessage,recmove;
strmessage.Format("此文件已经存在,需要替换吗?");……}
增加记录功能的流程图如图10所示。
(3)删除记录
删除记录的实现过程:当确定某个图形要删除后,可以运行应用程序的删除记录功能键,即调用了函数OnMenuDelrecord(),此时将记录集指针指向记录集合中的某条即将要被删除的记录,并且把它的记录号记录下来。弹出警告“您确定要删除这条记录吗?”来询问管理员是否确定要删除此条记录,以免误操作而引起不必要的损失,因为记录集一旦被删除,在数据库里就不能够恢复。此时,管理员可以按取消来弥补误操作。当管理员确定要删除以后,就调用Delete语句把此条记录从数据库里删除,然后把刚才被删除记录的后面所有的记录集往前移,即可以把记录集的记录号依次减一,从而又达到了记录号的连续。最后调用函数FillListCtrl()来刷新数据库视图。
删除记录功能的流程图如图11所示。
(4)查询
查询功能实现过程:当按下查询记录功能键时,就激发函数OnMenuAdvancedRequire()。此函数开始通过CRequiredlg1 requiredlg1;requiredlg1.DoModal()调用查询对话框。然后在编辑框中输入数据信息,按确定或者取消按钮。当按下取消按钮时,就退出查询操作,即什么也没有做。若按确定按钮,即requiredlg1.DoModal()==IDOK,则就打开数据库并把记录集中数据库指针指向已打开的数据库中的零件表。根据查询条件,过滤出符合条件的记录集合,并且调用函数FillListCtrl()把相应记录集数据在列表视图中显示出来。
查询功能的流程图如图12所示。
(5)修改记录
修改记录功能实现过程:在本应用程序中对记录集的修改可以分为两个部分,第一,修改图形时,对标题栏的信息也做修改,即对数据库中的记录集字段进行修改;第二,修改图形时,只修改除标题栏以外的图形信息,即数据库的记录集字段没有进行修改,另外,全部图纸的修改只在AutoCAD里进行。
管理系统主要是通过调用函数ShellExecute
(NULL,"open",pThisApp->filepathname,NULL,NULL,SW_SHOWNORMAL)或者是函数ShellExecute(NULL,"open","E:\\Program Files\\ACAD2007\\acad.exe\\,NULL,NULL,SW_SHOWNORMAL)来实现的。未选中记录的时候,即未选中图形的时候,调用的是后面那个函数,直接打开的是AutoCAD的可执行文件,若有记录被选中,则根据参数pThisApp->filepathname打开该条记录所对应的A utoCAD图形的DWG格式文件,管理员可以在这里对图形进行修改,在关闭AutoCAD前必须把它重新保存,包括其dwg格式与dxf格式。
修改记录功能的流程图如图13所示。
(6)图形的放大与缩小
图形放大指的是经过视图屏幕的调整,使当前视图屏幕中的局部区域填充到整个视图区域中;图形缩小指的是经过视图屏幕的调整来显示更多的图形部分。
图形放大和缩小有进行固定比例的放大和缩小,即运行放大功能时,是按下放大或缩小功能键后,图形按设置的比例放大或缩小;还有一种情况是鼠标在图形屏幕上选中一个窗口区域,系统会调整放大比例和屏幕的基点坐标,将选中的区域填充到整个图形屏幕。
图形放大按固定比例放大或缩小时,是通过变量iZoom来控制的。当单击功能键一次,图形就放大或缩小一倍。由于图形放大与缩小是相反的两个过程,机理相似,故而本小节只对图形放大原理进行说明。
图形放大原函数:void CCadView::OnViewZoomout()
{type=0;//图形操作的标识,不绘制坐标轴
iZoom=iZoom×2;/*图形增大一倍(即原图形的2倍),缩小时,只需iZoom=iZoom/2即可。*/
Invalidate();//重绘当前客户区的图形}
当图形是窗口局部放大时,需要对坐标值进行计算。当从菜单中选择局部放大后,就令type=10和PushNumber=0。然后当按下鼠标左键点中一点作为窗 口放大矩形边框的一个顶点,此时移动鼠标时就会拖动一个矩形边框移动,如再次按下鼠标左键,就会把两个对角点确定的矩形区域放大到整个视图屏幕上完成局部放大功能。
当矩形绘制完成后,便可得到它的对顶点坐标值,之后确定矩形与整个客户区屏幕之间的横向与纵向比,取绝对值较小的值作为放大倍数b1,然后修改放大倍数iZoom=iZoom×b1,最后用修改后所得的m_xStart、m_yStart、iZoom值重新绘制图形。这样,就实现了图形的局部放大功能。图形局部放大示意图如图14所示。
现计算(m_xStart’,m_yStart’),方法如下:
a=x1-m_xStart(基点相对于x1在x方向上的距离)
放大后a=a*b1(因为放大后放大的区域全屏显示)
-m_xStart’=(x1-m_xStart)*b1
m_xStart’=-(x1-m_xStart)*b1
同理
b=ScreenHigh-y1-m_yStart(基点相对于y1在y方向上的距离)
放大后b=b*b1(因为放大后放大的区域全屏显示)
-m_yStart’=(ScreenHigh-y1-m_yStart)*b1
m_yStart’=-(ScreenHigh-y1-m_yStart)*b1
这样,(m_xStart’,m_yStart’)便是局部放大后相对于左下角的坐标值。
进行图形局部放大时,需要单击鼠标左键,此时触发调用OnLButtonDown函数。
局部放大的关键代码如下:
(7)图形的移动
图形移动指的是通过调整个视图屏幕来显示图形的其它部分。这里只有参数m_xStart,m_yStart发生变化,而放大倍数iZoom不变。图形移动示意图如图15所示。
假设图形以相对移动的方式,从基点mPointOrign到目标点point移动,这时屏幕原点的相对坐标为(m_xStart’,m_yStart’)。
现计算(m_xStart’,m_yStart’),方法如下:
(x1,y1)=(mPointOld.x,mPointOld.y)
(x2,y2)=(point.x,point.y)
a=x1-m_xStart(基点相对于(x1,y1)在x方向上的距离)
m_xStart’-x2=m_xStart-x1
整理得:m_xStart’=m_xStart+point.x-mPointOld.x
同理
b=ScreenHigh-y1-m_yStart(基点相对于(x1,y1)在y方向上的距离)
ScreenHigh–y2-m_yStart’=b=ScreenHigh-y1-m_yStart
整理得:m_yStart’=m_yStart-(point.y-mPointOld.y)
那么(m_xStart’,m_yStart’)就是平移后相对于左下角的坐标
图形移动关键代码如下:
else if(type==2&&PushNumber==1)//////图形移动
{m_xStart’=m_xStart+point.x-mPointOld.x;
m_yStart’=m_yStart-(point.y-mPointOld.y);
Invalidate();
mPointOld=point;}
随后用计算后的(m_xStart’,m_yStart’)重新绘制图形屏幕时,便可实现图形的移动。
软件测试
(1)启动软件
启动应用软件Dbmanage.exe,然后进入用户登录界面(见图16),输入部门、姓名及密码进行身份验证。只有经系统管理员同意的用户才能够进入本应用程序进行操作。现以系统管理员的身份进行测试。
(2)软件主界面
登录成功后,就会进入到本应用程序的主界面如图17所示。
基于AutoCAD图形数据库的管理系统,左边视图里显示的是数据库记录,一条记录对应一张图纸,用户可以随便浏览这些图纸信息。当用户单击其中的任何一条记录时,在右边的视图里马上就会显示出该条记录所对应的AutoCAD图形。当双击其中的任何一条记录时,就可以切换到AutoCAD图形显示界面(CCadView视图)。
经过测试,软件各功能运行正常,能够满足图形管理系统的要求。
Claims (7)
1.基于dwg、dxf文件格式图形的管理方法,其特征在于:AutoCAD绘制的零件图,分别以dwg及dxf格式保存,利用Access建立图形标题栏信息数据库,基于ODBC访问数据库,并使其与数据源相连接,通过VisualC++提取dxf文件中的图元信息,将dxf文件中的数据存储在数据库和所设置的动态数组中,建立三个视图的管理界面,运用ActiveX控件实现dwg文件的预览显示;对图形数据库的增加、删除、查询、预览、平移操作。
2.根据权利要求1所述的基于dwg、dxf文件格式图形的管理方法,其特征在于:使用Microsoft Access软件创建数据库,数据库存有两个数据表,分别为零件表和人员表,零件表和人员表的结构中包括字段名字、数据类型,其中零件表中存储图形信息,人员表中存储管理员及一般用户的相关信息。
3.根据权利要求1所述的基于dwg、dxf文件格式图形的管理方法,其特征在于:管理界面包括三个视图:
数据库视图CDbmanageView;用来浏览数据库,基于CListView和CListCtrl,CListCtrl打包了列表视图控件的功能,显示列表视图中每个包含图标和标签;通过调用函数OnMenuDatabase连接并打开数据库,并使记录集指针指向零件表,再通过调用函数FillListCtrl设置列表视图的风格,并填充数据库列表视图;
AutoCAD图形的预览视图CPredrawdlg;添加一个ActiveX控件中的AutoCADDwgThumbnail Control控件,预览AutoCAD图形;
AutoCAD图形的重现视图CCadView;通过读取AutoCAD图形的dxf文件,然后用画笔重新绘制图形,CCadView是基于CScrollView类,通过重载它的虚函数OnDraw进行图形的绘制,对图形进行放大、缩小、平移。
4.根据权利要求3所述的基于dwg、dxf文件格式图形的管理方法,其特征在于:对三个视图的框架窗口进行动态分割,先把框架窗口分割成两个窗格,左边窗格为数据库视图CDbmanageView,右边窗格为AutoCAD图形的预览视图CPredrawdlg或者为AutoCAD图形的重现视图CCadView;右边窗格从CPredrawdlg切换为CCadView,设置CCadView视图为全屏而CDbmanageView视图的大小为零,CCadView视图占据整个框架窗口。
5.根据权利要求4所述的基于dwg、dxf文件格式图形的管理方法,其特征在于:视图切换通过函数OnViewCaddraw和函数OnViewPrecaddraw在图形预览视图和图形重现视图之间来回切换;在切换时,通过函数DeleteView来从分割器窗口中删除一个视图,然后再创建一个新的视图来实现视图间的切换,在此同时,调用SetColumnInfo来动态设置每个视图的宽度,实现在显示AutoCAD图形的视图CCadView时为全屏;在CCadView视图中实现滚动视图以及图形的放大、缩小、平移操作。
6.根据权利要求4所述的基于dwg、dxf文件格式图形的管理方法,其特征在于:基于AutoCAD图形数据库的管理系统,左边视图里显示的是数据库记录,一条记录对应一张图纸,浏览图纸信息;单击其中的任何一条记录时,在右边的视图里显示出该条记录所对应的AutoCAD图形的预览视图,当双击其中的任何一条记录时,切换到该条记录所对应的AutoCAD图形的重现视图。
7.根据权利要求6所述的基于dwg、dxf文件格式图形的管理方法,其特征在于:实现主界面左边记录集列表的浏览,是通过函数OnMenuDatabase连接打开数据库,并把记录集指针指向零件表,再通过调用函数FillListCtrl设置列表视图的风格,填充数据库列表视图完成;对于右边视图的预览,是通过类Cpredrawdlg预览AutoCAD图形的,添加名为AutoCADDWGThumbnail Control的ActiveX控件;
查询功能需要调用功能函数OnMenuAdvancedRequire,打开数据库并将记录集中的数据库指针指向已打开数据库中的零件表;
增加记录是调用函数TitleArray.RemoveAll清空动态数组,获取文件路径名,调用函数FileRead读取文件,并且把所读的数据存进动态数组TitleArray中,最后从TitleArray取出数据判断零件名称,制图者,设计者内容,并为编辑框赋值;
删除记录调用了函数OnMenuDelrecord;再调用函数FillListCtrl来刷新数据库视图;
查询记录调用函数OnMenuAdvancedRequire,再调用函数FillListCtrl把相应记录集数据在列表视图中显示出来;
修改记录通过调用函数ShellExecute实现;
AutoCAD图形的重现视图按固定比例放大或缩小时,通过变量iZoom来控制;
AutoCAD图形的重现视图移动,参数m_xStart,m_yStart发生变化,而放大倍数iZoom不变。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410740510.2A CN104679814A (zh) | 2014-12-05 | 2014-12-05 | 基于dwg、dxf文件格式图形的管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410740510.2A CN104679814A (zh) | 2014-12-05 | 2014-12-05 | 基于dwg、dxf文件格式图形的管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104679814A true CN104679814A (zh) | 2015-06-03 |
Family
ID=53314856
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410740510.2A Pending CN104679814A (zh) | 2014-12-05 | 2014-12-05 | 基于dwg、dxf文件格式图形的管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104679814A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105975802A (zh) * | 2016-07-05 | 2016-09-28 | 北京数码大方科技股份有限公司 | Cad图纸的评分方法及装置 |
CN105975451A (zh) * | 2016-05-27 | 2016-09-28 | 成都优译信息技术有限公司 | Dwg格式文件翻译数据的处理系统及其处理方法 |
CN105975461A (zh) * | 2016-05-27 | 2016-09-28 | 成都优译信息技术有限公司 | 在dwg格式文件中新增译文的方法 |
CN106021242A (zh) * | 2016-05-27 | 2016-10-12 | 成都优译信息技术有限公司 | Dwg格式图纸翻译数据回写系统及其回写方法 |
CN106021197A (zh) * | 2016-05-27 | 2016-10-12 | 成都优译信息技术有限公司 | Dwg格式文件的翻译系统及翻译方法 |
CN106055529A (zh) * | 2016-05-27 | 2016-10-26 | 成都优译信息技术有限公司 | Dwg格式文件中待翻译文本数据的解析系统及其解析方法 |
CN106294523A (zh) * | 2015-06-24 | 2017-01-04 | 华平智慧信息技术(深圳)有限公司 | 一种基于有限列表项显示大数据项的list控件及方法 |
CN107977408A (zh) * | 2017-11-21 | 2018-05-01 | 广东格兰仕集团有限公司 | 电控板信息查询系统及其运行方法 |
CN108182563A (zh) * | 2017-12-28 | 2018-06-19 | 深圳市华星光电技术有限公司 | 在电子终端中对设备的零件进行管理的方法和装置 |
CN108305331A (zh) * | 2018-02-08 | 2018-07-20 | 浙江众邦电力工程设计有限公司 | 一种输电线路的三维场景构建方法 |
CN109657324A (zh) * | 2018-12-13 | 2019-04-19 | 江西金格科技股份有限公司 | 一种基于dwg的图形再生技术 |
CN112883448A (zh) * | 2021-01-14 | 2021-06-01 | 中策橡胶集团有限公司 | 一种轮胎胎侧字体图参数回传方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100250615A1 (en) * | 2007-05-01 | 2010-09-30 | Reghetti Joseph P | Systems and methods for differentiating and associating multiple drawings in a cad environment |
CN102830979A (zh) * | 2012-08-30 | 2012-12-19 | 江苏省交通科学研究院股份有限公司 | 基于ObjectArx的CAD图纸信息批量处理方法 |
-
2014
- 2014-12-05 CN CN201410740510.2A patent/CN104679814A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100250615A1 (en) * | 2007-05-01 | 2010-09-30 | Reghetti Joseph P | Systems and methods for differentiating and associating multiple drawings in a cad environment |
CN102830979A (zh) * | 2012-08-30 | 2012-12-19 | 江苏省交通科学研究院股份有限公司 | 基于ObjectArx的CAD图纸信息批量处理方法 |
Non-Patent Citations (1)
Title |
---|
张滢: "基于dwg_dxf文件格式图形数据库管理系统的研究", 《沈阳航空工业学院学报》 * |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106294523A (zh) * | 2015-06-24 | 2017-01-04 | 华平智慧信息技术(深圳)有限公司 | 一种基于有限列表项显示大数据项的list控件及方法 |
CN106021242B (zh) * | 2016-05-27 | 2019-04-23 | 成都优译信息技术有限公司 | Dwg格式图纸翻译数据回写系统及其回写方法 |
CN106021197B (zh) * | 2016-05-27 | 2019-04-23 | 成都优译信息技术有限公司 | Dwg格式文件的翻译系统及翻译方法 |
CN105975461A (zh) * | 2016-05-27 | 2016-09-28 | 成都优译信息技术有限公司 | 在dwg格式文件中新增译文的方法 |
CN106021197A (zh) * | 2016-05-27 | 2016-10-12 | 成都优译信息技术有限公司 | Dwg格式文件的翻译系统及翻译方法 |
CN106055529A (zh) * | 2016-05-27 | 2016-10-26 | 成都优译信息技术有限公司 | Dwg格式文件中待翻译文本数据的解析系统及其解析方法 |
CN105975451A (zh) * | 2016-05-27 | 2016-09-28 | 成都优译信息技术有限公司 | Dwg格式文件翻译数据的处理系统及其处理方法 |
CN106055529B (zh) * | 2016-05-27 | 2019-04-23 | 成都优译信息技术有限公司 | Dwg格式文件中待翻译文本数据的解析系统及其解析方法 |
CN105975461B (zh) * | 2016-05-27 | 2019-04-23 | 成都优译信息技术有限公司 | 在dwg格式文件中新增译文的方法 |
CN106021242A (zh) * | 2016-05-27 | 2016-10-12 | 成都优译信息技术有限公司 | Dwg格式图纸翻译数据回写系统及其回写方法 |
CN105975451B (zh) * | 2016-05-27 | 2019-04-23 | 成都优译信息技术有限公司 | Dwg格式文件翻译数据的处理系统及其处理方法 |
CN105975802A (zh) * | 2016-07-05 | 2016-09-28 | 北京数码大方科技股份有限公司 | Cad图纸的评分方法及装置 |
CN107977408A (zh) * | 2017-11-21 | 2018-05-01 | 广东格兰仕集团有限公司 | 电控板信息查询系统及其运行方法 |
CN108182563A (zh) * | 2017-12-28 | 2018-06-19 | 深圳市华星光电技术有限公司 | 在电子终端中对设备的零件进行管理的方法和装置 |
CN108305331A (zh) * | 2018-02-08 | 2018-07-20 | 浙江众邦电力工程设计有限公司 | 一种输电线路的三维场景构建方法 |
CN108305331B (zh) * | 2018-02-08 | 2022-02-22 | 浙江众邦电力工程设计有限公司 | 一种输电线路的三维场景构建方法和系统 |
CN109657324B (zh) * | 2018-12-13 | 2023-02-03 | 江西金格科技有限公司 | 一种基于dwg的图形再生技术 |
CN109657324A (zh) * | 2018-12-13 | 2019-04-19 | 江西金格科技股份有限公司 | 一种基于dwg的图形再生技术 |
CN112883448B (zh) * | 2021-01-14 | 2023-08-29 | 中策橡胶集团股份有限公司 | 一种轮胎胎侧字体图参数回传方法 |
CN112883448A (zh) * | 2021-01-14 | 2021-06-01 | 中策橡胶集团有限公司 | 一种轮胎胎侧字体图参数回传方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104679814A (zh) | 基于dwg、dxf文件格式图形的管理方法 | |
US5467441A (en) | Method for operating on objects in a first image using an object-based model data structure to produce a second contextual image having added, replaced or deleted objects | |
Zloof | Office-by-Example: A business language that unifies data and word processing and electronic mail | |
US5729704A (en) | User-directed method for operating on an object-based model data structure through a second contextual image | |
US9830058B2 (en) | Generating an insight view while maintaining report context | |
EP0635808B1 (en) | Method and apparatus for operating on the model data structure on an image to produce human perceptible output in the context of the image | |
CA2124604C (en) | Method and apparatus for operating on an object-based model data structure to produce a second image in the spatial context of a first image | |
JP4039884B2 (ja) | 情報仮置き場管理方法、情報仮置き場管理装置、画像形成装置、プログラム及び記憶媒体 | |
CN109522357A (zh) | 一种数据处理方法、装置、服务器及存储介质 | |
CN110009721A (zh) | 生成由曲线表示的图像的三角网格 | |
JP6078437B2 (ja) | パーソナル情報匿名化システム | |
CN105511792A (zh) | 一种表单在位手写输入方法及系统 | |
CA2265719A1 (en) | Method and apparatus for producing a computer generated display that permits visualization of changes in the interior or exterior of a building structure shown in its actual environment | |
US11120205B2 (en) | Reviewing document designs | |
US20140059455A1 (en) | System and method for efficiently selecting data entities represented in a graphical user interface | |
US20090282325A1 (en) | Sparklines in the grid | |
CN104182225A (zh) | 一种通用移动信息系统适配方法与装置 | |
CN104063171B (zh) | 信息处理装置、信息处理方法 | |
JP2693777B2 (ja) | 対話画面定義方法およびその装置 | |
CN109857378A (zh) | 一种Web系统开发框架的构建方法及装置 | |
Elezovikj et al. | PartLabeling: A Label Management Framework in 3D Space | |
CN111782309A (zh) | 显示信息的方法、装置及计算机可读存储介质 | |
US11983550B2 (en) | View customization in CRM application | |
JP2833158B2 (ja) | ハイパーメディア装置のブラウザ表示方法 | |
CN116204267B (zh) | 知识产权流程表单的生成方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150603 |
|
WD01 | Invention patent application deemed withdrawn after publication |