Beispiel #1
0
def gear_MoveShapeKey_Execute():

    if not xsi.Selection.Count:
        gear.log("Select shape keys", gear.sev_error)
        return

    shapes = [shape for shape in xsi.Selection if shape.Type in ["clskey"]]
    if not shapes:
        return

    cls = shapes[0].Parent
    geo = cls.Parent
    clusters = geo.Clusters

    # UI
    prop = xsi.ActiveSceneRoot.AddProperty("Custom_parameter_list", False, "gear_MoveShapeKey")
    pDuplicate = prop.AddParameter3("duplicate", c.siBool, True, None, None, False, False)
    pClusters = prop.AddParameter3("clusters", c.siInt4, -1, 0, clusters.Count-1, False, False)

    clustersItems = ["New Cluster", -1]
    for i, cls in enumerate(clusters):
        clustersItems.append(cls.Name)
        clustersItems.append(i)

    layout = prop.PPGLayout
    layout.Clear()
    layout.AddTab("General")
    layout.AddGroup("Move Shape Key Option")
    item = layout.AddItem(pDuplicate.ScriptName, "Duplicate")
    item = layout.AddEnumControl(pClusters.ScriptName, clustersItems, "Move to", c.siControlCombo)
    layout.EndGroup()

    # Inspect
    rtn = xsi.InspectObj(prop, "", "Move Shape Key", c.siModal, False)

    # Return values
    duplicate = pDuplicate.Value
    cluster_index = pClusters.Value

    xsi.DeleteObj(prop)

    if rtn:
         return

    # Create or get target cluster
    if cluster_index == -1:
        target_cluster = geo.AddCluster(c.siVertexCluster, cls.Name+"_Copy", cls.Elements.Array)
    else:
        target_cluster = clusters(cluster_index)

    # Duplicate Shape key
    for shape in shapes:
        sha.duplicateShapeKey(shape, target_cluster)

    # Delete original
    if not duplicate:
        xsi.DeleteObj(shapes)
Beispiel #2
0
def gear_DuplicateShapeKey_Execute():

    if not xsi.Selection.Count:
        gear.log("Select shape keys", gear.sev_error)
        return

    for shape in xsi.Selection:

        if shape.Type not in ["clskey"]:
            continue

        sha.duplicateShapeKey(shape)
Beispiel #3
0
def gear_DuplicateShapeKey_Execute():

    if not xsi.Selection.Count:
        gear.log("Select shape keys", gear.sev_error)
        return

    for shape in xsi.Selection:

        if shape.Type not in ["clskey"]:
            continue

        sha.duplicateShapeKey(shape)
Beispiel #4
0
def gear_MoveShapeKey_Execute():

    if not xsi.Selection.Count:
        gear.log("Select shape keys", gear.sev_error)
        return

    shapes = [shape for shape in xsi.Selection if shape.Type in ["clskey"]]
    if not shapes:
        return

    cls = shapes[0].Parent
    geo = cls.Parent
    clusters = geo.Clusters

    # UI
    prop = xsi.ActiveSceneRoot.AddProperty("Custom_parameter_list", False,
                                           "gear_MoveShapeKey")
    pDuplicate = prop.AddParameter3("duplicate", c.siBool, True, None, None,
                                    False, False)
    pClusters = prop.AddParameter3("clusters", c.siInt4, -1, 0,
                                   clusters.Count - 1, False, False)

    clustersItems = ["New Cluster", -1]
    for i, cls in enumerate(clusters):
        clustersItems.append(cls.Name)
        clustersItems.append(i)

    layout = prop.PPGLayout
    layout.Clear()
    layout.AddTab("General")
    layout.AddGroup("Move Shape Key Option")
    item = layout.AddItem(pDuplicate.ScriptName, "Duplicate")
    item = layout.AddEnumControl(pClusters.ScriptName, clustersItems,
                                 "Move to", c.siControlCombo)
    layout.EndGroup()

    # Inspect
    rtn = xsi.InspectObj(prop, "", "Move Shape Key", c.siModal, False)

    # Return values
    duplicate = pDuplicate.Value
    cluster_index = pClusters.Value

    xsi.DeleteObj(prop)

    if rtn:
        return

    # Create or get target cluster
    if cluster_index == -1:
        target_cluster = geo.AddCluster(c.siVertexCluster, cls.Name + "_Copy",
                                        cls.Elements.Array)
    else:
        target_cluster = clusters(cluster_index)

    # Duplicate Shape key
    for shape in shapes:
        sha.duplicateShapeKey(shape, target_cluster)

    # Delete original
    if not duplicate:
        xsi.DeleteObj(shapes)