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拖放 插件实现的更多相关文章
- SceneControl+AE+鼠标滚轮缩放
要为SceneControl设置鼠标滚轮缩放必须定义委托,因为SceneControl没有Wheel事件,所以委托From的Wheel事件 public Form1() { InitializeCom ...
- js 禁止用户使用Ctrl+鼠标滚轮缩放网页
为什么会有人会使用ctrl+鼠标滚轮缩放网页?坚决禁止! <html> <head> <title>测试</title> <script lang ...
- Engine中如何实现鼠标滚轮缩放反置?
来自:http://zhihu.esrichina.com.cn/?/question/6666 [解决办法]:1,禁用IMapControl的默认鼠标滚轮事件.即设置IMapControl4.Aut ...
- Winform中设置ZedGraph鼠标滚轮缩放的灵敏度以及设置滚轮缩放的方式(鼠标焦点为中心还是图形中心点)
场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...
- Magnifier.js - 支持鼠标滚轮缩放的图片放大镜效果
Magnifier.js 是一个 JavaScript 库,能够帮助你在图像上实现放大镜效果,支持使用鼠标滚轮放大/缩小功能.放大的图像可以显示在镜头本身或它的外部容器中.Magnifier.js 使 ...
- 关于 WebBrowser调用百度地图API 鼠标滚轮缩放地图级别失灵的解决办法
在桌面程序下 百度地图API的鼠标缩放地图功能可能会失灵无效! 这个原因不是API的问题 小弟试了下在WEB上面是没有问题的 于是考虑可能是WebBrowser的获取焦点问题,于是在主窗体 添加了一个 ...
- PCB Genesis或Incam 右键导入TGZ 实现方法
使用Genesis导入TGZ方式很多 的,比如有:写个脚本框选TGZ的的方式实现TGZ导入,将TGZ拖入脚本界面实现TGZ导入, 给Engineering Toolkit窗口句柄注册拖拽事件实现TGZ ...
- Qt无边框窗口的移动、拉伸边框、鼠标滚轮缩放大小
主要是处理窗口上鼠标的几个事件,具体代码请看下面的截图, 完整代码的下载链接在此:http://download.csdn.net/detail/beyond0824/9657110, 本示例代码中, ...
- 【three.js练习程序】鼠标滚轮缩放
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
随机推荐
- 微信开发配置JSSDK,注入权限验证,以及invalid signature签名错误解决
在微信开发中很多功能都要用到微信JSSDK,关于JSSDK的使用,微信官方的文档已经比较详细,一定要仔细去看文档. <script src="https://res.wx.qq.com ...
- UITableview 兼容IOS6 和IOS7的方法
1. TableVIew向下拉44像素 添加Auto layout 2. Extended edge 选择Under top bars 2. 在Viewdidload中添加代码 if ([[UIDe ...
- python实战教程之自动扫雷
1.找到游戏窗口与坐标 #扫雷游戏窗口class_name = "TMain"title_name = "Minesweeper Arbiter "hwnd = ...
- Oracle行转列/列转行
1.oracle的pivot函数 原表 使用pivot函数: with temp as(select '四川省' nation ,'成都市' city,'第一' ranking from dual u ...
- function&箭头函数
JS中this到底指向谁? function:谁调用指向谁 var id = '654321' var handler = { id: '123456', init: function() { con ...
- Day 27 网络编程
目录 网络架构及演变过程 网络架构 互联网和互联网的组成 互联网的组成(教材版) 互联网的组成(科普版) 互联网的硬件组成 互联网的软件组成 OSI七层协议 物理层 数据链路层 网络架构及演变过程 网 ...
- [SQL Server] 常用sql脚本
1.添加表 GO IF NOT EXISTS(SELECT * FROM sys.tables WHERE name='table_name') BEGIN CREATE TABLE [dbo].[t ...
- 直流电机PWM调速系统中控制电压非线性研究_控制元件_工业自动化控制_文章
直流电机PWM调速系统中控制电压非线性研究_控制元件_工业自动化控制_文章_e-works数字化企业网 http://articles.e-works.net.cn/Component/Article ...
- 00.模块1.模块(Module)和包(Package)
转自廖雪峰老师官方网站 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件 ...
- HTML学习笔记之HTML5新特性
目录 1.拖放 2.画布 3.可伸缩矢量图形 4.地理定位 5.Web 存储 6.应用缓存 7.Web Worker 1.拖放 拖放是一种常见的特性,用于抓取对象以后拖到另一个位置,它是 HTML5 ...