基于UG二次开发的DTS名义值测量

2021-02-24 01:09吴凯亮
汽车实用技术 2021年3期
关键词:二次开发名义整车

吴凯亮

基于UG二次开发的DTS名义值测量

吴凯亮

(上汽通用汽车有限公司,上海 201206)

文章主要介绍基于UG二次开发的DTS名义值测量,本系统基于西门子的先进CAD设计平台NX之上开发的系统。以NX11和Visual Studio 2010作为运行和开发平台的,C、C++为开发语言,使用Block UI Styler为界面设计工具,NXOpen则提供了开发所需的应用程序包(API)。系统可以通过获取整车FVML(Finish Vehicle Measurement Location)文件包含的信息,通过用户选择文档中对应的零件特征,实现自动测量数模名义值及对应截面,并与FVML定义的数值进行对比。

汽车制造;DTS;NXOpen

1 引言

汽车制造生产的发展带来了人民生活水平的提高,但随着整车制造工艺能力的提升,用户对于汽车外观的视觉感官质量的要求也不断提高。整车开发过程中,车身零部件之间的间隙、面差的设计标准,以及由间隙、面差衍生的外观尺寸匹配控制要素,如平行度、对称度、对齐度、R角控制以及感知质量指数等要求会集成在DTS(Dimensional Technical Specifications)文件中。外观DTS直接面对用户静态评价,是汽车外观造型的重要组成部分,同时也是汽车工艺水平的最终体现。

整车项目开发过程中为了定量地分析DTS在数模及整车中的状态,会将DTS相关要求细化到FVML文档中。项目前期虚拟评估过程中,需要检查数模间的尺寸状态是否与DTS文件定义要求一致,确保数模释放状态符合要求。

基于NXOpen的DTS名义值测量工具是以NX11和Visual Studio 2010作为运行和开发平台的,C、C++为开发语言,使用Block UI Styler为界面设计工具,NXOpen则提供了开发所需的应用程序包(API)[1]。系统可以通过获取整车FVML(Finish Vehicle Measurement Location)文件包含的信息,通过用户选择文档中对应的零件特征,实现自动测量数模名义值及对应截面,并与FVML定义的数值进行对比。

2 DTS名义值测量工具设计流程与方法

2.1 DTS名义值测量工具的需求分析

DTS名义值检查过程中,需要按照FVML文件中定义的数模坐标制作截面,测量截面间的设计间隙及面差。不同零件直接的造型不同,导致测量的截面间隙及面差有不同的结果。DTS名义值测量工具需要解决自动读取制作截面的坐标信息,生成截面,然后自动测量出相应的数值及截面,如图1所示。

图1 DTS测量需求示意图

2.2 DTS名义值测量工具概要设计

通过对开发需求相关分析,所开发系统的需求已经基本明确。工具开发工程需要设置读取FVML文档接口;获取FVML文档中对应的From Panel和To Panel信息;NX调取截面坐标,制作截面;工具根据截面特征,自动调用对应的测量算法,完成间隙和面差计算;最后完成测量结果标注及截面输出,相应步骤如下图2所示。

图2 工具开发流程图

2.3 DTS名义值测量工具的代码设计

2.3.1读取相关模板信息

为了读取FVML文件中的相关信息到测量工具的用户界面中,需要分别调用以下函数完成相关操作:

通过getExcelSheetInformation()方法获取excel路径下sheet的相关信息,集成excel,读取Excel Sheet信息

rowTableValue.rowNumber = i;

rowTableValue.panelLabel = strPanel;

rowTableValue.fromDescription = strFrom;

rowTableValue.toDescription = strTo;

rowTableValue.dtsNom = strDTSNom;

rowTableValue.specType = strSpecType;

rowTableValue.postionStr = strPostion;

rowInformation.push_back(rowTableValue);/

添加信息到自定义结构_fvmlCheckTable_info

typedef struct

{ int rowNumber;

string panelLabel;

string fromDescription;

string toDescription;

string dtsNom;

string specType;

string postionStr;

vector fromPanelFaces;

vector toPanelFaces;

vector guideCurves;

tag_t planeTag;

tag_t pmiTag;

string measureResult;

}FVMLCheck_info_t,*FVMLCheck_info_p_t;

_fvmlCheckTable_info.insert(pair>(sheetNameStr.GetText(), rowInformation));

插入信息到UI列表

for(iter=fromtoMap.begin();iter!=fromtoMap.end();iter ++)

{//fill the sheet information to the table Node* newGroup Node=tree_controlPanelInformation-> Create Node("");

tree_controlPanelInformation->InsertNode (newGroup Node, newSheetNode,NULL,Tree::NodeInsertOptionLast);

newGroupNode->SetColumnDisplayText((panelColumn)fromDes,iter->first.c_str());

newGroupNode->SetColumnDisplayText((panelColumn)toDes,iter->second.c_str());}

