基于缓存的动态数据加载方法及装置的制作方法

文档序号:6356760阅读:167来源:国知局
专利名称:基于缓存的动态数据加载方法及装置的制作方法
技术领域
本发明涉及计算机领域,具体而言,涉及一种基于缓存的动态数据加载方法及装置。
背景技术
随着三维CAD软件在制造业,尤其是在装备业的广泛应用,软件所处理的模型也 在不断增大。由最初的几百个零件的减速器模型,到现在的几万个零部件的整车模型和大 型机械装备,使得模型数据文件由原来的几百KB增加到几百MB,于是就对软件性能和内存 使用量提出了新的要求。例如打开一个有100多个零件的减速器装配,目前主流配置的计算机只需要5秒 以内,占用内存小于100MB,而打开一个有3万个零件的大型机械装配,同等配置的计算机 需要5分钟以上,占用内存接近2GB,这是一般用户所无法忍受的。尽管用户可以通过提高 硬件配置在一定程度上提高速度,解决内存消耗问题,但对于零件数上万的大装配,仅仅提 升硬件配置的效果就不再那么明显了,而且在Windows XP 32位系统下,每个进程所占用的 内存最大限制是3GB,超过这个限制时,软件将直接异常退出。因此,必须从软件算法上做出 根本性改进,这样才能使软件在性能上有质的提升,从而满足企业进一步的需要。目前针对相关技术的CAD文件数据打开过慢,占用内存过多,系统总体性能低的 问题,目前尚未提出有效的解决方案。

发明内容
针对相关技术的CAD文件数据打开过慢,占用内存过多,系统总体性能低的问题, 目前尚未提出有效的问题而提出本发明,为此,本发明的主要目的在于提供一种基于缓存 的动态数据加载方法及装置,以解决上述问题。为了实现上述目的,根据本发明的一个方面,提供了一种基于缓存的动态数据加 载方法,该方法包括CAD系统接收打开文件请求;根据打开文件请求将CAD文件数据写入 缓存;根据CAD文件数据在缓存中构建零件容器以及零件组件容器,使得CAD文件数据在缓 存中打开;CAD系统接收操作请求,并通过零件容器以及零件组件容器调用零件对象和零 件组件对象,从而将CAD文件数据加载至内存。进一步地,CAD系统接收操作请求,并通过零件容器以及零件组件容器调用零件对 象和零件组件对象,从而将CAD文件数据加载至内存包括如下步骤CAD系统根据操作请求 来调用零件容器以及零件组件容器;通过零件容器调用与其对应的零件对象,同时,通过零 件组件容器调用与其相对应的零件组件对象;根据零件对象和零件组件对象将CAD文件数 据加载至内存;CAD系统返回CAD文件数据。进一步地,在通过零件组件容器调用与其相对应的零件组件对象之前,方法还包 括判断是否存在与零件组件容器相对应的零件组件对象,其中,如果存在,则通过零件组 件容器调用零件组件对象;如果不存在,则返回缓存,在缓存中构建与零件组件容器相对应的零件组件对象,并在构建零件组件对象成功后,通过零件组件容器调用零件组件对象。进一步地,CAD文件数据包含一个或多个零件数据,各个零件数据按属性分类包含 一个或多个零件组件数据。进一步地,根据CAD文件数据在缓存中构建零件容器以及零件组件容器的步骤包 括读取缓存中的CAD文件数据,以获取各个零件数据的起始地址和数据大小,并根据各个 零件数据的起始地址和数据大小来构建零件容器;读取零件数据,以获取各个零件组件数 据的起始地址和数据大小,并根据各个零件组件数据的起始地址和数据大小来构建零件组 件容器。 进一步地,零件容器包含一个或多个零件组件容器。根据本发明的另一方面,提供了一种基于缓存的动态数据加载的装置,该装置包 括获取模块,用于CAD系统接收打开文件请求;写入模块,用于根据打开文件请求将CAD 文件数据写入缓存模块中;构建模块,用于根据CAD文件数据在缓存模块中构建零件容器 以及零件组件容器,使得CAD文件数据在缓存模块中打开;操作模块,用于CAD系统接收操 作请求,并通过零件容器以及零件组件容器调用零件对象和零件组件对象,从而将CAD文 件数据加载至内存。进一步地,操作模块包括调用模块一,用于CAD系统根据操作请求来调用零件容 器以及零件组件容器;调用模块二,用于通过零件容器调用与其对应的零件对象,同时,通 过零件组件容器调用与其相对应的零件组件对象;加载模块,用于根据零件对象和零件组 件对象将CAD文件数据加载至内存;返回模块,用于CAD系统返回CAD文件数据。进一步地,调用模块二包括判断模块,用于判断是否存在与零件组件容器相对应 的零件组件对象,其中,如果存在,则通过零件组件容器调用零件组件对象;如果不存在,则 返回缓存,在缓存中构建与零件组件容器相对应的零件组件对象,并在构建零件组件对象 成功后,通过零件组件容器调用零件组件对象。进一步地,构建模块包括第一构建子模块,用于读取缓存中的CAD文件数据,以 获取各个零件数据的起始地址和数据大小,并根据各个零件数据的起始地址和数据大小来 构建零件容器;第二构建子模块,用于读取零件数据,以获取各个零件组件数据的起始地址 和数据大小,并根据各个零件组件数据的起始地址和数据大小来构建零件组件容器。通过本发明,采用CAD系统接收打开文件请求;在接收打开文件请求后根据打开 文件请求将CAD文件数据写入缓存;并在缓存中根据CAD文件数据构建零件容器以及零件 组件容器,使得CAD文件数据在缓存中打开;将CAD文件数据在缓存中打开之后,CAD系统 再进一步接收到操作请求,并通过零件容器以及零件组件容器调用零件对象和零件组件对 象,从而将CAD文件数据加载至内存,进而通过调用内存中的文件数据完成操作。从而解决 了 CAD文件数据打开过慢,占用内存过多,系统总体性能低的问题,进而达到了节约内存、 提高CAD系统整体运行效率的效果。


