Tribon Vitesse开发教程(四) 前面提到过会有一种比SX700数据抽取更加便捷的方式,接着就来介绍。打开SdrComp.py文件,从下面这句开始看: if __name__ == "__main__": 这句话叫做“自省”,它下面的语句是双击py文件即可运行的代码,是Python程序的入口。而Vitesse程序则不同,在Tribon环境中执行py文件并不执行自省中的代码,而是执行run()函数中的代码。 编写自省代码是个好习惯,自省代码不仅可以让开发人员进行程序测试,而且可以让浏览代码的人看到类或者函数的使用方法。在代码开放的环境中,使用自省比编写文档让开发人员沟通更有效。 comp = SdrComp.SdrComp('PL10-1') weight = comp.GetWeight() 仅两行代码即实现了名为“PL10-1”的部件重量信息的数据抽取。SdrComp类是对数据抽取字符串的封装,同时也实现了Tribon应用程序与数据抽取的解耦。要搞明白这些先要分析SdrComp类。 SdrComp类继承自aadAssDataExtraction.DataExtraction类,所以SdrComp类拼装了数据抽取字符串并调用父类的数据抽取方法,最后返回数据抽取结果。例如获得重量的代码: def GetWeight(self): st = self.stHead + "GEN_PROPERTY.WEIGHT" self.ExtractData(st) return self.DataResult[0] 当我们在某个Vitesse程序中需要获得部件重量的时候,只需要调用GetWeight方法,而数据抽取全部被隐藏起来了。不仅如此,假设某一天这个部件的重量需要从数据库中获得的时候,仅需要修改SdrComp中的代码即可,不必修改应用程序的代码。如下图,SdrComp隔离了应用程序和数据库: 在Tribon部件库中,没有部件材质的定义,我们单位是将材质写入用户自定义字符串中。所以在SdrComp中通过下面代码获得数据: def GetMaterialQuality(self): st = self.stHead + "USER_DEFINED.STRING(3)" self.ExtractData(st) return self.DataResult and self.DataResult[0] or '' 而每个单位的情况不一样,对材质的约定也不尽相同,通过修改SdrComp中的代码以同样的GetMaterialQuality接口获得材质,应用程序无需知道材质的存放位置以及获得方法。这也增强了Vitesse程序的可移植性,稍加修改就可以在不同的企业中应用。 或许有人觉得SdrComp这个模块名称很奇怪,Sdr是我们单位的简称,Comp是Component的简写。之所以起这样的名字是为了防止命名冲突。例如我将这个模块名叫做Component,就会和Python模块里面的Component重名。在import Component的时候就取决于谁在PythonPath变量设置的前面了,结果肯定有一个模块被屏蔽掉了。Tribon也是这样命名来避免命名冲突问题,例如:KcsPoint2D,Kcs是Tribon公司以前的名字。 SdrStrucModule,SdrStruc与SdrComp都是一样的,就不一一累述了。 本文来源:https://www.wddqw.com/doc/78446132cf1755270722192e453610661ed95aa3.html