2017-01-23 73 views
0

我有一个来自for循环的对象列表,我想将它们附加到列表中,以便我可以选择并连接它们。我的想法是,代码将发挥作用或多或少是这样的:选择praat中的对象列表

for stringNumber from 0 to numberOfStrings 
    do string stuff... 


    tgID = Create TextGrid: tmin, tmax, tier_name$, phone$ 
    Set interval text: 1, 1, phone$ 
    # THIS IS WHERE I NEED HELP 
    tgList = append: tgID + ", " 

endfor 

selectObject: tgList 
do ("Concatenate") 

回答

3

你可以试试这个:

for stringNumber from 0 to numberOfStrings 
    # do string stuff... 

    tgID = Create TextGrid: tmin, tmax, tier_name$, phone$ 
    Set interval text: 1, 1, phone$ 

    tgList[stringNumber + 1] = tgID 
endfor 

selectObject() 

for i from 1 to numberOfStrings + 1 
    plusObject: tgList[i] 
endfor 

Concatenate 

selectObject()将取消一切,然后plusObject将当前对象的选择。我不确定循环索引在选择循环中是否正确,因为你从0开始循环,而且我不能尝试你的代码。

+0

这是plusObject和selectObject的关键。谢谢! – badner

+0

对于'selectObject()'+1。到现在为止,我一直在做'nocheck selectObject:undefined',这更加神秘...而且时间更长。 – jja

0

这可能是矫枉过正在这种特殊情况下,但你也可以使用selection插件,在CPrAN可用的,这是为了管理对象选择(全面披露:我写的):

include ../../plugin_selection/procedures/tables.proc 

@createEmptySelectionTable() 
selection = createEmptySelectionTable.table 

for stringNumber from 0 to numberOfStrings 
    Create TextGrid: tmin, tmax, tier_name$, phone$ 
    Set interval text: 1, 1, phone$ 
    @addToSelectionTable: selection 
endfor 

@restoreSavedSelection: selection 
removeObject: selection 
Concatenate 

对于这个工作,但是,你需要你的脚本在一个插件的子目录中(所以在Linux/Mac中的~/.praat-dir/plugin_foo/scripts/here.praat)。

希望在未来会有解决方法。然后再次,大多数Praat脚本确实应该在插件中,即使它们是项目特定的,所以... </rant>