PCB Genesis 鼠标滚轮缩放与TGZ拖放 插件实现

Posted pcbren

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PCB Genesis 鼠标滚轮缩放与TGZ拖放 插件实现相关的知识,希望对你有一定的参考价值。

一.背景:

            做过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拖放 插件实现的主要内容,如果未能解决你的问题,请参考以下文章

PCB Genesis SET拼板(圆形板拼板) 实现效果

echarts区域缩放(鼠标滚轮滚动条拉选框)

以编程方式缩放后使用鼠标滚轮时 D3.zoom 跳转

放大鼠标滚轮点(使用缩放和平移)

鼠标滚轮实现图片缩放

使用 ctrl + 鼠标滚轮进行缩放