3D打印軟件Cura的二次開發(GUI)--環境搭建


本文采用中國大陸版CC協議發布
作者保留以下權利:

  1. 署名(Attribution):必須提到原作者。
  2. 非商業用途(Noncommercial):不得用于盈利性目的。
  3. 禁止演繹(No Derivative Works):不得修改原作品, 不得再創作。
    新浪微博 @軟體動物小Ai

15年的時候在自己的博客上面發布了一篇Cura二次開發環境配置的文章,之后一直不斷有朋友咨詢相關問題,由于工作比較忙沒能一一回復。同時我之前承諾的后續文章也沒有兌現,在此和大家說聲抱歉。

當前版本的Cura較之前已經有了很大的改變,因此我覺得有必要更新一下了,同時由于當時在寫作時只是作為自學筆記并不是很了解相關的原理,其中可能有一些錯誤,也會在本文中進行更正。

一、約定

本文使用的系統為64位的Windows 10操作系統,安裝了32位的Python 2.7 ,所有操作均在bash中完成

二、準備工作(配置Python和虛擬環境)

  1. 安裝Git Bash
    首先去官網下載對應版本的 git for windows,然后一路默認安裝。
  2. 安裝Python
    直接去官網下載2.7版本的Python并安裝(位數無所謂,我安裝的是32位),安裝完成后,在bash中運行winpty python,測試一下是否能夠進入python解釋器。
  3. 安裝pip
    下載pip-get.py,然后python pip-get.py運行就可以完成安裝
  4. 安裝virtualenv
    pip install virtualenv

三、下載Cura源碼

  • 首先你需要在GitHub上面fork一下cura源碼


    fork
  • 查看fork后的代碼倉庫URL


    查看url
  • 克隆代碼到本地任意位置
    git clone https://github.com/hanxiaomax/Cura.git

四、安裝Cura的依賴庫

  • 首先,創建虛擬環境并切換
    • 進入cura目錄,運行bash
    • 執行virtualenv env創建一個名為env的虛擬環境
    • source env/Scripts/activate 切換到虛擬環境中

以下操作均在虛擬環境env中進行

  • 安裝依賴庫
    在cura文件夾可以看到一個requirements.txt文件,可以嘗試使用pip install -r requirements.txt直接安裝,但是很可能會失敗。
PyOpenGL>=3.0.2
numpy>=1.6.2
pyserial>=2.6
power>=1.2
setuptools>=0.6.34

文件內容如上,我們可以先安裝除numpy以外的包

pip install PyOpenGL
pip install pyserial
pip install power
pip install setuptools

然后我們安裝numpy。對于Windows用戶,最好去這里下載.wh1文件。


如果你是32位Python就下載箭頭所指的包,64位就下載下面一個。下載完成后把它拷貝到cura目錄下面,然后執行pip install <filename>,其中<filename>就是你下載下來文件的名字。

五、安裝wxPython

wxPython是cura的GUI框架, 不能直接從pip安裝,首先我們去官網下載,注意這里版本一定要下對,32/64位取決于Python位數而不是操作系統的位數。如果下載錯誤,則運行時會提示:

**DLL load failed: 1% 不是有效的win32 應用程序**

安裝完成后,wxPython被安裝到了系統的Python庫中,我們在虛擬環境里面是無法使用的,所以我們需要到C:\Python27\Lib\site-packages中把 wx-3.0-mswwx.pth,wxversion.py這三個拷貝到虛擬環境下面的 Lib/site-packages中。

在bash中運行pythonwinpty python來啟動解釋器,然后嘗試import wx,如果可以導入,說明安裝成功。

六、運行Cura

這里我們啟動Cura的GUI程序,由于沒有包括引擎部分,所以是無法實現切片的,只能夠允許你去定制Cura的界面。
之前的文章里面我提到:

0.修改app.py
我們并不希望,每次修改代碼后,都要對Cura重新打包然后運行查看效果,而是希望有更加方便的預覽辦法。其實非常簡單,只需要把Cura當做一個模塊運行即可。
~\Cura\gui\app.py 中我們需要添加幾行代碼,使其可以作為模塊單獨運行
if name == 'main': app=CuraApp("1.txt")#隨便指定一個文件即可 app.MainLoop()#開啟wx的主循環

1.啟動
在cura根目錄下 python -m Cura.gui.app
會出現splash畫面,如果沒有進一步啟動程序,說明有一些腳本無法載入,一般是因為導入不了某些庫。此時我們需要檢查一下是否所有的依賴都已經安裝。。正常情況應該是在稍許延時后完成啟動。

我發現現在已經無法使用該方法了,其實當時有點舍近求遠了。

最簡單的啟動辦法是:
在Cura根目錄執行python -m Cura.cura,隨后即可看到歡迎界面,程序成功啟動。

運行截圖

WTF!沒有正常啟動?而且沒有報錯?請看下面的錯誤排查環節!

6.錯誤排查

Cura在啟動時已經把所有的輸出都做了重定向,所以在控制臺里面是無法看到報錯信息和print輸出的信息的。

  • 一種方法是:查找output.txt文件,通常會在根目錄下,如果不在就搜索一下系統。
  • 另一種方法:修改gui/app.py中代碼
class CuraApp(wx.App):
    def __init__(self, files):

        if platform.system() == "Windows" and not 'PYCHARM_HOSTED' in os.environ:
            #super(CuraApp, self).__init__(redirect=True, filename="output.txt")
            #修改為:
            #super(CuraApp, self).__init__(redirect=True, filename=False)
        else:
            super(CuraApp, self).__init__(redirect=False)

隨后就可以看到相應的錯誤信息,根據報錯內容來進行處理。大家可以在留言里面說一下自己遇到的問題。


結束語

工作實在比較忙,希望大家理解,希望能夠有時間寫一下后續的內容。至于到底有沒有后續呢?那就得看大家打賞的熱情啦~(手動斜眼)

歐耶
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容