三、在CAM软件genesis2000中配置Python
1. 在genesis2000初始化文件中加入对Python程序的支持
修改Genesis 2000的脚本初始化文件scr_start.csh,使genesis2000能够执行Python程序,代码改动如下:
…… ########检查程序首行代码
set _HEAD=`head -1 $PROG`
set _EXT=`echo $PROG:e`
……
else if("$_HEAD" =~ *python*)then ######实现对Python程序的支持####
echo "Executing Python Program $PROG $argv"
python $PROG $argv
set PROG_STATUS=$status
……
2. genesis2000命令的Python接口
包括genesis2000基本命令SU_ON、SU_OFF、VON、VOF、PAUSE、MOUSE、COM、AUX、DO_INFO:
######此程序模块(Modules)名为genClasses.py
class Genesis:
def __init__(self):
self.prefix = '@%#%@' #### 传给genesis2000 的命令代码前缀
……
def SU_ON(self):
return self.sendCmd('SU_ON')
def SU_OFF(self):
return self.sendCmd('SU_OFF')
def VON(self):
return self.sendCmd('VON')
def VOF(self):
return self.sendCmd('VOF')
def PAUSE(self, msg):
self.sendCmd('PAUSE', msg)
self.STATUS = string.atoi(raw_input())
self.READANS = raw_input()
self.PAUSANS = raw_input()
return self.STATUS
def MOUSE(self, msg, mode='p'):
self.sendCmd('MOUSE ' + mode, msg)
self.STATUS = string.atoi(raw_input())
self.READANS = raw_input()
self.MOUSEANS = raw_input()
return self.STATUS
def COM(self, args):
self.sendCmd('COM', args)
self.STATUS = string.atoi(raw_input())
self.READANS = raw_input()
self.COMANS = self.READANS[:]
return self.STATUS
def AUX(self, args):
self.sendCmd('AUX', args)
self.STATUS = string.atoi(raw_input())
self.READANS = raw_input()
self.COMANS = self.READANS[:]
return self.STATUS
def DO_INFO(self, args):
self.COM('info,out_file=%s,write_mode=replace,args=%s' % (self.tmpfile,args))
#self.PAUSE('Hi')
lineList = open(self.tmpfile, 'r').readlines()
#print lineList
os.unlink(self.tmpfile)
infoDict = self.parseInfo(lineList)
return infoDict
......
3. genesis2000的Python程序中常调用的接口程序介绍:
这些模块包括:
1)genBasic.py :这个模块为Genesis 2000环境提供非常基本的接口,它定义了一些基本的功能,以便象COM,PAUSE,AUX,MOUSE,INFO,DO_INFO等命令能够被执行。用法是这样的:
from genBasic import *
COM('open_job,job='+jobName)
PAUSE('Job is opened')
2)genClasses.py :这个模块拥有几个并行模块,这些并行模块提供Genesis基本命令之上的附加功能,这个模块拥有几个抽象Genesis2000接口的类,以使用Python编写的程序执行更快更容易。如名为Genesis的类:定义了使用Genesis的底层接口方法,它是作为更高层对象的一个基类。
3)genCommands.py :这个模块拥有几个genClasses.py中定义的类的子类,包括在每个类中都能执行的几个命令。
4)genFeatures.py :这个模块用来定义属性,它提供呈现Genesis属性的类,现在可以呈现Pad, Line, Arc, Text, and Barcode(surface还不支持),当然,这些功能比DFM环境要慢一些,对于小的JOB很好用,功能上讲,它位于Genesis 基本命令之上。
5)genPersist.py :这个模块为Genesis-Python接口提供一个持续框架。Python对象可能会储存到Genesis料号的目录中,这个目录就是misc目录。