〇、link版问题解决索引

随着版本的更新,很多老的方式在改变,特意在这里做个集中备注。

1. link版沿任意方向的线性阵列

可以选择某个体上的边线,或者是基于草图线的基准线,但是不能选择独立的草图线,后者导致阵列方向似乎是“垂直”这个线的方向。例如,需要沿斜方向整列,先在这个斜方向绘制一根草图线,再在此草图线基础上创建基准线,阵列时方向旋转这根基准线即可,或者斜方向上有圆柱、方柱这类的体,阵列的时候方向就选择这个圆柱体的缝合线(特征线)或方柱的边线。

2. 竖向配置表

link版1003版支持表格竖向的configuration(配置表)了,那么不用把参数组做成行排列了。竖向排列清爽很多。配置表对于参数化建模来讲,简直是奇迹,参见2.1.1。之前做了水平表格的,用我改编的宏Horizontal2Vertical.FCMacro进行转置见下图1,思路见5.7。
使用方法:先取消configuration table;拷贝到excel,进行转置;FC运行宏;拷贝excel转置后的表格过来;进行configuration table配置一下。
表格竖排,紧凑,除第一列外,其余使用的单元格上下居中,左右居中,千万不要全选表格!!一方面会卡死,另一方面导致文件特别大。只对占用的单元格进行格式操作即可。

3. link版跨body参考引用之类

create a shape binder(蓝色的,不是绿色的那个)创建一个引用面。

4. 防止参考丢失

当前步骤前生成的线、面,在当前步骤后被切割拆分,不会影响拓扑关系,不会丢失当前步骤的参考。所以我们为了跨body引用面(蓝色的ShapeBinder),可以选择在某个步骤前就引用过去(上述第3条),这样,在前面这个body里后续做的对面的切割,不会影响后面这个body里引用的面。

5. link版的草图里参考线功能

很丰富,例如可以得到参考线与当前工作平面的交点。参见9.3图5。

6. 草图模式2个工具

查看草图按钮是回正草图,截面模式按钮是把当前工作平面与用户之间的都关闭。非常有用。

7. Assembly4装配里的阵列功能和变体链接

前者太重要了,后者则太灵活好用了,参见3.1和9.3案例。

8. link版草图旋转

还未能直接支持,但可以用下述方法:
将草图附着于一个基准面,然后基准面围绕z轴或其他轴旋转角度即可。
基准面因为不显示局部坐标,为方便查看,那么你直接给它赋一个局部坐标即可,下图可以看到基准面的局部坐标和全局坐标,红绿蓝对应xyz,见下图2。
草图跨项目拷贝很有用,还能带上尺寸链接到表格。
官方版可以在草图中旋转。

9. 移动单元格

表格功能还不完善,比如,想挪动一下单元格,希望公式里的链接也跟随改变,现在还不支持,用剪切—粘贴也不行。用我改编的宏文件MoveCells.FCMacro,将公式中的单元格替换,达到这个目的。挪动单元格的好处是可以将某些属于一类的参数或有点关联性的参数,放到一起,可以用这个宏试试,见下图3。

10. 整列(行)上移或下移n列(行)

可以采用删除或插入一列或一行,软件是支持表达式自动更新的。
图1:表达式中链接的表格单元格进行转置

图2:草图旋转

图3:移动表达式中链接的表格单元格

11. 不导出隐藏的体

要设置 首选项——import/export——stp:取消勾选“导出不可见对象”。如果没有stp活页夹,则在freecad工作台切换到part design就再进入首选项就有了。

12. 服务器上部署

一个是要有显卡,没显卡则装一个程序mesa3d;二个是设置导出里,不要勾选导出隐藏;三个是模型的步骤里要设置为最后一步是激活的步骤,即,绿色的标签符号位于最后一步;四是要升级A4工作台。

13. 让官方版也支持多体不相连

首选项——part design——常规——勾选“Allow Multiple Solids……”

14. 官方版不支持对阵列再阵列

但是可以在多重阵列里处理,即添加不同方向的阵列,达到多次阵列的目的。

15. 如何更改装配体子模型的文件名?

第一步,打开装配体文件,也将改了名字的子模型文件打开。此时装配体里的子模型链接由于找不到当前文件夹下的子模型文件而报错,如下图。

第二步,点击选中报错的子模型链接,然后点击Insert Part按钮,弹窗里看到那个改了名字的子模型,选中,点击右下角的Replace按钮即可。

第三步,修改一下label即可。

16. link版导出ifc格式出错

FC link文件夹下,bin\lib\site-packages\ifcopenshell\_init_.py
88行加上. import guid

17. 如何将子模型的表格统一到装配体中来

3.2节

18. 如何减少装配体之间重复参数

