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

C#编程和XPedition交互

  [复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 linguohua 于 2019-1-18 16:00 编辑 , v7 }9 {3 P( n0 F

! d5 r, e1 F1 K& H6 z**/ ~& d! B0 g) [  T
这个是我个人学习xpedition的自动化的编程交互过程的产物。XPedition的自动化是利用微软的COM组件规范,XPedition把自己的自动化能力通过COM组件导出给外界
9 [0 g0 q4 z& _8 p  S使用,因此理论上,任何可以操作COM组件的语言runtime,都可以和XPedition交互。$ d" E3 _* p1 }! l5 a  N
" f3 W, `: K: W. o
XPedition是个好软件,动态铜和拉线这两项独步天下,绝对抛离allegro一光年,。不过它的集成度和allegro比起来,尤其是仿真这块,allegro又领先XPedition 1光年。( b& s5 e+ J/ t$ p$ l! ^. G
+ ^7 Y' V! C, P+ V5 `; `' n" i9 {
我只是搞个帖子,分享一下C#和XPedition交互的经验,如果对某些兄弟有用,本人倍感荣幸。2 a- k' s# M7 u0 Q

+ r7 d- s) v8 J* Y* H- z/ f目录和文件说明
! Q4 C4 E, t4 g1 C& o---------------
  d( `4 f, f. X' ~- ]4 ^% ]* M3 zEECom:4 |/ `: R1 O3 V
WIN-Form版本的跟EE交互的COM组件。WIN-Form做界面比起WPF来说,没有WPF的数据绑定机制,因此没有WPF那么方便。; \; E- t+ P2 I- K: x8 R: b4 b4 `
: \% }: p( f5 D: K( y% e
EEWPF:
/ ]& k; o3 r$ ^7 K! p! c& o: N$ OWPF版本的跟EE交互的COM组件。WPF做界面又漂亮又快捷
; U, j! P! D; k1 J8 {$ t  Y  U; D  m$ j) ~
EEFind:1 b. j  g6 C) S8 {1 I- a; e
一个测试程序,它也是调用EECom组件进行测试,由于它是一个单独的进程,因此它和EE数据交换属于进程间通讯,速度很慢。比起直接通过VB脚本在
. Y/ f: G3 _" S1 {# bEE进程空间激活EECom,慢太多了。8 D) ]: [# D2 T) F

. K. h( R- k  p, ]- \0 d) U! oEECOM.vbs% A0 E1 i' ~: Q
用于在EE进程空间激活EECom的VB脚本。和普通的EE VB脚本一样,把它拖进EE的窗口,或者用keyin命令"run eecom.vbs"即可。1 t: n8 r8 B6 i& X% s. Y, v
" \4 e- J5 w* ?3 f6 a
6 @, S; A. W, ~
--------------
. }1 A3 `# p6 ?$ {9 F6 C6 {目的& P, i; \2 q& h2 w' F' v
--------------0 r9 Z( |4 T: E; q7 i
本工作的目的,是有几个考虑:2 ?" s9 ^/ F, {5 m
1. 首先是VBScript,写起来很痛苦,没有一个带有智能提示(基本上只有语法高亮,以及一些基本的智能提示)。如果能够用C#这种宇宙第一方便的语言
3 c( p) P' l8 W7 O  n9 h   来写脚本,有了VS Studio 宇宙第一IDE的帮助,那是相当让人愉快的,各种自动提示。
7 _0 v6 X) l6 ]" O: A6 x- d1 v) x4 V8 i! b
2. 我用C#和VS Studio,通过新建一个应用程序工程,并引用EE的所有COM组件库之后,写起来自然是相当爽,但是测试的时候发现,由于跨进程通讯,即使是) d- A# `* K$ y( Q8 M
   遍历800个via,也需要消耗1到2秒的时间,这让人很痛苦。必须要把代码放到EE的进程空间内执行,免除跨进程通讯,速度才能快。. Z8 \: c+ {: g. {% C

! a- l# X' n1 a6 f3 D! C3. 基于以上两点的考虑,我想到的方案是,用C#来实现逻辑和界面,并编译成为COM组件库;然后通过EE的VB脚本激活该COM组件库;这样就既可以有C#的爽,
3 S" \: q- p2 o6 M! k- W: z# B   速度又快,不仅仅比跨进程通讯的快,而且比同进程通讯的VB脚本实现业务逻辑的更加快,毕竟C#的速度,不是VBScript可以相提并论的。3 u  V) R; x  x5 j
* }, C7 b* G7 e/ i2 Y0 d
" h2 X! r3 f* p( {0 H
**' W: q4 F; \6 c2 x4 y/ R  S4 d" ~" z) z
示例界面:
; k/ v9 s; s! w6 C: X# C- P7 | 3 N. A" [8 G, b: U+ h
1 \, S7 f/ y0 ?" [9 G
4 w. r. M# `  A& ~* B2 _

5 e( [2 t- s( Z/ F6 E7 F; h9 T8 h& R# W: b* e% P3 q9 ~
工程附件:
, B& k1 \0 M7 T5 t  Q( \ EEFind.rar (7.13 MB, 下载次数: 26) 7 `* P! p7 q+ y! W9 s6 L' O2 A
备注:工程是visual studio 2012的,但更高版本的visual studio打开应该不会有问题。
3 W6 w2 V2 F+ j9 n0 Z1 `! {9 N( D6 @+ }! x6 Y
; Z- s: D+ p& l4 S) K& {3 e
谢谢大家。
! u$ j+ m2 b4 P' f/ p

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-9 15:34
  • 签到天数: 89 天

    [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; w' E# y) Z9 u1 R6 h
    各位大佬
    9 M- a! O* T- Y6 a* ~我现在可以获取到打开的PCB文件,但是怎么获取 Components。3 k* B2 X: k7 h5 |
    我直接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& E& ]+ A, u' O  G
    可以来个实例吗?比如Excel中的C10如何与原理图和PCB进行cross probe
    " I: I" a" c, P9 T2 O/ G1 n+ x
    这个功能AATK里面都是例子,老吴给分享下这个高级功能么
    " K' A1 c1 I' o# M! E2 l2 C

    点评

    水飞兄分享吧,我好好学习学习  详情 回复 发表于 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
    % S# ], [: i) Q9 x- {这个功能AATK里面都是例子,老吴给分享下这个高级功能么

    2 M% ^- J0 H9 l' ^3 [# m水飞兄分享吧,我好好学习学习; P4 j/ P7 z7 _  A

    该用户从未签到

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

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

    [LV.1]初来乍到

    11#
    发表于 2019-11-15 10:43 | 只看该作者
    谢谢啦!拿来看看!0 B2 y; R: s% K) e+ S9 e' J
  • TA的每日心情

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

    [LV.1]初来乍到

    12#
    发表于 2019-11-15 10:44 | 只看该作者
    非常有用的实例,谢谢- y6 W4 I* N/ I3 B+ L
  • 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 的事件,大佬知道吗,能否帮忙简单写下代码!% T. q6 K( b$ ^- t2 @% U5 c
  • 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-7-13 04:20 , Processed in 0.156250 second(s), 30 queries , Gzip On.

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

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

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