2014-09-21 16:28:52|?次阅读|上传:wustguangh【已有?条评论】发表评论
关键词:C/C++, CAA, CATIA|来源:唯设编程网
//验证用户输入
CATBoolean CAAPadCreateStCmd::ValidateInput(){
//1. 获取编辑框用户输入的偏移长度
CATDlgEditor* pEditor1 = _pDlgInput->GetEditorControl(2);
if(NULL == pEditor1)
return CATFalse;
CATDlgEditor* pEditor2 = _pDlgInput->GetEditorControl(3);
if(NULL == pEditor2)
return CATFalse;
//2. 将用户输入的字符串转换成浮点数
CATUnicodeString strOffset("");
strOffset = pEditor1->GetText();
strOffset.ConvertToNum(&_fOffset1);
strOffset = pEditor2->GetText();
strOffset.ConvertToNum(&_fOffset2);
//3. 验证草图
if(NULL_var == _spSketchObj)
return CATFalse;
return CATTrue;
}
//创建拉伸体
CATBoolean CAAPadCreateStCmd::CreatePad(void* data){
//1. 重置按钮响应代理
_pDlgOKAgent->InitializeAcquisition();
//2. 验证输入数据
if(!ValidateInput())
return CATFalse;
//3. 获取零件工厂
if(NULL_var == _spSketchObj)
return CATFalse;
CATIContainer_var spContainer = _spSketchObj->GetFeatContainer();
if(NULL_var == spContainer)
return CATFalse;
CATIPrtFactory_var spPrtFactory = spContainer;
if(NULL_var == spPrtFactory)
return CATFalse;
//4.获取草图方向
CATMathDirection mathDirect(0,0,1);
CATISketch_var spSketch = _spSketchObj;
if(NULL_var == spSketch)
return CATFalse;
CATISpecObject_var spSketchPlaneObj = spSketch->GetSupport();
if(NULL_var == spSketchPlaneObj)
return CATFalse;
CATPlane_var spSketchPlane = spSketchPlaneObj;
if(NULL_var == spSketchPlane)
return CATFalse;
double planePos[3] = {0};
CATMathPoint ptCenter;
CATMathVector coordVector;
spSketchPlane->GetNormal(ptCenter, coordVector);
mathDirect.SetCoord(coordVector.GetX(),
coordVector.GetY(),
coordVector.GetZ());
//5. 创建拉伸
CATIPad_var spPad = spPrtFactory->CreatePad(_spSketchObj,
_fOffset1,
_fOffset2,
mathDirect);
if(NULL_var == spPad)
return CATFalse;
CATISpecObject_var spPadObj = spPad;
if(NULL_var == spPadObj)
return CATFalse;
spPadObj->Update();
//6. 更新零件特征
CATIPrtContainer_var spPrtContainer = spContainer;
if(NULL_var == spPrtContainer)
return CATFalse;
CATISpecObject_var spPrtObj = spPrtContainer->GetPart();
spPrtObj->Update();
return CATTrue;
}