单体的参数减少有这么几种方式:将有限的参数通过公式计算得到新的参数,赋值给几何体。
装配体的参数减少就没那么容易了,例如隧洞开挖断面的尺寸,在钢拱架里用一次,到内衬砼里又要用一次,如何避免?答案是,到装配体里,通过partdesign里的subshapebinder将装配进来的单体某个面引入到新建的body中来。详细技巧见9.8节 城门洞型隧洞支护

一、存在的问题:

1.不靠谱的距离约束

距离约束是不靠谱的,随机出现在参考点右边或参考点左边


同心圆想用圆之间的距离约束,随机出现圆比参考圆大或比比参考圆小
解决办法:想办法取到参考对象的几何特性,比如长度,比如圆半径,然后减去我们的参数,这样可确保位置正确
参考官方表达式文档:https://wiki.freecad.org/Expressions#Reference_to_CAD_data
打开属性面板——勾选 显示全部

比如这个同心圆,外面是参考圆,我们想办法取到这个参考圆的直径,然后在参数里扣减一个值,这样可保证里面的圆直径永远比参考圆小。

怎么查到这个参考圆的属性,即直径呢?还是看这个属性面板,点击刚画的草图,这个草图中参考了前面Sketch014,所以我们再点击看看Sketch014的属性

查看Sketch014的属性——<<Sketch014>>.Geometry[0].Radius

在公式编辑器里,键入名称后,键入点号,会出现属性

可以看出geometry是个数组(方括号代表数组),所以输入数组索引号,第一个为0

再输入点号后,出现半径

2.不靠谱的点约束至对象

本来想象着给定这个线段的长度,线段两个端点分别约束在两个相交线上,这个线段与角平分线垂直

但是事与愿违,随机会出现这个是线段跑到两个相交线延长线上去了。并非这个线段长度超过了2条相交线之间的距离

那只能靠几何公式来算出这根线段所在位置的距离定位。距离计算见下图公式。疑问,如果距离不靠谱,那这个距离是否同样会跑到上面去?


这会用的是geometry[1],索引用了1,因为数组的值是下图这样的,逗号隔开的数组索引

3.跨body引用(参考、绑定)

有时候需要用到跨body的面来作为工作平面,官方版、link版处理这个问题的做法有区别。
下图左侧为官方新版,跨body引用上一个body的某个面,需要单选make depend copy才会跟随上一个body的改变而改变。右侧为link版,跨body引用要避免点上一个body的面后直接进入草图(它会将上一个body全拷贝,在模型解析的时候会得到一个重复的几何体……),要先点击上一个body的某个面,然后点create a shape binder(蓝色的,不是绿色的那个)创建一个引用面,然后再基于这个面进入草图。

4.参考线、参考面丢失——拓扑命名问题

规律:我们绘制的全参数化模型,当前步骤草图要参考前面步骤生成的体上的面、线时候,要保证在任何参数改变情况下,当前步骤之前的这些体的面、线不会被裁剪、分割,面、线的数量也不会改变。而这一步发生后,再对上述体上的面、线进行分割,不会对当前步骤的参考造成影响。
我们测试如下:首先是有影响的步骤,3个草图对应3个体,步骤先后是很敏感的。


这是因为体3的草绘发生在体2后。如果发生在体2前,则不会。

同样的案例如下:
丢参考线的问题:https://github.com/realthunder/FreeCAD/issues/1028
用参数驱动模型变化后,会导致某些线被分割成2根线了。比如这个闸墩突出去了,导致底板面层那个边线变成了2根。

闸墩这个面也会随着放样后,被分割成2个面了,所以这个步骤后面如果有参考这个面的话,会随机丢失参考面。

所以作者似乎建议我们,不要用这些会可能会发生分割的线/面作为参考,但任何面都会随着模型的叠加上去,导致面被分割,这涉及一个步骤先后问题,如上文所述,叠加切割发生在参考之后,不会影响参考。

5.variables Assembly4装配体约束不起作用?

使用variables有非常方便的地方,如果使用了,可以多次插入同一个单体模型,而拥有不同的参数。修改参数后,装配体的相对关系不会立即跟随改变,需要点击按钮solve and update assembly,(Gui.runCommand('Asm4_updateAssembly',0))

6.全选表格导致卡死,文件特别大

千万不要像excel那样,点击左上角那个全选表格,会卡死。全选后操作居中之类的,保存的文件特别大。
解决办法,新建一个表格,数据拷贝过去,删除这个表格,把新表格命名为旧表格名。
注意,表格名称方面,一个是系统自己命名,后面会自动增加如001 002之类,新表格的系统名是spreadsheet001,则重命名为spreadsheet。也可以用我们的宏,将参数公式中的链接表格名批量更换。

7.参数链接请使用<<Spreadsheet>>.B5……这种label形式

