将零件参数表格统一到组装文件中来★

问题:零件的参数表如何都引入到组装文件里来,直接在组装文件里修改这些零件参数,从而避免到一个个零件里去修改参数?
特别是对于程序而已,得通过解析组装文件,取得零件文件名,再去解析零件文件,修改零件文件的表格参数(比如零件的尺寸),保存,再刷新组装文件,修改组装文件的表格参数(比如阵列数量等),最后导出组装文件模型。
解决方案:A4提供了叫Variantlink的方式专门解决这个问题。https://github.com/Zolko-123/FreeCAD_Assembly4/issues/485

1.首先必须在零件文件中建立part,再在part里建立body模型,输入表格参数,模型关联到表格。切换到A4工作台,插入add variable。如果直接在body里插入variable是不行的!!

2.激活组装文件,在组装文件中,点击create a variant part,选中零件,这个零件必须是上述带variables的,否则就不显示出来


A4结合Configurantion Table的效果,configurationtable方法参见3.1.1节设置即可。

下面的方法存在循环引用,避免使用
3.在组装文件中新建一个表格,将零件的表格一一拷贝进来,再在组装文件里,将每个Part_var下面的表格里数据,引用刚才建立的表格中的数据,这样可以将零件表格统一到一个表格中来,可惜无法保存,会提示循环引用。但是好像不影响使用,有兴趣的试试。
在代码里,可以遍历各个零件表,修改参数,虽然无法统一到一个表中来。

程序调用组装文件问题

还剩下一个问题,就是在headless模式下,用python调用打开组装文件,修改参数表,那么recompute()后,能否得到想要的结果呢?实际上不行。只能在freecadCmd命令来执行宏或python文件。
那么freecad执行python程序,如何带参数?用文件的形式作为输入吗?例如freecadcmd.exe mypython.py 参数??
实际上freecadcmd执行的python文件也可以带参数:freecadcmd fcgenmin.py ebox.FCStd test.glb

parser = argparse.ArgumentParser(description=descr)
parser.add_argument("filename", type=str, help="An FCStd file name")
parser.add_argument("output", type=str, help="The output file")
args = parser.parse_args(sys.argv[2:])