美文网首页
【Fusion360API】如何通过API调用模型内部参数

【Fusion360API】如何通过API调用模型内部参数

作者: 孝吾 | 来源:发表于2018-04-22 20:56 被阅读98次

在参数管理器中调参数

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

参数化槽轮
但是这些都在是工作空间中完成,也就是说我每一次需要调整,都需要点开参数管理器,手动的输入参数。那么如果我需要调整大量的参数,同时调整多个模型的情况下,这样的方法就显得相对复杂和繁琐,所以,可不可以通过FusionAPI完成对参数的管理呢?

通过API调用模型内的参数

如果要调用内部参数,首先得去看到模型内部到底有多少参数。
就以一个小块块的为例:
先通过拉升创建一个10mmX10mmX30mm的块块


小块块

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

参数管理器
我定义了一个heigh高度,然后下面的草图1中有d1d2宽,就是一个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语言掌握的程度还是不够,还是希望能够有前辈给予指点,谢谢。

相关文章

网友评论

      本文标题:【Fusion360API】如何通过API调用模型内部参数

      本文链接:https://www.haomeiwen.com/subject/ucoclftx.html