FreeCAD
文章平均质量分 81
JiNan.YouQuan.Soft
这个作者很懒,什么都没留下…
展开
-
FreeCAD源码分析:Serialization
序列化(Serialization)是在程序运行时将对象转换成字节流的过程,进而将二进制字节流罗盘到文件系统或者通过网络发送到远端。而反序列化(Deserialization)则恰恰相反,是由二进制字节流重新构建对象的过程。原创 2024-07-17 12:02:00 · 348 阅读 · 0 评论 -
FreeCAD源码分析:Type System
虽然C++11引入了RTTI、Metaprogramming 等技术,但C++在Reflection方面依旧功能有限。作为反射系统的组成部分,类型系统(Type System)提供运行时类型信息(RTTI)、依据类名创建对象等功能。在FreeCAD中,类型系统是插件式开发框架、分层架构等核心实现的基础,因此,有必要对这个基础问题予以研究分析。原创 2024-07-16 16:10:45 · 988 阅读 · 0 评论 -
FreeCAD源码分析:Property System
按照面向对象设计(Object-Oriented Design, OOD)的信条,OOD大体上包括两方面的内涵:一方面,需要将业务数据抽象成(树状/层状)数据对象,这就是所谓的数据对象模型(Data Object Model);另一方面就是职责的分摊与聚合,将业务逻辑分摊到逻辑单元,逻辑单元之间通过预定义的接口完成交互,进而完成功能/逻辑的聚合,这也就是所说的面向接口编程(Interface-Oriented Programming)。原创 2024-07-10 16:15:56 · 1261 阅读 · 0 评论 -
Qt源码分析:窗体绘制与响应
作为一套开源跨平台的UI代码库,窗体绘制与响应自然是最为基本的功能。在前面的博文中,已就Qt中的元对象系统(反射机制)、事件循环等基础内容进行了分析,并捎带阐述了窗体响应相关的内容。因此,本文着重分析Qt中窗体绘制相关的内容。在本文最后,通过FreeCAD SheetTableView单元格缩放功能的实现,来对研究分析予以检验与测试。原创 2024-06-29 13:03:54 · 1114 阅读 · 1 评论 -
The view model in Acise
在FreeCAD中,借助于Boost Signals2实现了业务层、显示层的分层,但整个FreeCAD Gui层却采用了Coin3D进行渲染,因此,很难在这方面进行扩展。相较之下,在SALOME中,可以为不同的Module指定特定的ViewModel,支持OpenGL、OCC、VTK、ParaView、Qwt等多种渲染方式。原创 2024-05-26 11:12:32 · 1622 阅读 · 0 评论 -
The object model in Acise
在FreeCAD中,整体上采用了分层架构,同时借助于Python完成了module管理;在SALOME中,提供了基于Module的分层数据模型。原创 2024-05-16 15:45:13 · 909 阅读 · 0 评论 -
Windows11下编译FreeCAD 0.21.2
本文记录Windows11下编译FreeCAD 0.21.2的流程。原创 2024-04-25 10:32:45 · 1773 阅读 · 7 评论 -
Windows下编译安装OpenCASCADE
OpenCASCADE 是一套开源的几何建模系统,提供了曲面、实体等建模方式,已经广泛应用在CAD、CAE、CAM等软件开发。OpenCASCADE官网已经提供OpenCASCADE的编译安装方法,本文结合实操过程,简述其过程。原创 2023-01-29 22:11:59 · 2551 阅读 · 0 评论 -
qt-mvvm代码分析
qt-mvvm是GitHub上一套基于Qt的MVVM框架。本文旨在分析qt-mvvm的实现过程,来深入研究MVVM的实现要点。原创 2022-08-28 18:58:27 · 3997 阅读 · 0 评论 -
FreeCAD源码分析:Undo/Redo实现原理
Undo/Redo是CAx软件中常见的操作功能,其实现方法也相对比较成熟,本文通过分析FreeCAD Transaction机制,一方面是为了深化对FreeCAD代码的理解,学习其设计思路,深入领略其设计模式的使用范式;另一方面鉴于Undo/Redo功能的普遍性,通过阐述Undo/Redo的实现原理,旨在希望对从事国产CAx软件开发的朋友有所帮助。注1:限于笔者研究水平,难免有理解不当,欢迎批评指正。注2:文章内容会不定期更新,欢迎交流讨论。一、预修知识1.1 设计模式Undo/原创 2022-05-24 22:08:30 · 3238 阅读 · 5 评论 -
Windows下编译Infact库
Infact是Google研发的一套动态创建对象的C++库。其社区版本仅提供了基于Make的项目构建。而目前大多数开源系统均使用CMake作为跨平台的项目构建工具。因此,本文提供了Infact CMake构建的方法。一、下载源码git clone https://github.com/google/infact.gitgit checkout -b v1.0.8 v1.0.8二、CMake配置在src/infact目录下,新建CMakeLists.txt文件,添加一下内容,原创 2022-05-22 12:05:31 · 303 阅读 · 0 评论 -
CAx软件开发技术专题:后处理可视化常用算法
后处理可视化是CAx软件的重要组成模块。开源代码VTK以其跨平台、丰富的数据结构与算法、可扩展性、易用性等特点而逐渐成为了CAx软件后处理首选的技术方案。虽然VTK提供了相对完备的后处理功能,但要用好这些后处理代码,却需要对相关后处理算法有一定研究和理解。一、MarchingCube算法二、FlyEdges算法参考文献Schroeder W , Maynard R , Geveci B . Flying edges: A high-performance scalab...原创 2022-05-16 20:28:29 · 967 阅读 · 0 评论 -
OpenSceneGraph源码分析:OpenGL Object
一、OpenGL ObjectOpenGL Object(以下简称GLObject)可以看作是OpenGL状态的容器,提供了OpenGL渲染过程中顶点数据、纹理数据、帧缓存、着色器等相关属性。通过绑定到图形上下文(Graphics Context)来修改渲染管线相关状态值,进而实现对OpenGL渲染管线的控制。An OpenGL Object is an OpenGL construct that contains some state. When they are bound to the c..原创 2022-05-10 22:53:26 · 467 阅读 · 0 评论 -
计算机图形学:四元数
Quaternion(四元组,四元数)是爱尔兰数学家William Rowan Hamilton(1805-1865)在1843年发明的一个纯粹数学概念。最初,Hamilton为了表示矩阵相除而引入,但是直到一个实际之后,Quaternion才逐渐应用到了计算机图形学、电磁学等领域。一、定义二、数学性质三、应用网络资料参考文献...原创 2022-03-03 21:47:53 · 1289 阅读 · 0 评论 -
FreeCAD源码分析:Path模块
济南友泉软件有限公司一、功能概述二、预修知识三、主要组件四、讨论参考文献网络资料FreeCAD Pathhttps://wiki.freecad.org/Path_Workbench原创 2022-01-01 00:18:28 · 1267 阅读 · 0 评论 -
FreeCAD源码分析:Assembly3模块
济南友泉软件有限公司一、功能概述二、编译安装三、主要组件四、讨论参考文献网络资料FreeCAD Assembly3https://github.com/realthunder/FreeCAD_assembly3原创 2022-01-01 00:12:35 · 1127 阅读 · 2 评论 -
FreeCAD源码分析:FEM模块
济南友泉软件有限公司一、功能概述FreeCAD不仅是一款开源免费的CAD软件,同时也是一套CAx(CAD/CAE/CAM)软件开发框架。在FreeCAD强大的三维全参数建模基础之上、通过集成Gmsh、Netgen、Calculix、Z88、VTK第三方工具,FEM模块实现了全流程的有限元仿真分析(前处理、网格划分、求解、后处理)。参考资料FreeCAD FEM O. C. Zienkiewicz. The Finite Element Method for SOlid a.原创 2021-12-04 21:35:01 · 4700 阅读 · 3 评论 -
FreeCAD应用:一道小学平面几何考题
济南友泉软件有限公司最近,正在上小学的大外甥女“嘟嘟同学”向我请教一道平面几何体,如下已知半圆内的内接直角三角形ABC,其中直角边BC=8cm,高BD=4.8cm,求阴影部分的周长与面积。分析:很明显,问题关键在于求解AB长与圆的半径。很自然的想到通过代数运算来进行求解。解法:设AB长度位L,圆半径为R,则有联立上述两式,得如果使用FreeCAD Sketcher模块的几何约束求解器,如何求解呢?...原创 2021-11-22 21:06:47 · 1226 阅读 · 2 评论 -
FreeCAD二次开发:集成二维CAD控件MxDraw
济南友泉软件有限公司FreeCAD是一套基于OpenCASCADE/QT的三维全参数化建模开源代码,虽然提供了Draft、TechDraw等二维绘图功能,但是其二维建模能力比较弱。因此,需要研究借助于(非)商业软件包来强化FreeCAD的二维建模功能。Ref. from FreeCAD TechDraw-----------------------------------------------------------------------------------------------If原创 2021-11-07 16:08:21 · 7673 阅读 · 5 评论 -
数值优化算法
文献资料一文读懂L-BFGS算法https://blog.csdn.net/weixin_39445556/article/details/84502260原创 2021-11-01 23:21:36 · 478 阅读 · 0 评论 -
FreeCAD源码分析:TechDraw模块
FreeCAD源码分析:TechDraw模块济南友泉软件有限公司一、功能概述TechDraw模块主要用于生成三维几何体对应的二维技术图,而这些三维几何体通常是由Part、PartDesign、Arch等模块创建的。二、主要组件参考资料FreeCAD TechDraw...原创 2021-07-17 19:34:15 · 1058 阅读 · 1 评论 -
FreeCAD源码分析:Assembly4模块
一、功能概述Assembly4模块实现可多个几何体对象的装配功能。特别需要指出的是,Assembly4装配功能的实现并不是借助于几何约束求解器,而是通过三维局部坐标系变换(也称作基准坐标系,Local Coordinate System, Datum Coordinate System。具体来说,Assembly4模块中使用一个App:Part类型的Model表示装配体,可以将多个几何体(App::Part、PartDesign::Body)以App::Link对象的形式添加到装配体Model中。在原创 2021-06-18 21:20:26 · 3526 阅读 · 0 评论 -
FreeCAD源码分析: PartDesign模块
FreeCAD源码分析: PartDesign模块济南友泉软件有限公司PartDesign模块基于Part、Sketcher等模块功能实现了特征编辑(Feature Editing)建模的功能。原创 2021-06-12 18:22:54 · 1667 阅读 · 1 评论 -
几何约束求解器研究
现代CAD系统一般由数据交换、二维草图、曲面建模、三维建模、装配建模、工程制图等模块组成,而几何约束求解是二维草图与装配建模的核心技术之一(另一个核心技术是几何造型技术,也就是模型表示问题)。原创 2021-05-29 09:01:21 · 5361 阅读 · 2 评论 -
FreeCAD源码分析:Sketcher模块
FreeCAD源码分析:Sketcher模块济南友泉软件有限公司一、功能概述Sketcher模块基于Part模块功能实现了特征编辑(Feature Editing)建模的功能。这类参数化建模系统主要包括几何表示、约束求解器等两大组成部分。二、约束Scketcher模块使用约束与约束求解器来创建二维几何图,PartDesing正是在Scketcher基础之上提供了”Feature Editing”建模方式:Sketcher生成的二维几何体,通过拉伸、旋转等操作来增加第三维度,从..原创 2021-05-23 14:45:03 · 4788 阅读 · 3 评论 -
FreeCAD中对象属性的Python访问机制
FreeCAD中对象属性的Python访问机制济南友泉软件有限公司在Part模块一节中,对Part模块的主要组件以及原理进行了较为详细的介绍。但有一个遗留问题,即Python脚本中是如何实现对Part::Feature及其子类的属性访问的呢?Part::Face继承自Part::Feature,因此,可以通过Part::Face为例来说明Python中Part::Face相关属性的访问过程。一、Python C扩展的原理在剖析Part::Face代码实现实现之前,需要先要了解一下Pyt.原创 2021-05-21 21:45:20 · 1291 阅读 · 0 评论 -
FreeCAD C/C++/Python混合开发/调试方案
配置FreeCAD C/C++/Python混合调试环境济南友泉软件有限公司在FreeCAD中,底层核心代码使用C/C++编写,同时提供了Python Extensions用于提高开发速度。因此需要研究C/C++/Python混合调试(Mixed-mode Debugging)。一、基础环境操作系统:Windows 10 64位 专业版编译器: Visual Studio 2019 Community EditionFreeCAD;FreeCAD 0.19LibPack: .原创 2021-04-05 15:42:47 · 3607 阅读 · 2 评论 -
Ubuntu20.10系统FreeCAD 0.19编译安装
Ubuntu20.10系统FreeCAD 0.19编译安装济南友泉软件有限公司一、安装依赖包 1.1 安装gitFreeCAD使用Git进行代码版本管理,因此首先需要现在Git.sudo apt install git 1.2 第三方包安装FreeCAD编译运行需要一些列的第三方包,好在使用Ubuntu下的包管理工具可以轻松完成。sudo apt install cmake cmake-gui libboost-date-time-dev libboost-d...原创 2021-03-23 16:47:21 · 1740 阅读 · 1 评论 -
同步GitHub上FreeCAD社区代码
同步GitHub上FreeCAD社区代码济南友泉软件有限公司随着GitHub上FreeCAD 新版本的发布与更新,为了将FreeCAD新增特性及问题修复引入到自己已有的代码中,需要同步FreeCAD社区代码。0. 名词解释本地仓库(local repository):指本地电脑上的代码上游仓库(upstream repository):指GitHub上FreeCAD社区代码源仓库(origin repository): 指从FreeCAD社区Fork出来的远程代码仓库1...原创 2021-03-23 14:33:40 · 649 阅读 · 0 评论 -
FreeCAD源码分析:Part模块
FreeCAD源码分析:Part模块济南友泉软件有限公司一、功能概述Part模块通过调用开源软件包OpenCASCADE (OCC) 实现了创建三维基本几何体、布尔操作等功能,为各个Workbench提供了2D/3D建模功能,是整个FreeCAD几何建模功能的核心。具体来说,Part模块提供的主要功能包括:封装OCCPart::Geometry2d及其子类封装了OCC中Geom2d_Geometry及其子类;Part::Geometry及其子类封装了Geom_Geometry.原创 2021-03-02 22:34:55 · 2719 阅读 · 1 评论 -
制作FreeCAD安装包的方法
制作FreeCAD安装包济南友泉软件有限公司FreeCAD使用NSIS生成Windows系统下的安装包。由于NSIS只能创建2GB的安装包,因此需要NSIS Studio方可完成FreeCAD安装包的制作。NSIS脚本存放在src/WindowsInstaller目录下,在src/WindowsInstaller/Settings.nsh文件中,配置由INSTALL项目构建生成的FreeCAD安装文件路径,打开NSIS Studio程序,加载运行src/WindowsInsta.原创 2021-02-28 16:48:29 · 1206 阅读 · 1 评论 -
FreeCAD源码分析:FreeCADMain模块
FreeCAD源码分析:FreeCADMain模块济南友泉软件有限公司 一、模块功能概述FreeCADMain主要用于根据配置参数(默认参数、用户参数)启动软件FreeCAD,具体来说,主要功能包括:配置参数生成默认配置参数,解析用户输入参数,订制FreeCAD的启动特性。dmp文件软件意外崩溃时,输出堆栈信息到crash.dmp文件(默认位置%APPDATA%\FreeCAD)。日志重定向将标准输出、标准错误、标准日志等重定向到日志文件。启动软件根据配置参数启动.原创 2021-02-21 16:47:49 · 3276 阅读 · 3 评论 -
FreeCAD源码分析:FreeCADGui模块
FreeCAD源码分析:FreeCADGui模块一、模块功能概述FreeCADGui模块基于文档-视图架构实现了多文档CAD软件开发的框架。不仅提供了基于Workbench的界面管理,而且提供了大量的用于完成数据对象渲染的视图。主要功能包括:Workbench管理Workbench实际上针对特定应用的工具及其界面显示。FreeCAD提供了拓展性较强的基于Workbench的软件开发思路,可以通过Workbench定义软件的外观及其具体的功能。停靠窗口管理停靠窗口实际上是窗口部件的.原创 2021-02-20 23:04:31 · 7043 阅读 · 0 评论 -
FreeCAD源码分析:FreeCADApp模块
FreeCAD源码分析:FreeCADApp模块一、模块功能概述FreeCADApp实现了整形、浮点型等基本类型的持久化支持,在此基础之上封装了大量的文档对象。基于属性与文档对象,FreeCADApp模块主要提供了文档对象管理、文档管理、参数管理等功能。常用属性App::Property提供了持久化属性的基类,FreeCAD提供了整形、浮点数等大量常用数据类型。文档对象文档对象是文档操作的对象,提供了GeoFeature、PartFeature、MeshFeature等大量常用文档.原创 2021-02-11 12:13:40 · 2384 阅读 · 3 评论 -
FreeCAD源码分析:FreeCADBase模块
FreeCAD源码分析:FreeCADBase模块一、模块功能概述FreeCADBase提供了FreeCAD软件开发的基础类库,具体来说,主要功能包括公共功能定义了工厂模式、观察者模式,以及数据持久化的接口。数学几何定义了三维空间几何的基本数据结构。日志定义了统一的接口完成软件运行时日志信息的输出与管理。实用工具提供了文件读写、内存检测、参数管理等主要工具。Python调用Python C API嵌入Ptyhon代码;使用PyCXX扩展Python模块。..原创 2021-01-29 19:34:00 · 2716 阅读 · 2 评论 -
Open Inventor: Windows系统下编译安装Quater
Windows系统下编译安装Quater济南友泉软件有限公司一、工具安装 1.1 CMakeCMake是一个用于生成不同平台下构建项目的工具。建议使用3.0版本之后的CMake。下载链接 1.2 GitCoin使用Git进行代码版本管理,因此需要下载安装Git工具用于代码下载以及后期代码开发维护等工作。下载链接 1.3 Visual StudioVS 2019包含社区版、专业版、企业版等三个版本。对于一般开发而言,三个版本的差别不大。免费的社区版一样可以满足程序员..原创 2020-11-21 15:24:54 · 824 阅读 · 2 评论 -
Open Inventor:Windows下编译安装Coin3D
Windows系统下编译安装Coin济南友泉软件有限公司 一、工具安装 1.1 CMakeCMake是一个用于生成不同平台下构建项目的工具。建议使用3.0版本之后的CMake。下载链接1.2 GitCoin使用Git进行代码版本管理,因此需要下载安装Git工具用于代码下载以及后期代码开发维护等工作。下载链接 1.3 BoostBoost库是一个可移植、开源的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总..原创 2020-11-13 21:47:44 · 1191 阅读 · 3 评论 -
基于FreeCAD的CAE数值仿真平台开发概述
基于FreeCAD的数值仿真平台开发概述 济南友泉软件有限公司FreeCAD是一套基于OCC、OIV、Qt的开源CAX软件开发框架,采用了文档-视图架构,同时提供了基于Workbench的插件式开发模式,可以非常方便的用于订制CAE软件。FreeCAD主界面-FEM模...原创 2020-10-11 08:53:13 · 5566 阅读 · 20 评论 -
FreeCAD中数据显示流程
FreeCAD中数据显示流程济南友泉软件有限公司目录一、 Open Inventor1.1 OIV的原理与概念1.2 OIV内存管理1.3 代码示例二、 App::DocumentObject三、 ViewProvider四、 View3DInventorViewer五、 对象数据的3D显示流程5.1 命令触发5.2 创建对象...原创 2020-07-15 11:49:37 · 3299 阅读 · 1 评论 -
FreeCAD编译、安装、开发环境
搭建FreeCAD开发环境****目录一、 获取源码… 11.1 Git 11.2 创建FreeCAD私人仓库… 11.3 新建工作目录… 21.4 下载代码… 21.5 创建本地FreeCAD分支… 3二、 构建项目… 42.1. CMake. 42.2. LibPack. 42.3. Visual Studio. 42.4. 创建原创 2020-05-17 12:12:41 · 16306 阅读 · 33 评论