PCB Genesis脚本 C#调用Python
在PCB行业,Genesis的二次开发的编程脚本越来越丰富了啊,从一开始进入眼界的Genesis脚本语言是很少的,CSH,PERL,
再后来慢慢发展,VB,易语言,VB.NET,C#,Java,TCL,PYTHON,C++,语言真的是五花八门啊,各种各样编程语言与Genesis为伍,
2004年PCB前辈写的Genesis Python接口,真的好久远了,想想当时的我还没入PCB这行了;呵呵
有需要的可以在此基础上面改进哦。学习借鉴一下人家的封装接口思路.
http://pcbren.cn/ShareFiles/Python接口2004.rar
在这里介绍C#调用Pythony方法,但个人并不建议:写脚本用多种的语言写脚本,而且嵌套调用使程序更麻烦了。
这里只是实现思路而已,实际应用中写脚本统一一种语言写脚本,当然是为了后期更好的维护啦,
所以最好多种语言不要混合写,随着不断深化应用,会不断的封装工具类,公共方法,基类,后期维护多种语言都要写一遍相似的代码。
在这里以:Genesis调用C#脚本,C#脚本再调用Python脚本 写一个调用例子
一.Nuget中下载IronPython包

二.用Python写一个加PAD脚本测试用
脚本命名:AddPadTest.py 并放在bin目录
def main(arr):
try:
print '@%#%@COM add_pad,attributes=no,x=0,y=0,symbol=r1314'
READANS = raw_input()
COMANS = raw_input()
return str(READANS)
except Exception as err:
return str(err)
三.用C#脚本调用Python脚本
using System;
using IronPython.Hosting;
using Microsoft.Scripting;
using Microsoft.Scripting.Hosting;
namespace CSharpCallPython
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
ScriptEngine pyEngine = Python.CreateEngine();//创建Python解释器对象
dynamic py = pyEngine.ExecuteFile(@"AddPadTest.py");//读取Python脚本
string READANS = py.main("");//调用Python脚本main函数 加PAD
}
}
}
四.测试运行效果OK
start_script.csh 启动 C#脚本,C#脚本调用Python脚本

PCB Genesis脚本 C#调用Python的更多相关文章
- PCB Genesis脚本 C#调用Javascript
曾经用node.js测试写Genesis脚本失败了,这次借助开发PCB规则引擎的机会(基于JS V8引擎与.net深度交互性), 验证一下Javascript是否可用于写Genesis脚本. 一.测试 ...
- PCB Genesis脚本C#使用WPF窗体实现方法
用C#写脚本做UI界面基本上都是用WinForm界面,如果想制作很漂亮动态的界面用WPF界面挺不错的选择, 这里介绍如何使用控制台程序调用WPF窗口 一.方法一 在控制台程序中,通过Main方法启动W ...
- Window环境下,PHP调用Python脚本
参考 php调用python脚本*** php 调用 python脚本的方法 解决办法:php提供了许多调用其他脚本或程序的方法,比如exec/system/popen/proc_open/passt ...
- Java调用Python脚本并获取返回值
在Java程序中有时需要调用Python的程序,这时可以使用一般的PyFunction来调用python的函数并获得返回值,但是采用这种方法有可能出现一些莫名其妙的错误,比如ImportError.在 ...
- linux+php+apache web调用python脚本权限问题解决方案
lamp : linux + apache + mysql + php 在上篇随笔中linux+php+apache调用python脚本时出现的问题的根本原因是:apache运行时使用的apache用 ...
- linux+php+apache web调用python脚本权限问题
lamp : linux + apache + mysql + php 在近期项目中使用 linux + apache + php调用python脚本是出现以下权限问题: build/bdist.li ...
- PHP 调用Python脚本
上次做用户反馈自动翻译,写了个python脚本,将日文的用户反馈翻译成中文,效果虽然可以,但其它不懂python的童鞋就没法使用了,所以搭了个web服务,让其他人可以通过网页访问查询.使用的是apac ...
- C++中调用Python脚本
C++中调用Python脚本的意义就不讲了,至少你可以把它当成文本形式的动态链接库, 需要的时候还可以改一改,只要不改变接口, C++的程序一旦编译好了,再改就没那么方便了 先看Python的代码 代 ...
- C#调用Python 脚本语言
1. 安装IronPython http://pan.baidu.com/s/1qW4jNJ2 下载IronPython 2.7 安装下载下来的安装包 2. 创建项目 创建一个C#的Windows窗 ...
随机推荐
- qemu vm setup network(ssh) with buildroot
1, build buildroot with buildroot.config, that is 'make qemu_x86_64_defconfig' + some packages, sshd ...
- Tensorflow学习笔记(1):tf.slice()函数使用
tensorflow 当中的一个常用函数:Slice() def slice(input_, begin, size, name=None) 函数的功能是根据begin和size指定获取input的部 ...
- 最大子段和(洛谷P1115,动态规划递推)
洛谷题目链接 题目赋值出来格式有问题,所以我就只放题目链接了 下面为ac代码 #include<bits/stdc++.h> #define ll long long using name ...
- python基础面试题30问(附带答案)
1. 闭包 定义:闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境)(想想Erlang的外层函数传入一个参数a, 内层函数依旧传入一个参数b, 内层函数使用a和b, 最后 ...
- 手写DAO框架(三)-数据库连接
-------前篇:手写DAO框架(二)-开发前的最后准备--------- 前言 上一篇主要是温习了一下基础知识,然后将整个项目按照模块进行了划分.因为是个人项目,一个人开发,本人采用了自底向上的开 ...
- 九度oj 题目1045:百鸡问题
题目1045:百鸡问题 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:10418 解决:4559 题目描述: 用小于等于n元去买100只鸡,大鸡5元/只,小鸡3元/只,还有1/3元每只的一 ...
- 170611 NOIP模拟赛
第一题没做出来不应该: 第二题不难想,就是写起来很麻烦: 第三题因为学了挺久的splay就直接写的splay,没太在意常数问题,一般情况下,第k值问题主席树是比splay稍快的: 盘子序列 [题目描述 ...
- Ubuntu 16.04通过Trickle限制某个软件的下载/上传速度
在Linux下没有Windows使用360那样去限制某个软件的速度. 但是通过Trickle可以设置某个软件的网速,但是前提是通过Trickle命令连带启动这个软件才可以,不能中途去设置. 比如现在很 ...
- 一个简单的js队列,逻辑很清晰
function Queue(type) { //type 是否是一个接着一个执行 function QueueConst() {} QueueConst.execute_ing=[], QueueC ...
- JavaScript解析顺序和变量作用域
JavaScript基础之变量作用域. 一. 1.全局变量:全局变量的意思就是,在代码的不论什么地方都能够訪问到.注意:未定义 直接赋值的变量拥有全局属性. 2.局部变量:局部变量的意思就是,变量的作 ...