|
接上贴,代码长度限制未发完全,以下是剩下部分
- /**
- *
- * @param workPart
- * @param list
- * @param ncGroup
- * @param toolNumberRegedit
- * @throws NXException
- * @throws RemoteException
- */
- public static void checkToolUpon(Part workPart ,
- ArrayList<DataStruct> list,
- NCGroup ncGroup,
- ArrayList<DataStruct> toolNumberRegedit
- ) throws NXException, RemoteException {
- //取得UG得 Session,标准步骤
- Session theSession = (Session) SessionFactory.get("Session");
- //循环检查程序组下面的操作是否可以映射
- CAMObject[] cam_list= ncGroup.getMembers();
- for(CAMObject cam:cam_list){
- if(workPart.camsetup().isOperation(cam)){
- Operation op = (Operation)cam;
- AddToolNumberRegedit(op,toolNumberRegedit); //向注册列表添加数据
- //取得UG得 Session,标准步骤
- // Session theSession = (Session) SessionFactory.get("Session");
- NCGroup ncg = (NCGroup) op.getParent(CAMSetup.View.MACHINE_TOOL);
- //Tool tool = (Tool)ncg;
- //tool.
- // theSession.listingWindow().writeLine("刀具名字="+ncg.name());//打印工序的刀具名称
- for(DataStruct ds:list){
- if(ds.name.equals(ncg.name())){
- if(ds.reorder){//支持重排刀号
- //theSession.listingWindow().writeLine("重排刀具号");
- if(checkToolNumber(ds,toolNumberRegedit)) { //检查目前的刀号是否重复,不重复不需要重排
- for (int i = ds.lowNumber; i <= ds.higNumber; i++) {
- ds.number = i;
- if (checkToolNumber(ds, toolNumberRegedit)) {
- //theSession.listingWindow().writeLine("刀具号被占用,刀具名:" + ds.name + "刀具号:" + ds.number);//
- } else {
- ds.lenght_number = i;
- ds.dia_number = i;
- //theSession.listingWindow().writeLine("新刀具号,刀具名:" + ds.name + "刀具号:" + ds.number);
- break;
- }
- }
- }
- AddToolNumberRegedit(ds,toolNumberRegedit); //向注册列表添加数据
- }
- // theSession.listingWindow().writeLine(ncg.name()+"与列表的刀具"+ ds.name+"相等");
- OperationBuilder cb = workPart.camsetup().camoperationCollection().createBuilder(op);
- //cb.toolChangeSetting().setTextValue(); //设置刀具名称
- cb.toolChangeSetting().number().setValue(ds.number);//替换刀号
- // cb.toolChangeSetting().zoffset().setValue(ds.lenght_number);//这是Z轴偏置\
- // cb.toolChangeSetting().holderNumber().setValue(ds.lenght_number); //未知参数
- cb.toolChangeSetting().adjustRegister().setValue(ds.lenght_number); //替换刀长补正
- cb.commit();
- }
- }
- }else{ //如果是一个内置的子程序组
- if(workPart.camsetup().isGroup(cam)){
- checkToolUpon(workPart,list,(NCGroup)cam,toolNumberRegedit);
- }
- }
- }
- }
- /**
- * 向刀具号注册表填充数据
- * @param op
- * @param regeditList
- * @return
- */
- public static DataStruct AddToolNumberRegedit(Operation op,ArrayList<DataStruct> regeditList){
- DataStruct ds = new DataStruct();
- try {
- //取得UG得 Session,标准步骤
- Session theSession = (Session) SessionFactory.get("Session");
- //取得工作部件
- Part workPart = theSession.parts().work();
- NCGroup ncg = (NCGroup) op.getParent(CAMSetup.View.MACHINE_TOOL);
- ds.name = ncg.name(); //刀具名称
- OperationBuilder cb = workPart.camsetup().camoperationCollection().createBuilder(op);
- ds.number=cb.toolChangeSetting().number().value();
- ds.lenght_number=cb.toolChangeSetting().adjustRegister().value();//刀长
- ds.dia_number = cb.toolChangeSetting().cutcomRegister().value(); //刀经
- regeditList.add(ds);
- return ds;
- } catch (NXException e) {
- throw new RuntimeException(e);
- } catch (RemoteException e) {
- throw new RuntimeException(e);
- }
- }
- /**
- *
- * @param ds
- * @param regeditList
- * @return
- */
- public static DataStruct AddToolNumberRegedit(DataStruct ds,ArrayList<DataStruct> regeditList){
- regeditList.add(ds);
- return ds;
- }
- /**
- * 检查刀具是否在占用表中
- * @param op
- * @param regeditList
- * @return
- */
- public static boolean checkToolNumber(Operation op,ArrayList<DataStruct> regeditList){
- try {
- //取得UG得 Session,标准步骤
- Session theSession = (Session) SessionFactory.get("Session");
- //取得工作部件
- Part workPart = theSession.parts().work();
- NCGroup ncg = (NCGroup) op.getParent(CAMSetup.View.MACHINE_TOOL);
- OperationBuilder cb = workPart.camsetup().camoperationCollection().createBuilder(op);
- String name = ncg.name();
- int number=cb.toolChangeSetting().number().value();
- int lenght_number=cb.toolChangeSetting().adjustRegister().value();//刀长
- int dia_number = cb.toolChangeSetting().cutcomRegister().value(); //刀经
- for(DataStruct dds:regeditList){
- if(number==dds.number){ //刀具号码一样
- if(name.equals(dds.name)){
- // return false; //刀号一样,名称一样,不视为占用,继续进行循环
- }else{
- return true;//刀号一样,名称不同,视为占用
- }
- }
- }
- return false;
- } catch (NXException e) {
- throw new RuntimeException(e);
- } catch (RemoteException e) {
- throw new RuntimeException(e);
- }
- }
- /**
- * 检查刀具是否在占用表中
- * @param ds
- * @param regeditList
- * @return
- */
- public static boolean checkToolNumber(DataStruct ds,ArrayList<DataStruct> regeditList){
- int number=ds.number;
- int lenght_number=ds.lenght_number;//刀长
- int dia_number = ds.dia_number; //刀经
- for(DataStruct dds:regeditList){
- if(number==dds.number){ //刀具号码一样
- if(ds.name.equals(dds.name)){
- // return false; //刀号一样,名称一样,不视为占用,继续进行循环
- }else{
- return true;//刀号一样,名称不同,视为占用
- }
- }
- }
- return false;
- }
- public static class DataStruct{
- /**
- * 刀具号码
- */
- public int number;//
- /**
- * 刀具名称
- */
- public String name;
- /**
- * 刀长补正号
- */
- public int lenght_number;
- /**
- * 刀经补正号
- */
- public int dia_number;
- /**
- * 当刀具号码已被占用时,是否可以对刀具进行重新排序
- * true= 可重新排序
- * false = 不可重新进行排序,相当于锁定刀号
- */
- public boolean reorder;//是否可重新排序
- /**
- * 重排序可用刀号低范围
- */
- public int lowNumber;
- /**
- * 重排序可用刀号高范围
- */
- public int higNumber;
- public DataStruct(){
- name="";
- number=0;
- lenght_number = 0;
- dia_number = 0;
- reorder = false; //默认不可以重新排序
- lowNumber = 0;
- higNumber = 0;
- }
- }
- }
复制代码 |
|