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

C#编程和XPedition交互

  [复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 linguohua 于 2019-1-18 16:00 编辑
" L3 [. _5 o, v  O7 d3 Y! E  f$ `# W( Z+ l4 {
**% S) @% s6 {, o6 Z
这个是我个人学习xpedition的自动化的编程交互过程的产物。XPedition的自动化是利用微软的COM组件规范,XPedition把自己的自动化能力通过COM组件导出给外界) B' q5 L, s9 @' u
使用,因此理论上,任何可以操作COM组件的语言runtime,都可以和XPedition交互。  J; r: k( \0 y' g6 z* Z

9 B2 ^3 l3 M8 {- _# AXPedition是个好软件,动态铜和拉线这两项独步天下,绝对抛离allegro一光年,。不过它的集成度和allegro比起来,尤其是仿真这块,allegro又领先XPedition 1光年。, N5 \1 n4 l& ]* j  R8 `
" t" ^3 `4 U9 s# y5 R# E! q
我只是搞个帖子,分享一下C#和XPedition交互的经验,如果对某些兄弟有用,本人倍感荣幸。
; E' F1 t4 ?5 E. c* x1 x. [6 j1 ?5 Y; `
目录和文件说明
6 m7 H% n/ W& k2 ~* R; {6 `: {---------------
9 Z1 M: B' D/ f3 B2 U) gEECom:
& }" ^- d% M" T; g4 v0 I: P2 XWIN-Form版本的跟EE交互的COM组件。WIN-Form做界面比起WPF来说,没有WPF的数据绑定机制,因此没有WPF那么方便。7 O/ e7 ~/ E; A; Z) b& T; G

) j0 D1 c# }2 R2 h0 l. ?EEWPF:2 d: [% j+ o) k3 q" l1 L6 U6 S
WPF版本的跟EE交互的COM组件。WPF做界面又漂亮又快捷
! g  m& u* ^9 ~, M& A, G) A
6 x; d1 J( H4 z( q( p6 m" KEEFind:" v( G# l, K9 ~6 I2 t
一个测试程序,它也是调用EECom组件进行测试,由于它是一个单独的进程,因此它和EE数据交换属于进程间通讯,速度很慢。比起直接通过VB脚本在; t2 e0 N: ?2 R! F/ ^7 {1 W% w
EE进程空间激活EECom,慢太多了。- P0 I( f$ K0 C. Z3 ~

8 `9 H0 D+ Z2 C2 R% R, Z3 I* s8 `7 qEECOM.vbs
% A( ^: a& w$ T! L1 I1 q用于在EE进程空间激活EECom的VB脚本。和普通的EE VB脚本一样,把它拖进EE的窗口,或者用keyin命令"run eecom.vbs"即可。7 j4 S. I4 X' z6 H' X& v

0 g$ q" L$ T3 [' ?
7 x% g; P9 B. W( ~* f& p% E--------------
' C9 N# v9 x# S目的5 w5 }/ G9 v8 _: }# p. Z
--------------4 x# ~+ J- U! y6 H! [. Y/ b9 B
本工作的目的,是有几个考虑:
% G( N1 p  r2 T- a. I/ C$ |1. 首先是VBScript,写起来很痛苦,没有一个带有智能提示(基本上只有语法高亮,以及一些基本的智能提示)。如果能够用C#这种宇宙第一方便的语言
" W' f5 T: \1 t. {3 F/ E" r* c   来写脚本,有了VS Studio 宇宙第一IDE的帮助,那是相当让人愉快的,各种自动提示。' H1 i: ^9 M3 @( ]9 R& A

4 O6 Y2 d/ j; ]6 j2. 我用C#和VS Studio,通过新建一个应用程序工程,并引用EE的所有COM组件库之后,写起来自然是相当爽,但是测试的时候发现,由于跨进程通讯,即使是
/ B  {3 n" n1 ?1 O' q# ^   遍历800个via,也需要消耗1到2秒的时间,这让人很痛苦。必须要把代码放到EE的进程空间内执行,免除跨进程通讯,速度才能快。
' I% d( w1 T8 \# a8 q
/ I+ M6 p' T0 X& N6 }3. 基于以上两点的考虑,我想到的方案是,用C#来实现逻辑和界面,并编译成为COM组件库;然后通过EE的VB脚本激活该COM组件库;这样就既可以有C#的爽,
2 b. ]& W. A; h7 y% }   速度又快,不仅仅比跨进程通讯的快,而且比同进程通讯的VB脚本实现业务逻辑的更加快,毕竟C#的速度,不是VBScript可以相提并论的。
0 @: Z, b; e9 s6 K- G" t, f* k* l: _" Y

0 G9 J1 a  D3 K: z**
+ q. _5 J- d7 d* T7 c示例界面:( n& d( ]0 E! A( z1 W
; U" N& j& z4 T2 W
2 j# {) N! _) [: h
* ?1 v9 r& N/ R  x% ^
  D1 H& x! d0 T9 C) g: m# }  _

7 a* F) }5 M) R, p- `工程附件:
1 f2 g2 A- K  O; _* m' J EEFind.rar (7.13 MB, 下载次数: 26) : c, |# J' e5 L0 h; Y% h
备注:工程是visual studio 2012的,但更高版本的visual studio打开应该不会有问题。
4 A$ B3 v8 \! b6 i; B0 W8 o' k' J1 L/ d/ t0 ]
1 w2 j. P4 |& M1 F9 [( e; {, p
谢谢大家。/ k6 w$ W& ?- W3 \

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

EE-Find-5.png

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

EE-Find-6.png

评分

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

查看全部评分

  • TA的每日心情
    慵懒
    2025-8-20 15:18
  • 签到天数: 103 天

    [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 = "*");; o# ]) n, Z+ v" t, K# D8 [: Q0 z# M
    各位大佬
    - A6 h9 Q9 P  y. r6 l我现在可以获取到打开的PCB文件,但是怎么获取 Components。& I0 p& N- K: ~, l) 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:573 H; o- b1 u* Y: M
    可以来个实例吗?比如Excel中的C10如何与原理图和PCB进行cross probe
    % Y9 m4 R/ G) Y  e. o2 i6 Q
    这个功能AATK里面都是例子,老吴给分享下这个高级功能么
    ; R7 c/ {: {0 D/ a. A

    点评

    水飞兄分享吧,我好好学习学习  详情 回复 发表于 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- R6 y5 g6 J- q9 I
    这个功能AATK里面都是例子,老吴给分享下这个高级功能么

    5 r+ V9 w- C( K" J5 f水飞兄分享吧,我好好学习学习$ l; ?8 H& D. M9 ~4 `. P

    该用户从未签到

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

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

    [LV.1]初来乍到

    11#
    发表于 2019-11-15 10:43 | 只看该作者
    谢谢啦!拿来看看!
    " ]  w. D9 C+ q0 @
  • TA的每日心情

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

    [LV.1]初来乍到

    12#
    发表于 2019-11-15 10:44 | 只看该作者
    非常有用的实例,谢谢" R3 F5 b' W3 k$ t# w( z# z* b
  • 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 的事件,大佬知道吗,能否帮忙简单写下代码!8 u! e. Y) j# ~/ m! [  n# K
  • 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-21 12:55 , Processed in 0.140625 second(s), 34 queries , Gzip On.

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

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

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