此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发 明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图1是根据本发明实施例中的基于缓存的动态数据加载装置的结构示意图2是基于图1所示的操作模块的结构示意图;图3是基于图2所示的操作模块中调用模块二的结构示意图;图4是基于图1所示的构建模块的结构示意图;图5是根据本发明实施例中的基于缓存的动态数据加载方法的流程图;图6是根据本发明实施例中的CAD文件数据中零件数据的内存结构示意图;以及图7是根据本发明优选实施例的基于缓存的动态数据加载方法。
具体实施例方式需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相 互组合。下面将参考附图并结合实施例来详细说明本发明。图1是根据本发明实施例中的基于缓存的动态数据加载装置的结构示意图;如图 1所示,该装置包括获取模块1,用于CAD系统接收打开文件请求;写入模块3,用于根据打 开文件请求将CAD文件数据写入缓存模块5中;构建模块7,用于根据CAD文件数据在缓存 模块5中构建零件容器以及零件组件容器,使得CAD文件数据在缓存模块5中打开;操作模 块9,用于CAD系统接收操作请求,并通过零件容器以及零件组件容器调用零件对象和零件 组件对象,从而将CAD文件数据加载至内存。在上述实施例中,当我们需要使用CAD文件数据并对该CAD文件数据进行操作时, CAD系统中的获取模块1可以接收打开文件请求;并将该请求发送给写入模块3,写入模块 3可以根据该请求将所请求的CAD文件数据写入到缓存模块5中;将CAD文件数据写入到 缓存模块5中之后,构建模块7根据CAD文件数据在缓存模块5中构建该文件数据的零件 容器和零件组件容器;CAD系统中的操作模块9进一步接收操作请求,并通过零件容器以及 零件组件容器调用零件对象和零件组件对象,从而将CAD文件数据加载至内存中,进而通 过调用内存中的文件数据完成操作。通过上述实施方案,本发明能够解决CAD文件数据打 开过慢,占用内存过多,系统总体性能低的问题,进一步地提高了三维CAD系统的总体运行 效率和性能。图2是基于图1所示的操作模块的结构示意图。上述实施例中的操作模块9包括 调用模块一 91,用于CAD系统根据操作请求来调用零件容器以及零件组件容器;调用模块 二 92,用于通过零件容器调用与其对应的零件对象,同时,通过零件组件容器调用与其相对 应的零件组件对象;加载模块93,用于根据零件对象和零件组件对象将CAD文件数据加载 至内存;返回模块94,用于CAD系统返回CAD文件数据。在本发明的上述实施例中,当CAD系统接收到操作请求时,会将操作请求发送给 调用模块一 91,调用模块一根据具体的操作请求找到与其相对应的零件容器以及零件组件 容器,之后,调用模块92再通过零件容器以及零件组件容器找到与其相对应的零件对象以 及零件组件对象,然后加载模块93根据对应的零件对象以及零件组件对象将CAD文件数据 加载至内存中,最后,返回模块94将CAD文件数据从内存中返回,从而完成了操作请求。图3是基于图2所示的操作模块中调用模块二的结构示意图。如图3所示,调用 模块二 92包括判断模块921,用于判断是否存在与零件组件容器相对应的零件组件对象, 其中,如果存在,则通过零件组件容器调用零件组件对象;如果不存在,则返回缓存,在缓存 中构建与零件组件容器相对应的零件组件对象,并在构建零件组件对象成功后,通过零件组件容器调用零件组件对象。图4是基于图1所示的构建模块的结构示意图。构建模块7包括第一构建子模 块71,用于读取缓存中的CAD文件数据,以获取各个零件数据的起始地址和数据大小,并根 据各个零件数据的起始地址和数据大小来构建零件容器;第二构建子模块72,用于读取零 件数据,以获取各个零件组件数据的起始地址和数据大小,并根据各个零件组件数据的起 始地址和数据大小来构建零件组件容器。图5是根据本发明实施例中的基于缓存的动态数据加载方法的流程图。如图5所 示,该方法包括如下步骤S10, CAD系统接收打开文件请求;S30,根据打开文件请求将CAD文件数据写入缓存;S50,根据CAD文件数据在缓存中构建零件容器以及零件组件容器,使得CAD文件 数据在缓存中打开;S70, CAD系统接收操作请求,并通过零件容器以及零件组件容器调用零件对象和 零件组件对象,从而将CAD文件数据加载至内存。在上述实施例中,当我们需要使用CAD文件数据并对该CAD文件数据进行操作时, CAD系统接收打开文件请求;在接收打开文件请求后根据打开文件请求将CAD文件数据写 入缓存;并在缓存中根据CAD文件数据构建零件容器以及零件组件容器,使得CAD文件数据 在缓存中打开;将CAD文件数据在缓存中打开之后,CAD系统再进一步接收到操作请求,并 通过零件容器以及零件组件容器调用零件对象和零件组件对象,从而将CAD文件数据加载 至内存,进而通过调用内存中的文件数据完成操作。通过本发明解决了 CAD文件数据打开 过慢,占用内存过多,系统总体性能低的问题,能够达到节约内存,提高CAD系统整体运行 效率的效果。本方法的上述实施例在如上装置的实施例中已详细阐述,在此不再赘述。图6是根据本发明实施例中的CAD文件数据中零件数据的内存结构示意图。如图 6所示,一个CAD文件数据包含一个或多个零件数据,每个零件数据按属性分类包含一个或 多个零件组件数据。一个零件数据装载一个零件,我们称之为零件对象;一个零件组件数据 装载多个零件组件,我们称之为零件组件对象。为了能够实现动态加载,分别用一个轻量级 的零件容器来包装零件对象,该零件容器记载有该零件对象在CAD文件数据流中的起始地 址和数据大小;用一个轻量级的零件组件容器来包装零件组件对象,该零件组件容器记载 有该零件组件对象在数据流中的起始地址和数据大小。零件容器和零件组件容器都是轻量 级数据,占用内存很少,零件对象和零件组件对象是重量级数据,占用内存较多。在访问重 量级数据内存时,必须经过轻量级的容器,也就是说外面无法直接访问重量级数据的内存。图7是根据本发明优选实施例的基于缓存的动态数据加载方法。如图7所示,该 方法的具体步骤如下S10,CAD系统接收打开文件请求。S30,根据打开文件请求将CAD文件数据写入缓存。S50,根据CAD文件数据在缓存中构建零件容器以及零件组件容器,使得CAD文件 数据在缓存中打开的步骤可以包括如下S51,根据CAD文件数据在缓存中构建零件容器;
S53,在构建完零件容器,根据CAD文件数据在缓存中构建零件组件容器;S55,CAD文件数据在缓存中打开。S70, CAD系统接收操作请求,并通过零件容器以及零件组件容器调用零件对象和 零件组件对象,从而将CAD文件数据加载至内存的步骤可以包括如下S71,CAD系统接收操作请求;S73,CAD系统根据所接收的操作请求判断是否存在相对应的零件组件对象,如果 不存在相对应的零件组件对象,则进入步骤S75,否则,转入步骤S77。S75,在缓存中构建零件组件对象,构建完零件组件对象后,进入步骤S77。S77,从缓存中调用零件组件对象,最后返回CAD文件数据。下面,我们以杯盖和杯身这两个常见物体的CAD设计来说明基于缓存的动态数据 加载过程。在CAD系统中的设计阶段,一般把杯盖和杯身设计成两个零件,通过零件装配手 段来保证杯盖和杯身尺寸相匹配。假设这两个零件已经设计并保存好了。下面重点以杯盖 为例来说明打开CAD文件数据过程和打开文件之后使用过程中如何从缓存中动态加载数 据的过程。CAD系统将装置有杯盖和杯身的文件数据打开,并将该文件数据写入到缓存中,根 据杯盖和杯身的文件数据在缓存中构建分别构建零件容器以及按属性分别构建零件组件 容器。如杯盖的零件容器的构建是将杯盖在CAD文件数据中起始地址和数据大小装载起 来,该杯盖的零件组件容器的构建是按该杯盖各个属性在CAD文件数据中的起始地址和数 据大小构建起来的,杯身的零件容器以及零件组件容器的构建原理与杯身相同。当构建完 零件容器以及零件组件容器后,杯盖以及杯身的文件数据在缓存中已全部打开。当上述杯盖以及杯身的CAD文件在缓存中全部打开之后,CAD系统在操作的过程 中会依据不同的操作请求,对数据进行加载。下面针对具体的操作请求,说明动态数据加载 过程。操作请求一屏幕重绘请求(1) CAD系统把屏幕重绘请求转发给每一个零件容器;(2)杯盖零件容器收到重绘请求,转发给管理显示的零件组件容器;(3)管理显示的零件组件容器访问与其相对应的管理显示的零件组件对象,如果 它不存在,那么在缓存中构建与显示相对应的零件组件对象;(4)通过调用管理显示的零件组件对,将相对应的数据返回屏幕上;(5)杯盖重绘显示完毕;(6) CAD系统接着把操作请求传给下一个零件容器(例如杯身);接着,用户选中了杯盖,点击了计算零件质量命令。操作请求二 计算质量请求(1) CAD系统把计算质量请求传给杯盖的零件容器;(2)杯盖零件容器收到计算质量请求,转发给管理实体几何的零件组件容器;(3)管理实体几何的零件组件容器访问与其相对应的管理实体几何的零件组件对 象,如果它不存在,那么在缓存中构建与其相对应的管理实体几何的零件组件对象;(4)管理实体几何的零件组件对象计算出杯盖零件的质量;
(5)计算质量请求完成;接着,用户要把杯盖放在杯身上,来检查杯盖大小是否合适。操作请求三修改位置请求(1) CAD系统把修改位置的请求传给杯盖的零件容器;(2)杯盖零件容器收到修改位置请求,转发给管理位置的零件组件容器;(3)管理位置的零件组件容器访问与其相对应的管理位置的零件组件对象,如果 它不存在,那么在缓存构建与其相对应的管理位置的零件组件对象;(4)管理位置的组件对象更新用户指定的位置数据;(5)位置修改请求完成;从以上的具体操作中,我们可以得知,一个CAD文件数据包含有一个或多个零件。 当操作人员只需要对某个零件的某个属性进行操作时,只需调用该零件的零件容器,以及 该零件容器下的与该属性相对应的零件组件容器,通过调用相对应的零件组件容器,来调 用零件组件对象,而无需将整个CAD文件数据进行加载,从而减少了内存的占用。从以上的描述中,可以看出,本发明实现了如下技术效果针对现有技术的问题, 本发明解决了 CAD文件数据打开过慢,占用内存过多,系统总体性能低的问题,使得三维 CAD软件在技术上又适应应用上的需求,为企业生产提供有力的技术保障。显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用 的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成 的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储 在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们 中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的 硬件和软件结合。以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人 员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、 等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种基于缓存的动态数据加载方法,其特征在于,包括如下步骤 CAD系统接收打开文件请求;根据所述打开文件请求将CAD文件数据写入缓存;根据所述CAD文件数据在所述缓存中构建零件容器以及零件组件容器,使得所述CAD 文件数据在所述缓存中打开;CAD系统接收操作请求,并通过所述零件容器以及所述零件组件容器调用零件对象和 零件组件对象,从而将所述CAD文件数据加载至内存。
2.根据权利要求1所述的基于缓存的动态数据加载方法,其特征在于,CAD系统接收操 作请求,并通过所述零件容器以及所述零件组件容器调用零件对象和零件组件对象,从而 将所述CAD文件数据加载至内存包括如下步骤CAD系统根据所述操作请求来调用所述零件容器以及所述零件组件容器; 通过所述零件容器调用与其对应的所述零件对象,同时,通过所述零件组件容器调用 与其相对应的零件组件对象;根据所述零件对象和所述零件组件对象将所述CAD文件数据加载至内存; CAD系统返回所述CAD文件数据。
3.根据权利要求2所述的基于缓存的动态数据加载方法,其特征在于,在通过所述零 件组件容器调用与其相对应的零件组件对象之前,所述方法还包括判断是否存在与所述零件组件容器相对应的所述零件组件对象,其中, 如果存在,则通过所述零件组件容器调用所述零件组件对象; 如果不存在,则返回所述缓存,在所述缓存中构建与所述零件组件容器相对应的所述 零件组件对象,并在构建所述零件组件对象成功后,通过所述零件组件容器调用所述零件 组件对象。
4.根据权利要求3所述的基于缓存的动态数据加载方法,其特征在于,所述CAD文件 数据包含一个或多个零件数据,各个所述零件数据按属性分类包含一个或多个零件组件数 据。
5.根据权利要求4所述的基于缓存的动态数据加载方法,其特征在于,根据所述CAD文 件数据在所述缓存中构建零件容器以及零件组件容器的步骤包括读取所述缓存中的所述CAD文件数据,以获取各个所述零件数据的起始地址和数据大 小,并根据各个所述零件数据的起始地址和数据大小来构建所述零件容器;读取所述零件数据,以获取各个所述零件组件数据的起始地址和数据大小,并根据各 个所述零件组件数据的起始地址和数据大小来构建所述零件组件容器。
6.根据权利要求5所述的基于缓存的动态数据加载方法,其特征在于,所述零件容器 包含一个或多个所述零件组件容器。
7.一种基于缓存的动态数据加载装置,其特征在于,包括 获取模块(1),用于CAD系统接收打开文件请求;写入模块(3),用于根据所述打开文件请求将CAD文件数据写入缓存模块(5)中; 构建模块(7),用于根据所述CAD文件数据在所述缓存模块(5)中构建零件容器以及零 件组件容器,使得所述CAD文件数据在所述缓存模块(5)中打开;操作模块(9),用于CAD系统接收操作请求,并通过所述零件容器以及所述零件组件容器调用零件对象和零件组件对象,从而将所述CAD文件数据加载至内存。
8.根据权利要求7所述的基于缓存的动态数据加载装置,其特征在于,所述操作模块 (9)包括调用模块一(91),用于CAD系统根据所述操作请求来调用所述零件容器以及所述零件 组件容器;调用模块二(92),用于通过所述零件容器调用与其对应的所述零件对象,同时,通过所 述零件组件容器调用与其相对应的零件组件对象;加载模块(93),用于根据所述零件对象和所述零件组件对象将所述CAD文件数据加载 至内存;返回模块(94),用于CAD系统返回所述CAD文件数据。
9.根据权利要求8所述的基于缓存的动态数据加载装置,所述调用模块二(9 包括: 判断模块(921),用于判断是否存在与所述零件组件容器相对应的所述零件组件对象,其中,如果存在,则通过所述零件组件容器调用所述零件组件对象; 如果不存在,则返回所述缓存,在所述缓存中构建与所述零件组件容器相对应的所述 零件组件对象,并在构建所述零件组件对象成功后,通过所述零件组件容器调用所述零件 组件对象。
10.根据权利要求9所述的基于缓存的动态数据加载装置,其特征在于,所述构建模块 (7)包括第一构建子模块(71),用于读取所述缓存中的所述CAD文件数据,以获取各个所述零 件数据的起始地址和数据大小,并根据各个所述零件数据的起始地址和数据大小来构建所 述零件容器;第二构建子模块(72),用于读取所述零件数据,以获取各个所述零件组件数据的起始 地址和数据大小,并根据各个所述零件组件数据的起始地址和数据大小来构建所述零件组 件容器。
全文摘要
本发明公开了一种基于缓存的动态数据加载方法及装置,该方法包括CAD系统接收打开文件请求;在接收打开文件请求后根据打开文件请求将CAD文件数据写入缓存;并在缓存中根据CAD文件数据构建零件容器以及零件组件容器,使得CAD文件数据在缓存中打开;将CAD文件数据在缓存中打开之后,CAD系统再进一步接收到操作请求,并通过零件容器以及零件组件容器调用零件对象和零件组件对象,从而将CAD文件数据加载至内存,进而通过调用内存中的文件数据完成操作。通过本发明解决了CAD文件数据打开过慢,占用内存过多,系统总体性能低的问题,能够达到节约内存,提高CAD系统整体运行效率的效果。
文档编号G06F17/30GK102136000SQ201110072729
公开日2011年7月27日 申请日期2011年3月24日 优先权日2011年3月24日
发明者郭瑞军 申请人:北京数码大方科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1