找回密码
 注册
关于网站域名变更的通知
查看: 3088|回复: 19
打印 上一主题 下一主题

C#编程和XPedition交互

  [复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-18 16:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 linguohua 于 2019-1-18 16:00 编辑
; f; {8 J0 |' M: u  f
7 c" L' T) I0 I3 v*** h- L/ r' U2 M; i- q7 E
这个是我个人学习xpedition的自动化的编程交互过程的产物。XPedition的自动化是利用微软的COM组件规范,XPedition把自己的自动化能力通过COM组件导出给外界2 j* k- [$ z5 t/ {7 T8 w# V  x: g
使用,因此理论上,任何可以操作COM组件的语言runtime,都可以和XPedition交互。
6 n' Q" o5 z0 a% e8 h
/ S. T0 t: C7 H% U& b7 T! MXPedition是个好软件,动态铜和拉线这两项独步天下,绝对抛离allegro一光年,。不过它的集成度和allegro比起来,尤其是仿真这块,allegro又领先XPedition 1光年。, d7 d. z3 r* |' _, l- b: V" s

! E1 Z1 t* s' Q0 Z4 M我只是搞个帖子,分享一下C#和XPedition交互的经验,如果对某些兄弟有用,本人倍感荣幸。" T9 N; i  K2 {

: B, X. S, Q- L% z目录和文件说明) H# r! I& p$ S0 M$ i
---------------* G# A6 u. p0 u4 I* y+ `$ s
EECom:
) S& E% A& Y6 U/ R& B$ J* _WIN-Form版本的跟EE交互的COM组件。WIN-Form做界面比起WPF来说,没有WPF的数据绑定机制,因此没有WPF那么方便。4 [) _8 w+ a. O& {; Q, |$ a

3 y# N/ z! ~+ X2 ~6 dEEWPF:
6 g! I1 f  R. L* w9 |WPF版本的跟EE交互的COM组件。WPF做界面又漂亮又快捷2 A% T& P* a2 h+ l
  O0 R% ?) O6 K
EEFind:
7 g- q1 A: I& O" T4 B4 j2 q一个测试程序,它也是调用EECom组件进行测试,由于它是一个单独的进程,因此它和EE数据交换属于进程间通讯,速度很慢。比起直接通过VB脚本在" j7 q  E$ D: R/ P8 }( e
EE进程空间激活EECom,慢太多了。
4 D' v" f  J' v4 @: o) {& x2 A" e% k5 e4 ~% o9 l" p
EECOM.vbs7 R0 T4 H* E4 O! M; E
用于在EE进程空间激活EECom的VB脚本。和普通的EE VB脚本一样,把它拖进EE的窗口,或者用keyin命令"run eecom.vbs"即可。
4 b6 i+ R- P/ ~: K
$ F- X0 `5 L( t3 U8 _! I5 [' O8 z* E0 p& n; f- g- P( ~
--------------, l6 N2 z2 q& L$ _6 \6 Q" L
目的2 x( l6 }( d: b: w  Y0 `
--------------# D- I2 ~# ~7 E  p1 k
本工作的目的,是有几个考虑:7 n" {5 ?8 [! F% [1 R
1. 首先是VBScript,写起来很痛苦,没有一个带有智能提示(基本上只有语法高亮,以及一些基本的智能提示)。如果能够用C#这种宇宙第一方便的语言
& n; _4 N0 {$ s' Z* Z2 L   来写脚本,有了VS Studio 宇宙第一IDE的帮助,那是相当让人愉快的,各种自动提示。
5 C+ _* g( L7 Y2 _! ^% i5 }: H/ e/ y
2. 我用C#和VS Studio,通过新建一个应用程序工程,并引用EE的所有COM组件库之后,写起来自然是相当爽,但是测试的时候发现,由于跨进程通讯,即使是2 a& s. z; ^- i8 P, r
   遍历800个via,也需要消耗1到2秒的时间,这让人很痛苦。必须要把代码放到EE的进程空间内执行,免除跨进程通讯,速度才能快。2 h- I6 h' _' k7 M
* F& G4 G( ^/ |3 o7 k
3. 基于以上两点的考虑,我想到的方案是,用C#来实现逻辑和界面,并编译成为COM组件库;然后通过EE的VB脚本激活该COM组件库;这样就既可以有C#的爽,4 G% n0 M0 g6 K! o) I5 T
   速度又快,不仅仅比跨进程通讯的快,而且比同进程通讯的VB脚本实现业务逻辑的更加快,毕竟C#的速度,不是VBScript可以相提并论的。
1 c7 d. A2 o: I* c5 J
# C  u* D# \5 m9 m& w" N9 K% h  i8 G& t9 {5 w% L( i
**
- ?. T6 N/ m8 J- H& C/ \6 h. U8 {; i+ Q* `- K示例界面:
; v7 @1 h' t4 c, v+ {   T7 W: F! |5 e5 ?8 Y1 H

9 i: ~: h6 W( f0 ^/ q
7 `" ]2 Y  [& c% N- @ ' Q" W# O* g  Y, P5 n# K
- i' J1 T/ q! l
工程附件:
5 \; O, |6 j" h3 f% K EEFind.rar (7.13 MB, 下载次数: 26) ' e+ Y9 E5 e" J0 l3 e5 e8 w
备注:工程是visual studio 2012的,但更高版本的visual studio打开应该不会有问题。
7 K3 Q& j3 L0 K9 S) J7 n5 g2 Y* c. H6 t4 c$ X" y( c
$ a) I# m' k# g
谢谢大家。/ u2 Z  `" C  R3 N

EE-Find-5.png (128.28 KB, 下载次数: 2)

EE-Find-5.png

EE-Find-6.png (83.35 KB, 下载次数: 3)

EE-Find-6.png

评分

参与人数 1威望 +5 收起 理由
彭水飞 + 5

查看全部评分

  • TA的每日心情
    奋斗
    2025-8-15 15:13
  • 签到天数: 102 天

    [LV.6]常住居民II

    推荐
    发表于 2019-1-18 16:36 | 只看该作者
    用的人太少,没卵用。。。。
  • TA的每日心情
    开心
    2023-12-15 15:16
  • 签到天数: 1 天

    [LV.1]初来乍到

    推荐
    发表于 2023-12-25 15:39 | 只看该作者
    Components get_Components(EPcbSelectionType eSelectOnly = EPcbSelectionType.epcbSelectAll, EPcbComponentType eCompType = EPcbComponentType.epcbCompAll, EPcbCelltype eCelltype = EPcbCelltype.epcbCelltypePackage, string sRefDes = "*");
    4 u# J* A" J6 i) u/ ~1 u$ ?各位大佬: ~5 \0 H5 G1 o/ q  Z
    我现在可以获取到打开的PCB文件,但是怎么获取 Components。8 N, @) L3 h9 ^/ j7 E  I0 t
    我直接doc.Components.count,会报错,MGCPCB只有get_Components,我该怎么去获取啊。有谁了解么
  • TA的每日心情
    奋斗
    2019-11-20 15:07
  • 签到天数: 1 天

    [LV.1]初来乍到

    推荐
    发表于 2019-1-21 10:13 | 只看该作者
    老吴PCB 发表于 2019-1-21 09:57
    $ F; Z7 x& k6 x; I8 X可以来个实例吗?比如Excel中的C10如何与原理图和PCB进行cross probe

    + D# P+ m7 |4 o" m% P( i3 x这个功能AATK里面都是例子,老吴给分享下这个高级功能么
    3 @1 [% K, q( o# k

    点评

    水飞兄分享吧,我好好学习学习  详情 回复 发表于 2019-1-21 17:12
  • TA的每日心情
    奋斗
    2019-11-20 15:07
  • 签到天数: 1 天

    [LV.1]初来乍到

    6#
    发表于 2019-1-21 09:50 | 只看该作者
    这个可以有,二次开发不可缺

    该用户从未签到

    7#
    发表于 2019-1-21 09:57 | 只看该作者
    可以来个实例吗?比如Excel中的C10如何与原理图和PCB进行cross probe

    点评

    这个功能AATK里面都是例子,老吴给分享下这个高级功能么  详情 回复 发表于 2019-1-21 10:13

    该用户从未签到

    8#
    发表于 2019-1-21 17:12 | 只看该作者
    水飞 发表于 2019-1-21 10:13
    " o% U3 Y# {, W2 u& G$ B这个功能AATK里面都是例子,老吴给分享下这个高级功能么
    3 g6 i' Q" F$ R
    水飞兄分享吧,我好好学习学习
    6 F( U# L. L2 S" ?0 T: ^

    该用户从未签到

    10#
    发表于 2019-8-5 16:33 | 只看该作者
    请教大佬MGCPCB是在什么地方引用过来的
  • TA的每日心情

    2019-11-15 15:41
  • 签到天数: 1 天

    [LV.1]初来乍到

    11#
    发表于 2019-11-15 10:43 | 只看该作者
    谢谢啦!拿来看看!3 C5 V( p: Z" v$ m
  • TA的每日心情

    2019-11-15 15:41
  • 签到天数: 1 天

    [LV.1]初来乍到

    12#
    发表于 2019-11-15 10:44 | 只看该作者
    非常有用的实例,谢谢3 M, ?* X/ P7 ~4 y6 [# l1 W$ {
  • TA的每日心情
    开心
    2019-11-20 15:11
  • 签到天数: 1 天

    [LV.1]初来乍到

    13#
    发表于 2019-11-15 14:17 | 只看该作者
    哇,看着很牛的样子,谢谢分享

    该用户从未签到

    14#
    发表于 2019-11-15 15:13 | 只看该作者
    看着好牛!不过现在新版在仿真接囗上的集成反而比allegro要好!xpedition如果把hyperlnyx做到套件中就牛了

    “来自电巢APP”

    该用户从未签到

    15#
    发表于 2019-12-4 15:08 | 只看该作者
    请问C# 如何响应 xPedition 的事件,大佬知道吗,能否帮忙简单写下代码!
    7 }: P- N8 Y0 g0 I7 m" t/ U
  • TA的每日心情
    开心
    2021-4-22 15:40
  • 签到天数: 73 天

    [LV.6]常住居民II

    16#
    发表于 2019-12-5 10:30 | 只看该作者
    多谢了,学习一下
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-18 00:46 , Processed in 0.140625 second(s), 34 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表