Python在CAM软件Genesis2000中的应用

pythonhuohuo 2011-01-14

  摘要:本文主要讲述Python语言在Genesis2000自动化方面的应用初探。内容包括:Python语法;在genesis2000中配置Python程序运行的环境与接口;示例一个Python小程序。

关键词:Python、Genesis2000、Python语法、面向对象、配置文件、例程

一、概述

现在PCB/CAM的Genesis2000自动化程序正在使用的程序语言主要有三种:C Shell、TCL/TK和Perl/TK。C-Shell 是被公认为最容易学的语言,它拥有非常简单而有限的指令,足够让你可以写出大部分的自动化程式,但其使用的图形用户界面GUI和程序间的调用总是有点不尽人意;TCL/TK在C Shell所欠缺方面表现较好,得到了大量的应用;Perl/TK在自身程序执行时间和代码长度方面很有优势,与TCL/TK一样,其使用TK作为它的图形界面。现在应用Python的公司很少,包括生益电子(现在是C Shell和TCL/TK并用),总体来说,它功能非常强大,与TCL/TK一样具有友好的用户界面,是面向对象的语言,其代码很容易理解,并且能够继承以代码重用,当开发大型程序时,它就表现最为优秀。从程序执行效率上讲, 使用TCL/TK、Perl/TK和Python开发脚本似乎都差不多,因为在Genesis2000自动化程序执行过程中,超过九成的时间都是执行Genesis2000的命令,与语言无关,只要我们所用开发语言在执行时输出的信息带有特殊的字符(具体可看/genesis/eXX/all/目录的几个cshell 脚本.是"@%#%@" 这五个字符,也就是DIR_PREFIX变量定义的),Genesis就能识别。比如python:print "@%#%@COMopen_job,job=genesislib"。所以我们在选语言时,主要关注的是界面、是否有好的开发工具、语言是否好理解和程序结构是否清晰(以便以后好维护),就这些方面讲,Python是有很大优势的。

二、Pythhon的语法

Python语言最有别于C Shell、Tcl/Tk及Perl/Tk的地方就是:它是一种面向对象语言(面向对象的概念应用十分广泛,如流行的java,c++等语言都是面向对象语言,Microsoft的Windows 2000及后续操作系统均使用的是面向对象思想);C Shell、Tcl/Tk及Perl/Tk是过程性语言。下面进入Python语言的语法介绍:

1、“>>>”相当于在C Shell下输入命令“$ ls–l”时的命令提示符“$”;

2、print打印其后的字符串到标准输出,如print“hello”;

3、模块(Modules):

Modules就是已有的Python程序(无论是系统自带标准库文件如os、sys等,还是自己已经完成的Python程序),我们都可以import到自己的程序中,调用其中的函数、类、或是用其作为基类派生出自己的类等等。举例如下:

例一:使用系统库文件模块(Modules)

>>> import math ####导入库文件math

>>> math.sin(0) ####用math的sin函数作计算得结果0.0

0.0 ####程序执行,并输出结果

例二:使用自己的程序模块(Modules)#####我将程序命名为hello.py,并放在/genesis/sys/目录下print “hello,world!” #####最简单的hello world程序现在可以如下使用上述hello.py程序>>> import sys ####导入库文件sys>>> sys.path.append(‘/genesis/sys’) ####添加程序import路径>>> import hello.py ####导入自写程序hello.pyhello,world! ####程序执行,并输出结果

4、定义函数:

####程序命名为helloworld.py,以下为其内容

def hello():

print “Hello,World!”

你可以如此使用它:

>>> import helloworld

>>> helloworld.hello()

Hello,World!

5、创建和使用类:

在类中定义的函数,有可能会有如“__init__”这种形式的函数,它称为magic method,这种method能在Python的特殊环境下执行(具体取决于函数名),这种类型的函数很少会使用。如__init__能够对类的变量进行初始化赋值,__del__能够在Python程序的类执行完后清理此类使用的内存。下面举一例说明类的使用:

class Bird:

def __init__(self):

self.hangry = 1

def eat(self):

if self.hangry:

print ‘Aaaah……’

self.hangry = 0

else

print ‘No,Thanks’

上面的类定义了所有鸟最基本的功能:吃东西。如下是怎样使用这个Bird 类:

>>> b = Bird() #####定义一只鸟b,初始是饿的状态

>>> b.eat() #####鸟吃东西

Aaaah…… #####饿,发出吃东西的Aaaah……声音,吃完变成不饿状态

>>> b.eat() #####再次让它吃东西

No,Thanks! #####发出No,Thanks!说明它不饿了

上面的Bird类只是定义了鸟能吃东西,并且变为不饿状态。现在可以考虑派生的概念了,我们从上面的基类派生出一种子类SongBird,此子类鸟能够唱歌:

Class SongBird(Bird): #####从Bird类派生而来

def __init__(self):

Bird.__init__(self) ####调用基类的初始化,否则不能调用基类的变量

self.sound = ‘Squawk!’

def sing(self):

print self.sound

SongBird程序如下使用:

>>> sb = SongBird()

>>> sb.sing()

Squawk!

>>> sb.eat()

Aaaah……

>>> sb.eat()

No,Thanks!

关于Python的语法先暂时介绍到此,我们可以从上面的介绍中初略明白怎样写Python程序代码,里面着重介绍了类的概念,当然这需要有面向对象方面的基础。在大学里,面向对象程序设计是计算机科学的一门重要课程,所以,你要是有学习的需求,不难找到一些较好的教材。

相关推荐