Jeśli chodzi o sprawdzenie, wcięcie jest poprawne, nie brakuje nawiasów i mam tylko importowane pakiety w poprzednich liniach, ale nadal otrzymuję nieprawidłowy błąd składni.

#!/usr/bin/python
import bpy
import mathutils
import numpy as np
from math import radians
from mathutils import Vector
from math import radians
from mathutils import Matrix
from bpy import context

def transform_mesh('parent', 'obj_to_be_transformed', (translate_x, translate_y, translate_z), (rot_x,rot_y,rot_z)):

    obj= bpy.data.objects[parent]
    obj1= bpy.data.objects[obj_to_be_transformed]
    initial_mat = obj1.matrix_world

    ...some code

    (x,y,z) = (translate_x, translate_y, translate_z)  
    orig_loc_mat = Matrix.Translation(orig_loc+ mathutils.Vector((x,y,z)))

    ...some more code

    eul = mathutils.Euler((radians(rot_x), radians(rot_y), radians(rot_z)), 'XYZ')
    rot_mat = eul.to_matrix().to_4x4()

    obj.matrix_world = orig_loc_mat * rot_mat * orig_rot_mat * orig_scale_mat 
    bpy.context.scene.update()

    return [initial_loc,initial_rot,initial_scale,loc,rot,scale]


transform_result= transform_mesh('Armature','Coil',(5,0,0),(0,0,1))
print (transform_result)

I błąd jest:

Error:   File "D:\users\gayathri\Gayathri\Synthetic_data_generation\Final\HMI_Depth_coilA_final_final.blend\Untitled", line 18
def transform_mesh('parent', 'obj_to_be_transformed', (translate_x, translate_y, translate_z), (rot_x,rot_y,rot_z)):
                                                                                                          ^
SyntaxError: invalid syntax

location: <unknown location>:-1
-2
gaya 27 czerwiec 2017, 13:16

5 odpowiedzi

Najlepsza odpowiedź

1- Usuń struny z argumentów

2- Usuń krotki z argumentów i przypisz je w funkcji (może być przydatne do dodania kontroli)

Więc tutaj jesteś:

def transform_mesh(parent, obj_to_be_transformed, translate, rot):
    translate_x, translate_y, translate_z= translate
    rot_x,rot_y,rot_z = rot

    # etc


transform_result= transform_mesh('Armature','Coil',(5,0,0),(0,0,1))
print (transform_result)
2
Nuageux 27 czerwiec 2017, 10:25

W tej linii parametr funkcji są przekazywane nieprawidłowo,

    def transform_mesh('parent', 'obj_to_be_transformed', (translate_x, translate_y, translate_z), (rot_x,rot_y,rot_z)):

Prawidłowa składnia byłaby:

    def transform_mesh(parent, obj_to_be_transformed, *translate_xyz, *rot_xyz): #*translate_xyz and *rot-xyz are tuple parameter
0
GeekSambhu 27 czerwiec 2017, 10:33

Musisz zapewnić zmienne jako argumenty do funkcji.

Spróbuj czegoś takiego:

def transform_mesh(parent, obj_to_be_transformed, t1, t2):

Chociaż w kodzie współdzielone, zawsze używasz T1 i T2 jako Kto | Ale w przypadku, gdy chcesz użyć X, Y i Z oddzielnie, możesz to zrobić, odwołując się do indeksu:

x = t1[0]
y = t1[1]
0
Ankit Malik 27 czerwiec 2017, 10:25

Parametry krotki nie są obsługiwane w Python3, ale można przekazać go jako zmienną i rozpakować go po określeniu funkcji.

def transform_mesh(translate_xyz):
    translate_x, translate_y, translate_z = translate_xyz    
0
Alex Lucaci 27 czerwiec 2017, 10:20
def transform_mesh('parent', 'obj_to_be_transformed',

Powinien być

def transform_mesh(parent, obj_to_be_transformed,

Pewno?

3
tehwalrus 27 czerwiec 2017, 10:18