2017-03-02 68 views
0

通常我可以將一些代碼與一些Google搜索結合在一起,但這個有點遠離我的理解。我正在尋找以編程方式運行以下功能;Python動態調用; getattr的?

App.getDocument("Unnamed").NAME.Placement=App.Placement(App.Vector(0,0,0), App.Rotation(App.Vector(0,0,1),90), App.Vector(0,0,0)) 

其中NAME和數字是變化的項目。即我有NAME1,NAME2 .... NAMEn每個有不同的向量數字,我想在for循環中運行此命令以移動該腳本已傳遞的許多項目。從快速搜索getattr()似乎是答案,但= =似乎是阻礙者。所以我只能做到這一點;

f1 = getattr(App,'getDocument') 
f2 = getattr(f1('Unnamed'),'NAME1') 
f3 = getattr(f2,'Placement') 
+2

試'f2.Placement = App.Placement(App.Vector(0,0,0),App.Rotation(App.Vecto ....' – keksnicoh

+0

用'F2 = GETATTR(App.getDocument( 「無名字」),'NAME1')' – keksnicoh

+0

哈哈,當然!有時候你看不到什麼是正確的,很多謝謝 – mrvic

回答

0

這是您要尋找的?

names = ['NAME1','NAME2','NAME3'] ... 
vectors = [[(0,0,0),(0,0,1),(0,1,0)], 
      [(0,0,0),(0,0,1),(0,1,0)], 
      [(0,0,0),(0,0,1),(0,1,0)],] 

for n, (v1,v2,v3) in zip(names, vectors): 
    left = getattr(App.getDocument("Unnamed"),n) 
    right = App.Placement(App.Vector(*v1), App.Rotation(App.Vector(*v2),90), App.Vector(*v3)) 

    setattr(left, "Placement", right) 
+0

這裏不需要'setattr()',只是'left.Placement = right' – keksnicoh