Page 1 of 2

freecad代码瘦身

Posted: Thu May 21, 2020 5:38 am
by lock1992
我现在正在基于freecad做个简单的二次开发,其实与其说是二次开发,不如说是对它的一个瘦身,想把代码精简一下,不需要命令行功能,只需要界面启动,支持window和linux就好,本来就对cad了解甚少,这么庞大的库看起来蛮吃力,希望有大神可以给点建议。。尤其是app和base,gui三个基本文件怎么瘦身啊。。目前模块工作台开发知道怎么瘦身,主要是上述三个文件里的文件瘦身

Re: 大家好,我来自中国江苏

Posted: Thu May 21, 2020 9:58 am
by felixlee868
是不是又有一个国产化明星项目,要助力工业4.0发展了?

Re: 大家好,我来自中国江苏

Posted: Thu May 21, 2020 1:20 pm
by paullee
FC 核心 的問題 @Realthunder 很可能 有資料

Re: 大家好,我来自中国江苏

Posted: Fri May 22, 2020 5:45 am
by johnwang
太厉害了。

Re: 大家好,我来自中国江苏

Posted: Sat May 23, 2020 8:12 am
by johnwang
lock1992 wrote: app和base,gui三个基本文件怎么瘦身啊,
https://github.com/qingfengxia/FreeCAD_ ... 190912.pdf

Re: 大家好,我来自中国江苏

Posted: Sat May 23, 2020 9:53 am
by paullee
johnwang wrote: Sat May 23, 2020 8:12 am
lock1992 wrote: app和base,gui三个基本文件怎么瘦身啊,
https://github.com/qingfengxia/FreeCAD_ ... 190912.pdf
太好了,我不知道有這文件 :)

Re: 大家好,我来自中国江苏

Posted: Sun May 24, 2020 5:59 am
by felixlee868
FreeCAD 发展还是比较快的。个人认为,这是真正的比较接近工厂的计算机工具。我本人为了自已想设计的项目了解情况,也到一些工厂转过。那些前几年国内基于 LinuxCNC 搞的数控机床,也见过一些。但说实话,我感觉大家用的不好。

从你提的信息来看,你的项目可能与前几年的LinuxCNC项目差不多。想有快钱与快见成果。但这种项目可能不会有长期的发展。因为功能僵化,没有发展。最终用户评价也不好说。

FreeCAD 项目是建立在许多基础科学知识之上的一个工具。有些工具,如 ccx , gmsh 等等,FreeCAD 项目开明的采取为第三方接供接口的方式来解决。因为这些工具都相当专业。前一阵我学习了一下 GMSH 这个工具,发现其对于边界查询算法技术,演进也比较快。有些是多年前论文的软件实现。这需要开发人员有相当的计算机以及其自身专业知识,才可能编写出可信赖的软件工具。

FreeCAD 软件构建逻辑大概分三层。基础层 ( C++ 代码编写,可能是与基础的三维对象运算库相兼容,因为这些基本都是 C 编写的 ); 用户界面层,用QT 来开发界面图形窗口与控件;第三方模块( 用 Python 开发,有部分模块代码用 C++ 开发 )

FreeCAD 非图形运算部分代码。一般在 App 目录中,用 C++ 开发。 图形部分用 QT 来开发, 第三方模块用 Python 来开发( Python3 与 Python2 也有不同 ) 由于 Python 语言在科学计算上比 C++ 与 C 相对要好睦。主要是运算数的范围大了不少 ( 如果 C++ 与 C 寮现,必需有相应的数学函数库支持 ) 这样的安排对于模块开发人员来说要简单些。 但 FreeCAD 开发的基础是计算机三维对象库的处理。如 OpenSCAD 也是通过脚本(script)语言来创建与维扩三维实体对象。但要将实体对象转成网格对象,这需要 GMSH, NetMesh 等工具来实现。并需要物理与数学工具来支撑。

你提到的 CAM 部分,基础是对于 G 码非常精通,有这个基础,我想才可能在理解 FreeCAD 三维对象处理的基础之上,进行你项目的开发。另外,G 码的编写,其实还涉及运动控制学以及力学的基础知识。如果只机械的按计算处理G码的话,现场生产时,会有损失或危险。因为有一次,我在一家用国产数控的工厂,就见到加工时 G 码编制问题,造成断刀的情况。


