FreeCAD源码分析: PartDesign模块

济南友泉软件有限公司

一、功能概述

当使用Sketcher完成草图绘制之后,便可以通过PartDesign进行三维实体模型的创建。实际上,PartDesign模块正是基于Part、Sketcher模块实现了基于特征的参数化实体建模方法。

特征来源于制造工程的应用。目前,关于“什么是特征”有很多种定义,其中一种定义是:特征是指具有确定的约束关系的几何实体。

特征建模则是指采用具有一定设计或加工功能的特征作为造型的基本单元来建立零部件的建模方法。也就是说,在特征建模中,三维模型可以看作为一系列相对简单的几何体的有序组合。

由此可以看出,特征及其组合方式就是特征建模的核心要素。因此,可以从这两方面来分析PartDesign模块。

PartDesign提供的主要功能包括:

  • 特征

特征可以简单理解成相对简单的几何体。PartDesign::ProfileBased及其子类基于二维草图,通过Pad、Pocket、Hole、Revolution、Loft、Groove等操作生成三维几何体。

  • 组合特征

在特征建模中,一个复杂的三维模型是由一系列简单几何体通过一定的方式组合而成。PartDesign::Body(继承自Part::BodyBase)提供了包含一组继承自Part::Feature的feature列表,其中第一个feature通常称之为base feature(即Part::BodyBase::BaseFeature);最后一个feature称为Tip(即Part::BodyBase::Tip),对应着Part::BodyBase模型的最终形状。从base feature按顺序到Tip,后一个feature在前一个feature基础之上,完成进一步的模型修改,以此类推,最终完成整个模型的修改。

二、特征建模

PartDesign是一个基于特征的实体建模工具,以特征作为组成模型的基本单元,实体模型就是特征的累加,通过特征完成设计的。特征建模就是由各种特征来构建零件模型,零件模型的设计就是特征的累积过程。通常,特征之间存在着相互依赖的关系,使得某一单独特征的改变,会牵动其他特征的变更。

通常,特征可以分为以下几类:

  • 基准特征

基准特征用于建立其他特征时的定位,又称辅助特征或参考特征,主要包括基准面、基准轴、基准点和局部坐标系。

  • 基本特征

基本特征是参与运算的原始特征,而不是运算的结果,只要各处关键尺寸,便可以直接生成,包括长方体、圆柱体、球体、圆锥体等。

  • 草图特征

很多三维模型的建立都是从草图开始的,草图是一种特殊的基本特征。

  • 附加特征

附加特征(又称二次特征)实在已有特征基础之上通过运算形成的特征,包括草图拉伸、倒角、倒圆、孔、阵列等。

三、PartDesign主要组件

PartDesign正是通过基准特征、草图特征、附加特征等实现了特征建模功能。

3.1 PartDesign::Body

PartDesign实际上是提供了一个基于草图的特征流水线,据此实现全参数化建模功能。每个PartDesign在实际场景中通常表示一个零件。

3.2 基准特征

基准特征主要由于定义特征建模过程中的三维空间参考的基准,起辅助作用,为基本特征的创建和编辑提供操作的参考。基准特征没有物理容积,也不对几何元素产生影响。

基准特征主要包括PartDesign::CoordinateSystem、PartDesign::Point、PartDesign::Line、PartDesign::Plane、PartDesign::ShapeBinder、PartDesign::SubShapeBinder等。

顺便一提PartDesign::ShapeBinder与PartDesign::SubShapeBinder的区别:PartDesign::ShapeBinder实际上是一个只读引用,是通过连接的形式引用其他Body内的几何体(来自二维草图与三维特征等),但是却不能对ShapeBinder进行编辑修改等几何操作;而PartDesign::SubShapeBinder可以理解成原有几何体的副本引用,保持与原几何体的同步,同时可以当作一个独立的几何体进行常规几何操作。

3.3 形变特征

特征实际上表示基于草图的操作,用于在二维草图的基础之上增加第三维度,从而完成三维几何体创建。主要包括PartDesign::Pad、PartDesign::Revolution、PartDesign::Pocket、PartDesign::Hole、PartDesign::Loft、PartDesign::Pipe、PartDesign::Groove等。

3.4 工程特征

PartDesign::Fillet、PartDesign::Chamfer等PartDesign::DressUp派生类提供了倒角、削角等常有的三维几何处理功能。

参考资料

  1. FreeCADWeb
  2. 杜平安. CAD/CAE/CAM方法与技术. 清华大学出版社, 2010.
  3. 王定标. CAD/CAE/CAM技术与应用. 化学出版社, 2010.

