在塑胶模具设计行业拔模增量计算经常都需要用到,平常都是利用计算器工具或都外部的计算工具去算。曾经有一个模具设计的培训老师把拔模增量计算工具称为模具设计的神器,好吧,我也造个神器。-_-!
VS2019 NX1946
用的都是VS函数,理轮上NX大部份版本都可以用。
头文件
#include <cmath>
#include <uf.h>
#include <uf_ui.h>
#include<iomanip>
#include <sstream>
//自定义函数
char msg[256];
void SetUI_DefaultValue(); //设置UI默认值
double CalculateValue(double InputAngle); //计算增量
void SetUI_IncrementalValue(); //设置UI增量值
double doubleToDigits(double value);//double转换NXString
void DraftAngle::SetUI_DefaultValue() //设置UI默认值
{
try
{
expression01->SetValue(0.00);
expression02->SetValue(0.00);
expression03->SetValue(0.00);
expression04->SetValue(0.00);
expression05->SetValue(0.00);
expression06->SetValue(0.00);
expression07->SetValue(0.00);
expression08->SetValue(0.00);
expression09->SetValue(0.00);
expression10->SetValue(0.00);
expression11->SetValue(0.00);
expression12->SetValue(0.00);
expression13->SetValue(0.00);
expression14->SetValue(0.00);
expression15->SetValue(0.00);
expression16->SetValue(0.00);
expression17->SetValue(0.00);
expression161->SetValue(0.00);
expression20->SetValue(1.00);
}
catch (exception& ex)
{
//---- Enter your exception handling code here -----
DraftAngle::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
}
}
double DraftAngle::CalculateValue(double InputAngle) //计算增量
{
try
{
//角度转弧度: B = A / 180 * pi(3.141592653589793); 弧度转角度: A = B / pi(3.141592653589793) * 180.
double Dis = tan(InputAngle / 180 * 3.141592653589793);//计算增量
return double (Dis);//返回double值
}
catch (exception& ex)
{
//---- Enter your exception handling code here -----
DraftAngle::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
}
}
void DraftAngle::SetUI_IncrementalValue() //设置UI增量值
{
try
{
double H1 = expression20->Value();
if (H1 > 0)
{
expression01->SetValue(doubleToDigits(CalculateValue(0.3) * H1));
expression02->SetValue(doubleToDigits(CalculateValue(0.5) * H1));
expression03->SetValue(doubleToDigits(CalculateValue(0.6) * H1));
expression04->SetValue(doubleToDigits(CalculateValue(0.8) * H1));
expression05->SetValue(doubleToDigits(CalculateValue(1.00) * H1));
expression06->SetValue(doubleToDigits(CalculateValue(2.00) * H1));
expression07->SetValue(doubleToDigits(CalculateValue(3.00) * H1));
expression08->SetValue(doubleToDigits(CalculateValue(4.00) * H1));
expression09->SetValue(doubleToDigits(CalculateValue(5.00) * H1));
expression10->SetValue(doubleToDigits(CalculateValue(6.00) * H1));
expression11->SetValue(doubleToDigits(CalculateValue(7.00) * H1));
expression12->SetValue(doubleToDigits(CalculateValue(8.00) * H1));
expression13->SetValue(doubleToDigits(CalculateValue(9.00) * H1));
expression14->SetValue(doubleToDigits(CalculateValue(10.00) * H1));
if (expression15->Value() > 0)
{
expression16->SetValue(doubleToDigits(CalculateValue(expression15->Value()) * H1));
}
else
{
expression16->SetValue(0.00);
}
if (expression17->Value() > 0)
{
expression161->SetValue(doubleToDigits(CalculateValue(expression17->Value()) * H1));
}
else
{
expression161->SetValue(0.00);
}
}
else
{
uc1601("请输入正确高度", 1);
return;
}
}
catch (exception& ex)
{
//---- Enter your exception handling code here -----
DraftAngle::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
}
}
double DraftAngle::doubleToDigits(double value)//转换小数点位数
{
char TemValue[256];
sprintf(TemValue, "%.4f", value);
return double(atof(TemValue));
}