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

C#编程和XPedition交互

  [复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 linguohua 于 2019-1-18 16:00 编辑 " ?1 r  A4 Q* ?) u
$ @% H4 w) F' G, y
**
; ?, d3 N& r8 n  ~这个是我个人学习xpedition的自动化的编程交互过程的产物。XPedition的自动化是利用微软的COM组件规范,XPedition把自己的自动化能力通过COM组件导出给外界' t8 ?- H4 ]9 K/ I
使用,因此理论上,任何可以操作COM组件的语言runtime,都可以和XPedition交互。
, O* ]# c! ?* ]$ p( K6 f& k1 c
* X9 ?% A3 F) l6 F# V1 X& r* WXPedition是个好软件,动态铜和拉线这两项独步天下,绝对抛离allegro一光年,。不过它的集成度和allegro比起来,尤其是仿真这块,allegro又领先XPedition 1光年。) f1 D6 r5 C. e& e9 c
$ O3 U  P7 ^8 ~7 z/ N# k: E
我只是搞个帖子,分享一下C#和XPedition交互的经验,如果对某些兄弟有用,本人倍感荣幸。
: T# Y/ g6 O; n% T7 V: t9 S5 s" c1 L& g, e0 H0 c9 s& T
目录和文件说明8 l3 f+ l4 Q% q& `. ?2 P0 F
---------------
/ x7 Z$ z  i* [' w9 L' @2 bEECom:) g* S6 Y( {$ e7 ^* L# w8 }# Y
WIN-Form版本的跟EE交互的COM组件。WIN-Form做界面比起WPF来说,没有WPF的数据绑定机制,因此没有WPF那么方便。+ `- T, k) d' \' N# g9 q
  X) n6 j. H* K7 a
EEWPF:
  W+ w5 T0 R$ Y# m0 U' p- qWPF版本的跟EE交互的COM组件。WPF做界面又漂亮又快捷- N; `0 J6 `6 N1 g3 [

