Tuesday, September 24, 2019
NX12
NX 12 Help
https://docs.plm.automation.siemens.com/tdoc/nx/12/nx_help
Python related
https://docs.plm.automation.siemens.com/tdoc/nx/12/nx_help#search:page=1;rpp=10;query=python
Journal 說明: https://docs.plm.automation.siemens.com/tdoc/nx/12/nx_help#uid:tls_jrn_ov
從 https://docs.plm.automation.siemens.com/tdoc/nx/12/nx_help#uid:preferences_prf_ui_journal_t 得知, NX 12 的 Journal Language 可以將操作流程的錄製設為 Python 程式語言, 然後再設法根據此一錄製程式執行二次開發的修改.
從 https://docs.plm.automation.siemens.com/tdoc/nx/12/nx_help#uid:xid1070663 得知 NX 12 所支援的 NX Open 程式語言.
錄製 Journal 的方法: https://docs.plm.automation.siemens.com/tdoc/nx/12/nx_help#uid:tools_jrn_ht
在機器手臂的製造加工流程中, NX 12 支援由 Python 編寫機器手臂在軌道中運動的控制程式:
https://docs.plm.automation.siemens.com/tdoc/nx/12/nx_help#uid:xid1058754
https://docs.plm.automation.siemens.com/tdoc/nx/12/nx_help#uid:xid1058668
在 Journal editor 中建立程式檔案: https://docs.plm.automation.siemens.com/tdoc/nx/12/nx_help#uid:tools_jrn_create_ht
播放 Journal 檔案: https://docs.plm.automation.siemens.com/tdoc/nx/12/nx_help#uid:tools_jrn_play_ht
在 Journal 中插入註解: https://docs.plm.automation.siemens.com/tdoc/nx/12/nx_help#uid:tools_jrn_insert_comment_ht
在 Journal 中插入暫停點: https://docs.plm.automation.siemens.com/tdoc/nx/12/nx_help#uid:tools_jrn_insert_pause_ht
修改 Journal 錄製中跳出選擇畫面: https://docs.plm.automation.siemens.com/tdoc/nx/12/nx_help#uid:xid280763
在 CAE模擬程式中加入重力加速度: https://docs.plm.automation.siemens.com/tdoc/nx/12/nx_help#uid:id1616274
CAE 資料模型: https://docs.plm.automation.siemens.com/tdoc/nx/12/nx_help#uid:id1615036
NX Open CAE程式範例: https://docs.plm.automation.siemens.com/tdoc/nx/12/nx_help#uid:id790045
強制模型更新: https://docs.plm.automation.siemens.com/tdoc/nx/12/nx_help#uid:id1616272
NX Open for CAE 文件: https://docs.plm.automation.siemens.com/tdoc/nx/12/nx_help#uid:id1616537
丹麥
Denmark
https://en.wikipedia.org/wiki/Denmark
C++
Bjarne Stroustrup (1950): https://en.wikipedia.org/wiki/Bjarne_Stroustrup
CS (MSc): https://en.wikipedia.org/wiki/Aarhus_University
CS (PhD): https://en.wikipedia.org/wiki/University_of_Cambridge
Delphi
C#
Typescript
Anders Hejlsberg (1960): https://en.wikipedia.org/wiki/Anders_Hejlsberg
EE (BS): https://en.wikipedia.org/wiki/Technical_University_of_Denmark
Dart
Lars Bak (1965): https://en.wikipedia.org/wiki/Lars_Bak_(computer_programmer)
CS (MSc): https://en.wikipedia.org/wiki/Aarhus_University
https://en.wikipedia.org/wiki/Denmark
C++
Bjarne Stroustrup (1950): https://en.wikipedia.org/wiki/Bjarne_Stroustrup
CS (MSc): https://en.wikipedia.org/wiki/Aarhus_University
CS (PhD): https://en.wikipedia.org/wiki/University_of_Cambridge
Delphi
C#
Typescript
Anders Hejlsberg (1960): https://en.wikipedia.org/wiki/Anders_Hejlsberg
EE (BS): https://en.wikipedia.org/wiki/Technical_University_of_Denmark
Dart
Lars Bak (1965): https://en.wikipedia.org/wiki/Lars_Bak_(computer_programmer)
CS (MSc): https://en.wikipedia.org/wiki/Aarhus_University
Tuesday, July 30, 2019
機械設計工程師的計算機程式與電腦輔助設計實習課程
2019 Fall 機械設計工程系課程
計算機程式: http://mde.tw/cp2019 (機械設計四技一甲與一乙, 必修課)
Ebooks (使用校內 IP 下載):
Python:
https://link.springer.com/content/pdf/10.1007%2F978-1-4842-3204-0.pdf
https://link.springer.com/content/pdf/10.1007%2F978-3-319-13072-9.pdf
https://link.springer.com/content/pdf/10.1007%2F978-3-030-20290-3.pdf
C:
https://link.springer.com/content/pdf/10.1007%2F978-1-4612-1484-7.pdf
C++:
https://link.springer.com/content/pdf/10.1007%2F978-1-4302-0656-9.pdf
https://link.springer.com/content/pdf/10.1007%2F978-1-349-14449-5.pdf
https://link.springer.com/content/pdf/10.1007%2F978-1-4612-1630-8.pdf
Dart:
https://link.springer.com/content/pdf/10.1007%2F978-1-4842-0556-3.pdf
https://link.springer.com/content/pdf/10.1007%2F978-1-4842-4972-7.pdf
Android:
https://link.springer.com/content/pdf/10.1007%2F978-1-4842-0019-3.pdf
https://link.springer.com/content/pdf/10.1007%2F978-1-4302-4063-1.pdf
https://link.springer.com/content/pdf/10.1007%2F978-1-4842-2259-1.pdf
https://link.springer.com/content/pdf/10.1007%2F978-1-4302-1063-4.pdf
https://link.springer.com/content/pdf/10.1007%2F978-1-4302-3244-5.pdf
https://link.springer.com/content/pdf/10.1007%2F978-1-4842-3333-7.pdf
IOTs:
https://link.springer.com/content/pdf/10.1007%2F978-3-662-54904-9.pdf
電腦輔助設計實習: http://mde.tw/cad2019 (機械設計四技二甲與二乙, 必修課, 相關課程: 計算機程式與網際內容管理)
Ebooks (使用校內 IP 下載):
CAD History:
http://mde.tw/cad2019/downloads/cad_history.pdf
AutoDesk Inventor 2018:
https://link.springer.com/content/pdf/10.1007%2F978-1-4842-3225-5.pdf
Creo:
https://link.springer.com/content/pdf/10.1007%2F978-3-319-23359-8.pdf
Solidworks & NX:
https://link.springer.com/content/pdf/10.1007%2F978-3-319-03862-9.pdf
The NURBs Book:
https://link.springer.com/content/pdf/10.1007%2F978-3-642-59223-2.pdf
Computational Geometry
https://link.springer.com/content/pdf/10.1007%2F978-3-662-03427-9.pdf
Deep Learning:
https://link.springer.com/content/pdf/10.1007%2F978-3-319-94463-0.pdf
https://link.springer.com/content/pdf/10.1007%2F978-1-4842-3516-4.pdf
https://link.springer.com/content/pdf/10.1007%2F978-3-319-73004-2.pdf
https://link.springer.com/content/pdf/10.1007%2F978-1-4842-4261-2.pdf
Problem Solving:
https://link.springer.com/content/pdf/10.1007%2F978-3-030-04254-7.pdf
或登入 @gm 電子郵箱後, 直接下載上述全部電子書.7z
計算機程式: http://mde.tw/cp2019 (機械設計四技一甲與一乙, 必修課)
Ebooks (使用校內 IP 下載):
Python:
https://link.springer.com/content/pdf/10.1007%2F978-1-4842-3204-0.pdf
https://link.springer.com/content/pdf/10.1007%2F978-3-319-13072-9.pdf
https://link.springer.com/content/pdf/10.1007%2F978-3-030-20290-3.pdf
C:
https://link.springer.com/content/pdf/10.1007%2F978-1-4612-1484-7.pdf
C++:
https://link.springer.com/content/pdf/10.1007%2F978-1-4302-0656-9.pdf
https://link.springer.com/content/pdf/10.1007%2F978-1-349-14449-5.pdf
https://link.springer.com/content/pdf/10.1007%2F978-1-4612-1630-8.pdf
Dart:
https://link.springer.com/content/pdf/10.1007%2F978-1-4842-0556-3.pdf
https://link.springer.com/content/pdf/10.1007%2F978-1-4842-4972-7.pdf
Android:
https://link.springer.com/content/pdf/10.1007%2F978-1-4842-0019-3.pdf
https://link.springer.com/content/pdf/10.1007%2F978-1-4302-4063-1.pdf
https://link.springer.com/content/pdf/10.1007%2F978-1-4842-2259-1.pdf
https://link.springer.com/content/pdf/10.1007%2F978-1-4302-1063-4.pdf
https://link.springer.com/content/pdf/10.1007%2F978-1-4302-3244-5.pdf
https://link.springer.com/content/pdf/10.1007%2F978-1-4842-3333-7.pdf
IOTs:
https://link.springer.com/content/pdf/10.1007%2F978-3-662-54904-9.pdf
電腦輔助設計實習: http://mde.tw/cad2019 (機械設計四技二甲與二乙, 必修課, 相關課程: 計算機程式與網際內容管理)
Ebooks (使用校內 IP 下載):
CAD History:
http://mde.tw/cad2019/downloads/cad_history.pdf
AutoDesk Inventor 2018:
https://link.springer.com/content/pdf/10.1007%2F978-1-4842-3225-5.pdf
Creo:
https://link.springer.com/content/pdf/10.1007%2F978-3-319-23359-8.pdf
Solidworks & NX:
https://link.springer.com/content/pdf/10.1007%2F978-3-319-03862-9.pdf
The NURBs Book:
https://link.springer.com/content/pdf/10.1007%2F978-3-642-59223-2.pdf
Computational Geometry
https://link.springer.com/content/pdf/10.1007%2F978-3-662-03427-9.pdf
Deep Learning:
https://link.springer.com/content/pdf/10.1007%2F978-3-319-94463-0.pdf
https://link.springer.com/content/pdf/10.1007%2F978-1-4842-3516-4.pdf
https://link.springer.com/content/pdf/10.1007%2F978-3-319-73004-2.pdf
https://link.springer.com/content/pdf/10.1007%2F978-1-4842-4261-2.pdf
Problem Solving:
https://link.springer.com/content/pdf/10.1007%2F978-3-030-04254-7.pdf
或登入 @gm 電子郵箱後, 直接下載上述全部電子書.7z
Friday, July 12, 2019
AutoDesk Inventor Professional 免費學生三年版本
學生可以免費使用 AutoDesk Inventor
校園下載
以下連結必須在校園網路、使用學校代理主機或 vpn 模式下才可下載
AutoDesk PDSU (Product Design Suite Ultimate edition) 包含:
Autodesk Inventor Professional
AutoCAD Mechanical
AutoCAD Electrical
AutoCAD
Navisworks Simulate
AutoCAD Raster Design
Autodesk Recap
Autodesk Vault Basic
Autodesk Fusion 360
Navisworks Manage
AutoDesk 安裝教學.pdf
官方網站下載
希望在任何地方使用,可以從 https://www.autodesk.com/education/free-software/inventor-professional, 以 @gm 電子郵箱登錄且認證後下載, 取得三年免費使用授權. 允許同時安裝在筆電與桌上型電腦共兩套.
建議安裝流程
利用學校配發的電子郵箱, 連結至 https://www.autodesk.com/education/free-software/inventor-professional, 登記帳號, 驗證 email 後, 取得 AutoDesk Inventor Professional 版本 2019 的 Serial Number 後, 從學校網站中下載 AutoDesk PDSU, 安裝後, 利用前述所取得的序號啟動 AutoDesk Inventor Professional 2019, 之後就可以在任何地方上網使用.
校園下載
以下連結必須在校園網路、使用學校代理主機或 vpn 模式下才可下載
AutoDesk PDSU (Product Design Suite Ultimate edition) 包含:
Autodesk Inventor Professional
AutoCAD Mechanical
AutoCAD Electrical
AutoCAD
Navisworks Simulate
AutoCAD Raster Design
Autodesk Recap
Autodesk Vault Basic
Autodesk Fusion 360
Navisworks Manage
AutoDesk 安裝教學.pdf
官方網站下載
希望在任何地方使用,可以從 https://www.autodesk.com/education/free-software/inventor-professional, 以 @gm 電子郵箱登錄且認證後下載, 取得三年免費使用授權. 允許同時安裝在筆電與桌上型電腦共兩套.
建議安裝流程
利用學校配發的電子郵箱, 連結至 https://www.autodesk.com/education/free-software/inventor-professional, 登記帳號, 驗證 email 後, 取得 AutoDesk Inventor Professional 版本 2019 的 Serial Number 後, 從學校網站中下載 AutoDesk PDSU, 安裝後, 利用前述所取得的序號啟動 AutoDesk Inventor Professional 2019, 之後就可以在任何地方上網使用.
電腦輔助設計室群準複製流程
群準Pro V6 版本複製
電腦輔助設計室目前使用的群準還原卡為 Pro V6 版本, 只能用於 MBR 硬碟規劃, 儘管可能在 2020 Spring 即將換為 Server 版本, 但是 2019 Fall 可能還是必須採用 Pro V6 版本.
目前已知最佳複製模式為 32 位元, 選擇 11 號網路卡 (配合主機板上方的 Intel 網路卡連線), 並且選擇模式 2 執行複製, 可以取得最快 6GB/sec 的傳輸速度, 以目前第三磁區 100 GB 以內的有效資料, 可以在 25 分鐘之內完成複製.
複製流程
1. 首先必須將各電腦開機至群準選單, 然後按下 F10 後輸入管理者密碼, 進入後, 將磁碟複製頁面中的設定選為:
32 位元複製模式
11 號網路卡
2. 之後各電腦完成上述設定後重新開機至選單後, client 端按下 F9 後等待完成登錄.
3. 準備作為來源的電腦, 重新開機至選單後, 按下 F10 後輸入管理者密碼後, 選擇磁碟複製頁面, 啟用登錄流程, 等待各連線電腦登錄完成之後, 即可進入複製選單, 選擇要完整複製或差異複製後, 選擇開始傳送後, 選擇要複製的磁區, 以第三磁區而言, 為 Win10 磁區.
參考資料: https://github.com/mdecourse/wcms2018/issues/7
電腦輔助設計室目前使用的群準還原卡為 Pro V6 版本, 只能用於 MBR 硬碟規劃, 儘管可能在 2020 Spring 即將換為 Server 版本, 但是 2019 Fall 可能還是必須採用 Pro V6 版本.
目前已知最佳複製模式為 32 位元, 選擇 11 號網路卡 (配合主機板上方的 Intel 網路卡連線), 並且選擇模式 2 執行複製, 可以取得最快 6GB/sec 的傳輸速度, 以目前第三磁區 100 GB 以內的有效資料, 可以在 25 分鐘之內完成複製.
複製流程
1. 首先必須將各電腦開機至群準選單, 然後按下 F10 後輸入管理者密碼, 進入後, 將磁碟複製頁面中的設定選為:
32 位元複製模式
11 號網路卡
2. 之後各電腦完成上述設定後重新開機至選單後, client 端按下 F9 後等待完成登錄.
3. 準備作為來源的電腦, 重新開機至選單後, 按下 F10 後輸入管理者密碼後, 選擇磁碟複製頁面, 啟用登錄流程, 等待各連線電腦登錄完成之後, 即可進入複製選單, 選擇要完整複製或差異複製後, 選擇開始傳送後, 選擇要複製的磁區, 以第三磁區而言, 為 Win10 磁區.
參考資料: https://github.com/mdecourse/wcms2018/issues/7
Wednesday, July 3, 2019
UGS NX3
2005 年底, 機械設計工程系導入 UGS NX3, 大約一年半之後, Siemens 以 35 億美元購入 UGS, 期間又經歷了 13 年, 終於又再有機會使用 NX, 這時已經到了 12 版.
當年的 NX3 總共導入 100 套完整教育版本, 花了 9 萬台幣, 經過大約八年閒置期, 想要重新啟動認證主機, 事情當然沒有想像中簡單.
當年所使用的 Windows 操作系統為 XP 32 位元版本, 前後使用大約 6 年, 到 2011 年, 操作系統轉為 Windows 7, 同樣是 32 位元版本, 認證主機的架構除了納入 64 位元系統, IPv6 也在 2012 年正式登場, 但也正在這個時候 NX 來到第八版, 教育版的價位不斷攀升之後, 只得以相同合理的價位換為 PTC Creo 2.0.
於情於理, 一個自認能夠培養未來產業頂尖人才的科技大學, 實在沒有理由花大錢導入商用套件. 反而, 軟體代理商除了應該要贈送軟體, 並且額外付費請學校使用該特定套件教學才對.
2012-2015 年持續使用 Creo 3 之後, 終於在 2015 年底 Onshape 提供全球免費教育版, 於是在最佳化電腦輔助設計室的網路環境之後, 至今的電腦輔助設計與協同產品設計實習課程, 全面採用 Onshape.
至於目前看待 NX3 乃至 NX12 的目的, 僅在於了解其程式基本架構, 當年的 NX3, 已經可以透過 nx3.c:
NX10 之後, 已經直接支援 Python, 只是 NX12 使用的 Python 版本內定為 3.6.1, 比可攜程式系統中的 3.7.3 舊, 因此相容性必須經過測試才能確定.
最後, 學員只要登入 @gm 電子郵箱, 就可以下載 NX3_portable.7z, 解開壓縮檔放入隨身碟, 並且連上網路擷取授權認證後, 就可以使用.
利用 NX3 執行零件繪製與受力變形分析, 請參考:
當年的 NX3 總共導入 100 套完整教育版本, 花了 9 萬台幣, 經過大約八年閒置期, 想要重新啟動認證主機, 事情當然沒有想像中簡單.
當年所使用的 Windows 操作系統為 XP 32 位元版本, 前後使用大約 6 年, 到 2011 年, 操作系統轉為 Windows 7, 同樣是 32 位元版本, 認證主機的架構除了納入 64 位元系統, IPv6 也在 2012 年正式登場, 但也正在這個時候 NX 來到第八版, 教育版的價位不斷攀升之後, 只得以相同合理的價位換為 PTC Creo 2.0.
於情於理, 一個自認能夠培養未來產業頂尖人才的科技大學, 實在沒有理由花大錢導入商用套件. 反而, 軟體代理商除了應該要贈送軟體, 並且額外付費請學校使用該特定套件教學才對.
2012-2015 年持續使用 Creo 3 之後, 終於在 2015 年底 Onshape 提供全球免費教育版, 於是在最佳化電腦輔助設計室的網路環境之後, 至今的電腦輔助設計與協同產品設計實習課程, 全面採用 Onshape.
至於目前看待 NX3 乃至 NX12 的目的, 僅在於了解其程式基本架構, 當年的 NX3, 已經可以透過 nx3.c:
#include所編譯成的動態連結程式庫, nx3.pyd, 讓下列 Python 3 程式呼叫:#include #include #include #include #include #include #include #include #include #include #include // for block creation #include #include // for stl 資料轉出 #include #include // NX initialization extern int nx3init(void) { UF_initialize(); return 0; } static PyObject* mod_nx3init(PyObject *self, PyObject *args) { int fail = 0; // ii 表示兩個輸入變數都是整數 nx3init(); // i 表示 s 為整數 return Py_BuildValue("i",fail); } extern int nx3term(void) { UF_terminate(); return 0; } static PyObject* mod_nx3term(PyObject *self, PyObject *args) { int fail = 0; // ii 表示兩個輸入變數都是整數 nx3term(); // i 表示 s 為整數 return Py_BuildValue("i",fail); } // 定義內部運算的函式內容 extern int nx3(int a, int b) { tag_t part_tag; tag_t reopen_part_tag; /* Open a new part then save it. */ //UF_initialize(); UF_PART_new("a_blank_part.prt",UF_PART_ENGLISH,&part_tag); UF_PART_save(); //UF_terminate(); return a+b; } // sum 函式的 interface static PyObject* mod_nx3(PyObject *self, PyObject *args) { int a; int b; int s; // ii 表示兩個輸入變數都是整數 if (!PyArg_ParseTuple(args,"ii",&a,&b)) return NULL; // 這裡的 sum2 則是內部的函式定義, 與外部呼叫模組或函式名稱沒有直接關係 s = nx3(a,b); // i 表示 s 為整數 return Py_BuildValue("i",s); } // 定義內部運算的函式內容 extern int nx4(int a, int b) { tag_t part_tag; tag_t reopen_part_tag; //UF_initialize(); UF_PART_new("abc_blank_part.prt",UF_PART_ENGLISH,&part_tag); UF_PART_save(); //UF_terminate(); return a-b; } // sum 函式的 interface static PyObject* mod_nx4(PyObject *self, PyObject *args) { int a; int b; int s; // ii 表示兩個輸入變數都是整數 if (!PyArg_ParseTuple(args,"ii",&a,&b)) return NULL; // 這裡的 sum2 則是內部的函式定義, 與外部呼叫模組或函式名稱沒有直接關係 s = nx4(a,b); // i 表示 s 為整數 return Py_BuildValue("i",s); } // 建立 block 的函式處理 extern int nx3block(double corner0, double corner1, double corner2, char* edge0, char* edge1, char* edge2) { double corner[3] ={corner0,corner1,corner2}; // 指定長寬高 char* edge[3] = {edge0,edge1,edge2}; tag_t block_tag; UF_PART_new("abc_blank_part.prt",UF_PART_ENGLISH,&block_tag); UF_MODL_create_block(UF_NULLSIGN,NULL_TAG,corner,edge,&block_tag); return 0; } static PyObject* mod_nx3block(PyObject *self, PyObject *args) { double corner0, corner1, corner2; char *edge0, *edge1, *edge2; int fail = 0; // ii 表示兩個輸入變數都是整數 if (!PyArg_ParseTuple(args,"dddsss",&corner0,&corner1,&corner2,&edge0,&edge1,&edge2)) return NULL; fail = nx3block(corner0,corner1,corner2,edge0,edge1,edge2); // i 表示 fail 為整數 return Py_BuildValue("i",fail); } // 開啟零件檔案 extern int partopen(char* filename) { UF_PART_load_status_t load_status; tag_t part; int ifail = 0; // 根據使用者所要處理的檔案, 將零件檔案打開 ifail = UF_PART_open(filename,&part,&load_status); return ifail; } static PyObject* mod_partopen(PyObject *self, PyObject *args) { char* filename; int fail = 0; if (!PyArg_ParseTuple(args,"s",&filename)) return NULL; fail = partopen(filename); // i 表示 fail 為整數 return Py_BuildValue("i",fail); } // 關閉零件檔案 extern int partclose(char* filename) { int ifail = 0; tag_t part_tag; part_tag = UF_PART_ask_part_tag(filename); ifail = UF_PART_close(part_tag, 1, 1); return ifail; } static PyObject* mod_partclose(PyObject *self, PyObject *args) { char* filename; int fail = 0; if (!PyArg_ParseTuple(args,"s",&filename)) return NULL; fail = partclose(filename); // i 表示 fail 為整數 return Py_BuildValue("i",fail); } extern int partsaveas(char* filename) { UF_PART_save_as(filename); return 0; } static PyObject* mod_partsaveas(PyObject *self, PyObject *args) { char* filename; int fail = 0; // ii 表示兩個輸入變數都是整數 if (!PyArg_ParseTuple(args,"s",&filename)) return NULL; fail = partsaveas(filename); // i 表示 fail 為整數 return Py_BuildValue("i",fail); } extern int editexp(char* exp) { // exp should be something like "p0=10" int ifail = 0; ifail = UF_MODL_edit_exp(exp); return ifail; } static PyObject* mod_editexp(PyObject *self, PyObject *args) { char *exp, *str; double dimension; int fail = 0; // ii 表示兩個輸入變數都是整數 if (!PyArg_ParseTuple(args,"sd",&exp,&dimension)) return NULL; str = malloc(256); sprintf(str,"%s=%G",exp,dimension); fail = editexp(str); free(str); // i 表示 fail 為整數 return Py_BuildValue("i",fail); } extern int modelupdate() { // exp should be something like "p0=10" int ifail = 0; ifail = UF_MODL_update(); return ifail; } static PyObject* mod_modelupdate(PyObject *self, PyObject *args) { int fail = 0; fail = modelupdate(); // i 表示 fail 為整數 return Py_BuildValue("i",fail); } // 計算特定零件的體積資料 // 將零件轉為 STL 檔案, 文字格式或二位元格式 // 開啟文字格式的 STL 檔案 extern int savetextstl(char* filename) { void * file_handle; int ifail = 0; tag_t body_tag; int num_errors; UF_STD_stl_error_p_t error_info; ifail = UF_STD_open_text_stl_file(filename,TRUE,&file_handle); // 擷取零件中的實體 (type=70, subtype=0) 資料 UF_MODL_ask_object(70,0,&body_tag); // 由 UF_MODL_ask_object 取得的 tag 確實為 body tag ifail = UF_STD_put_solid_in_stl_file( file_handle, NULL_TAG, body_tag, 0.1, 0.5, 0.05, &num_errors, &error_info); ifail = UF_STD_close_stl_file (file_handle); return ifail; } static PyObject* mod_savetextstl(PyObject *self, PyObject *args) { char* filename; int fail = 0; if (!PyArg_ParseTuple(args,"s",&filename)) return NULL; fail = savetextstl(filename); // i 表示 fail 為整數 return Py_BuildValue("i",fail); } // 開啟二位元格式的 STL 檔案 extern int savebinstl(char* filename) { void * file_handle; int ifail = 0; tag_t body_tag; int num_errors; UF_STD_stl_error_p_t error_info; // TRUE append // FALSE not append // apply filename as header ifail = UF_STD_open_binary_stl_file(filename,TRUE,filename,&file_handle); /* extern int UF_STD_open_binary_stl_file ( char * file_name, logical append, char * header, void ** file_handle ); char * file_name Input Name of STL file to be written logical append Input Append flag: TRUE = Append FALSE = No append char * header Input Header text for start of binary file void ** file_handle Output Handle of file */ // 擷取零件中的實體 (type=70, subtype=0) 資料 UF_MODL_ask_object(70,0,&body_tag); // 由 UF_MODL_ask_object 取得的 tag 確實為 body tag ifail = UF_STD_put_solid_in_stl_file( file_handle, NULL_TAG, body_tag, 0.1, 0.5, 0.05, &num_errors, &error_info); ifail = UF_STD_close_stl_file (file_handle); return ifail; } static PyObject* mod_savebinstl(PyObject *self, PyObject *args) { char* filename; int fail = 0; if (!PyArg_ParseTuple(args,"s",&filename)) return NULL; fail = savebinstl(filename); // i 表示 fail 為整數 return Py_BuildValue("i",fail); } // ask part volume, 這裡使用的單位為 cm^3 extern double askvolume() { void * file_handle; int ifail = 0; tag_t body_tag; char *str; // 配合設定不同物理條件的精確度 double acc_val[11] = {.01,0,0,0,0,0,0,0,0,0,0}; double massprop[47]; double massprop_stat[13]; // 擷取零件中的實體 (type=70, subtype=0) 資料 UF_MODL_ask_object(70,0,&body_tag); // 這裡假設零件檔案中只有一個實體 //求質量特性, UF_MODL_ask_mass_props_3d(&body_tag,1,1,3,1.0,1,acc_val,massprop,massprop_stat); return massprop[1]; } static PyObject* mod_askvolume(PyObject *self, PyObject *args) { double volume; int fail = 0; volume = askvolume(); // i 表示 fail 為整數 return Py_BuildValue("d",volume); } // 與函式對應的結構定義 static struct PyMethodDef Mod_Nx3[] = { {"nx3", mod_nx3, METH_VARARGS, "Description.."}, {"nx4", mod_nx4, METH_VARARGS, "Description.."}, {"nx3init", mod_nx3init, METH_VARARGS, "NX3 initilization function"}, {"nx3term", mod_nx3term, METH_VARARGS, "NX3 termination function"}, {"nx3block", mod_nx3block, METH_VARARGS, "Block Creation"}, {"partsaveas", mod_partsaveas, METH_VARARGS, "part save as"}, {"partopen", mod_partopen, METH_VARARGS, "part open"}, {"partclose", mod_partclose, METH_VARARGS, "part open"}, {"editexp", mod_editexp, METH_VARARGS, "edit expression"}, {"modelupdate", mod_modelupdate, METH_VARARGS, "model update"}, {"savetextstl", mod_savetextstl, METH_VARARGS, "open text stl"}, {"savebinstl", mod_savebinstl, METH_VARARGS, "open binary stl"}, {"askvolume", mod_askvolume, METH_VARARGS, "ask part volume"}, {NULL,NULL,0,NULL}, }; // 模組結構定義 // 配合 Python 3 新增的模組結構定義 static struct PyModuleDef ModNx3 = { PyModuleDef_HEAD_INIT, "Nx3Module", /* 模組名稱 */ "Nx3Module_doc", /* 模組文件, may be NULL */ -1, /* size of per-interpreter state of the module, or -1 if the module keeps state in global variables. */ Mod_Nx3// 函式結構名稱 }; // 模組起始 // PyInit_ 後必須使用"名稱".pyd 中的模組名稱, 以便啟動 // 換言之, 若編譯連結後的動態模組名稱為 nx3.pyd, 則此地的起始函式名稱必須為 PyInit_nx3 PyMODINIT_FUNC PyInit_nx3(void) { // 建立模組的起始, 輸入為模組結構名稱之 address (void) PyModule_Create(&ModNx3); }
#coding: utf-8
# 導入 nx3.pyd
from nx3 import *
##############################
# 啟動 nx3
if (nx3init() == 0):
print("nx3 啟動")
else:
print("nx3 無法啟動")
##############################
# 開啟既有的零件檔案
partopen("block.prt")
# 針對所開啟的零件檔案, 設定其中的尺寸變數
for i in range(1,21):
for j in range(1,21):
editexp("p0",i*1.6543)
editexp("p1",j*1.4563)
editexp("p2",6)
# 進行零件的資料更新
modelupdate()
'''
# 進行相關繪圖函式的呼叫
corner = [10,10,0]
edge = ["10","10","10"]
nx3block(corner[0],corner[1],corner[2],edge[0],edge[1],edge[2])
'''
# 將尺寸變更後的零件進行存檔
#partsaveas("finalblock.prt")
#savebinstl("finalblock.stl")
print(askvolume()/2.54/2.54/2.54, "立方英吋")
partsaveas("finalblock.prt")
partclose("finalblock.prt")
##############################
# 終止 nx3
if (nx3term() == 0):
print("nx3 終止")
else:
print("nx3 無法終止")
##############################
NX10 之後, 已經直接支援 Python, 只是 NX12 使用的 Python 版本內定為 3.6.1, 比可攜程式系統中的 3.7.3 舊, 因此相容性必須經過測試才能確定.
最後, 學員只要登入 @gm 電子郵箱, 就可以下載 NX3_portable.7z, 解開壓縮檔放入隨身碟, 並且連上網路擷取授權認證後, 就可以使用.
利用 NX3 執行零件繪製與受力變形分析, 請參考:
Sunday, June 23, 2019
2019 Fall 電腦輔助設計實習課程套件
每年到了即將進入暑假, 就必須為秋季的電腦輔助設計實習課程選擇可用的電腦輔助機械設計與繪圖套件, 20 年以前 ComputerVision 的 DesignView, PD/PM, 以及 Pro/Engineer 都曾經是上課使用的套件.
之後也陸續用過 MicroStation, Cadkey, Solid Edge, Think3, Alibre, CoCreate, Inventor, NX, SolidWorks 以及 Creo.
其中使用最久的是 NX2, NX3 以及 Creo3, 因為 NX3 與 Creo 中的 Unigraphics 以及 Pro/Engineer 都源自 Unix, 在 Windows 環境可以製作為 USB 可攜套件, 且 NX 支援純 C 的 API 程式開發 ,而 Creo 則可以使用 Javascript 進行 Pro/Web.Link 程式的編寫. 常用的 NX3 與 Creo3 都只需 3 GB 以內的容量, 學員上網取得授權後, 在任何地方都可以隨時開啟, 使用非常方便.
近年來, 為了讓學生有機會自行透過開源機械設計套件, 深入了解 MCAD (Mechanical Computer Aided Design) 套件開發的細節, 並且利用雲端進行協同產品設計, 在電腦輔助設計實習與協同產品設計實習課程, 以採用 Solvespace 與 Onshape 為主.
Solvespace 雖然只能利用較簡單的繪圖長出或掃掠出實體, 但是其內部符號式解題核心可以用來開發類似 https://github.com/KmolYuan/Pyslvs-UI 的工程設計套件, 且就動態系統模擬與控制的角度而言, 簡潔的零組件正適合用於產品原型設計, 因此 2019 Fall 將繼續使用, 而且希望學員能夠嘗試進入 C++11 格式的程式碼, 自行編譯或修改相關系統功能.
至於 Onshape , 應該是對全球教育界最友善的 MCAD 套件, 純雲端的架構與特徵版次管理, 非常適合協同產品開發, 2019 Fall 也將繼續採用.
而 SolidWorks, 這套號稱全球售出最多套數的 MCAD 軟體, 校方已經採購 2017 版 (上課學員, 可以下載 SolidWorks 2017 SP2 安裝光碟), 2019 Fall 也將繼續採用, 並在上課時段提供學員下載已經安裝好的 SolidWorks 2017 SP2 虛擬主機版本.
NX, 目前系上提供 NX3 與 NX12.0.2 版 (上課學員, 可以下載 NX 12.0.2 安裝光碟), 2019 年 Fall 將重新啟用可攜的 NX3 與 NX12.0.2 (上課學員, 可以下載 NX12.0.2 虛擬主機板本), 讓學員比較一下, 經過十年的發展, 新舊兩套 MCAD 套件, 在功能上的差異. (註: 上課學員可以下載 NX3_portable.7z)
最後, 將要納入 2019 Fall 電腦輔助設計實習的 MCAD, 是已經支援 Python3 的 FreeCAD 0.18 版.
之後也陸續用過 MicroStation, Cadkey, Solid Edge, Think3, Alibre, CoCreate, Inventor, NX, SolidWorks 以及 Creo.
其中使用最久的是 NX2, NX3 以及 Creo3, 因為 NX3 與 Creo 中的 Unigraphics 以及 Pro/Engineer 都源自 Unix, 在 Windows 環境可以製作為 USB 可攜套件, 且 NX 支援純 C 的 API 程式開發 ,而 Creo 則可以使用 Javascript 進行 Pro/Web.Link 程式的編寫. 常用的 NX3 與 Creo3 都只需 3 GB 以內的容量, 學員上網取得授權後, 在任何地方都可以隨時開啟, 使用非常方便.
近年來, 為了讓學生有機會自行透過開源機械設計套件, 深入了解 MCAD (Mechanical Computer Aided Design) 套件開發的細節, 並且利用雲端進行協同產品設計, 在電腦輔助設計實習與協同產品設計實習課程, 以採用 Solvespace 與 Onshape 為主.
Solvespace 雖然只能利用較簡單的繪圖長出或掃掠出實體, 但是其內部符號式解題核心可以用來開發類似 https://github.com/KmolYuan/Pyslvs-UI 的工程設計套件, 且就動態系統模擬與控制的角度而言, 簡潔的零組件正適合用於產品原型設計, 因此 2019 Fall 將繼續使用, 而且希望學員能夠嘗試進入 C++11 格式的程式碼, 自行編譯或修改相關系統功能.
至於 Onshape , 應該是對全球教育界最友善的 MCAD 套件, 純雲端的架構與特徵版次管理, 非常適合協同產品開發, 2019 Fall 也將繼續採用.
而 SolidWorks, 這套號稱全球售出最多套數的 MCAD 軟體, 校方已經採購 2017 版 (上課學員, 可以下載 SolidWorks 2017 SP2 安裝光碟), 2019 Fall 也將繼續採用, 並在上課時段提供學員下載已經安裝好的 SolidWorks 2017 SP2 虛擬主機版本.
NX, 目前系上提供 NX3 與 NX12.0.2 版 (上課學員, 可以下載 NX 12.0.2 安裝光碟), 2019 年 Fall 將重新啟用可攜的 NX3 與 NX12.0.2 (上課學員, 可以下載 NX12.0.2 虛擬主機板本), 讓學員比較一下, 經過十年的發展, 新舊兩套 MCAD 套件, 在功能上的差異. (註: 上課學員可以下載 NX3_portable.7z)
最後, 將要納入 2019 Fall 電腦輔助設計實習的 MCAD, 是已經支援 Python3 的 FreeCAD 0.18 版.
Thursday, June 20, 2019
暑假書單
根據 https://www.analyticsvidhya.com/blog/2018/02/10-free-must-read-machine-learning-e-books/ 的推介, Data Scientists & AI Engineers 有以下免費電子書可以選讀:
Think Stats: Probability and Statistics for Programmers
http://www.greenteapress.com/thinkstats/thinkstats.pdf
Bayesian Reasoning and Machine Learning
http://web4.cs.ucl.ac.uk/staff/D.Barber/textbook/091117.pdf
Mining of Massive Datasets
http://infolab.stanford.edu/~ullman/mmds/book.pdf
Understanding Machine Learning: From Theory to Algorithms
http://www.cs.huji.ac.il/~shais/UnderstandingMachineLearning/understanding-machine-learning-theory-algorithms.pdf
A Brief Introduction to Neural Networks
http://www.dkriesel.com/_media/science/neuronalenetze-en-zeta2-2col-dkrieselcom.pdf
Deep Learning
http://www.deeplearningbook.org/
Think Stats: Probability and Statistics for Programmers
http://www.greenteapress.com/thinkstats/thinkstats.pdf
http://web4.cs.ucl.ac.uk/staff/D.Barber/textbook/091117.pdf
Mining of Massive Datasets
http://infolab.stanford.edu/~ullman/mmds/book.pdf
Understanding Machine Learning: From Theory to Algorithms
http://www.cs.huji.ac.il/~shais/UnderstandingMachineLearning/understanding-machine-learning-theory-algorithms.pdf
A Brief Introduction to Neural Networks
http://www.dkriesel.com/_media/science/neuronalenetze-en-zeta2-2col-dkrieselcom.pdf
Deep Learning
http://www.deeplearningbook.org/
Monday, June 17, 2019
與 V-rep 有關的訊息
http://project.mde.tw/blog/blue-workforce-bing-gou-v-rep-gong-si.html
https://onrobot.com/en/new-acquisition-onrobot-secures-several-new-technologies-and-products
Blue Workforce A/S and Coppelia Robotics GmbH – Merged 28th December 2016.
Blue Workforce A/S , Denmark and Coppelia Robotics GmbH, Switzerland, and has 28th December merged to pursue a shared vision on making robotics more Accessible, Applicable and Affordable.
The decision is the outcome of 3 years of intensified talks, idea sharing and mutual inspiration on how the highly innovative products and business models on both sides demonstrate the power to radically relax and improve how robotics can be conceived by both, low- and high-end users.
It became clear that a merged technology assert pool unbound, was the right way to proceed with the vision we shared. Both founders, Marc Freese from Coppelia Robotics GmbH, and Preben Hjornet from Blue Workforce A/S are experienced Roboticists with a long track records of bringing innovations into the global robot industry.
“to me it became clear, that the V-REP simulation tool was a “one of a kind” and the only one which gave me confidence that I could model behavior close enough to be valid enough to give guarantee´s on the performance shown”. Preben continues “Once I got into direct contact with the inventor and founder of V-REP, Marc Freese, things began to move fast forward between us, on how we could merge the robotics platform of Ragnar Robotics and V-REP.
Beyond the superior simulation capability, we have proven that the two together could add even more value to us and our customers as an emulation and real-time VR tracking tool. This has internally been a central part of our test, optimization and validation processes developing the Ragnar robotics”. Marc states “ It is a move that was mend to happen, and I’m excited about joining with Blue Workforce, and the extended opportunities it brings “ .
NEW ACQUISITION: ONROBOT SECURES SEVERAL NEW TECHNOLOGIES AND PRODUCTS
The rights to the unique robot technology behind the robot called RAGNAR have been bought by the Danish company OnRobot, because the management sees obvious synergy possibilities with OnRobot's product range. 12 robot developers from the bankrupt Danish company Blue Workforce will at the same time get a new employer as OnRobot has offered them work as developers in the successful international robot company.
Shortly before Easter, negotiations between OnRobot and the curator of Blue Workforce fell into place. It happened just 10 days after Blue Workforce was filed for bankruptcy as a result of a failed funding round. The company employed 30 employees before the bankruptcy, and OnRobot now employs 12 of these.
OnRobot has taken over all the design rights for the products in Blue Workforce as well as machines, inventory, and tools. These will be integrated into the work of OnRobot's development department, which designs equipment and gripping tools for automation solutions with collaborative robot arms of all makes, also known as collaborative applications. Both small and large manufacturers use the products from OnRobot in the manufacturing industry globally. Blue Workforce, founded in 2012, has in particular delivered solutions for the food industry and agriculture.
“We saw an obvious opportunity to expand our product portfolio with some unique technologies and competencies within soft gripping and vision technologies, i.e. solutions that can handle delicate items and foods without damaging them as well as camera-based solutions for inspection on production lines. We expect very quickly to be able to create new OnRobot products with ingredients from the inventions we’ve bought. We have nine different products today, and within the next 21 months, we would like to reach 40-50 products, grippers and sensors and vision and other technologies for collaborative robotics applications. So, by the end of 2020, we expect to be ready with a complete product range of equipment for collaborative robot solutions,” says Enrico Krog Iversen, CEO of OnRobot.
12 skilled robot developers so far employed by Blue Workforce thus received a lot of new colleagues, mainly in Denmark, from Monday 15 April, but also in Hungary, Germany, Poland, Spain, USA, China, and Singapore. OnRobot's philosophy is that factors such as geography and logistics should not stand in the way of recruiting the world's best robot technology developers. Therefore, the development team from Blue Workforce can continue to work from a local development department in Aalborg, Denmark. The hiring of the developers has taken place in a process where OnRobot's CTO, Niels Degn, has met every robot developer. With the 12 new colleagues, OnRobot's total staff now counts just over 145 employees globally, of which 50 work at the head office in Odense, Denmark. At the end of 2019, the number of employees is expected to have grown to 175 employees. Also, OnRobot is expanding its global dealer network from 200 to 1000 retailers over the coming years.
About OnRobot
Founded in 2015, OnRobot merged with Perception Robotics and OptoForce in 2018 and also acquired Purple Robotics in the autumn of 2018. In April 2019, Blue Workforce's rights were also acquired along with 12 developers. OnRobot's product range includes a wide range of robotic equipment such as electric grippers, force and torque sensors, vacuum grippers and tool changers.
The new product mix from OnRobot makes it quick and easy to automate tasks such as packaging, quality control, material handling, machine operation, assembly, and surface finishing. The head office is in Odense, Denmark, and OnRobot also has branches in Hungary, Germany, Poland, Spain, USA, China, and Singapore. The company plans to expand further through acquisitions in the coming years.
Sunday, June 16, 2019
協同產品設計實習期末考試題目規劃
考場座位安排
請注意! 各組員除了各堂課中間休息時間外 ,不可隨意離開座位.
請各組員依照學號遞增次序 (含大四重修生), 學號越小者由面對白板右前方開始, 向左依序遞增, 接續從第二、三...列入座. 中間未到場者請留下空位電腦, 以便讓其他座位電腦有問題者, 可以換到空位中可用電腦上進行考試.
開機後, 請利用隨身碟啟動系統, 並依序登入 gm 電子郵箱, github 帳號與 Onshape 帳號, 等待組長在分組倉儲中建立 Project 與各項對應 issues 後, 開始進行協同設計考試. (Projects 與 issues 規劃請參考: https://github.com/scrum-1/cd2019/projects/1)
2a 協同產品設計實習考試題目
選修四技設二甲班的學員期末考試題目如下:
Pinball Machine V-rep Simulator
請利用各分組 Github 協同倉儲中的 Project 進行協同規劃.
請利用 Onshape 進行模擬用零組件與細部零組件的協同設計與繪圖.
請利用 V-rep, 由各組員獨力完成最後的 Simulator 系統, 可以透過小寫 A 鍵控制左邊擊球搖桿, 以小寫 L 鍵控制右邊擊球搖桿, 並以向上 arrow 鍵執行發球, 其他功能 (例如:計分, 撞擊回彈, 或各元件撞擊後感測變色等) 與按鍵設定可由各組員自行定義安排.
2b 協同產品設計實習考試題目
選修四技設二乙班的學員期末考試題目如下:
Claw Machine V-rep Simulator
請利用各分組 Github 協同倉儲中的 Project 進行協同規劃.
請利用 Onshape 進行模擬用零組件與細部零組件的協同設計與繪圖.
請利用 V-rep, 由各組員獨力完成最後的 Simulator 系統, 各項功能與按鍵設定可由各組員自行定義安排.
考試交付內容
各組必須在各分組協同網站中提供協同完成之內容, 包括 Project 與 Issues 中各組員的意見發表與討論內容, 並將所完成的 Onshape 零件連結, 公開在各分組網站中, 由各組員在隨後的 W18 自評表中呈現.
各組員必須將個人所完成的 V-rep ttt 檔案公布在所上傳的 Youtube 影片下方說明欄中, 嵌入個人網站中, 並詳細說明所完成 Simulator 操作方式與功能.
各組員在考試結束前, 必須至協同產品設計實習課程自評與互評表中, 完成自評與對其他組員互評的工作.
請注意! 各組員除了各堂課中間休息時間外 ,不可隨意離開座位.
請各組員依照學號遞增次序 (含大四重修生), 學號越小者由面對白板右前方開始, 向左依序遞增, 接續從第二、三...列入座. 中間未到場者請留下空位電腦, 以便讓其他座位電腦有問題者, 可以換到空位中可用電腦上進行考試.
開機後, 請利用隨身碟啟動系統, 並依序登入 gm 電子郵箱, github 帳號與 Onshape 帳號, 等待組長在分組倉儲中建立 Project 與各項對應 issues 後, 開始進行協同設計考試. (Projects 與 issues 規劃請參考: https://github.com/scrum-1/cd2019/projects/1)
2a 協同產品設計實習考試題目
選修四技設二甲班的學員期末考試題目如下:
Pinball Machine V-rep Simulator
請利用各分組 Github 協同倉儲中的 Project 進行協同規劃.
請利用 Onshape 進行模擬用零組件與細部零組件的協同設計與繪圖.
請利用 V-rep, 由各組員獨力完成最後的 Simulator 系統, 可以透過小寫 A 鍵控制左邊擊球搖桿, 以小寫 L 鍵控制右邊擊球搖桿, 並以向上 arrow 鍵執行發球, 其他功能 (例如:計分, 撞擊回彈, 或各元件撞擊後感測變色等) 與按鍵設定可由各組員自行定義安排.
2b 協同產品設計實習考試題目
選修四技設二乙班的學員期末考試題目如下:
Claw Machine V-rep Simulator
請利用各分組 Github 協同倉儲中的 Project 進行協同規劃.
請利用 Onshape 進行模擬用零組件與細部零組件的協同設計與繪圖.
請利用 V-rep, 由各組員獨力完成最後的 Simulator 系統, 各項功能與按鍵設定可由各組員自行定義安排.
考試交付內容
各組必須在各分組協同網站中提供協同完成之內容, 包括 Project 與 Issues 中各組員的意見發表與討論內容, 並將所完成的 Onshape 零件連結, 公開在各分組網站中, 由各組員在隨後的 W18 自評表中呈現.
各組員必須將個人所完成的 V-rep ttt 檔案公布在所上傳的 Youtube 影片下方說明欄中, 嵌入個人網站中, 並詳細說明所完成 Simulator 操作方式與功能.
各組員在考試結束前, 必須至協同產品設計實習課程自評與互評表中, 完成自評與對其他組員互評的工作.
Saturday, June 15, 2019
Virtualbox 與 VBoxVmService
電腦與網路相關系統的使用存在許多「秘密」, 而這些所謂的「秘密」都與系統的版次有關, 因為各軟硬體套件在不同時間與環境下, 各有不同的組態設定匹配需求, 一旦其中一個組態條件改變, 原先軟硬體套件既有的功能, 可能就無法達成.
當電腦與網路配置條件, 在開源軟體開發流程中透過 Release 發布之後, 這些「秘密」將不復存在.
以 VMboxVmService 為例:
假如您此刻所使用的套件是從 http://vboxvmservice.sourceforge.net/ 下載, 「最新」版本是 5.2 版, 當套用 https://www.virtualbox.org/wiki/Download_Old_Builds_5_2 中截至 5.2.30 的版本執行建立 Windows 10 環境下的系統服務時, 完全沒有問題.
但是隨著 Virtualbox 更新至 https://www.virtualbox.org/wiki/Download_Old_Builds_6_0 之後, 乃至目前最新的 6.0.8 Virtualbox, 之前下載的 VBoxVmService 5.2 就會失效, 這時使用者就有兩種選擇.
相對保守的選擇是, 將 Virtualbox 從 6.0.8 退回 5.2.30 之前的版本, 可以繼續使用舊版 5.2 的 VBoxVmService, 但是過程中新版套件針對舊版所修正 5 版中的 bugs 或 6 版中的 bugs 與新增功能就無法使用.
因此, 最佳的選擇應該就是, 追蹤到 VBoxVmService 的原始碼開發倉儲: https://github.com/onlyfang/VBoxVmService/releases, 將 VBoxVmService 升級為最新的 6.0, 並且與最新的 Virtualbox 6.0.8 匹配使用.
透過以上的說明, 可以得知: http://vboxvmservice.sourceforge.net/ 與 https://sourceforge.net/projects/vboxvmservice/files/ 已經是兩個遭受原始開發者「遺棄」的網站, 內容已經不再更新. 而 https://github.com/onlyfang/VBoxVmService 才是目前仍繼續配合 https://www.virtualbox.org 持續改版的倉儲.
網路上類似的案例還有很多:
https://github.com/BBBSnowball/python-solvespace 早在六年前就只剩下參考的價值, 接替而起的倉儲是 https://github.com/KmolYuan/python-solvespace, 但是從上個月起, 這個倉儲也準備不再更新, 因為取而代之的是能夠與原始 Solvespace 開發倉儲緊密結合的 Python 分支: https://github.com/KmolYuan/solvespace/tree/python.
當電腦與網路配置條件, 在開源軟體開發流程中透過 Release 發布之後, 這些「秘密」將不復存在.
以 VMboxVmService 為例:
假如您此刻所使用的套件是從 http://vboxvmservice.sourceforge.net/ 下載, 「最新」版本是 5.2 版, 當套用 https://www.virtualbox.org/wiki/Download_Old_Builds_5_2 中截至 5.2.30 的版本執行建立 Windows 10 環境下的系統服務時, 完全沒有問題.
但是隨著 Virtualbox 更新至 https://www.virtualbox.org/wiki/Download_Old_Builds_6_0 之後, 乃至目前最新的 6.0.8 Virtualbox, 之前下載的 VBoxVmService 5.2 就會失效, 這時使用者就有兩種選擇.
相對保守的選擇是, 將 Virtualbox 從 6.0.8 退回 5.2.30 之前的版本, 可以繼續使用舊版 5.2 的 VBoxVmService, 但是過程中新版套件針對舊版所修正 5 版中的 bugs 或 6 版中的 bugs 與新增功能就無法使用.
因此, 最佳的選擇應該就是, 追蹤到 VBoxVmService 的原始碼開發倉儲: https://github.com/onlyfang/VBoxVmService/releases, 將 VBoxVmService 升級為最新的 6.0, 並且與最新的 Virtualbox 6.0.8 匹配使用.
透過以上的說明, 可以得知: http://vboxvmservice.sourceforge.net/ 與 https://sourceforge.net/projects/vboxvmservice/files/ 已經是兩個遭受原始開發者「遺棄」的網站, 內容已經不再更新. 而 https://github.com/onlyfang/VBoxVmService 才是目前仍繼續配合 https://www.virtualbox.org 持續改版的倉儲.
網路上類似的案例還有很多:
https://github.com/BBBSnowball/python-solvespace 早在六年前就只剩下參考的價值, 接替而起的倉儲是 https://github.com/KmolYuan/python-solvespace, 但是從上個月起, 這個倉儲也準備不再更新, 因為取而代之的是能夠與原始 Solvespace 開發倉儲緊密結合的 Python 分支: https://github.com/KmolYuan/solvespace/tree/python.
SolidWorks 2017
SolidWorks 2017
這是由學校所購置的 SolidWorks 2017 光碟, 共有兩片, 本系上課學員, 只要依照各學期上課時段的使用流程說明, 就可以下載, 自行安裝使用.
比較可惜的是, 當初拿到的 DVD 為 SP2, 由於之後並沒有再簽維護合約, 因此無法更新至 2017 版的 SP5.
由於認證授權主機只接受校內 IP 連線, 因此安裝完成後 (還需要安裝序號與認證主機資訊), 在校內可以直接使用, 而在校外就必須透過 VPN, 以學校帳號登入後, 才可以連線認證使用.
為了在 2019 CAD 課程中, 讓學生可以使用這個花了不少經費購買的正版 500 套 SolidWorks 2017 SP2, 修課學生屆時也可以直接下載已經安裝好的 SolidWorks 2017 虛擬主機版本.
Onshape
2019 Fall 的電腦輔助設計實習, 除了 SolidWorks 2017, 還會使用 Onshape, Solvespace 與 FreeCAD.
其中 Onshape 是全雲端電腦輔助機械設計套件, 教育單位可以免費使用, 是採用最新技術, 具零組件繪圖版次管理的套件, 使用上最為方便.
Solvespace 與 FreeCAD 都帶有原始碼, Solvespace 將從計算機程式課程教學中, 利用 g++ 進行編譯作為開端, 目的是希望能讓學生有機會自行開發 2D/3D 的輔助繪圖套件, 而 FreeCAD 從 0.18 版開始, 已經支援 Python 3, 可以視為是一套能夠利用 Python Scripts 執行零組件設計與繪圖的套件.
這是由學校所購置的 SolidWorks 2017 光碟, 共有兩片, 本系上課學員, 只要依照各學期上課時段的使用流程說明, 就可以下載, 自行安裝使用.
比較可惜的是, 當初拿到的 DVD 為 SP2, 由於之後並沒有再簽維護合約, 因此無法更新至 2017 版的 SP5.
由於認證授權主機只接受校內 IP 連線, 因此安裝完成後 (還需要安裝序號與認證主機資訊), 在校內可以直接使用, 而在校外就必須透過 VPN, 以學校帳號登入後, 才可以連線認證使用.
為了在 2019 CAD 課程中, 讓學生可以使用這個花了不少經費購買的正版 500 套 SolidWorks 2017 SP2, 修課學生屆時也可以直接下載已經安裝好的 SolidWorks 2017 虛擬主機版本.
Onshape
2019 Fall 的電腦輔助設計實習, 除了 SolidWorks 2017, 還會使用 Onshape, Solvespace 與 FreeCAD.
其中 Onshape 是全雲端電腦輔助機械設計套件, 教育單位可以免費使用, 是採用最新技術, 具零組件繪圖版次管理的套件, 使用上最為方便.
Solvespace 與 FreeCAD 都帶有原始碼, Solvespace 將從計算機程式課程教學中, 利用 g++ 進行編譯作為開端, 目的是希望能讓學生有機會自行開發 2D/3D 的輔助繪圖套件, 而 FreeCAD 從 0.18 版開始, 已經支援 Python 3, 可以視為是一套能夠利用 Python Scripts 執行零組件設計與繪圖的套件.
Tuesday, June 11, 2019
Git 不只是一種軟體工具
Git 所代表的不只是一種軟體工具, 而是一種信念, 一種人與電腦溝通的穩當工作流程.
您所處的團隊沒有使用 Git 或類似的工具, 並不代表您就要跟他們一樣打混仗, 您還在使用目錄複製的方式備份電腦資料嗎? 您還在利用電子郵件上傳或下載檔案的方式執行協同嗎?
利用電腦工作, 真的不用這樣辛苦......
充分了解 Git 與 Fossil SCM 所代表的意義, 才是體驗數位生活該有的正途!
https://www.freecodecamp.org/news/what-is-git-and-how-to-use-it-c341b049ae61/
https://www.freecodecamp.org/news/git-cheat-sheet-and-best-practices-c6ce5321f52/
https://git-scm.com/book/en/v1/Getting-Started-Git-Basics
https://rubygarage.org/blog/most-basic-git-commands-with-examples
https://product.hubspot.com/blog/git-and-github-tutorial-for-beginners
https://github.blog/2013-07-11-github-flow-in-the-browser/
https://github.blog/2009-10-20-how-we-made-github-fast/
https://help.github.com/en/articles/github-glossary
https://www.howtogeek.com/180167/htg-explains-what-is-github-and-what-do-geeks-use-it-for/
https://docs.microsoft.com/en-us/azure/devops/learn/git/what-is-git
https://help.github.com/en/articles/about-project-boards
https://github.com/trending
https://www.techrepublic.com/article/how-to-install-http-git-server-on-ubuntu-18-04/
https://www.techrepublic.com/article/how-to-set-up-a-gitlab-server-and-host-your-own-git-repositories/
您所處的團隊沒有使用 Git 或類似的工具, 並不代表您就要跟他們一樣打混仗, 您還在使用目錄複製的方式備份電腦資料嗎? 您還在利用電子郵件上傳或下載檔案的方式執行協同嗎?
利用電腦工作, 真的不用這樣辛苦......
充分了解 Git 與 Fossil SCM 所代表的意義, 才是體驗數位生活該有的正途!
https://www.freecodecamp.org/news/what-is-git-and-how-to-use-it-c341b049ae61/
https://www.freecodecamp.org/news/git-cheat-sheet-and-best-practices-c6ce5321f52/
https://git-scm.com/book/en/v1/Getting-Started-Git-Basics
https://rubygarage.org/blog/most-basic-git-commands-with-examples
https://product.hubspot.com/blog/git-and-github-tutorial-for-beginners
https://github.blog/2013-07-11-github-flow-in-the-browser/
https://github.blog/2009-10-20-how-we-made-github-fast/
https://help.github.com/en/articles/github-glossary
https://www.howtogeek.com/180167/htg-explains-what-is-github-and-what-do-geeks-use-it-for/
https://docs.microsoft.com/en-us/azure/devops/learn/git/what-is-git
https://help.github.com/en/articles/about-project-boards
https://github.com/trending
https://www.techrepublic.com/article/how-to-install-http-git-server-on-ubuntu-18-04/
https://www.techrepublic.com/article/how-to-set-up-a-gitlab-server-and-host-your-own-git-repositories/
第十七週前請完成個人期末報告影片與各項查驗資料準備 - 2019 年 Spring 最重要宣告
KMOLab 課程期末報告提醒 (W15)
宣告重點: 至今仍無個人課程網頁內容者、未每週持續提交工作進度者、未實際拍攝各週操作影片以及未實際根據評分項目參與各分組與全班協同者, 最後將無法順利取得修課及格之學期成績.
請本學期選修協同產品設計實習與網際內容管理課程的同學特別注意, 務必在第十七週上課前, 依據各週所提交推送的操作影片、Github 倉儲提交紀錄、個人網頁、分組網頁與全班協同網頁等資料, 配合下列各課程評分比列進行具體自評.
第十七週與第十八週將分別請每一位同學上台進行期末簡報, 詳細說明本學期各項評分項目中的自評內容與分數.
每一位學員自我查驗項目:
1. 是否在第十七週上課前完成個人至多 5 分鐘的期末報告影片, 上傳至以學號登錄的 Youtube 帳號下, 並分別嵌入個人網站中, 且標題分別為:
協同產品設計實習課程
國立虎尾科技大學 - 機械設計工程系 - 協同產品設計實習期末報告 - 學號 - 姓名
四技部網際內容管理課程
國立虎尾科技大學 - 機械設計工程系 - 網際內容管理期末報告 - 學號 - 姓名
五專部網際內容管理課程
國立虎尾科技大學 - 精密機械工程科 - 網際內容管理期末報告 - 學號 - 姓名
請注意: 未按照上述規定完成期末報告影片署名與提交嵌入者, 一律不予計分.
2. 每一位學員上台進行期末自評簡報時, 必須舉證個人在各週實際完成的 Github 倉儲歷程資料, 說明個人在分組與全班協同過程中所扮演的角色與貢獻, 且依據課程評分比例進行自評.
以下為各課程的學員評分比例與評分方式:
協同產品設計實習課程
評分比例:
學員出席 (20%)
Github 倉儲管理 (20%)
Onshape 協同操作 (20%)
V-rep 模擬 (20%)
程式開發 (20%)
評分方式:
CD 每週自評與互評表單: https://goo.gl/forms/qtk5fxdeGYHCeI1M2
學員自我評量 (30%)
分組自我評量 (30%)
倉儲歷程查驗 (40%)
網際內容管理課程
評分比例:
學員出席 (20%)
電腦組裝與操作系統安裝 (10%) - 以 Virtualbox 虛擬主機配置與設定取代實體安裝
網路連線配置與設定 (10%)
Github 倉儲與 CMSimfly 配置 (30%)
CMSimfly 操作 (20%)
CMSimfly 開發 (10%)
評分方式:
WCM 每週自評與互評表單: https://goo.gl/forms/gExeWw3JIrenXi453
學員自我評量 (30%)
分組自我評量 (30%)
倉儲歷程查驗 (40%)
宣告重點: 至今仍無個人課程網頁內容者、未每週持續提交工作進度者、未實際拍攝各週操作影片以及未實際根據評分項目參與各分組與全班協同者, 最後將無法順利取得修課及格之學期成績.
請本學期選修協同產品設計實習與網際內容管理課程的同學特別注意, 務必在第十七週上課前, 依據各週所提交推送的操作影片、Github 倉儲提交紀錄、個人網頁、分組網頁與全班協同網頁等資料, 配合下列各課程評分比列進行具體自評.
第十七週與第十八週將分別請每一位同學上台進行期末簡報, 詳細說明本學期各項評分項目中的自評內容與分數.
每一位學員自我查驗項目:
1. 是否在第十七週上課前完成個人至多 5 分鐘的期末報告影片, 上傳至以學號登錄的 Youtube 帳號下, 並分別嵌入個人網站中, 且標題分別為:
協同產品設計實習課程
國立虎尾科技大學 - 機械設計工程系 - 協同產品設計實習期末報告 - 學號 - 姓名
四技部網際內容管理課程
國立虎尾科技大學 - 機械設計工程系 - 網際內容管理期末報告 - 學號 - 姓名
五專部網際內容管理課程
國立虎尾科技大學 - 精密機械工程科 - 網際內容管理期末報告 - 學號 - 姓名
請注意: 未按照上述規定完成期末報告影片署名與提交嵌入者, 一律不予計分.
2. 每一位學員上台進行期末自評簡報時, 必須舉證個人在各週實際完成的 Github 倉儲歷程資料, 說明個人在分組與全班協同過程中所扮演的角色與貢獻, 且依據課程評分比例進行自評.
以下為各課程的學員評分比例與評分方式:
協同產品設計實習課程
評分比例:
學員出席 (20%)
Github 倉儲管理 (20%)
Onshape 協同操作 (20%)
V-rep 模擬 (20%)
程式開發 (20%)
評分方式:
CD 每週自評與互評表單: https://goo.gl/forms/qtk5fxdeGYHCeI1M2
學員自我評量 (30%)
分組自我評量 (30%)
倉儲歷程查驗 (40%)
網際內容管理課程
評分比例:
學員出席 (20%)
電腦組裝與操作系統安裝 (10%) - 以 Virtualbox 虛擬主機配置與設定取代實體安裝
網路連線配置與設定 (10%)
Github 倉儲與 CMSimfly 配置 (30%)
CMSimfly 操作 (20%)
CMSimfly 開發 (10%)
評分方式:
WCM 每週自評與互評表單: https://goo.gl/forms/gExeWw3JIrenXi453
學員自我評量 (30%)
分組自我評量 (30%)
倉儲歷程查驗 (40%)
Friday, May 31, 2019
協同產品設計實習課程總結
協同產品設計實習課程流程圖
2019 年 Spring 課程以 V-rep 取代 Webots.
107學年教育目標:
本課程延續四技部計算機程式與電腦輔助設計實習之教學內容, 探討如何在網際協同環境進行機械產品開發.
107-2學期教育目標:
使用可攜程式系統, 以及 CMSimfly 與 portable Git 管理各學員與分組的動態與靜態網際內容管理系統, 同時利用 Onshape 與 V-rep 執行機電資整合產品開發, 當面臨各協同設計階段所遭遇問題時, 各學員可利用客製化程式加以解決.
課程議題:
參與協同產品設計者能否透過可攜程式環境提升效能? 與非可攜程式相較, 有何效益? 必須付出那些代價?
協同設計過程中所牽涉的各種資料, 如何透過版次管理, 讓各成員在專案執行過程所投入的貢獻, 能夠公開透明?
如何利用 Onshape 執行協同產品設計?
如何利用 V-rep 執行協同產品設計?
如何利用 Git 與 Github 執行協同產品設計?
2019 年 Spring 課程以 V-rep 取代 Webots.
107學年教育目標:
本課程延續四技部計算機程式與電腦輔助設計實習之教學內容, 探討如何在網際協同環境進行機械產品開發.
107-2學期教育目標:
使用可攜程式系統, 以及 CMSimfly 與 portable Git 管理各學員與分組的動態與靜態網際內容管理系統, 同時利用 Onshape 與 V-rep 執行機電資整合產品開發, 當面臨各協同設計階段所遭遇問題時, 各學員可利用客製化程式加以解決.
課程議題:
參與協同產品設計者能否透過可攜程式環境提升效能? 與非可攜程式相較, 有何效益? 必須付出那些代價?
協同設計過程中所牽涉的各種資料, 如何透過版次管理, 讓各成員在專案執行過程所投入的貢獻, 能夠公開透明?
如何利用 Onshape 執行協同產品設計?
如何利用 V-rep 執行協同產品設計?
如何利用 Git 與 Github 執行協同產品設計?
Wednesday, May 29, 2019
WebMechaDesign - 網際機械設計
WebMechaDesign - 網際機械設計
將網際機械協同產品設計視為機電資創新產品開發流程中的重要一環, 並利用 Windows 10 與 Ubuntu 18.04 Server 作為網際虛實程式開發雙向環境, 分別結合隨身碟上的 Virtualbox 虛擬主機, 可攜 Python 程式環境, Putty 與 Filezilla client, 將 Windows 10 的 Chrome 與 Firefox 瀏覽器當作 GUI 前端, 而隨身碟上的 Virtualbox Ubuntu 18.04 Server 則作為後端 solid model 供應與分散最佳化設計運算中心.
展示網站: https://mde.tw/webmechadesign
Windows 端可攜程式系統: 2019_cdb_w13.7z
Ubuntu 端 Virtualbox 虛擬主機: W15 實作所完成的虛擬主機 vmdk 壓縮檔案.
Windows 端其他 solid model 虛擬主機: W15 實作所完成的 Solidworks 2016 虛擬主機壓縮檔案. (登入 @gm.nfu.edu.tw 後才能下載)
可開發專案
延伸 https://github.com/mdecourse/wcms-scrum1, 開發網際齒輪箱設計系統
延伸 https://mde.tw/webmechadesign/content/python-solvespace.html 開發網際平面連桿機構設計系統
延伸 https://mde.tw/webmechadesign/content/pyslvs.html 開發網際最佳化機械設計演化運算系統
將網際機械協同產品設計視為機電資創新產品開發流程中的重要一環, 並利用 Windows 10 與 Ubuntu 18.04 Server 作為網際虛實程式開發雙向環境, 分別結合隨身碟上的 Virtualbox 虛擬主機, 可攜 Python 程式環境, Putty 與 Filezilla client, 將 Windows 10 的 Chrome 與 Firefox 瀏覽器當作 GUI 前端, 而隨身碟上的 Virtualbox Ubuntu 18.04 Server 則作為後端 solid model 供應與分散最佳化設計運算中心.
展示網站: https://mde.tw/webmechadesign
Windows 端可攜程式系統: 2019_cdb_w13.7z
Ubuntu 端 Virtualbox 虛擬主機: W15 實作所完成的虛擬主機 vmdk 壓縮檔案.
Windows 端其他 solid model 虛擬主機: W15 實作所完成的 Solidworks 2016 虛擬主機壓縮檔案. (登入 @gm.nfu.edu.tw 後才能下載)
可開發專案
延伸 https://github.com/mdecourse/wcms-scrum1, 開發網際齒輪箱設計系統
延伸 https://mde.tw/webmechadesign/content/python-solvespace.html 開發網際平面連桿機構設計系統
延伸 https://mde.tw/webmechadesign/content/pyslvs.html 開發網際最佳化機械設計演化運算系統
Tuesday, May 28, 2019
WCM Week 15 實作
Ubuntu Server Setup
利用 Virtualbox 建立虛擬 Ubuntu 18.04 網際內容管理系統伺服主機:
1. 安裝最新版的 Virtualbox
2. 建立 Ubuntu 18.04 虛擬主機
3. 以網路卡橋接啟動 Ubuntu 伺服器
4. 以 sudo apt install nginx 安裝 nginx WWW 伺服器
5. 以 ifconfig 查 Ubuntu 伺服器的 IP, 測試 nginx 伺服器是否可以連線
6. 以 Windows 10 下的 Filezilla client, 將編輯好的 nginx 設定檔案送到 Ubuntu
7. 利用 Ubuntu 指令將設定檔案搬至設定位置後, 以 /etc/init.d/nginx restart 重新啟動 nginx
8. 在 Ubuntu 中以 sudo apt install uwsgi 安裝 uwsgi
9. 在 Windows 10 編輯 uwsgi 與 nginx 所需的設定檔案, 完成後以 filezilla 送至 Ubuntu.
10. 將 CMSimfly 程式碼送到 Ubuntu 伺服器中對應目錄後.
11. 在 Ubuntu 建立 cmsimfly 服務, 並設定隨機啟動.
12. 完成後, 在 Windows 10 以瀏覽器連線至 CMSimfly, 確認動態網頁與靜態網頁可以在虛擬主機中正常啟動.
13. 以上相關網際內容管理在機械工程相關應用可參考: https://www.driveworks.co.uk 或 https://robotbenchmark.net/
其他參考資料:
http://help.solidworks.com/2016/english/api/sldworksapiprogguide/Welcome.htm
https://github.com/OmniaGit/odooplm
https://github.com/vskrachkov/sw2014
https://github.com/cmuphyscomp/physcomp-solidworks
https://github.com/FuntechBlins/SwApiExamplesCs
http://joshuaredstone.blogspot.com/2015/02/solidworks-macros-via-python.html
Ubuntu 18.04 /etc/netplan/50-cloud-init.yaml 檔案參考內容:
uwsgi.ini 參考檔案:
python3 環境準備:
安裝 pip3:
sudo apt install python3-pip
安裝 CMSimfly 所需模組:
sudo pip3 install flask bs4 lxml
uwsgi 環境準備:
sudo apt install uwsgi uwsgi-plugin-python3
sudo pip3 install uwsgi
編輯的設定檔案為 uwsgi_ini 目錄中的各個 .ini 設定檔案.
nginx 環境準備:
sudo apt install nginx
編輯的設定檔案為 /etc/nginx/sites-available/default 檔案.
CMSimfly 的設定:
init.py 中必須將 uwsgi = False 改為 True, 因為準備採用 uwsgi 模式啟動 CMSimfly
apt proxy 設定檔案:
/etc/apt/apt.conf.d/90curtin-aptproxy
啟動 uwsgi 指令, 將會逐一啟動 wsgi_ini 目錄中個別 .ini 檔案:
sudo /usr/bin/uwsgi --emperor /home/kmol2019/wsgi_ini
最後則設定 Ubuntu 系統服務, 用來啟動 uwsgi:
/etc/systemd/system 的 cmsimfly.service 服務啟動檔案內容:
接著將 cmsimfly 服務設為隨系統開機啟動:
sudo systemctl enable cmsimfly
若要取消 cmsimfly 服務隨系統開機啟動:
sudo systemctl disable cmsimfly
手動啟動 cmsimfly.service 服務
sudo systemctl start cmsimfly
手動停止 cmsimfly.service 服務
sudo systemctl stop cmsimfly
最後, 在 Ubuntu 虛擬主機中設定 Fossil SCM:
安裝 fossil:
sudo apt install fossil
查 fossil 版本:
fossil version
因為採用 sudo apt install fossil 的版本為 2.5 版, 希望採用目前 (2019.05.28) 的最新版本 2.8, 因此:
直接在 Windows 10 下載 https://fossil-scm.org/home/uv/fossil-linux-x64-2.8.tar.gz, 解開壓縮檔案後, 將 fossil 送到 /homt/kmol2019/ 目錄下, 再使用指令, 將檔案複製到 /usr/bin/ 目錄下, 在 Ubuntu 要查詢 fossil 可執行檔案的位置, 使用 whereis fossil.
sudo cp fossil /usr/bin/
複製後, 再用 fossil version 查驗版本, 確認為最新的 2.8 版.
接著在 /home/kmol2019 目錄下建立 repository 目錄, 並且利用 fossil 起始一個 kmol2019.fossil 倉儲壓縮檔案.
mkdir repository
cd repository
fossil init kmol2019.fossil
完成後, 紀錄 kmol2019.fossil 的管理密碼, 以便啟動 Fossil SCM 伺服器時, 利用 kmol2019 當作帳號, 而以記錄的管理者密碼登入進行設定.
接下來為了要在 https 的模式下使用 Fossil SCM 伺服器, 因此必須安裝配置 stunnel:
sudo apt install stunnel
修改 /etc/environment, 加入:
HTTPS=on
修改 /etc/default/stunnel4, 修改 ENABLED=1
假如此時 /etc/stunnel 目錄下尚無 localhost.crt 與 localhost.key, 可以利用下列指令建立:
建立 localhost.key 與 localhost.crt:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout localhost.key -out localhost.crt
接著設定 /etc/stunnel/stunnel.conf 如下:
表示利用 stunnel 執行 fossil 指令, 並且透過 http 協定啟動 位於 /home/kmol2019/repository 目錄下的倉儲壓縮檔案, 且附加採用 https 與 nojail 模式啟動.
其中 --nojail 目的在 drop the root privilege but do not enter the chroot jail, 其後的 --notfound 表示若沒有特別在 URL 中列出所要擷取的 .fossil 檔案 (指位於 /home/kmol2019/repository/ 目錄下), 則採用 kmol2019.fossil
重新啟用 stunnel:
sudo /etc/init.d/stunnel4 restart
啟動後的 Fossil SCM 位於 port 5443, 且將 kmol2019 管理者密碼設為 kmol2019.
W15 網際內容管理系統實作結果:
W15 實作所完成的虛擬主機 vmdk 壓縮檔案.
W15 實作所完成的 Solidworks 2016 虛擬主機壓縮檔案. (登入 @gm.nfu.edu.tw 後才能下載)
參考資料:
https://github.com/mhammond/pywin32
http://timgolden.me.uk/pywin32-docs/contents.html
https://sourceforge.net/projects/pywin32/files/
http://timgolden.me.uk/python/win32_how_do_i.html
http://timgolden.me.uk/python/winsys/index.html
https://win32com.goermezer.de/category/cad-systems/solidworks
https://blog.csdn.net/qq_41185868/article/details/80467713
https://win32com.goermezer.de/category/cad-systems
https://forum.freecadweb.org/viewtopic.php?t=21810
利用 Virtualbox 建立虛擬 Ubuntu 18.04 網際內容管理系統伺服主機:
1. 安裝最新版的 Virtualbox
2. 建立 Ubuntu 18.04 虛擬主機
3. 以網路卡橋接啟動 Ubuntu 伺服器
4. 以 sudo apt install nginx 安裝 nginx WWW 伺服器
5. 以 ifconfig 查 Ubuntu 伺服器的 IP, 測試 nginx 伺服器是否可以連線
6. 以 Windows 10 下的 Filezilla client, 將編輯好的 nginx 設定檔案送到 Ubuntu
7. 利用 Ubuntu 指令將設定檔案搬至設定位置後, 以 /etc/init.d/nginx restart 重新啟動 nginx
8. 在 Ubuntu 中以 sudo apt install uwsgi 安裝 uwsgi
9. 在 Windows 10 編輯 uwsgi 與 nginx 所需的設定檔案, 完成後以 filezilla 送至 Ubuntu.
10. 將 CMSimfly 程式碼送到 Ubuntu 伺服器中對應目錄後.
11. 在 Ubuntu 建立 cmsimfly 服務, 並設定隨機啟動.
12. 完成後, 在 Windows 10 以瀏覽器連線至 CMSimfly, 確認動態網頁與靜態網頁可以在虛擬主機中正常啟動.
13. 以上相關網際內容管理在機械工程相關應用可參考: https://www.driveworks.co.uk 或 https://robotbenchmark.net/
其他參考資料:
http://help.solidworks.com/2016/english/api/sldworksapiprogguide/Welcome.htm
https://github.com/OmniaGit/odooplm
https://github.com/vskrachkov/sw2014
https://github.com/cmuphyscomp/physcomp-solidworks
https://github.com/FuntechBlins/SwApiExamplesCs
http://joshuaredstone.blogspot.com/2015/02/solidworks-macros-via-python.html
Ubuntu 18.04 /etc/netplan/50-cloud-init.yaml 檔案參考內容:
# This file is generated from information provided by
# the datasource. Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
ethernets:
enp0s3:
dhcp4: false
dhcp6: false
addresses:
#- 192.168.1.13/24
- 2001:288:6004::1/64
gateway4: 192.168.1.1
gateway6: 2001:288:6004::254
nameservers:
addresses:
- 140.130.1.2
- 168.95.1.1
- 2001:288:6004:1::2
- 2001:b000:168::1
version: 2
/etc/nginx/sites-available/default 參考檔案:
server {
listen 80;
listen [::]:80;
root /home/kmol2019/newcms;
index index.html;
location /static {
alias /home/kmol2019/newcms/cmsimde/static/;
}
location /downloads {
alias /home/kmol2019/newcms/downloads/;
}
location /images {
alias /home/kmol2019/newcms/images/;
}
location / {
try_files $uri $uri/ =404;
}
location /blog {
alias /home/kmol2019/cmsimfly/blog/;
}
location /reveal {
alias /home/kmol2019/cmsimfly/reveal/;
}
}
server {
listen 443 ssl;
#listen [::]:443 ssl ipv6only=on;
location /static {
alias /home/kmol2019/cmsimfly/static/;
}
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8080;
}
#server_name ipv4_ip;
#ssl on;
ssl_certificate /etc/stunnel/localhost.crt;
ssl_certificate_key /etc/stunnel/localhost.key;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
ssl_prefer_server_ciphers on;
try_files $uri $uri/ =404;
}
server {
#listen 89 default_server;
#listen [::]:89 default_server ipv6only=on;
listen 8943 ssl;
#listen [::]:8943 ssl ipv6only=on;
location /static {
alias /home/kmol2019/cmsimfly2/static/;
}
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8082;
}
#server_name ipv4_ip;
#ssl on;
ssl_certificate /etc/stunnel/localhost.crt;
ssl_certificate_key /etc/stunnel/localhost.key;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
ssl_prefer_server_ciphers on;
try_files $uri $uri/ =404;
}
server {
#listen 88 default_server;
#listen [::]:88 default_server ipv6only=on;
listen 8843 ssl;
#listen [::]:8843 ssl ipv6only=on;
location /static {
alias /home/kmol2019/newcms/cmsimde/static/;
}
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8081;
}
#server_name ipv4_ip;
#ssl on;
ssl_certificate /etc/stunnel/localhost.crt;
ssl_certificate_key /etc/stunnel/localhost.key;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
ssl_prefer_server_ciphers on;
try_files $uri $uri/ =404;
}
uwsgi.ini 參考檔案:
[uwsgi] socket = 127.0.0.1:8080 uid = kmol2019 gid = kmol2019 plugins-dir = /usr/lib/uwsgi/plugins/ plugin = python3 master = true logto = /var/log/uwsgi/emperor.log logfile-chown = kmol2019:kmol2019 processes = 4 threads = 2 chdir = /home/kmol2019/cmsimfly wsgi-file = /home/kmol2019/cmsimfly/wsgi.py網際介面與資料庫伺服器採用 Ubuntu Server, Web Based Solid Modeling Server 採用 Windows 10, 以下列 Python 程式透過 COM 建立 SolidWorks 主機伺服器上的零件:
# 在 windows 10 以 python -m pip install pywin32
import win32com.client
import pythoncom
# 透過 win32com.client 建立 swApp
swApp = win32com.client.DispatchEx("SldWorks.Application")
swApp.Visible = 1
# 使用已經開啟的檔案或開啟新檔案
if swApp.ActiveDoc:
swDoc = swApp.ActiveDoc
else:
swApp.NewDocument(
TemplateName="C:\\ProgramData\\SolidWorks\\SolidWorks 2016\\templates\\gost-part.prtdot",
PaperSize=0,
Width=0,
Height=0,
)
swApp.ActivateDoc2(
Name="name1",
Silent=False,
Errors=Exception
)
swDoc = swApp.ActiveDoc
swDoc.Extension.SelectByID2(
"name2",
"PLANE",
0, # X
0, # Y
0, # Z
False,
0,
win32com.client.VARIANT(pythoncom.VT_DISPATCH, None),
0,
)
swDoc.SketchManager.InsertSketch(True)
swDoc.SketchManager.CreateCornerRectangle(
0,
0,
0,
0.067899689762150967,
-0.035683453981385727,
0
)
swDoc.FeatureManager.FeatureExtrusion2(
True,
False,
False,
0,
0,
0.0115,
0.01,
False,
False,
False,
False,
0.017453292519943334,
0.017453292519943334,
False,
False,
False,
False,
True,
True,
True,
0,
0,
False
)
python3 環境準備:
安裝 pip3:
sudo apt install python3-pip
安裝 CMSimfly 所需模組:
sudo pip3 install flask bs4 lxml
uwsgi 環境準備:
sudo apt install uwsgi uwsgi-plugin-python3
sudo pip3 install uwsgi
編輯的設定檔案為 uwsgi_ini 目錄中的各個 .ini 設定檔案.
nginx 環境準備:
sudo apt install nginx
編輯的設定檔案為 /etc/nginx/sites-available/default 檔案.
CMSimfly 的設定:
init.py 中必須將 uwsgi = False 改為 True, 因為準備採用 uwsgi 模式啟動 CMSimfly
apt proxy 設定檔案:
/etc/apt/apt.conf.d/90curtin-aptproxy
啟動 uwsgi 指令, 將會逐一啟動 wsgi_ini 目錄中個別 .ini 檔案:
sudo /usr/bin/uwsgi --emperor /home/kmol2019/wsgi_ini
最後則設定 Ubuntu 系統服務, 用來啟動 uwsgi:
/etc/systemd/system 的 cmsimfly.service 服務啟動檔案內容:
[Unit] Description=uWSGI to serve CMSimfly After=network.target [Service] User=kmol2019 Group=kmol2019 WorkingDirectory=/home/kmol2019/uwsgi_ini ExecStart=/usr/local/bin/uwsgi --emperor /home/kmol2019/uwsgi_ini [Install] WantedBy=multi-user.target
接著將 cmsimfly 服務設為隨系統開機啟動:
sudo systemctl enable cmsimfly
若要取消 cmsimfly 服務隨系統開機啟動:
sudo systemctl disable cmsimfly
手動啟動 cmsimfly.service 服務
sudo systemctl start cmsimfly
手動停止 cmsimfly.service 服務
sudo systemctl stop cmsimfly
最後, 在 Ubuntu 虛擬主機中設定 Fossil SCM:
安裝 fossil:
sudo apt install fossil
查 fossil 版本:
fossil version
因為採用 sudo apt install fossil 的版本為 2.5 版, 希望採用目前 (2019.05.28) 的最新版本 2.8, 因此:
直接在 Windows 10 下載 https://fossil-scm.org/home/uv/fossil-linux-x64-2.8.tar.gz, 解開壓縮檔案後, 將 fossil 送到 /homt/kmol2019/ 目錄下, 再使用指令, 將檔案複製到 /usr/bin/ 目錄下, 在 Ubuntu 要查詢 fossil 可執行檔案的位置, 使用 whereis fossil.
sudo cp fossil /usr/bin/
複製後, 再用 fossil version 查驗版本, 確認為最新的 2.8 版.
接著在 /home/kmol2019 目錄下建立 repository 目錄, 並且利用 fossil 起始一個 kmol2019.fossil 倉儲壓縮檔案.
mkdir repository
cd repository
fossil init kmol2019.fossil
完成後, 紀錄 kmol2019.fossil 的管理密碼, 以便啟動 Fossil SCM 伺服器時, 利用 kmol2019 當作帳號, 而以記錄的管理者密碼登入進行設定.
接下來為了要在 https 的模式下使用 Fossil SCM 伺服器, 因此必須安裝配置 stunnel:
sudo apt install stunnel
修改 /etc/environment, 加入:
HTTPS=on
修改 /etc/default/stunnel4, 修改 ENABLED=1
假如此時 /etc/stunnel 目錄下尚無 localhost.crt 與 localhost.key, 可以利用下列指令建立:
建立 localhost.key 與 localhost.crt:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout localhost.key -out localhost.crt
接著設定 /etc/stunnel/stunnel.conf 如下:
[https] accept = kmol2019:5443 # 只先啟用 ipv4 #accept = :::443 cert = /etc/stunnel/localhost.crt key = /etc/stunnel/localhost.key exec = /usr/bin/fossil execargs = /usr/bin/fossil http /home/kmol2019/repository/ --https --nojail --notfound kmol2019
表示利用 stunnel 執行 fossil 指令, 並且透過 http 協定啟動 位於 /home/kmol2019/repository 目錄下的倉儲壓縮檔案, 且附加採用 https 與 nojail 模式啟動.
其中 --nojail 目的在 drop the root privilege but do not enter the chroot jail, 其後的 --notfound 表示若沒有特別在 URL 中列出所要擷取的 .fossil 檔案 (指位於 /home/kmol2019/repository/ 目錄下), 則採用 kmol2019.fossil
重新啟用 stunnel:
sudo /etc/init.d/stunnel4 restart
啟動後的 Fossil SCM 位於 port 5443, 且將 kmol2019 管理者密碼設為 kmol2019.
W15 網際內容管理系統實作結果:
W15 實作所完成的虛擬主機 vmdk 壓縮檔案.
W15 實作所完成的 Solidworks 2016 虛擬主機壓縮檔案. (登入 @gm.nfu.edu.tw 後才能下載)
參考資料:
https://github.com/mhammond/pywin32
http://timgolden.me.uk/pywin32-docs/contents.html
https://sourceforge.net/projects/pywin32/files/
http://timgolden.me.uk/python/win32_how_do_i.html
http://timgolden.me.uk/python/winsys/index.html
https://win32com.goermezer.de/category/cad-systems/solidworks
https://blog.csdn.net/qq_41185868/article/details/80467713
https://win32com.goermezer.de/category/cad-systems
https://forum.freecadweb.org/viewtopic.php?t=21810
Saturday, May 18, 2019
近端區網與雲端資料同步
近端區網與雲端資料同步
經歷多年以來的近端硬體與區域網路上的自架主機毀損, 以及各式雲端服務的來來去去, 最永續與保全各種機械設計流程資料的方法就是: 三者資料同步, 並設法利用自架主機當作從近端資料到雲端資料同步之間的跳板.
意即: 以 Github 倉儲存放的內容, 可以啟動靜態與動態網際內容伺服, 但由於許多雲端免費服務要的是用戶存放的資料, 最多只能靜態內容伺服, 大多不提供動態伺服, 因此由區域網路上的自架主機作為資料同步的跳板, 透過設定可以提供動態網際內容伺服, 而近端也能透過動態與靜態伺服進行資料維護與查驗, 如此三方資料在 Git 與 Fossil SCM 的整合運用下, 可以取得最大程度的資料協同維護與保全彈性.
近端環境: portablegit 與 Fossil SCM 加上能夠啟動網際內容管理動態與靜態伺服的程式環境
自架主機: Git 與 Fossil SCM 加上能夠隨主機啟動的網際內容動態與靜態伺服的程式與網路環境.
雲端主機: 提供分散式版次管理與 WWW 伺服功能.
實作:
選定一台至少配置 8GB 記憶體且可啟用 VT 技術的一般個人電腦, 實體安裝 Windows 10 操作系統, 加上一台 Virtualbox Ubuntu 18.04 無 X-Window 的 server.
以橋接啟動 Ubuntu 18.04, 配置 uwsgi + Nginx 伺服 Python Flask 程式, 以 Nginx 伺服靜態網頁
在 Ubuntu 18.04 安裝 Bind9 且申請 port 53 廣域網路開通, 自行管理伺服器的 domain name
在 Ubuntu 18.04 安裝 Squid 代理主機伺服器, 以便提供從近端至區網或雲端的連線速度
在 Ubuntu 18.04 安裝 Fossil SCM 以及 Stunnel, 以便提供 Fossil SCM 倉儲伺服
在近端使用可攜程式環境負責執行 Git, Fossil SCM 與 Python 網際內容管理程式.
在雲端設定 Github 倉儲執行 Github Pages 並設定以 SSH 對區網以及近端倉儲維護連線.
資料維護流程:
在近端或區網或雲端啟動倉儲, 設定與 Github 倉儲同步, 若近端有網路連線, 可直接透過自架主機進行資料協同維護後, 透過 putty 對近端主機連線, 以 Git 指令將資料送到雲端倉儲, 若近端無網路, 則可自行對近端倉儲改版, 待有網路時再對自架主機與雲端倉儲進行資料同步或內容合併流程.
經歷多年以來的近端硬體與區域網路上的自架主機毀損, 以及各式雲端服務的來來去去, 最永續與保全各種機械設計流程資料的方法就是: 三者資料同步, 並設法利用自架主機當作從近端資料到雲端資料同步之間的跳板.
意即: 以 Github 倉儲存放的內容, 可以啟動靜態與動態網際內容伺服, 但由於許多雲端免費服務要的是用戶存放的資料, 最多只能靜態內容伺服, 大多不提供動態伺服, 因此由區域網路上的自架主機作為資料同步的跳板, 透過設定可以提供動態網際內容伺服, 而近端也能透過動態與靜態伺服進行資料維護與查驗, 如此三方資料在 Git 與 Fossil SCM 的整合運用下, 可以取得最大程度的資料協同維護與保全彈性.
近端環境: portablegit 與 Fossil SCM 加上能夠啟動網際內容管理動態與靜態伺服的程式環境
自架主機: Git 與 Fossil SCM 加上能夠隨主機啟動的網際內容動態與靜態伺服的程式與網路環境.
雲端主機: 提供分散式版次管理與 WWW 伺服功能.
實作:
選定一台至少配置 8GB 記憶體且可啟用 VT 技術的一般個人電腦, 實體安裝 Windows 10 操作系統, 加上一台 Virtualbox Ubuntu 18.04 無 X-Window 的 server.
以橋接啟動 Ubuntu 18.04, 配置 uwsgi + Nginx 伺服 Python Flask 程式, 以 Nginx 伺服靜態網頁
在 Ubuntu 18.04 安裝 Bind9 且申請 port 53 廣域網路開通, 自行管理伺服器的 domain name
在 Ubuntu 18.04 安裝 Squid 代理主機伺服器, 以便提供從近端至區網或雲端的連線速度
在 Ubuntu 18.04 安裝 Fossil SCM 以及 Stunnel, 以便提供 Fossil SCM 倉儲伺服
在近端使用可攜程式環境負責執行 Git, Fossil SCM 與 Python 網際內容管理程式.
在雲端設定 Github 倉儲執行 Github Pages 並設定以 SSH 對區網以及近端倉儲維護連線.
資料維護流程:
在近端或區網或雲端啟動倉儲, 設定與 Github 倉儲同步, 若近端有網路連線, 可直接透過自架主機進行資料協同維護後, 透過 putty 對近端主機連線, 以 Git 指令將資料送到雲端倉儲, 若近端無網路, 則可自行對近端倉儲改版, 待有網路時再對自架主機與雲端倉儲進行資料同步或內容合併流程.
Thursday, May 16, 2019
推出 CMSiMDE
網際內容管理系統的功能是利用 WWW 客戶端與伺服器端的功能, 讓使用者可以將有用的內容放在雲端, 目的在能利用此架構進行協同設計.
隨著 CMSimfly 不斷因為需求改版, 先前引用舊版程式碼或設定的用戶, 若無法及時更新版本或自行修正, 使用者間就會產生許多謬誤.
有鑑於此, 將 CMSimfly 升級為 https://github.com/mdecourse/cmsimde, 使用者之後引用 CMSiMDE, 可以將此一網際程式模組設為倉儲中的 submodule, 若 CMSiMDE 小改版, 各用戶可以利用
git submodul foreach git pull origin master
將 CMSiMDE 更新為最新版.
若 CMSiMDE 大改版, 將原先的運作模式進行改變後, 先前的用戶只要不更新 submodule, 仍然可以運作, 或者將各用戶的內容轉移到新架構的 CMSiMDE 運作即可.
使用 CMSiMDE 的 demo 倉儲位於: https://github.com/mdecourse/newcms (使用 Github 版本倉儲, 可以再將資料同步到區域或廣域網路上的 Fossil SCM 版本倉儲)
靜態網頁: https://mde.tw/newcms (使用 Github Pages, 可以與 Fossil SCM doc 網頁同步, 在 Fossil SCM doc 可以隨時查詢各版次的靜態網頁內容)
動態系統: https://s1.mde.nfu.edu.tw:8843 (使用網路橋接設定之虛擬主機, 專責透過 Nginx SSL 與 uwsgi, 以 systemctl 服務執行 Python Flask 程式)
在 Nginx 運作的 newcms: http://s1.mde.nfu.edu.tw (使用網路橋接設定之虛擬主機中的 Nginx, 伺服動態系統的靜態內容)
隨著 CMSimfly 不斷因為需求改版, 先前引用舊版程式碼或設定的用戶, 若無法及時更新版本或自行修正, 使用者間就會產生許多謬誤.
有鑑於此, 將 CMSimfly 升級為 https://github.com/mdecourse/cmsimde, 使用者之後引用 CMSiMDE, 可以將此一網際程式模組設為倉儲中的 submodule, 若 CMSiMDE 小改版, 各用戶可以利用
git submodul foreach git pull origin master
將 CMSiMDE 更新為最新版.
若 CMSiMDE 大改版, 將原先的運作模式進行改變後, 先前的用戶只要不更新 submodule, 仍然可以運作, 或者將各用戶的內容轉移到新架構的 CMSiMDE 運作即可.
使用 CMSiMDE 的 demo 倉儲位於: https://github.com/mdecourse/newcms (使用 Github 版本倉儲, 可以再將資料同步到區域或廣域網路上的 Fossil SCM 版本倉儲)
靜態網頁: https://mde.tw/newcms (使用 Github Pages, 可以與 Fossil SCM doc 網頁同步, 在 Fossil SCM doc 可以隨時查詢各版次的靜態網頁內容)
動態系統: https://s1.mde.nfu.edu.tw:8843 (使用網路橋接設定之虛擬主機, 專責透過 Nginx SSL 與 uwsgi, 以 systemctl 服務執行 Python Flask 程式)
在 Nginx 運作的 newcms: http://s1.mde.nfu.edu.tw (使用網路橋接設定之虛擬主機中的 Nginx, 伺服動態系統的靜態內容)
Thursday, May 9, 2019
網際內容管理課程回顧
2019 Spring 網際內容管理課程
五專部
1. 是否已經在自己的隨身碟建立隨身程式系統?
此一隨身系統以 2019_cdb_w5.7z 為基礎, 使用者必須會自行查驗
是否已經將 portablegit 中的 helper = manager 的設定移除?
python 是否已經安裝 flask, bs4 與 lxml 模組?
是否了解 git 以 https 連線時, proxy 將採用那一個檔案中的設定?
是否已經學會如何採用 ssh 模式維護 github 上的倉儲?
是否了解 CMSimfly 動態與靜態系統之間的關係?
是否會在 CMSimfly 中上傳檔案, 引用檔案?
是否會在 CMsimfly 中上傳圖檔, 引用圖檔?
是否會在 CMSimfly 中嵌入 Youtube 影片?
是否會在 CMSimfly 頁面中加入 Javascript 互動程式?
W14 -> 所完成的隨身示範系統為 2019_cdb_w13.7z (s1 Fossil SCM 的 doc 為: https://s1.mde.nfu.edu.tw:5443/kmol2019/doc/trunk/index.html, Github 倉儲為: https://github.com/scrum-4/2019wcmj, Github Pages 網頁為: https://scrum-4.github.io/2019wcmj/)
是否會更改 CMsimfly 靜態系統所使用的模板?
是否能將 USB 隨身碟格式為 NTFS 或 extFAT, 以便放入 Ubuntu 虛擬主機檔案?
是否會使用自己隨身碟中的 Virtualbox 與 Ubuntu 中的 Fossil SCM 來伺服靜態 CMSimfly 檔案?
是否會使用自己隨身碟中的 Virtualbox 與 Ubuntu 中的 uwsgi 來伺服動態 CMSimfly 系統?
2. 是否已經根據各上述階段任務的操作拍成說明影片, 嵌入自己的 Github Pages 網站?
3. 是否已經著手執行各學員的期末專案, 是否了解各學員的期末報告, 必須同時呈現 html 與 pdf 版本.
各學員繳交供評分之內容: 個人倉儲 Github Pages 網站及 pdf 格式之期末報告.
四技部
除上述五專部各階段任務外, 採用分組協同與全班 Github 協同倉儲模式執行期末專案, 各學員必須繳交在個別學員 Github 倉儲中的內容外, 各分組必須在分組倉儲中集合整理, 且將內容摘要到全班分組倉儲中.
各學員繳交供評分之內容: 個人倉儲 Github Pages 網站及 pdf 格式之期末報告.
各組繳交供評分之內容: 分組倉儲 Github Pages 網站及 pdf 格式之期末報告.
全班協同倉儲中的內容:全班倉儲 Github Pages 網站及 pdf 格式之期末報告.
五專部
1. 是否已經在自己的隨身碟建立隨身程式系統?
此一隨身系統以 2019_cdb_w5.7z 為基礎, 使用者必須會自行查驗
是否已經將 portablegit 中的 helper = manager 的設定移除?
python 是否已經安裝 flask, bs4 與 lxml 模組?
是否了解 git 以 https 連線時, proxy 將採用那一個檔案中的設定?
是否已經學會如何採用 ssh 模式維護 github 上的倉儲?
是否了解 CMSimfly 動態與靜態系統之間的關係?
是否會在 CMSimfly 中上傳檔案, 引用檔案?
是否會在 CMsimfly 中上傳圖檔, 引用圖檔?
是否會在 CMSimfly 中嵌入 Youtube 影片?
是否會在 CMSimfly 頁面中加入 Javascript 互動程式?
W14 -> 所完成的隨身示範系統為 2019_cdb_w13.7z (s1 Fossil SCM 的 doc 為: https://s1.mde.nfu.edu.tw:5443/kmol2019/doc/trunk/index.html, Github 倉儲為: https://github.com/scrum-4/2019wcmj, Github Pages 網頁為: https://scrum-4.github.io/2019wcmj/)
是否會更改 CMsimfly 靜態系統所使用的模板?
是否能將 USB 隨身碟格式為 NTFS 或 extFAT, 以便放入 Ubuntu 虛擬主機檔案?
是否會使用自己隨身碟中的 Virtualbox 與 Ubuntu 中的 Fossil SCM 來伺服靜態 CMSimfly 檔案?
是否會使用自己隨身碟中的 Virtualbox 與 Ubuntu 中的 uwsgi 來伺服動態 CMSimfly 系統?
2. 是否已經根據各上述階段任務的操作拍成說明影片, 嵌入自己的 Github Pages 網站?
3. 是否已經著手執行各學員的期末專案, 是否了解各學員的期末報告, 必須同時呈現 html 與 pdf 版本.
各學員繳交供評分之內容: 個人倉儲 Github Pages 網站及 pdf 格式之期末報告.
四技部
除上述五專部各階段任務外, 採用分組協同與全班 Github 協同倉儲模式執行期末專案, 各學員必須繳交在個別學員 Github 倉儲中的內容外, 各分組必須在分組倉儲中集合整理, 且將內容摘要到全班分組倉儲中.
各學員繳交供評分之內容: 個人倉儲 Github Pages 網站及 pdf 格式之期末報告.
各組繳交供評分之內容: 分組倉儲 Github Pages 網站及 pdf 格式之期末報告.
全班協同倉儲中的內容:全班倉儲 Github Pages 網站及 pdf 格式之期末報告.
Subscribe to:
Posts (Atom)
NX12
NX 12 Help https://docs.plm.automation.siemens.com/tdoc/nx/12/nx_help Python related https://docs.plm.automation.siemens.com/tdoc/nx/...
-
2019 Spring Week9 五專網際內容管理 期中考自評影片 請各學員依照 https://2019wcm.blogspot.com/2019/04/2019-spring.html 說明 進行期中考週各項任務. 影片上傳後, 以類似下方的 ancho...
-
2019 Spring Week9 2a 期中考自評影片 請各學員依照 https://2019wcm.blogspot.com/2019/04/2019-spring.html 說明 進行期中考週各項任務. 2a 倉儲: https://github.c...
-
2019 Spring Week9 四技網際內容管理 期中考自評影片 請各學員依照 https://2019wcm.blogspot.com/2019/04/2019-spring.html 說明 進行期中考週各項任務. 影片上傳後, 以類似下方的 ancho...