FreeCAD源码分析: PartDesign模块相关推荐

  1. FreeCAD源码分析:FreeCADGui模块

    FreeCAD源码分析:FreeCADGui模块 济南友泉软件有限公司 FreeCADGui项目实现了界面操作.模型显示与交互等相关功能,项目构建生成FreeCAD(_d).dll动态链接库. Fre ...

  2. FreeCAD源码分析:FreeCADMain模块

    FreeCAD源码分析:FreeCADCmd\FreeCADMain\FreeCADPy模块 济南友泉软件有限公司 FreeCAD提供了控制台.GUI.Python等三种运行模式,分别对应FreeCA ...

  3. koa源码分析-co模块以及thunk

    Thunk以及CO模块 co4.0之前都是返回的thunk函数 之后的都是返回promise thunk thunk:在 JavaScript 语言中,Thunk 函数替换的是将多参数函数,替换成单参 ...

  4. Python3.5源码分析-sys模块及site模块导入

    Python3源码分析 本文环境python3.5.2. 参考书籍<<Python源码剖析>> python官网 Python3的sys模块初始化 根据分析完成builtins ...

  5. nginx源码分析之模块初始化

    在nginx启动过程中,模块的初始化是整个启动过程中的重要部分,而且了解了模块初始化的过程对应后面具体分析各个模块会有事半功倍的效果.在我看来,分析源码来了解模块的初始化是最直接不过的了,所以下面主要 ...

  6. Fabric源码分析-共识模块

    正好这些天要有一个需求要帮客户魔改Fabric-v0.6,把一些hyperchain的高级特性移植过去,借此机会把之前看过的源码在梳理一下. 下面就是对Fabric共识模块的源码分析和梳理,代码都是以 ...

  7. [Abp vNext 源码分析] - 2. 模块系统的变化

    一.简要说明 本篇文章主要分析 Abp vNext 当中的模块系统,从类型构造层面上来看,Abp vNext 当中不再只是单纯的通过 AbpModuleManager 来管理其他的模块,它现在则是 I ...

  8. Canal源码分析deployer模块

    canal有两种使用方式:1.独立部署 2.内嵌到应用中. deployer模块主要用于独立部署canal server.关于这两种方式的区别,请参见server模块源码分析.deployer模块源码 ...

  9. 5章 性能平台GodEye源码分析-第三方模块

    5. 第三方模块 5.1 Crash(XCrash) Crash监控崩溃后的堆栈上传,作者采用接入爱奇艺的XCrash框架 源码分析 1.启动Crash的监控 Crash的监控通过反射启动XCrash ...

  10. WebRTC源码分析——Call模块

    目录 1. 引言 2. Call对象的创建 2.1 创建CallFactory对象 2.2 创建Call对象 2.2.1 PeerConnection.CreateCall_w 2.2.2 CallF ...

最新文章

  1. 怎么把dll库写成MATLAB接口,如何在Matlab中应用动态连接库接口技术
  2. Java编程的逻辑 (59) - 文件和目录操作
  3. linux脚本日期时间,Linux 日期和时间操作详解
  4. js逻辑训练题_二建冲刺必刷300题!精选历年真题+母子题+模考易错题!
  5. linux cron 定时任务无效 /var/spool/cron/xxx
  6. 一起学并发编程 - 优雅关闭
  7. gridview 简单的分页
  8. 英文简历 计算机知识,计算机应届生英文简历范文
  9. (转)Spring Boot 2 (十):Spring Boot 中的响应式编程和 WebFlux 入门
  10. 计算机组成原理pd指令是什么,计算机组成原理期中考试(DOC).doc
  11. 052、JVM实战总结:从测试到上线:如何分析JVM运行状况及合理优化?
  12. 20155235 信息安全技术概论 第二次实验报告
  13. pdf2image报错,pdf2image完整安装
  14. 【开源系列】三国演义LBS (二)游戏策划案
  15. 工控计算机电力行业标准,标准协议工控协议_IEC104.pdf
  16. 技术架构图-安全架构图
  17. python运算符重载、并且编写复数类的加减乘除_编程基础篇:定义一个复数类Complex,重载运算符“+,-,*,/”,使之能用于复数的加减乘除.....出现的问题及代码...
  18. 时尚品牌如何做微信营销推广?具体方法有哪些?
  19. 请教双WAN口路由器设置
  20. 【因果推断的统计方法】潜在结果模型

热门文章

  1. Y460安装桌面导航
  2. arduino android模拟器,模拟仿真Arduino软件(Virtual Breadboard)
  3. VMware Workstation 8.0 序列号
  4. 计算机boot进入u盘启动,BIOS中设置U盘启动的几种方法
  5. 计量经济学笔记1-Eviews操作-一元线性回归
  6. inception-v1 自复现 有问题尽管问
  7. 【钛坦白】清华大学李建:深度学习在时空大数据分析中的应用(转载)
  8. 【事件相机整理】信号处理、噪声与滤波
  9. java 切图 软件_Java 切图
  10. Linux转发性能评估与优化 转发瓶颈分析与解决方案