1. Leo Editor - 簡單的節點控制

    簡述 Leo Editor 的 @button 節點運用。

    • Generators
    • Position Getters
  2. Pyslvs 手冊應用

  3. 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