基于CoM组件的CAD开发.pdf_第1页
基于CoM组件的CAD开发.pdf_第2页
基于CoM组件的CAD开发.pdf_第3页
基于CoM组件的CAD开发.pdf_第4页
全文预览已结束

基于CoM组件的CAD开发.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2 0 0 5 年工程图学学报 2 0 0 5 第2 期J o U R N A Lo FE N G I N E E R I N GG R A P m C S N o 2 基于C o M 组件的C A D 软件 二次开发常用几何算法库建立 王立新1 一 黄文良1 1 南京理工大学机械工程学院 南京2 1 0 0 9 4 2 郑州大学机械工程学院 郑州4 5 0 0 0 1 摘要 组件对象模型c o M c o l p o n e n t o b j e c t M o d e l 为构建组件提供了技术支持 按c 0 M 制作的组件可以在不同平台上得以重用 c O M 通过包容和聚合来实现继承和扩展 文章总结了C A D 软件二次开发中常见的几何问题 提出了使用V B 按照C O M 组件的思想 建立一套与机器无关 二进制兼容的常用几何算法库 描述了一个典型算法 任意两圆求交 点 建库 扩充和使用的详细过程 关键词 计算机应用 几何算法库 组件对象模型 c A D 二次开发 中图分类号 T P3 9 1 7 2 文献标识码 A文章编号 1 0 0 3 0 1 5 8 2 0 0 5 0 2 0 1 4 6 0 4 在商品化的C A D 软件基础上进行二次开发 是目前广泛采用的技术手段 可以花费比较少的 精力较高水平地解决专业领域问题 在二次开发 编程过程中 绘制图形经常涉及到如何准确获得 图形特征点的几何问题 比如任意两个圆的交点 等 这些几何问题在人们直观看来是很容易的问 题 但在C A D 软件的二次开发中 却需要拿出 一套通用的解决方案 利用计算机图形学的知识 可以构建一套常用的算法 经过精心调试后 按 照C O M 组件的思想生成一套与机器无关 二进 制兼犁 的算法库 可作为一种技术积累手段 供今后的相关工作使用 1 二次开发中的常见几何算法 在对A u t o d e s kI n v e n t o r 的二次开发过程中 将遇到的几何计算问题整理归结为算法库 如 任意直线和圆的交点 点关于直线的镜像点 两 点连线的延长点坐标 点到直线的距离等 可以 利用计算机图形学知识分别将它们设计成通用 的算法库 下面以任意两圆求交点为例加以说 明 基本思想 任意两个圆 1 y l n 和 娩 r 2 经过坐标系的平移 旋转后 总能将它们 变成左圆阻 y L R L 和右圆 x R y R 尺R 如 图1 图3 所示的几种情况 假设 总是以左边的 圆心作为新坐标系的原点 以两圆心连线作为工 轴 左圆圆心 O 0 半径R L 右圆圆心 0 D 半径凤 y J I D 厂 一 心x L 叭 图1 两圆相切 收稿日期 2 0 0 3 一0 8 0 7 基金项目 国防预先研究共用基金资助项目 4 1 3 0 5 0 1 0 2 0 4 作者简介 王立新 1 9 6 7 一 男 河南新乡人 讲师 博士研究生 主要研究领域为机械系统c A D 仿真及虚拟样机技术 万方数据 第2 期王立新等 基于c o M 组件的c A D 软件二次开发常用几何算法库建立 y I D 一一 厂 小 x 一 乡 图2 两圆不相交 y J I D 一 孙x 之 图3 两圆相交 1 求两圆心距离 D 魄 再 2 仅一 j 2 2 如果D 0 同心圆 交点不存在 3 如果胤 吼 D 交点 不存在 4 如果毗 熙 D 两圆外切 巧1 巧2 毗 剪l 豌 0 5 如果l R L 一艘I D 两圆内切 a 如果左圆半径小 确 琥 一吼 彬l 豌 O b 如果右圆半径小 巧1 可2 R L 撕l 豌 0 6 两圆相交 则由方程j z 7 2 R 2 一功2 2 足2 可得交点工 巧z 堡二学 撕l 切2 尺 2 一面2 7 有了新坐标系下的两交点 巧1 剪1 和 碗 娩 坐标 只需要将坐标系还原为原坐标 系即可 1 求还原坐标系的旋转角 痧 这里假 设圆2 是右圆 a 如果z 1 砣 若沈 1 则 妒 兀 2 否则 痧 一吡 b a r c 瞎 盟 换 2 1 知识知 卧降 s i n e 切 c o s 彩 0 f 1 2 从而得到 任意两个圆 l y l n 和右圆 娩 您 的交点坐标 材I 拶1 和 材2 耽 2 用V B 开发基于C O M 组件的算 法库 2 1 基本知识 v B 6 0 是c O M 敏感型语言 用它来创建组 件十分方便 C O M 的所有细节 包括接口 都被完 全隐藏 开发者无需定义接口 可直接在类模块 中定义方法 属性 编写其实现代码 因为它的 组件工程支持的是自动化双重接口 所以还可在 类模块中声明事件 并通过操作 方法 来引发事 件 在幕后 自动维护一个默认接口 一类名 用V B 创建的组件也能被其它语言工具调用 像 D e l p h i5 就能直接引人类型库 并可将它转换成 等价的I D L 文件 再经M I D L 编译 就可产生相 应的H 头文件 这样V C 也可调用V B 创建的 组件 3 1 如果所需要建立的部件能够服务于多个应 用程序 并且能够在远程计算机上运行 则应该 建立一个A c t i v e XE X E 如果所需要建立的部 件能够与您的应用程序运行在同一个进程中 则 应该建立一个A c t i v e X D L L 一个组件中可以 容纳多个类 这时的组件就成为了类库 每个 类又可以容纳多个属性 事件和方法 2 2 算法库的扩充 弋O M 的包容 算法库的扩充有两种渠道 源代码级的扩充 和二进制扩充 1 源代码级的扩充 如果手头有源代码的话 可以在源代码基础 上 在已有类中添加新的成员函数 也可以添加 新的类 重新编译 生成E X E 或D L L 文件 2 二进制扩充 重用 2 在原来的坐标系中 由图形学中坐标变 径 按照C O M 的标准 实现二进制重用有两种途 包容 C o n t a i l l l l l e m 和聚合 A g g r e g 撕o n mM l V 人 墨E 万方数据 工程图学学报 2 0 0 5 年 思想基本一致 只是在实现方法上有所不同 本 文中只列举了包容的例子 3V B 中组件的创建和使用实例 在V B 中新建一个工程 选择A c t i v e xE x E 或A c t i v e XD L L 将类名改为 g e o c a l 在 类中建立常用的几何算法函数 P u b l i cF u n c t i o ni n U i n e c i r x 0 y 0 r k B x 1 y 1 x 2 y 2 直线和圆的交点 P u b l i cF u n c t i o n e x L p o i n t X m 1 y j n l x I I l 2 y m 2 L x l y 1 两点延长线上的点 在 工程属性 对话框中的 工程描述 中 填上组件名称G e o m e yA l g 嘶t l l mL i b 工程名改 为g e o 存盘并生成g e o e x e 或g e o d 1 1 1 注册 在运行V B 编程系统的计算机上 g e o e X e 生成后 即被自动注册到系统中 如果将组件文 件移植到一台新的计算机上 g e o e x e 使用注册命 令g e o e x e r e g s v r 3 2 而g e o d l l 的注册命令是 r e g s w 3 2g e o m l 2 V B 中的对象浏览器 一旦组件编译成功后 经过注册 在其他的 v B 工程中加以引用 V B 的对象浏览器中就可以 看到组件g e o 中的类g e o c a l 及它们的成员函数 i n t J i n e c 吨e x L p o i n t 3 算法库扩充 包容 在V B 中新建一个工程 选择A c t i v e xE x E 或A c t i v e XD L L 在工程中引用G e o m e 町 A l g o r i t l l mL i b 在类中添加 D i maA sg e o g e o c a l 增加新的成员函数 P u b l i cF u n c t i o nD i s t x y x 1 y 1 x 2 y 2 A s D o u b l e 求点 x y 到直线 x 1 y 1 一 x 2 y 2 的距离 P I l b l i cF u n c t i o n I I l i n 二p o i n t X m 1 y m 1 k m 2 y I I l 2 x 1 y 1 x 2 y 2 点关于直线的 镜像点 P u b l i cF u n c t i o nc a l j n t e r s e c t x 1 y 1 r 1 x 2 y 2 r 2 X j n a l l y j n a l l X j f i n a l r y j n a 埘 两 圆的交点 对已有成员函数的重用 可以仍然使用原来 的名字e x L p o i n t 和i n U i n e c i r P I l b l i cF u n c t i o ne x t p o i n t X m 1 y m 1 X I I l 2 y r I l 2 L x 1 y 1 S e ta N e wg e O g e o c a l e x L p o i n t a e x L p o i n t x J n 1 y m 1 x j I l 2 y 1 2 L x 1 y 1 E n dF h n c t i o n P u b l i cF u n c t i o ni n t l i n e c i r x 0 y 0 r k B x l y 1 x 2 y 2 S e ta N e wg e o 名e o c a l i n t l i n e i r a i n U i n e c i r x 0 y 0 r k B x 1 y 1 x 2 y 2 E n dF u n c t i o n 4 V B A 中的使用 测试 目前很多商品化的软件 A u t o C A D I n v e n t o r S o l i d W o r k s S o l i d E d g e M S O f f i c e s i o 都提供 V B A 的二次开发手段 使用户很容易对软件进 行定制和二次开发 V B A 是 的一个子集 在 作二次开发中具有和v B 一样强大的功能 并且 是嵌入到宿主软件的同一进程中 极具效率优 势 在V B A 中使用组件和在V B 中一样 引用 已注册的组件后 就可将它当成现成的类使用 例如 求圆 x 0 y 0 r 和直线y k B 的 交点 x j l y j l 和 x j 2 y j 2 可用下面的代码 d i mg e oa sg e o g e o 一c a l s e tg e o n e wg e o g e o c a l I fg e o i n L l i n e c i r x 0 y 0 r k B x 1 y 1 x 2 y 2 1 m e n M s g b o x 交点不存在 E l s e X j l x l y j l y 1 X j 2 x 2 y j 2 y 2 E n d i f S e t g e o N o t l l i n g 4 结束语 在总结C A D 二次开发中常用几何问题的基 础上 提出了使用V B 按照c O M 组件的思想建 立一套与机器无关 二进制兼容的常用几何算法 库 描述了一个典型算法 任意两圆求交点 建库 扩充和使用的详细过程 万方数据 第2 期王立新等 基于c o M 组件的c A D 软件二次开发常用几何算法库建立 1 4 9 2 孙家广 计算机图形学 第3 版 M 北京 清华大 参考文献学出版社 2 0 0 2 3 6 5 3 7 3 3 周振江 周洞汝 杨国录 基于C o M 的软件组件 J 1 余英 梁刚 s u a lC 实践与提高 C O M计算机应用 2 0 0 l 2 1 3 6 8 和c O M 篇 M 北京 中国铁道出版社 2 0 0 1 4 张伟 张晓明 薛冬娟 等 用V B 实现c O M 组 5 9 9 5 件的包容 J 计算机应用 2 0 0 1 2 1 1 0 9 9 1 0 0 E s t a b l i s h m e n to ft h eG e o m e t r y A l g o r i t h mL i b r a r yU s e di nC A D S o f t w a r e R e d e V e l 叩m 明tB a s e d o nC o M W A N GL i x i n l 一 H U A N GW b n l i a n 9 1 1 s c h o o lo fM e c h 枷c a lE n g i n e e r i n g N 锄j 吨u n i v e r s i t yo fs c i e n c e 如d 瞰I l i l o l o g y N 删i n g2 1 0 0 9 4 c h i I l a 2 S c h o o lo fM e c h a I l j c a lE n g i I l e e 血g z h e n g z h o uU I l i v e r s i 吼Z h e n g z l l o u4 5 0 0 0 1 C h i n a A b s t 豫c t C O M C o m p o n e n tO b j e c tM o d e l p r o V i d e sas e to fs t a l l d a r dt oc o n s 仃u c tc o m p o n e n t T l l e c o m p o n e n t c r e a t e da c c o r d i n gt oC O M c a I lb eu s e dw i d e l yo nd i f f e r e n tc o m p u t e rp l a 怕蛐 C O Mu s e s C o n t a i n m e n tA g g r e g a t i o nt or e a l i z ei n h e r i t i n ga n de x p a n d i n g T h i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论