用Python快速开发CAM程序(实战版)
来源:互联网 发布:上海师范大学网络续费 编辑:程序博客网 时间:2024/05/26 14:09
这一节将介绍函数,模块的调用,类,面向对象,并结合前面的知识写一个CAM程序
一:函数
函数用def来声明,可以分为有参与无参函数,直接说个实例就明白了:
一:函数
函数用def来声明,可以分为有参与无参函数,直接说个实例就明白了:
#-*- encoding: utf-8 -*-
'''
Created on 2014年5月23日
@author: Administrator
'''
def method():
print '这一个无参的函数'
def method_x(x):
print '这一个有参的函数 ,传入的形参 = ',x
def method_y(x):
x = 5* x
return x
method()
method_x(22)
print '返回的变量是:',method_y(20)
结果如下:
结果如下:
这一个无参的函数
这一个有参的函数 ,传入的形参 = 22
返回的变量是: 100
二:模块的调用
Python中的程序文件以.py来命名后缀,每个程序都可以称为模块,我们来写两个模块
第一个模块:
就调用模块而言,这比Java,Perl要好用的多,只要引入就行了,然后就直接用,多好。
二:类与面向对象
类还是用class来声明, Python中的self等价于C++中的self指针和Java、C#中的this.
二:模块的调用
Python中的程序文件以.py来命名后缀,每个程序都可以称为模块,我们来写两个模块
第一个模块:
#!/usr/bin/python
#-*- encoding: utf-8 -*-
hm = 8
def whe(x):
print '你调用了ky这个模块中的方法了'
x = 5 * x
return x
第二个模块:#!/usr/bin/python
#-*- encoding: utf-8 -*-
'调用一个模块用import'
'调用一个模块用import'
import ky
x = ky.whe(5)
print '调用了ky的模块后,返回的变量为',x
y = ky.hm * 20
print '调用了ky的模块中的变量相乘后,y =',y
结果如下:
结果如下:
你调用了ky这个模块中的方法了
调用了ky的模块后,返回的变量为 25
调用了ky的模块中的变量相乘后,y = 160 就调用模块而言,这比Java,Perl要好用的多,只要引入就行了,然后就直接用,多好。
二:类与面向对象
类还是用class来声明, Python中的self等价于C++中的self指针和Java、C#中的this.
在一个函数中最少要有一个形参self,如def Havex(self),以下介绍类的成员变量,私有变量,成员方法,私有方法,
类方法,静态方法,与内部类
#-*- encoding: utf-8 -*-
'''
Created on 2014年5月23日
@author: Administrator
'''
'创建一个类'
class Myclass:
'成员变量'
xu = 12
name='dlh'
__namekk = '类的私有属性shuxing'
#构造函数
def __init__(self,n=20000):
self.xu=n
#自动执行,析构函数,主要用来关掉一些连接,如数据库连接,文件的打开
def __del__(self):
#p.close()
print '释放资源,close'
def Havex(self):
print self.__namekk
return 'fff'
def fun1(self):
#方法中的局部变量
self.tow = 'iiiiiiiii'
print self.name
print '我是公有方法'
self.__fun2() #调用私有方法
'定义静态方法要加以下这句@staticmethod'
@staticmethod
def staticxx():
'静态方法不用加self'
print Myclass.name
print '我是静态方法static'
'私有的,要定义两个下划线_ _'
def __fun2(self):
print self.name
print '我是私有方法'
'定义类方法要加以下这句@classmethod'
@classmethod
def classfun3(self):
print self.name
print '我是类方法class'
def xik(self):
self.fun1()
print self.fun1(),'我开始了+++++++++'
class Leibu_class():
var1 = '我是内部类,ok,ok'
def main():
'创建一个对象,并传入一参数'
kj = Myclass(50000000)
print kj.xu
print kj.Havex()
kj.fun1()
Myclass.classfun3()
Myclass.staticxx()
'创建内部类的对象'
lei = kj.Leibu_class
lei2 = Myclass.Leibu_class()
print lei.var1
print lei2.var1,'222'
#print kj.__namekk
#print kj.fun1()
print kj.tow
kj.xik()
if __name__ == '__main__':
main()
结果如下:
50000000
类的私有属性shuxing
fff
dlh
我是公有方法
dlh
我是私有方法
dlh
我是类方法class
dlh
我是静态方法static
我是内部类,ok,ok
我是内部类,ok,ok 222
iiiiiiiii
dlh
我是公有方法
dlh
我是私有方法
dlh
我是公有方法
dlh
我是私有方法
None 我开始了+++++++++
释放资源,close
介绍了这么多,已经足够用来编写CAM程序了:
取出这个料号是多少层,并取出层相关的属性,然后,要gts增加一个PAD
#!/usr/bin/python
#Import Standard Modules
import os, string, sys, re, time
#Import Genesis specific resources
sys.path.append('/genesis/e92/all/python')
import genClasses
class Copy():
def __init__(self,layer,job,info):
self.layer = layer
self.job = job
self.info = info
print 'kkkkkkk'
self.copy_other_layer()
self.addLayers()
#self.config()
def copy_other_layer(self):
print 'kkkkkkk ',self.layer,self.job
self.job.PAUSE('scripts copy '+self.layer+' layer')
self.job.COM("units,type=mm");
self.job.COM("display_layer,name="+self.layer+",display=yes,number=1");
self.job.COM("work_layer,name="+self.layer);
self.job.COM("add_pad,attributes=no,x=80.8383775,y=57.2963275,symbol=r900,"+
"polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,"+
"yscale=1");
self.job.COM("display_layer,name="+self.layer+",display=no,number=1");
def addLayers(self):
self.layers = []
self.context_x = []
self.polarity_x = []
self.layer_type_x = []
self.side_x = []
for x in xrange(len(self.info['gROWname'])):
if not len(self.info['gROWname'][x]): break
name = self.info['gROWname'][x]
context = self.info['gROWcontext'][x]
polarity = self.info['gROWpolarity'][x]
layer_type = self.info['gROWlayer_type'][x]
drl_start = self.info['gROWdrl_start'][x]
drl_end = self.info['gROWdrl_end'][x]
side = self.info['gROWside'][x]
self.layers.append(name)
self.context_x.append(context)
self.polarity_x.append(polarity)
self.layer_type_x.append(layer_type)
self.side_x.append(side)
#print self.layers[x]
return self.layers
def Total_Info():
Have_Layerx = []
Have_Layer = Tmpx.addLayers()
print '- - - - - - - - - - - - - -'
print jobName+' Have ',len(Have_Layer),' layer,List:'
for tmp in xrange(len(Have_Layer)):
Have_Layerx.append(Have_Layer[tmp])
print Have_Layer[tmp]
print Have_Layer
print '++++++- - - - - - - - - - - - - -',len(Have_Layerx)
for tmp in xrange(len(Have_Layerx)):
print Have_Layerx[tmp]
print Have_Layerx
print len(Have_Layerx)
print 'End bye'
def Other_info(Copy):
Have_Layer = Tmpx.addLayers()
print Have_Layer
Have_Layer_Type_= Copy.layer_type_x
print Have_Layer_Type_
Layer_context = Tmpx.context_x
print Layer_context
Layer_Side = Tmpx.side_x
print Layer_Side
Have_polarity = Copy.polarity_x
print Have_polarity
if __name__ == '__main__':
import genClasses
if os.environ.has_key('JOB'):
jobName = os.environ['JOB']
step = os.environ['STEP']
else:
print 'Open a job first...'
sys.exit(1)
print 'JOB =',jobName,'Step = ',step
# Call layer selector
job = genClasses.Job(jobName)
Tmpx = Copy('gts',job,job.matrix.info)
Total_Info()
Other_info(Tmpx)
0 0
- 用Python快速开发CAM程序(实战版)
- 用Python快速开发CAM程序(1)
- 用Python快速开发CAM程序(2)
- 用Python快速开发CAM程序(3)
- 用Python快速开发CAM程序(4)
- Python+wxWidgets快速开发桌面小程序
- Python+wxWidgets快速开发桌面小程序
- Python+wxWidgets快速开发桌面小程序
- Python+wxWidgets快速开发桌面小程序
- Python+wxWidgets快速开发桌面小程序
- CAM
- 快速学会Python(实战)
- 微信小程序开发实战
- 《Python开发实战》
- Python开发实战pdf
- 用Python快速编写网站遍历程序
- 利用Volley框架开发实战(快速开发,代码直接可以用在实战中...)
- Android项目实战之(1)-- 开发一个"快速冲浪"的程序
- Linux主分区,扩展分区,逻辑分区的联系和区别
- iptables limit 参数备忘
- 【Espruino】NO.02 快速入门
- 总结OnOK()、OnCancel()、OnClose()、OnDestroy()之间的区别
- 【leetcode】Interleaving String
- 用Python快速开发CAM程序(实战版)
- AutoCompleteTextView的使用
- 高效C++编程
- 见过鸡蛋型相机没?还能超高清360度全景摄影
- 九度 题目1370:数组中出现次数超过一半的数字
- Link Time Code Generation
- htpasswd命令
- ios 基于GameKit框架的蓝牙通信
- nested exception is org.springframework.beans.ConversionNotSupportedException的解决方法