要干啥
通过访问自己建立的excel表格中的相关参数,结合UI对话框,快速设置相关对象的名称,以便后续对这些对象进行某些操作,如批量标注PMI尺寸等。
怎么干
这里以圆柱体为例,对其边进行批量设置名称,通过pandas库中的某些函数访问所创建的excel表,拿到相应参数,然后结合UI块,实现让用户设置所选择对象的名称,这里分以下几步:
第一步:拿到excel表格中的参数
代码如下:定义一个excel_data类,并在choose_excel_data方法中定义一个实例属性list,这个list用于装拿到的名称,即边1,边2,边3,边4。
class excel_data:
def choose_excel_data(self):
self.list=[]
excel_data=pd.read_excel('C:\\Users\\dasfan\\Desktop\\对象名称表格.xlsx',sheet_name=0)
rows,columns=excel_data.shape
for i in range(rows):
data=excel_data.loc[i,'特征名称']
self.list.append(data)
第二步:设置对话框属性
在UI块生成的py代码中,对initialize_cb进行某些设置,以便更改每次弹出的对话框的名称,代码如下,我总共拿到了四个参数:边1,边2,边3,边4,因此我将总共弹出四次对话框,每次弹出的对话框名=名称分别为:请设置名称:边1;请设置名称:边2;请设置名称:边3;请设置名称:边4。
def initialize_cb(self):
try:
self.group0 = self.theDialog.TopBlock.FindBlock("group0")
self.edge_select0 = self.theDialog.TopBlock.FindBlock("edge_select0")
self.edge_select0.GetProperties().SetString('LabelString','请设置名称:{}'.format(self.t))
except Exception as ex:
self.theUI.NXMessageBox.Show("Block Styler", NXOpen.NXMessageBox.DialogType.Error, str(ex))
第三步:设置名称
在ok_cb回调方法中用函数setname设置名称,代码如下,遍历所选对象并拿到它们的Tag值,当然这里每次弹出对话框我们只选择一条曲线,然后设置self.data,即所要设置的名称。
def ok_cb(self):
errorCode = 0
try:
errorCode = self.apply_cb()
if errorCode==0:
self.select_list=self.edge_select0.GetSelectedObjects()
for obj in self.select_list:
self.uf_session.Obj.SetName(obj.Tag,'{}'.format(self.data))
except Exception as ex:
errorCode = 1
self.theUI.NXMessageBox.Show("Block Styler", NXOpen.NXMessageBox.DialogType.Error, str(ex))
return errorCode
第四步:启动
设置一个函数,例化所有之前创建好的类,对各个类的实例属性赋予相应参数,并启动它,代码如下:
def main_control():
excel_data_instance=excel_data()
excel_data_instance.choose_excel_data()
for i in excel_data_instance.list:
test1_instance=test1()
test1_instance.t=i
test1_instance.data=i
test1_instance.Show()
test1_instance.Dispose()
if __name__ == '__main__':
main_control()
最终效果:
最终效果如下,四个圆柱的顶边分别被赋予了名称边1,边2,边3,边4。