表格不要去重命名,表格单元格也不要做别名。参数链接使用<<Spreadsheet>>.B5……这种带尖括号的label形式,当表格没有重命名的话,默认就是系统内部名称。这种好处是我们更换一个表格,可以把表格再命名回来代替旧表。这样,参数中的链接还有效。
如果单元格做了别名,那么选中,鼠标右键可以一次性全部删除。此时,参数中的链接会自动转为单元格地址了。
对于没有采用<<Spreadsheet>>.B5……这种label形式,而是采用Spreadsheet.B5……这种形式的,我们写了个宏ReplaceSpreadsheetLabel.FCMacro,可以一次性将所有参数链接中的Spreadsheet……加上尖括号。
对于竖向表格转置为横向表格或横向表格转置为竖向表格,我们写了宏Horizontal2Vertical.FCMacro,一次性可以转掉。
操作步骤也不必去重命名,只对body进行重命名,节约时间。

8.环形阵列请不要与body交叉

如下图,当点钢筋与线钢筋间距为0时,做环形阵列时,就有错误提示:<Exception> TopoShapeEx.cpp(3981): Null shape

解决办法是离开0.001mm……

二、逻辑处理

1 步骤中间插入步骤

场景:有时候删除了中间步骤的物体,导致后面的引用、附加、依赖的对象(比如面)没有了,这时候想在出错步骤前增加一步,以便生成比如一个面,官方版 用鼠标右键点击出错那一步前面的步骤,set tip(中文叫 设置结算位置,属于翻译不准确,应该是设置 计算 位置吧?),link版直接拖动步骤到某个为位置。
如下图所示,pad040出错,原因是它依赖的面被删掉了。于是我在linearpattern006位置 设置计算位置
注意下图中绿色填充的标签图标那里。注意,整个body,最后必须将这个标签置于最后,否则导出的模型只到这个绿色标签所在位置为止,后续的步骤创造的模型不被导出!!!

老版是这样的,以上面图为准。

然后做一个pad041,然后鼠标右键pad040里草图——附加编辑器

选择刚建立的pad的某个面

类似的,将对象移至其他对象之后……等功能,极大地方便我们修改模型逻辑。
场景:比如我们建立的机墩是可以阵列的,进、出水管也是可以阵列的,我们先将机墩建立好了,也阵列了。后面又建立了进水管,又阵列一次,建立了出水管,又阵列一次……可以将他们移动到某个步骤一起,然后做一次阵列。

2 重计算出错,计算卡顿

如下图提示错误,那么将草图30和减料删除即可。逻辑上有错误,按照上面插入计算位置处理。

3 附加出错

比如依赖被删除了,鼠标右键草图——附加编辑器——选择一个新的附加(比如面)
重要:假如附加面(依赖面)选择好了,还是出错,那进入草图,草图中有参考线(参考关联的边……),这个参考线也要删掉重新设置参考线。

4 创建链接

相当于CAD中的参照、参考、引用,不占模型空间。
看青鱼老师的视频【14::00】https://www.bilibili.com/video/BV1yj411r79W
打开要链接进来的模型——在当前模型中点击 创建链接——在link的属性里选择刚打开的模型。

调整一下位置和角度即可。

5 阵列

左侧的目录它到底是代表步骤还是代表某个体?答案是它都代表。
因为比如pad,它是基于上一步基础上的additive。所以,从显示角度来讲,它包含了前面的。
但从阵列操作角度,它每一步都是一个独立的体。
所以,官方版 做阵列前,先多选目录,然后再点阵列按钮。link版则在阵列里可以勾选,甚是便捷。

官方版本无法对阵列后的进一步阵列。但是可以用多重变换进行多个方向阵列和多次整列。
link版可以。如下,对镜像后的继续阵列,还可以不包含原始的。

官方新版线性阵列支持任意方向了。link版支持任意方向,但是选的线必须是体上的边线。

6 性能

(1)缓存设置大一点
编辑——首选项——常规——缓存
或者不要打开渲染模式,采用flat lines
(2)过程不能有错误,否则影响计算速度,要将错误消灭
有时候虽然有错误,但是它还是生成了,不注意就会一直往下画,一直会卡。
类似下方这个,矩形拉伸到斜面,因为矩形和斜面相交,拉伸长度最小为0,可能会导致错误,但是也成功了。因此这个有可能导致后面的计算出问题,待继续验证。

link不允许,如下

(3)修改尺寸的时候,要关闭自动更新,否则每修改一个尺寸要计算很久……

(4)用link版,建模会快捷很多。官方版没那么灵活

7 圆环放样

注意不同截面的圆环,内外圆绘制顺序要一致,比如都先画内圆,再绘制外圆,这样才可以。否则放样就出问题了,如下,交叉了,会失败。

8 拓扑命名

自从拓扑命名问题解决后,前面的草图里修改不会导致后面的参考(附着)丢失。——并非这样,如果草图做了大的修改,增加了面和线,则会导致后面的附着出错,这个没有办法解决。
模型采用part和不同body来组织,不同body之间彼此可以参考,就会引入被参考的body。

作者:秦晓川  创建时间:2023-08-20 13:23
最后编辑:秦晓川  更新时间:2025-06-08 22:28