-
Leo Editor - 簡單的節點控制
簡述 Leo Editor 的 @button 節點運用。
- Generators
- Position Getters
-
Pyslvs 手冊應用
-
Pyslvs 目標 - 模型銜接 V-rep
Leo Editor - 簡單的節點控制
參考資料:
注:一些方法(method)可以利用 Leo 的自動完成功能(Alt + 1)尋找。
Generators
一些常用的 generator。
Python 的 generator 使用方式:
pList = [e.copy() for e in c.all_positions()]
上一篇文章 提到了不要直接使用 generator 來下指令,否則會出現 <pos 139770197424392 [0] None>
回傳值為 None 的情形。
在一般情形下,@button 中的 p
為「當前節點」而非「該 @button 節點」的 position,應當特別注意。
-
c.all_positions() 依序回傳大綱所有節點的 position,包含的子項目會跟在父節點之後。
-
c.all_unique_positions() 依序回傳大綱所有節點的 position,包含的子項目會跟在父節點之後,但是分身節點只會回傳一次。
-
p.children() 依序回傳該 position 子節點的 position。
-
p.parents() 依序(由底開始)回傳該 position 父節點的 position。
-
p.self_and_parents() 依序(由底開始)回傳該 position 父節點的 position,第一次會回傳自身。
-
p.self_and_siblings() 依序回傳該 position 同層級節點的 position。
-
p.following_siblings() 依序回傳該 position 下方同層級節點的 position。
-
p.subtree() 依序回傳該 position 子孫節點的 position,包含的子孫項目會跟在父節點之後。
-
p.self_and_subtree() 依序回傳該 position 子孫節點的 position,包含的子孫項目會跟在父節點之後,第一次會回傳自身。
Position Getters
一些常用的 Getter。
這些方法回傳 position 的週邊資訊,上面提過的 Generator 將不再說明 。
Python 的方法可以使用多層(只要確定非空值):
B = p.next().firstChild().b
-
p.back() 回傳該 position 上方一個節點的 position。
-
p.next() 回傳該 position 下方一個節點的 position。
-
p.firstChild() 回傳該 position 第一個子節點的 position。
-
p.lastChild() 回傳該 position 最後一個子節點的 position。
-
p.parent() 回傳該 position 第一個父節點的 position。
-
p.level() 回傳該 position 的層級整數(int)。
至於 position 的新增、移動、刪除方法使用後會如同修改 vnode,發生大綱樹不會即時更新的情形(無法選擇更新後節點、不會提醒儲存以及存檔後不會編輯檔案節點),必須重新存檔才能更新大綱樹。也因為如此不符合 @button 的功能需求,因此就不介紹了。
Pyslvs 手冊應用
縮減了原先的語法,使用 Leo 提供的 generator,變得更易懂。
pList = [e.copy() for e in c.all_positions()] #節點參照 hList = [e.h for e in c.all_positions()] #索引 MD = pList[hList.index("@clean {}.md".format(filename))] #找到 Markdown file pos = hList.index("{} Target node".format(filename)) #目標 B = [e.b for e in MD.self_and_subtree()] B = ''.join(B).replace("%", "##").replace("\n@language md", '').replace("\n@others", '').replace("*@fig:", '').split("\n\n\\newpage") head = """""" B = [head+e+tail for e in B] pList[pos].b = removeParentheses("@language html\n"+'\n'.join(B)) g.es("{} HTML 簡報轉換完畢".format(filename))
Pyslvs 目標 - 模型銜接 V-rep
為了達成 Pyslvs 的「2D 線條」轉成 V-rep 能用的「3D 支架」(或是連桿之類的),要在接下來的版本做出這個功能。
由於 STL 是三角形接合的立體物件,要憑空畫出 3D 支架的組合圖,想知道這方面的資料。
Comments
comments powered by Disqus