在参数管理器中调参数
在fusion360中,有着非常完备的参数管理。在参数化建模的环境下,可以通过参数管理器查询到建模历史中的所有参数。这样一来就可以非常方便的编辑模型的参数,就像我之前的那个参数化槽轮一样,直接更改齿数,就可以完成多种槽轮的生成。

但是这些都在是工作空间中完成,也就是说我每一次需要调整,都需要点开参数管理器,手动的输入参数。那么如果我需要调整大量的参数,同时调整多个模型的情况下,这样的方法就显得相对复杂和繁琐,所以,可不可以通过FusionAPI完成对参数的管理呢?
通过API调用模型内的参数
如果要调用内部参数,首先得去看到模型内部到底有多少参数。
就以一个小块块的为例:
先通过拉升创建一个10mmX10mmX30mm的块块

然后打开参数管理器查看其中参数

我定义了一个heigh高度,然后下面的草图1中有d1长 d2宽,就是一个10x10的一个矩形草图,然后拉伸里面就是对应的 d3 高度,d4 拉伸角度,这些都是参数的名字[name],在API中是如果要调用对应参数,就要记录相对应的名字。
通过查阅API文档,并没有发现非常直接的Sample,所以我自己整理一个。
# -*- coding: utf-8 -*-
"""
Created on Sun Apr 22 16:00:24 2018
@author: xw
"""
import adsk.core, adsk.fusion, traceback
def run(context):
ui = None
try:
app = adsk.core.Application.get()
ui = app.userInterface
des = adsk.fusion.Design.cast(app.activeProduct)
paramName= 'heigh'
#参数名
param=des.allParameters.itemByName(paramName)
#寻找参数
param.value = 2
#重新赋值(默认单位cm)
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
这个代码也很好理解,先找到自己的想要改的参数,然后把名字输入进去,再赋值,不过有一点需要值得注意,就是赋值的过程中,虽然参数管理器中显示的是mm,但是在API中默认单位还是cm,所以如果还是按照mm为单位去输入的,则会出现问题。然后这些问题解决了之后,就可以非常方便的把这么一段嵌入你的代码中,直接完成对参数的更改,无需手动调整。
小问题
虽然这样就可以在API中就可以实现了参数管理,但是我觉得我还只是知其然不知其所以然,就比如
des = adsk.fusion.Design.cast(app.activeProduct)
这么一段在写代码的时候经常出现,我也是粗粗的感觉这个是为了简短书写长度才有的这么定义,但是实际上是什么我也不是很清楚,所以还是有点疑惑。应该是我对python语言掌握的程度还是不够,还是希望能够有前辈给予指点,谢谢。
网友评论