当前位置: 首页 > news >正文

参数化图形驱动及Web零件库的研究开发

参数化图形驱动及 Web零件库的研究开发

        对于设计人员, Web零件库可以加快产品设计;对零件供应商,可为其提供宣传平台。在广大中小企业,CAD的运用已十分广泛,往往也拥有自己的零件库。但其数据管理和资源共享上,却存在以下问题: 

        1)企业根据自身需求选用了不同的 CAD系统,这些系统拥有不同的零件格式,系统间格式无法通用。

         2)零件库数据结构冗余,零件缺乏统一的编码和分类管理,管理和维护的成本较高。 

        3)零件库数据架构上缺乏 拓展性,扩充苦难 。

        为 解决以上问题,本文研究了参数化零件库的建设和SolidWorks下的尺寸驱动方法,并开发了相应的图形驱动程序。最终建立了基于Web 的开放式零件库系统。

        1. 零件库的建库方法与系统架构

        1.1 系统的建库方法

          国际标准话组织根据德国所建立的DIN系列零件库标准建立了零件库的PLIB标准(即ISO13584),提出了一些列指导性原则和规范,包括:零件库的概念和逻辑模型、零件信息模型和构造零件族的方法学、零件库系统与CAD系统的接口规范和视图交换协议等。

          虽然PLIB标准有诸多优点,国内外很多学者对基于PLIB建库也进行了研究,但PLIB标准的许多规范值得借鉴而不能完全照搬。这是因为我国缺乏其应用的相应基础。我国从1988才开始依据国际标准建立国家标准,如完全根据PLIB标准来建立零部件,建立零件事物特性表,确立零件族架构,开发CAD系统接口等工作都需耗费大量的人力和时间。

       为了 提高建库效率,面向中小企业的零件库在结构上应该具有开放性,实现自助式建库模式。同时在建库技术上,采用更简单的技术实现方式,力求实现零件库的基本功能,再追求更复杂的性能。

       1.2 系统架构

       本文采用B/S结构建立基于Web的零件库系统。B/S结构无需用户安装和配置新的软件,用户只需通过浏览器链接到服务器端即可得到服务功能。系统所有功能在服务器端实现,利于系统的整体维护和升级。

       其中服务器端包括Web服务器和数据库服务器。用户界面上采用ASP.NET和C#语言。主要功能模块包括:零件的浏览、查找,三维模型显示、下载,库管理和扩充。数据库服务器上有零件库及CAD平台。图形驱动程序用来连接CAD平台和零件库。系统整体结构图:

        2  参数化的零件库建立

        2.1 零件的参数化信息

        根据PLIB标准中对参数、参数化形状等概念的定义,本系统将零件信息分为尺寸参数和几何模板。对于零件族中的最小分类概念相似零件族而言,族内零件可共用一个几何模板,但因尺寸不同而分为不同规格。这样可减少零件重复存储。

      本文依据GB/T10091.1 标准中的“事物特性表”的部分规则对单个零件建立零件参数存储表,包括零件的集合特性-主动参数和部分其它特性。而对于零件的几何图形模板,PLIB标准要求采用基于STEP标准的中性文件,而本位从实际的角度出发,采用SolidWorks系统的sldprt格式作为零件模板的描述。 

      2.2零件数据系统的建立

      本文采用SQL Server 管理参数化零件库,Access管理零件相似族参数信息。包括:1 建立零件族树状结构表,管理零件分类;2建立零件信息管理表,记录所有零件的名称,描述、零件模板和参数表路径;3建立Request表,记录零件调用请求。单个零件的参数存储表则存放在单独的Access数据库中,实现开放式数据库架构 。

       采用这种方式,则实现了自助建库功能。按照一般零件数据管理方法,其参数信息存储在单一的数据库中进行管理。而新增零件的参数信息表需要由系统管理员来建立。本文系统中,当需要发布产品时,只需在零件信息管理表中注册新的零件信息,再将相应的零件参数存储Access表和零件几何图形模版上传到数据库服务器中即可。

       2.3图形驱动程序的开发

       零件模板信息无法被用户直接使用,需调用CAD平台通过参数化建模生成新零件模型,提交给用户。本文通过对SolidWorks进行二次开发的方式编写了图形驱动程序作为零件参数模板库和CAD平台间的接口。整个程序工作流程如下:

      1)侦听Request数据表。数据库中建立了请求信息表(Request表)。它包括请求ID、零件ID、规格ID、请求状态,是零件库与用户界面的接口。使用过程中产生的多个请求,将按时间顺序处理。用户请求通过Web页面写入该表,图形驱动程序一直循环侦听请求。

      2)读取零件信息。图形驱动程序按序真听到的请求,在SQL数据库中找到相应的零件信息,从中读取模板和Access数据库信息。再进入Access数据库找到相应规格的具体几何参数。

     3)重建模型。先打开SolidWorks软件,调入模板。再将几何参数重新赋值给模板,重建模型。最后保存所得到的模型。 

       由 流程图可看出,图形驱动程序工作可归纳为两部分:数据库的读取与存储,SolidWorks平台的调用。

       对数据库的访问采用了ADO方法。ADO的对象提供了简单有效的访问数据源的方法。OLEDB是微软开发的一个战略性系统级编程接口,用于管理整个组织内的数据。ADO通过连接OLEDB,形成ADO-OLEDB的数据访问接口。在建立连接之后,可由ADO的recordset对象来记录所有数据库的内容,还可以由ADO中的命令对象执行SQL语句来完成相应操作。

      SolidWorks通过COM技术为用户提供强大的二次开发接口(SolidWorksAPI)图形驱动程序通过调用SolidWorksAPI提供的对象模型来访问和修改零件模板。

      图形驱动程序采用VB语言编写,虽然任何支持COM和OLE的编程语言都可以作为SolidWorks的二次开发工具。但VB语言作为SolidWorks的内置的宏语言,将能最大限度地发挥SolidWorksAPI的功能。 

      具体程序编写时,先应用SolidWorks的相应库文件,既可以使用SolidWorks提供的API开发接口。基本方法如下: 

      Dim iSwApp as SldWorks.SldWorks   //定义iswapp 为SolidWorks应用程序对象

      Set iSwApp=Application.SldWorks 

      Dim model as ModelDoc2   //定义model为 SolidWorks文档对象 

      Set model=iSwApp.ActiveDoc   //设置成当前活动文档

      Set model=iSwApp.OpenDoc6 (FilePath+FileName,swDocPART,0,"",long,_longwangings)// 利用文档对象的openDoc6方法,可以打开SolidWorks零件模板

      model.Parameter(ParaName).SystemValue=settingValue //改变某参数的值

      model.SaveAs2 outpath+newfilename+".sldprt",0,False,False   //另存为需要输出的零件格式,默认为sldprt格式

      到此,挖成了对零件的参数驱动。

     3.系统功能与应用

      零件浏览界面,左侧是采用treeview控件展示零件库树形结构,正中是采用SolidWorks的edrawing插件展示零件三维动态造型。

      零件入库与管理,在经过首次使用生成零件族模板之后,系统中再有此零件族中零件的请求时,图形代理程序会驱动图形软件打开零件族模板,注入请求参数,重新生成新零件,保存在模型库。这样,在零件库的使用过程中,模型库会逐渐补充,直至完善。最后成熟的零件库中会存储所有规格的零件,用户请求后,服务器会将零件直接传送给用户。该模板允许供应商在系统中建立自己的专有零件库,并自由添加和修改库内容等管理功能。 

       4结束语 

         基于Web的零件库系统对实现网络化制造以及建立基于Web的供应链管理系统都具有十分重要的意义。 