工业控制软件,结果准确才是基础的基础。如果没有可预知的基础,这样的控制软件危害也比较大。


胡说一通,希望可以我之昏昏,能令你昭昭。 :-)

Re: 大家好,我来自中国江苏

Posted: Mon May 25, 2020 6:26 am
by lock1992
johnwang wrote: Sat May 23, 2020 8:12 am
lock1992 wrote: app和base,gui三个基本文件怎么瘦身啊,
https://github.com/qingfengxia/FreeCAD_ ... 190912.pdf
十分感谢,我下载下来学习学习看看 :D

Re: 大家好,我来自中国江苏

Posted: Mon May 25, 2020 6:29 am
by lock1992
felixlee868 wrote: Sun May 24, 2020 5:59 am FreeCAD 发展还是比较快的。个人认为,这是真正的比较接近工厂的计算机工具。我本人为了自已想设计的项目了解情况,也到一些工厂转过。那些前几年国内基于 LinuxCNC 搞的数控机床,也见过一些。但说实话,我感觉大家用的不好。

从你提的信息来看,你的项目可能与前几年的LinuxCNC项目差不多。想有快钱与快见成果。但这种项目可能不会有长期的发展。因为功能僵化,没有发展。最终用户评价也不好说。

FreeCAD 项目是建立在许多基础科学知识之上的一个工具。有些工具,如 ccx , gmsh 等等,FreeCAD 项目开明的采取为第三方接供接口的方式来解决。因为这些工具都相当专业。前一阵我学习了一下 GMSH 这个工具,发现其对于边界查询算法技术,演进也比较快。有些是多年前论文的软件实现。这需要开发人员有相当的计算机以及其自身专业知识,才可能编写出可信赖的软件工具。

FreeCAD 软件构建逻辑大概分三层。基础层 ( C++ 代码编写,可能是与基础的三维对象运算库相兼容,因为这些基本都是 C 编写的 ); 用户界面层,用QT 来开发界面图形窗口与控件;第三方模块( 用 Python 开发,有部分模块代码用 C++ 开发 )

FreeCAD 非图形运算部分代码。一般在 App 目录中,用 C++ 开发。 图形部分用 QT 来开发, 第三方模块用 Python 来开发( Python3 与 Python2 也有不同 ) 由于 Python 语言在科学计算上比 C++ 与 C 相对要好睦。主要是运算数的范围大了不少 ( 如果 C++ 与 C 寮现,必需有相应的数学函数库支持 ) 这样的安排对于模块开发人员来说要简单些。 但 FreeCAD 开发的基础是计算机三维对象库的处理。如 OpenSCAD 也是通过脚本(script)语言来创建与维扩三维实体对象。但要将实体对象转成网格对象,这需要 GMSH, NetMesh 等工具来实现。并需要物理与数学工具来支撑。

你提到的 CAM 部分,基础是对于 G 码非常精通,有这个基础,我想才可能在理解 FreeCAD 三维对象处理的基础之上,进行你项目的开发。另外,G 码的编写,其实还涉及运动控制学以及力学的基础知识。如果只机械的按计算处理G码的话,现场生产时,会有损失或危险。因为有一次,我在一家用国产数控的工厂,就见到加工时 G 码编制问题,造成断刀的情况。


工业控制软件,结果准确才是基础的基础。如果没有可预知的基础,这样的控制软件危害也比较大。


胡说一通,希望可以我之昏昏,能令你昭昭。 :-)
十分感谢层主的详细说明,我们的需求其实目前比较简单,只是基于公司的产品先做个简单的版本以满足客户需求,慢慢的再扩大功能。 :D 。多谢了哈

Re: 大家好,我来自中国江苏

Posted: Tue Jun 02, 2020 3:38 am
by lock1992
看的相当痛苦。。这个软件太庞大了,根据前面老兄提供的文档也看了,但是说实话对这个整体架构有个认识,但是太臃肿了,,我感觉瘦身太难了,还是参考下它的python和c++的这种架构吧