1. 程式人生 > >PCB Genesis 鼠標滾輪縮放與TGZ拖放 插件實現

PCB Genesis 鼠標滾輪縮放與TGZ拖放 插件實現

max 實現 editor 成功 tgz com gin tor 技術分享

一.背景:

做過CAM的人都用過Geneiss軟件,由於處理資料強大,目前奧寶公司出品的Genesis占領整個PCB行業,整個行業無人不知呀,

而此軟件有一個吐槽點Genesis 無滾輪縮放與TGZ拖放功,而用過其它圖形編輯(CAD,3DMAX,Photoshop,UG)軟件,鼠標對圖形的操作

是非常的靈活的,確實沒有對比就沒有傷害,而奧寶這麽多年來Genesis升級了N次也沒有加入此功能。

正是如此,不得不自行開發此插件功能.

<鼠標滾輪縮放>此作品是2014年寫使用易語言寫的,但有一些坑沒完善,直到今天把一些坑填上了,才有了今天的博客,呵呵。

原本是打算用C#重構,但時間精歷有限,還是在原來代碼的基礎上打磨打磨吧。

二.實現基本原理

1.鼠標滾輪縮放

解答:1.註冊WIN API 安裝全局勾子,監控鼠標,監控鍵盤.

鼠標監控內容:中鍵滾動,中鍵按下,

鍵盤監控內容:Shift鍵按下,Ctrl鍵按下

2.在鼠標監控事件中,取鼠標所在窗口的標題

3.當窗口為標題為Graphic Editor並同時鼠標中鍵滾動時

4.執行zoom_to_cursor,zoom_to_cursor=yes命令,

5. 接著模擬按鍵PageUp鍵或PageDown鍵

2.鼠標平移

解答:1.註冊WIN API 安裝全局勾子,監控鼠標,監控鍵盤.

鼠標監控內容:中鍵滾動,中鍵按下,

鍵盤監控內容:Shift鍵按下,Ctrl鍵按下

2. 時時讀取XY坐標,G9.7b2 XY基址=25E093C

2.在鼠標監控事件中,取鼠標所在窗口的標題

3.當窗口為標題為Graphic Editor並同時鼠標中鍵按下時

4.記錄鼠標按下:屏蔽坐標與Genesis坐標

5.當窗口為標題為Graphic Editor並同時鼠標中鍵放開時

6.記錄鼠標放開:屏蔽坐標與Genesis坐標

7.通過屏幕像素差值與實際genesis坐標差值,換算出需要平移X與Y值

8.再通過平移X與Y值,求出真實中心點X與Y

9.然後再執行COM pan_center 執行即可

開發小結::

實際操作時,鼠標按下與放開,屏幕2個相素點差值太小時,可以設置為忽略值

因為沒有必要平移了,這邊跟據實際經驗值按15個像素點差值,直接忽略了平移

3.TGZ拖放

解答:

1.註冊WIN API 安裝全局勾子,監控鼠標移動事件

2.在鼠標監控事件中,取鼠標所在窗口的標題

3.當窗口為標題為Engineering,即為此窗口的句柄註冊拖動放事件(TGZ文件拖放在窗口上即完成了註冊)

4.註冊成功,文件拖放到Engineering窗口鼠標而為加號+圖標了。

5.在拖放事件中獲取到TGZ路徑後,然後通過gateway實現了。

使用gateway技巧:

正常使用gateway,每次發送COM指令都是啟動新的進程實現發送COM指令的,然後此gateway進程關閉了,

下次再發送COM指令時又得啟動新的進程了,這樣一來效率太低了,

建議采用需采用管道對gateway操作,可以實現啟動一次進程,可以多次發送COM指令到genesis。

開發小結:

1.拖放的文件可能不是TGZ文件,需排除並提示用戶

2.拖放的TGZ文件可能Geneiss軟件已存在了,需提示用戶是否覆蓋還是不導入,交給用戶確認

3.拖放TGZ默認DB設置

4.當拖放一個TGZ時,設置一個可以直接打開Step進入圖形編輯界面

5.與公司文控TGZ對接,直接輸入生產型號即可導入Genesis

二.滾輪縮放使用說明

技術分享圖片

三.滾輪縮放主界面

技術分享圖片

PCB Genesis 鼠標滾輪縮放與TGZ拖放 插件實現