转载于:https://www.cnblogs.com/leojun/archive/2011/12/13/2287011.html

相关文章:

  • 监控行业信息化应用
  • repeater 用控件分页,checkbox 全选 ,全部删除 ,单行删除 完整功能 !
  • 探讨神奇的需求变更:程序员遭遇车祸成植物人,需求变更将其唤醒
  • Vbs 禁用启用网卡
  • 谷歌:全球10大爬升最快搜索关键字排行榜 Google Zeitgeist 2011
  • Exchange系列—配置SMTP连接器的安全机制
  • 开始写博客吧
  • mnesia数据库学习笔记一
  • 某机字长为32位,存储容量为64MB,若按字节编址.它的寻址范围是多少?
  • 用深信服SG4300代替ISA
  • 开源扫盲:MySQL是否为完全免费软件?
  • execute、executeUpdate、executeQuery三者的区别及各自返回值
  • 更改ubuntu的系统语言
  • Basic INFO - InstallShield制作的安装包如何进行平台过滤
  • Lync常识之可直接注册在Lync Server上的IP PHONE
  • 【Leetcode】101. 对称二叉树
  • 30秒的PHP代码片段(1)数组 - Array
  • EOS是什么
  • Java多线程(4):使用线程池执行定时任务
  • PAT A1050
  • Protobuf3语言指南
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 高度不固定时垂直居中
  • 给github项目添加CI badge
  • 巧用 TypeScript (一)
  • 区块链技术特点之去中心化特性
  • 使用putty远程连接linux
  • 你对linux中grep命令知道多少?
  • 《天龙八部3D》Unity技术方案揭秘
  • 关于Android全面屏虚拟导航栏的适配总结
  • 如何正确理解,内页权重高于首页?
  • ​LeetCode解法汇总518. 零钱兑换 II
  • $(selector).each()和$.each()的区别
  • (9)STL算法之逆转旋转
  • (LeetCode) T14. Longest Common Prefix
  • (四)图像的%2线性拉伸
  • (五)IO流之ByteArrayInput/OutputStream
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • (状压dp)uva 10817 Headmaster's Headache
  • .NET 发展历程
  • .NET构架之我见
  • .Net中wcf服务生成及调用
  • .project文件
  • [].slice.call()将类数组转化为真正的数组
  • [2024最新教程]地表最强AGI:Claude 3注册账号/登录账号/访问方法,小白教程包教包会
  • [AIGC] 如何建立和优化你的工作流?
  • [C#]DataTable常用操作总结【转】
  • [DP 训练] Longest Run on a Snowboard, UVa 10285
  • [Linux_IMX6ULL驱动开发]-基础驱动
  • [LLM][FT]大模型Fine-Tuning相关技术0
  • [one_demo_10]递归解决汉诺塔问题
  • [QJS xmake] 非常简单地在Windows下编译QuickJS!