2.3.2选择参考对象,自动推断类型,通过NX标准控件,选择面和导引线

if(face_select1->GetSelectedObjects().empty() ||face_select2->GetSelectedObjects().empty() )

{

CheckDTS::theUI->NXMessageBox()->Show("Block Styler", NXOpen:: NXMessageBox:: DialogTypeError, "Please make sure you selected the from and to panel faces!");

return 0;}

NXString calTypeStr = getCalculationType (face_select1- >GetSelectedObjects(),face_select2->GetSelectedObjects());

691 输尿管膀胱连接部狭窄合并结石的处理 陈耀武,周 青,孟 军,曾 志,杨 波,王 原,舒 畅,朱云海

vector allNodes = getAllTreeNodes (tree_control Cal);

for (int i = 0; i < allNodes.size();i++)

{

allNodes.at(i)->SetColumnDisplayText((calColumn)AnalysisMethod,calTypeStr);

}

2.3.3计算分析阶段

创建截交平面–根据输入的坐标位置,生成坐标平面

createPositonDatumPlane(string inputStr,DatumPlane* & positionPlane)

进行截面交点计算 -通过生成的平面,和选择的对象计算截交线

createSectionPoint (NXOpen:: TaggedObject *curve, NX Open::DatumPlane*datumPlane,Features::SectionCurve* &sec -tionPointFeature, vector< NXOpen:: TaggedObject*> &Section Points)

创建最小距离算法1 – 点到面的最小距离

createDistancePointToFace(NXOpen::Point * point, Face * face, Measure*&Md, tag_t &p1Tag, tag_t &p2Tag, NXOpen:: Line*&measureLine)

创建最小距离算法2-两个对象集之间的最小距离

createDistancePointBetweenSets (NXOpen:: Point * point, Features::Feature * FeatureSets2,Measure * &Md,tag_t &p1Tag, tag_t &p2Tag,NXOpen::Line *&measureLine)

2.3.4后处理,保存数据到Excel,并清理过程数据

SaveInfoToExcel(vector seletedNodes)

创建PMI

createPMI(Node*selectNode,NXOpen::CartesianCoordinateSystem *&cartesianCoordinateSystem)

创建图片

CreateImage(Node* selectNode,int width,int height,char* imageNameStr)

这期间需要进行隐藏对象操作

showSectionCurvesOnly(selectNode,modelingView1,allNeedShowObjects);

使用创建图片功能进行图片创建

UF_DISP_create_framed_image(imagePath,UF_DISP_JPEG,UF_DISP_ORIGINAL,leftConer,width,height);

计算结果保存

保存数据

excel.SetCellText(atoi(rowStr.GetText()),MEASUREVALUE_COL,measureValueStr.GetText());

插入图片

excel.InsertPicture(positionX,positionY,imagePath.GetText(),excelImageWidth,excelImageHeight);

positionX = positionX + excelImageWidth + 100;

删除缓存图片

//delete the temporary files

deleteImageFile((char*)imagePath.GetText());

3 结论

本文是以基于NXOpen的DTS名义值检查工具的设计实现为流程顺序,详细介绍了系统各功能的实现,从当前社会现状出发,完成了从需求分析到概要设计、详细设计、程序代码编写和运动分析校验的设计流程。同时又详尽地阐述了利用NXOpen API进行二次开发的实现过程。系统能够稳定地运行,并严格遵循了操作简单,界面友好的设计初衷,实现了参数化建模,系统各处都有容错机制,工具用户界面如下图3所示。

图3 用户操作界面

[1] 丁柱,刘其洪,黄建行.基于UG二次开发的鞋楦参数化设计[J].科学技术与工程,2011,11(14):3214-3218.

Development of DTS nominal measurement based on UG customization

Wu Kailiang

( SAIC-GM, Shanghai 201206 )

This paper introduces the development of DTS nonimal measurement based on UG customization.This system is using NX11,Visual Studio 2010 as operation and development platform, NX 11 provide Block UI Styler as interface design tool and API development package. DTS measurement tool will read FVML information. When operators select part feature defined in FVML, Tool will measure math data nominal and output measure result.

Automobile manufacturing;DTS;NXOpen

10.16638/j.cnki.1671-7988.2021.03.005

U461.99

A

1671-7988(2021)03-18-03

U461.99

A

1671-7988(2021)03-18-03

吴凯亮(1989-),男,工程师,就职于上汽通用汽车有限公司。

猜你喜欢
二次开发名义整车
基于滑门MPV的整车宽度优化
基于六自由度解耦分析的整车悬置设计
人机工程学在整车设计生产过程中的应用
AutoCAD 与PDMS 二次开发在三维复杂形体设计建模上的应用
基于启停控制系统的整车安全性策略
例谈对高中数学教材中习题的二次开发
浅谈CAD软件二次开发的方法及工具
以二胎的名义,享受生活
以法律的名义,捍卫英烈荣光
例谈课本习题的“二次开发”