0 T6 V; ^# K7 D( L7 b8 Q. R; IEEFind:% p  `' I6 w- u# [7 u
一个测试程序,它也是调用EECom组件进行测试,由于它是一个单独的进程,因此它和EE数据交换属于进程间通讯,速度很慢。比起直接通过VB脚本在4 Y! Y& p) q7 M7 P' N: V
EE进程空间激活EECom,慢太多了。
$ Y6 S/ A7 s& e: Q* v$ m2 H$ B% o
& k$ {  d  f/ x2 p8 XEECOM.vbs. K( T+ C2 N5 n% [$ a7 }' T! i# k
用于在EE进程空间激活EECom的VB脚本。和普通的EE VB脚本一样,把它拖进EE的窗口,或者用keyin命令"run eecom.vbs"即可。
+ J0 @; @4 I! @6 |0 _( Y# ^+ c2 U+ P* x% z
# T7 h% ^1 c1 l) U& n: E& ^
--------------( A0 H! c. h% T. k- o8 ?2 s4 U
目的
0 {9 [8 u6 p* S9 a, R( }--------------
& X( q5 E. Y" t本工作的目的,是有几个考虑:
# w" W) e$ Y& t# K1. 首先是VBScript,写起来很痛苦,没有一个带有智能提示(基本上只有语法高亮,以及一些基本的智能提示)。如果能够用C#这种宇宙第一方便的语言0 K. r4 B, B6 c1 R7 n: q
   来写脚本,有了VS Studio 宇宙第一IDE的帮助,那是相当让人愉快的,各种自动提示。
7 E( u4 e8 ?6 W8 u2 e- @" }( O( z3 J0 I5 c1 E% j- A/ m/ |
2. 我用C#和VS Studio,通过新建一个应用程序工程,并引用EE的所有COM组件库之后,写起来自然是相当爽,但是测试的时候发现,由于跨进程通讯,即使是
( z' P, R0 w+ A   遍历800个via,也需要消耗1到2秒的时间,这让人很痛苦。必须要把代码放到EE的进程空间内执行,免除跨进程通讯,速度才能快。' N( u5 K6 j) H1 k# ]4 ^

, R( k2 q' U) D0 m! |5 w( B* E2 g; ]3. 基于以上两点的考虑,我想到的方案是,用C#来实现逻辑和界面,并编译成为COM组件库;然后通过EE的VB脚本激活该COM组件库;这样就既可以有C#的爽," J) b$ G" k8 Y+ m; j
   速度又快,不仅仅比跨进程通讯的快,而且比同进程通讯的VB脚本实现业务逻辑的更加快,毕竟C#的速度,不是VBScript可以相提并论的。1 k. w/ P/ i, e$ `- Z" C$ h5 @, z
$ s" K( s# [$ S' T

3 j" |$ Z" q* u9 [) Y# T' N, m3 \; O**/ ~: Q- y+ O% Y0 \" f6 e
示例界面:2 p+ V( p# y' V# j( [2 w% K

/ q" a+ \5 s2 U  m! {5 a8 Q; ~. c! Q
( m* z2 i0 X0 W0 T   w7 A" i0 m8 W. U

0 p3 [# X% d5 m, R. Q& b* |$ ^
3 q% L, ?/ c4 `! v! C) I工程附件:- b8 H) v$ [- G
EEFind.rar (7.13 MB, 下载次数: 26) " G0 [" ?( Z1 G" F# ?) I
备注:工程是visual studio 2012的,但更高版本的visual studio打开应该不会有问题。
. d) F- ~. q! q2 T+ R- S( C* c$ f1 s  T* u7 e
; u0 i* u) l) k9 T; ]+ X1 [
谢谢大家。* y* G: `% [3 W4 A+ v9 u2 ]% v& `

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

EE-Find-5.png

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

EE-Find-6.png

评分

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

查看全部评分

  • TA的每日心情

    2025-7-4 15:19
  • 签到天数: 87 天

    [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 = "*");
    3 ?% z+ }6 }- ~4 O. f各位大佬
    ) v9 [( ~% ~* }8 R我现在可以获取到打开的PCB文件,但是怎么获取 Components。
    5 D# Y9 Z: l/ P( U6 w我直接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
    ' J5 R+ d0 S; V可以来个实例吗?比如Excel中的C10如何与原理图和PCB进行cross probe

    0 R2 @/ o2 C2 J* h这个功能AATK里面都是例子,老吴给分享下这个高级功能么+ v  U" v* ]+ g6 Z8 p' X9 m

    点评

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

    [LV.1]初来乍到

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

    该用户从未签到

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

    点评

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

    该用户从未签到

    7#
    发表于 2019-1-21 17:12 | 只看该作者
    水飞 发表于 2019-1-21 10:13
    # A, _8 t3 s- _# z, M% C. s这个功能AATK里面都是例子,老吴给分享下这个高级功能么
    6 ^# `9 g# h* U) z" o' W
    水飞兄分享吧,我好好学习学习
    % Y6 U0 F" x4 v9 p2 W

    该用户从未签到

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

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

    [LV.1]初来乍到

    10#
    发表于 2019-11-15 10:43 | 只看该作者
    谢谢啦!拿来看看!" Z1 k: _- v, n2 a  v# |! Y6 q
  • TA的每日心情

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

    [LV.1]初来乍到

    11#
    发表于 2019-11-15 10:44 | 只看该作者
    非常有用的实例,谢谢9 n3 Z1 U! s& `
  • TA的每日心情
    开心
    2019-11-20 15:11
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    该用户从未签到

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

    “来自电巢APP”

    该用户从未签到

    14#
    发表于 2019-12-4 15:08 | 只看该作者
    请问C# 如何响应 xPedition 的事件,大佬知道吗,能否帮忙简单写下代码!4 U! ]' d7 c; H5 T9 `
  • TA的每日心情
    开心
    2021-4-22 15:40
  • 签到天数: 73 天

    [LV.6]常住居民II

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-7-5 23:16 , Processed in 0.171875 second(s), 34 queries , Gzip On.

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

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

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