我正在学习NX二次开发,用的是Visual Studio 2019,ug版本是12.0,开发平台是c++,uf函数为主nxopen函数为辅。需要你辅助我开发,重点注意开发模版是c++,优先使用uf函数,要求你先搞清楚你提供给我的代码真实有效性,语句与标点符号的正确位置,避免出现ug12.0没有提供的接口成员出现!确保所有方法调用都符合 NX12 的 API 签名,深度思考下再回答,每次回答前先回顾下前面的所有对话避免问题重复出现,每行代码都用中文注解具体意思与作用。int daoqiaotool::apply_cb()
{
int errorCode = 0;
try
{
// 获取NX会话和工作部件
NXOpen::Session* theSession = NXOpen::Session::GetSession();
NXOpen::Part* workPart = theSession->Parts()->Work();
NXOpen::UI* theUI = NXOpen::UI::GetUI();
// ===== 1. 获取用户界面输入参数 =====
// 获取出料边曲线
std::vector<NXOpen::Curve*> dischargeCurves;
if (chuliao_edge) {
std::unique_ptr<NXOpen::BlockStyler::PropertyList> props(chuliao_edge->GetProperties());
std::vector<NXOpen::TaggedObject*> selObjs = props->GetTaggedObjectVector("SelectedObjects");
for (NXOpen::TaggedObject* obj : selObjs) {
if (NXOpen::Curve* curve = dynamic_cast<NXOpen::Curve*>(obj)) {
dischargeCurves.push_back(curve); // 将选中的曲线添加到出料边曲线列表
}
}
}
// ====== 1. 获取选中的边对象 ======
std::vector<NXOpen::Edge*> selectedEdges;
if (bianjie_edge)
{
// 直接获取选中的对象
std::vector<NXOpen::TaggedObject*> selObjs = bianjie_edge->GetSelectedObjects();
// 遍历所有选中对象,筛选出边类型
for (NXOpen::TaggedObject* obj : selObjs)
{
if (NXOpen::Edge* edge = dynamic_cast<NXOpen::Edge*>(obj))
{
selectedEdges.push_back(edge);
}
}
}
// 获取出料沉桥值
double materialThickness = 0.0;
if (expression_clcq) {
std::unique_ptr<NXOpen::BlockStyler::PropertyList> props(expression_clcq->GetProperties());
materialThickness = props->GetDouble("Value"); // 从表达式控件获取数值
}
// 获取倒桥角度值
double currentAngle = 0.0;
if (expression_dqjiaodu) {
std::unique_ptr<NXOpen::BlockStyler::PropertyList> props(expression_dqjiaodu->GetProperties());
currentAngle = props->GetDouble("Value"); // 从表达式控件获取数值
}
// 获取倒斜角深度值
double daoxieValue = 0.0;
if (expression_daoxie) {
std::unique_ptr<NXOpen::BlockStyler::PropertyList> props(expression_clcq->GetProperties());
materialThickness = props->GetDouble("Value"); // 从表达式控件获取数值
}
// 获取矢量方向(默认Z轴方向)
NXOpen::Vector3d directionVector(0.0, 0.0, 1.0);
if (vector0) {
std::unique_ptr<NXOpen::BlockStyler::PropertyList> props(vector0->GetProperties());
directionVector = props->GetVector("Vector"); // 获取用户指定的矢量方向
}
//获取ui枚举索引值
int iType = 0;
iType = this->enum0->GetProperties()->GetEnum("Value");
if (iType == 0)
{
try {
// 设置撤销标记
NXOpen::Session::UndoMarkId markId = theSession->SetUndoMark(
NXOpen::Session::MarkVisibilityVisible, "倒桥工具操作");
// ===== 1. 验证输入参数 =====
if (dischargeCurves.empty()) {
throw std::runtime_error("请选择出料边曲线");
}
if (selectedEdges.empty()) {
throw std::runtime_error("请选择边界边");
}
// ===== 2. 创建主拉伸构建器 =====
NXOpen::Features::ExtrudeBuilder* extrudeBuilder =
workPart->Features()->CreateExtrudeBuilder(nullptr);
// 创建截面对象(使用与参考代码相同的参数)
NXOpen::Section* section = workPart->Sections()->CreateSection(
0.001, 0.001, 0.05); // 距离公差0.001mm,角度公差0.05度
extrudeBuilder->SetSection(section);
// ===== 3. 添加曲线到截面(按照参考代码模式)=====
// 选择第一条出料边曲线作为拉伸截面
NXOpen::Curve* curveForExtrude = dischargeCurves[0];
// 创建曲线选择规则
std::vector<NXOpen::Curve*> sectionCurves;
sectionCurves.push_back(curveForExtrude);
NXOpen::SelectionIntentRule* curveRule =
workPart->ScRuleFactory()->CreateRuleCurveDumb(sectionCurves);
// 获取曲线中点作为帮助点(使用UF函数计算)
NXOpen::Point3d helpPoint(0.0, 0.0, 0.0);
{
tag_t curveTag = curveForExtrude->Tag();
UF_EVAL_p_t evaluator = NULL;
double limits[2];
if (UF_EVAL_initialize(curveTag, &evaluator) == 0) {
if (UF_EVAL_ask_limits(evaluator, limits) == 0) {
// 确保参数范围正确
if (limits[0] > limits[1]) std::swap(limits[0], limits[1]);
// 计算中点参数
double midParam = (limits[0] + limits[1]) / 2.0;
double midPoint[3];
// 计算中点坐标
if (UF_EVAL_evaluate(evaluator, 0, midParam, midPoint, NULL) == 0) {
helpPoint = NXOpen::Point3d(midPoint[0], midPoint[1], midPoint[2]);
}
}
// 释放评估器资源
UF_EVAL_free(evaluator);
}
}
// 添加曲线到截面(使用参考代码参数)
std::vector<NXOpen::SelectionIntentRule*> rules;
rules.push_back(curveRule);
section->AddToSection(
rules, // 曲线规则集合
curveForExtrude, // 主要曲线对象
nullptr, // 不指定曲线起点
nullptr, // 不指定曲线终点
helpPoint, // 帮助点(中点)
NXOpen::Section::ModeCreate // 创建模式
);
// 设置拉伸方向
NXOpen::Point3d origin(0.0, 0.0, 0.0);
NXOpen::Direction* extrudeDirection =
workPart->Directions()->CreateDirection(
origin,
directionVector,
NXOpen::SmartObject::UpdateOptionWithinModeling
);
extrudeBuilder->SetDirection(extrudeDirection);
// ===== 5. 设置拉伸范围 =====
NXOpen::GeometricUtilities::Limits* limits = extrudeBuilder->Limits();
limits->StartExtend()->Value()->SetRightHandSide(std::to_string(materialThickness).c_str());
limits->EndExtend()->Value()->SetRightHandSide("100"); // 固定结束位置100mm
// ===== 6. 设置拔模 =====
extrudeBuilder->Draft()->SetDraftOption(
NXOpen::GeometricUtilities::SimpleDraft::SimpleDraftTypeSimpleFromStart);
extrudeBuilder->Draft()->FrontDraftAngle()->SetRightHandSide(std::to_string(currentAngle).c_str());
extrudeBuilder->Draft()->BackDraftAngle()->SetRightHandSide("0");
// ===== 7. 动态拔模方向判断(使用边界边投影)=====
bool draftDirectionPositive = true;
std::string projectionResultMsg = "投影验证: "; // 存储结果消息
try {
// 设置撤销标记
NXOpen::Session::UndoMarkId tempMark = theSession->SetUndoMark(
NXOpen::Session::MarkVisibilityInvisible, "临时投影验证");
// 创建临时拉伸体进行投影验证
NXOpen::Features::ExtrudeBuilder* tempBuilder =
workPart->Features()->CreateExtrudeBuilder(nullptr);
// 创建临时截面(独立资源)
NXOpen::Section* tempSection = workPart->Sections()->CreateSection(
0.001, 0.001, 0.05); // 距离公差0.001mm,角度公差0.05度
tempBuilder->SetSection(tempSection);
// 添加曲线到临时截面(与主截面相同)
std::vector<NXOpen::Curve*> tempSectionCurves;
tempSectionCurves.push_back(curveForExtrude);
NXOpen::SelectionIntentRule* tempCurveRule =
workPart->ScRuleFactory()->CreateRuleCurveDumb(tempSectionCurves);
std::vector<NXOpen::SelectionIntentRule*> tempRules;
tempRules.push_back(tempCurveRule);
// 添加曲线到临时截面
tempSection->AddToSection(
tempRules,
curveForExtrude,
nullptr,
nullptr,
helpPoint, // 使用之前计算的中点
NXOpen::Section::ModeCreate
);
// 设置临时拉伸方向(与主拉伸相同)
tempBuilder->SetDirection(extrudeDirection);
// ===== 5. 设置拉伸范围 =====
NXOpen::GeometricUtilities::Limits* limits = tempBuilder->Limits();
limits->StartExtend()->Value()->SetRightHandSide(std::to_string(materialThickness).c_str());
limits->EndExtend()->Value()->SetRightHandSide("120"); // 固定结束位置100mm
//// 设置临时偏置(默认正偏置100)
//NXOpen::GeometricUtilities::FeatureOffset* tempOffset = tempBuilder->Offset();
//tempOffset->SetOption(NXOpen::GeometricUtilities::TypeNonsymmetricOffset);
//tempOffset->StartOffset()->SetRightHandSide("-100");
//tempOffset->EndOffset()->SetRightHandSide("100");
// ===== 6. 设置拔模 =====
tempBuilder->Draft()->SetDraftOption(
NXOpen::GeometricUtilities::SimpleDraft::SimpleDraftTypeSimpleFromStart);
tempBuilder->Draft()->FrontDraftAngle()->SetRightHandSide(std::to_string(currentAngle).c_str());
tempBuilder->Draft()->BackDraftAngle()->SetRightHandSide("0");
// 设置布尔操作类型为创建(避免影响模型)
tempBuilder->BooleanOperation()->SetType(
NXOpen::GeometricUtilities::BooleanOperation::BooleanTypeCreate);
// 提交临时拉伸特征
NXOpen::NXObject* tempBodyObj = tempBuilder->Commit();
if (!tempBodyObj) {
throw std::runtime_error("临时拉伸体创建失败");
}
// 获取临时实体
std::vector<NXOpen::Body*> tempBodies;
if (NXOpen::Features::Extrude* extrudeFeature =
dynamic_cast<NXOpen::Features::Extrude*>(tempBodyObj)) {
tempBodies = extrudeFeature->GetBodies();
}
if (!tempBuilder) {
throw std::runtime_error("无法获取临时拉伸体");
}
// ====== 关键修复:正确的曲线选择和投影方向 ======
// 1. 获取边界边TAG列表(使用已选中的边)
uf_list_p_t curveList = NULL;
UF_MODL_create_list(&curveList); // 创建UF列表
// 遍历选中的边界边
// 声明直线标签
tag_t lineTag = NULL_TAG;
for (NXOpen::Edge* edge : selectedEdges) {
tag_t edgeTag = edge->Tag();
int n_points = 0;
double points[2][3] = { 0.0 };
UF_MODL_ask_edge_verts(edgeTag, points[0], points[1], &n_points);//获得边缘端点
// 创建直线结构体并填充端点坐标
UF_CURVE_line_t lineCoords;
lineCoords.start_point[0] = points[0][0]; // 起点X坐标
lineCoords.start_point[1] = points[0][1]; // 起点Y坐标
lineCoords.start_point[2] = points[0][2]; // 起点Z坐标
lineCoords.end_point[0] = points[1][0]; // 终点X坐标
lineCoords.end_point[1] = points[1][1]; // 终点Y坐标
lineCoords.end_point[2] = points[1][2]; // 终点Z坐标
// 创建直线特征
int status = UF_CURVE_create_line(&lineCoords, &lineTag);
if (status != 0) {
// 错误处理:获取NX错误信息
char errMsg[133];
UF_get_fail_message(status, errMsg);
// 实际开发中应使用日志系统或NX消息框
}
// 设置直线到254图层
if (lineTag != NULL_TAG) {
UF_OBJ_set_layer(lineTag, 254); // 254为NX标准制图层
UF_MODL_put_list_item(curveList, lineTag); // 将边TAG加入列表
}
}
// 2. 获取临时体的面TAG列表
uf_list_p_t faceList = NULL;
tag_t tempBodyTag = tempBodies[0]->Tag();
UF_MODL_ask_body_faces(tempBodyTag, &faceList); // 获取体的所有面
// 3. 归一化投影方向(使用用户指定的方向)
double dirMagnitude = sqrt(directionVector.X * directionVector.X +
directionVector.Y * directionVector.Y +
directionVector.Z * directionVector.Z);
if (dirMagnitude < 1e-6) {
throw std::runtime_error("方向矢量长度为零");
}
double projDirection[3] = {
directionVector.X / dirMagnitude,
directionVector.Y / dirMagnitude,
directionVector.Z / dirMagnitude
};
// 4. 尝试投影
tag_t projCurve = NULL_TAG;
int projStatus = UF_MODL_create_proj_curves(
curveList, // 要投影的曲线/边列表
faceList, // 投影目标面列表
0, // 投影方法: 0=沿矢量
projDirection, // 投影方向
&projCurve // 输出的投影曲线
);
// 5. 判断投影结果
if (projStatus == 0 && projCurve != NULL_TAG) {
// 正方向投影成功
draftDirectionPositive = true;
projectionResultMsg += "成功 - 使用正拔模方向";
UF_OBJ_delete_object(projCurve); // 删除临时投影曲线
}
else {
// 正方向投影失败,直接使用反方向(不尝试反向投影)
draftDirectionPositive = false;
projectionResultMsg += "失败 - 自动使用反拔模方向";
// 添加详细错误信息
char errorBuf[256];
if (projStatus != 0) {
snprintf(errorBuf, sizeof(errorBuf), " (错误代码: %d)", projStatus);
projectionResultMsg += errorBuf;
}
else if (projCurve == NULL_TAG) {
projectionResultMsg += " (投影曲线为空)";
}
}
UF_OBJ_delete_object(lineTag); // 删除临时曲线
// 6. 清理UF资源
UF_MODL_delete_list(&faceList);
UF_MODL_delete_list(&curveList);
//清理临时资源
// 删除临时拉伸体
std::vector<NXOpen::TaggedObject*> toDelete;
toDelete.push_back(tempBodyObj);
theSession->UpdateManager()->AddObjectsToDeleteList(toDelete);
// 销毁临时构建器和截面
tempBuilder->Destroy();
tempSection->Destroy();
// 删除撤销标记(不保留临时操作)
theSession->DeleteUndoMark(tempMark, NULL);
}
catch (std::exception& ex) {
draftDirectionPositive = true;
projectionResultMsg += "异常: " + std::string(ex.what()) + " - 使用默认正方向";
// 显示警告但不中断主流程
theUI->NXMessageBox()->Show("警告", NXOpen::NXMessageBox::DialogTypeWarning,
projectionResultMsg.c_str());
}
catch (...) {
draftDirectionPositive = true;
projectionResultMsg += "未知异常 - 使用默认正方向";
theUI->NXMessageBox()->Show("警告", NXOpen::NXMessageBox::DialogTypeWarning,
projectionResultMsg.c_str());
}
//// 在NX列表窗口显示投影结果
//theSession->ListingWindow()->Open();
//theSession->ListingWindow()->WriteLine(projectionResultMsg.c_str());
// 根据验证结果设置拔模方向
if (!draftDirectionPositive) {
extrudeBuilder->Draft()->FrontDraftAngle()->SetRightHandSide(
("-" + std::to_string(currentAngle)).c_str());
projectionResultMsg += "\n拔模角度设置为: -" + std::to_string(currentAngle) + "°";
}
else {
extrudeBuilder->Draft()->FrontDraftAngle()->SetRightHandSide(
std::to_string(currentAngle).c_str());
projectionResultMsg += "\n拔模角度设置为: " + std::to_string(currentAngle) + "°";
}
// ===== 8. 设置布尔操作(新建体) =====
extrudeBuilder->BooleanOperation()->SetType(
NXOpen::GeometricUtilities::BooleanOperation::BooleanTypeCreate);
// ===== 9. 执行拉伸操作 =====
NXOpen::NXObject* feature = extrudeBuilder->Commit();
if (!feature) {
throw std::runtime_error("拉伸操作失败");
}
// ====== 10. 创建倒斜角特征 ======
NXOpen::Features::Feature* chamferFeature = nullptr;
try
{
// 创建撤销标记
NXOpen::Session::UndoMarkId markId = theSession->SetUndoMark(
NXOpen::Session::MarkVisibilityVisible, "开始倒斜角");
// 创建倒斜角构建器
Features::ChamferBuilder* chamferBuilder = workPart->Features()->CreateChamferBuilder(nullptr);
// 设置倒斜角参数
chamferBuilder->SetOption(Features::ChamferBuilder::ChamferOptionTwoOffsets);
chamferBuilder->SetMethod(Features::ChamferBuilder::OffsetMethodEdgesAlongFaces);
chamferBuilder->SetFirstOffset("0.5");
chamferBuilder->SetSecondOffset("0.5");
chamferBuilder->SetAngle("45");
chamferBuilder->SetTolerance(0.001);
// 创建选择收集器
NXOpen::ScCollector* edgeCollector = workPart->ScCollectors()->CreateCollector();
// 获取第一条边界边作为种子边
NXOpen::Edge* seedEdge = selectedEdges[0];
// 创建相切边规则(自动选择所有相切边)
NXOpen::EdgeTangentRule* tangentRule = workPart->ScRuleFactory()->CreateRuleEdgeTangent(
seedEdge, // 种子边
nullptr, // 终止边(无)
true, // 包含种子边
0.5, // 公差0.5mm
true, // 自动链选择
false // 不反向
);
// 创建规则容器
std::vector<NXOpen::SelectionIntentRule*> rules;
rules.push_back(tangentRule);
// 应用规则到收集器
edgeCollector->ReplaceRules(rules, false);
// 设置收集器到倒斜角构建器
chamferBuilder->SetSmartCollector(edgeCollector);
// 提交倒斜角特征
chamferFeature = chamferBuilder->CommitFeature();
// 清理资源
chamferBuilder->Destroy();
edgeCollector->Destroy();
// 设置撤销标记名称
theSession->SetUndoMarkName(markId, "倒斜角特征");
}
catch (std::exception& ex)
{
theUI->NXMessageBox()->Show("倒斜角错误",
NXOpen::NXMessageBox::DialogTypeError,
ex.what());
}
// ====== 11. 获取倒角特征生成的面 ======
if (chamferFeature)
{
// 获取倒角特征生成的所有面
std::vector<NXOpen::Face*> chamferFaces = chamferFeature->GetFaces();
if (!chamferFaces.empty())
{
// 取第一个倒角面作为原始面
NXOpen::Face* origin_face = chamferFaces[0];
// ====== 12. 创建替换面特征 ======
try
{
// 设置新的撤销标记
NXOpen::Session::UndoMarkId replaceMarkId = theSession->SetUndoMark(
NXOpen::Session::MarkVisibilityVisible, "开始替换面操作");
// 创建替换面构建器
NXOpen::Features::ReplaceFaceBuilder* replaceFaceBuilder =
workPart->Features()->CreateReplaceFaceBuilder(nullptr);
// 设置偏移距离为0(直接替换)
replaceFaceBuilder->OffsetDistance()->SetFormula("0");
// 重置替换面方法为默认
replaceFaceBuilder->ResetReplaceFaceMethod();
// 重置自由边投影选项
replaceFaceBuilder->ResetFreeEdgeProjectionOption();
// === 创建原始面选择规则 ===
NXOpen::SelectionIntentRuleOptions* ruleOptions1 =
workPart->ScRuleFactory()->CreateRuleOptions();
// 不从非活动对象选择
ruleOptions1->SetSelectedFromInactive(false);
// 创建原始面容器
std::vector<NXOpen::Face*> originalFaces;
originalFaces.push_back(origin_face);
// 创建原始面选择规则
NXOpen::FaceDumbRule* faceDumbRule1 =
workPart->ScRuleFactory()->CreateRuleFaceDumb(originalFaces, ruleOptions1);
// 清理规则选项资源
delete ruleOptions1;
// 设置规则到原始面收集器
std::vector<NXOpen::SelectionIntentRule*> replaceRules;
replaceRules.push_back(faceDumbRule1);
replaceFaceBuilder->ReplaceFaces()->ReplaceRules(replaceRules, false);
// === 创建替换面选择规则 ===
// 获取拉伸特征生成的面(作为替换目标面)
NXOpen::Features::Extrude* extrudeFeature =
dynamic_cast<NXOpen::Features::Extrude*>(feature);
if (!extrudeFeature) {
throw std::runtime_error("无法获取拉伸特征");
}
// 获取拉伸体
std::vector<NXOpen::Body*> extrudeBodies = extrudeFeature->GetBodies();
if (extrudeBodies.empty()) {
throw std::runtime_error("拉伸特征未生成体");
}
// 获取拉伸体的所有面
std::vector<NXOpen::Face*> extrudeFaces = extrudeBodies[0]->GetFaces();
if (extrudeFaces.empty()) {
throw std::runtime_error("拉伸体没有面");
}
// 取第一个拉伸面作为替换面
NXOpen::Face* replacementFace = extrudeFaces[0];
// 创建替换面容器
std::vector<NXOpen::Face*> replaceFaces;
replaceFaces.push_back(replacementFace);
// 创建替换面规则选项
NXOpen::SelectionIntentRuleOptions* ruleOptions2 =
workPart->ScRuleFactory()->CreateRuleOptions();
// 不从非活动对象选择
ruleOptions2->SetSelectedFromInactive(false);
// 创建替换面选择规则
NXOpen::FaceDumbRule* faceDumbRule2 =
workPart->ScRuleFactory()->CreateRuleFaceDumb(replaceFaces, ruleOptions2);
// 清理规则选项资源
delete ruleOptions2;
// 设置规则到替换面收集器
std::vector<NXOpen::SelectionIntentRule*> replacementRules;
replacementRules.push_back(faceDumbRule2);
replaceFaceBuilder->ReplacementFaces()->ReplaceRules(replacementRules, false);
// === 提交替换面特征 ===
NXOpen::Features::Feature* replaceFeature = replaceFaceBuilder->CommitFeature();
// 检查是否成功创建特征
if (!replaceFeature) {
throw std::runtime_error("替换面特征创建失败");
}
// 清理资源
replaceFaceBuilder->Destroy();
// 设置撤销标记名称
theSession->SetUndoMarkName(replaceMarkId, "替换面特征");
}
catch (std::exception& ex)
{
theUI->NXMessageBox()->Show("替换面错误",
NXOpen::NXMessageBox::DialogTypeError,
ex.what());
}
}
}
// ===== 13. 清理资源 =====
extrudeBuilder->Destroy();
section->Destroy();
// ===== 10. 清理资源 =====
extrudeBuilder->Destroy();
section->Destroy();
// 显示操作成功信息
// char finalMsg[512];
// sprintf(finalMsg, "操作成功完成!\n"
// "沉桥值: %.2fmm\n"
// "倒桥角度: %.2f°\n"
// "方向: %s\n"
// "%s",
// materialThickness,
// currentAngle,
// draftDirectionPositive ? "正向" : "反向",
// projectionResultMsg.c_str());
//
//theUI->NXMessageBox()->Show("倒桥工具", NXOpen::NXMessageBox::DialogTypeInformation, finalMsg);
}
catch (std::exception& ex) {
theUI->NXMessageBox()->Show("错误", NXOpen::NXMessageBox::DialogTypeError, ex.what());
}
}
else
{
}
//---- Enter your callback code here -----
}
catch(exception& ex)
{
//---- Enter your exception handling code here -----
errorCode = 1;
daoqiaotool::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
}
return errorCode;
}nx里能完整运行,但最后提示内部错误,以下是nx日志:“&MACRO MENU, 0, UG_LWIN_FILE_EXIT ListingWindowMenuBar !
&MACRO CURSOR_EVENT 1001 60,120,0,0 ! wheel, mb8/0+70, , nn
&MACRO CPOS -7.49732320867,35.43089504,-50
&MACRO CURSOR_EVENT 1001 60,120,0,0 ! wheel, mb8/0+70, , nn
&MACRO CPOS -15.7653998510345,30.8198522971429,-50
&MACRO CURSOR_EVENT 1001 60,120,0,0 ! wheel, mb8/0+70, , nn
&MACRO CPOS -22.9204661761577,26.8448154498523,-50
&MACRO CURSOR_EVENT 1001 60,120,0,0 ! wheel, mb8/0+70, , nn
&MACRO CPOS -25.4048642057143,25.4783965335961,-50
&MACRO CURSOR_EVENT 1001 60,120,0,0 ! wheel, mb8/0+70, , nn
&MACRO CPOS -26.9576129741872,26.5653206715272,-50
&MACRO CURSOR_EVENT 1001 60,120,0,0 ! wheel, mb8/0+70, , nn
&MACRO CPOS -29.0926425308374,25.9830398833498,-50
&MACRO CURSOR_EVENT 1001 6,0,406,0 ! motion, mb0/0+0, , nn
&MACRO CPOS -30.3057275062069,25.2551888981282,-50
&MACRO MENU, 0, UG_FILE_RUN_UFUN UG_GATEWAY_MAIN_MENUBAR <Ctrl U> ## !
&MACRO FILE_DIALOG_BEGIN 0, ! filebox with tools_data
&MACRO FILE_DIALOG_UPDATE 0 ! 可动态调用的库 (*.dll)
&MACRO FILE_DIALOG_END
&MACRO FILE_BOX -2,@@@D:\NXopen\BaiduSyncdisk\studio\daoqiaotool\x64\Debug\daoqiaotool.dll@@@D:\NXopen\BaiduSyncdisk\studio\daoqiaotool\x64\Debug\*.DLL@@@ 0 ! Execute User Function
Missing resource block.
Validation failed but CPP author license exists - D:\NXopen\BaiduSyncdisk\studio\daoqiaotool\x64\Debug\daoqiaotool.dll loaded
Skipping UFUNC_EXECUTE check
Missing resource block.
Validation failed but CPP author license exists - D:\NXopen\BaiduSyncdisk\studio\daoqiaotool\x64\Debug\daoqiaotool.dll loaded
Native license authentication passed for D:\NXopen\BaiduSyncdisk\studio\daoqiaotool\x64\Debug\daoqiaotool.dll
Successfully loaded dynamic module D:\NXopen\BaiduSyncdisk\studio\daoqiaotool\x64\Debug\daoqiaotool.dll
Block Styler: Could not find the file at daoqiaotool.dlx. The file will be searched in user directories
Block Styler: Found the file at D:\Program Files\Siemens\NX2212\MICHTOOLS\application\daoqiaotool.dlx
UNDO_UG: Recyclable status of mark 2445 set to False
&MACRO ASK_ITEM 1441792 (1 BOOL 0) = 1 ! 显示之前状态
&MACRO ASK_ITEM 1441792 (1 BOOL 0) = 0 ! 显示之前状态
&MACRO ASK_ITEM 2228224 (1 BOOL 0) = 1 ! 显示之前状态
&MACRO ASK_ITEM 2228224 (1 BOOL 0) = 0 ! 显示之前状态
&MACRO ASK_ITEM 4587520 (1 OPTT 0) = 10 0 ! -ZC-axis
&MACRO ASK_ITEM 4587520 (1 OPTT 0) = 10 1 ! -ZC-axis
&MACRO ASK_ITEM 4587520 (1 OPTT 0) = 10 1 ! -ZC-axis
&MACRO ASK_ITEM 4587520 (1 OPTT 0) = 10 0 ! -ZC-axis
&MACRO ASK_ITEM 4587520 (1 OPTT 0) = 10 0 ! -ZC-axis
&MACRO ASK_ITEM 4587520 (1 OPTT 0) = 10 0 ! -ZC-axis
&MACRO EVENT FOCUS_IN 0 0, 3145730, 0, 0, 0! 出料沉桥
&MACRO ASK_ITEM 3145730 (1 STRN 0) = "5" ! 出料沉桥
&MACRO DIALOG_BEGIN "桥位tool-MiCH-明" 0 ! DA2
&MACRO BEG_ITEM 327680 (1 RADI 0) = 0 ! 拔模
&MACRO BEG_ITEM 917504 (1 BOOL 0) = 0 ! Curve
&MACRO BEG_ITEM 1441792 (1 BOOL 0) = 0 ! 显示之前状态
&MACRO BEG_ITEM 1703936 (1 BOOL 0) = 0 ! Curve
&MACRO BEG_ITEM 2228224 (1 BOOL 0) = 0 ! 显示之前状态
&MACRO BEG_ITEM 3145730 (1 STRN 0) = "5" ! 出料沉桥
&MACRO BEG_ITEM 3801090 (1 OPTM 0) = 1 ! °
&MACRO BEG_ITEM 3801091 (1 STRN 0) = "20" ! 倒桥角度
&MACRO BEG_ITEM 4587520 (1 OPTT 0) = 10 0 ! -ZC-axis
&MACRO BEG_ITEM 5570560 (1 OPTM 0) = 10 ! -ZC-axis
&MACRO BEG_ITEM 5570562 (1 TOOL 0) = 5 ! -ZC-axis
&MACRO BEG_ITEM 6356994 (1 STRN 0) = "65" ! 倒斜深度
&MACRO BEG_ITEM 7274498 (1 BOOL 0) = 1 ! Preview
&MACRO ASK_ITEM 917504 (1 BOOL 0) = 0 ! Curve
&MACRO ASK_ITEM 917504 (1 BOOL 0) = 1 ! Curve
&MACRO CURSOR_EVENT 1001 60,-120,0,0 ! wheel, mb8/15+95, , nn, ES
&MACRO CPOS -31.7614294766502,-29.0910179984236,-50
&MACRO CURSOR_EVENT 1001 60,-120,0,0 ! wheel, mb8/15+95, , nn, ES
&MACRO CPOS -31.1791486884729,-29.0910179984236,-50
&MACRO CURSOR_EVENT 1001 60,-120,0,0 ! wheel, mb8/15+95, , nn, ES
&MACRO CPOS -30.8685989347783,-29.0910179984236,-50
&MACRO CURSOR_EVENT 1001 60,-120,0,0 ! wheel, mb8/15+95, , nn, ES
&MACRO CPOS -27.2662217919212,-24.3706617422659,-50
&MACRO EVENT FOCUS_OUT 0 0, 3145730, 0, 0, 0! 出料沉桥
&MACRO ASK_ITEM 3145730 (1 STRN 0) = "5" ! 出料沉桥
&MACRO FOCUS CHANGE IN 1
&MACRO WINDOW RESIZE 1.000000 16.729167 8.458333 -1.000000 -0.505604 1.000000 0.505604
&MACRO CURSOR_EVENT 1001 3,1,100,0 ! single_pt, mb1/0+0, , nn
&MACRO CPOS -26.6699662648276,-23.6750302939901,-50
!!!&MACRO EVENT FOCUS_IN 0 0, 3145730, 0, 0, 0! (Application CB Nested)
!!!&MACRO ASK_ITEM 3145730 (1 STRN 0) = "5" ! 出料沉桥
&MACRO CURSOR_EVENT 1001 106,0,201,0 ! motion_pb, mb0/0+0, , nn
&MACRO CPOS -31.2412586392118,-22.0850155550738,-50
&MACRO EVENT FOCUS_OUT 0 0, 3145730, 0, 0, 0! 出料沉桥
&MACRO ASK_ITEM 3145730 (1 STRN 0) = "5" ! 出料沉桥
&MACRO EVENT FOCUS_IN 0 0, 1703936, 0, 0, 0! Curve
&MACRO ASK_ITEM 1703936 (1 BOOL 0) = 0 ! Curve
&MACRO EVENT VALUE_CHANGED 0 0, 1703936, 0, 0, 0! Curve
&MACRO ASK_ITEM 1703936 (1 BOOL 0) = 1 ! Curve
&MACRO ASK_ITEM 917504 (1 BOOL 0) = 1 ! Curve
&MACRO ASK_ITEM 917504 (1 BOOL 0) = 0 ! Curve
&MACRO ASK_ITEM 1703936 (1 BOOL 0) = 1 ! Curve
&MACRO FOCUS CHANGE IN 1
&MACRO WINDOW RESIZE 1.000000 16.729167 8.458333 -1.000000 -0.505604 1.000000 0.505604
&MACRO CURSOR_EVENT 1001 3,1,100,0 ! single_pt, mb1/0+0, , nn
&MACRO CPOS -31.0425067968473,-16.3212121265024,-50
!!!&MACRO EVENT FOCUS_IN 0 0, 1703936, 0, 0, 0! (Application CB Nested)
!!!&MACRO ASK_ITEM 1703936 (1 BOOL 0) = 1 ! Curve
&MACRO OK 0 0 ! OK Callback
&MACRO ASK_ITEM 1703936 (1 BOOL 0) = 1 ! Curve
&MACRO ASK_ITEM 1703936 (1 BOOL 0) = 0 ! Curve
*** EXCEPTION: INTERNAL ERROR in line 7557 of D:\workdir\REF\2212.1700\src\jam\no\ind\jam.cxx at Sat Aug 16 23:51:03 2025 中国标准时间
+++ NULL tag for "this"
[ 1] 7FF8A623489D (libsyss)
[ 2] 7FF8A62350B7 (libsyss)
[ 3] 7FF8A623540C (libsyss)
[ 4] 7FF8A61BE376 (libsyss)
[ 5] 7FF89B23EC65 (libjam)
[ 6] 7FF89CBEE864 (libpart)
[ 7] 7FF864E00BF9 (libnxopencpp)
[ 8] 7FF8D2D653A2 daoqiaotool\daoqiaotool::apply_cb Line 829 +0x2312 (daoqiaotool)
[ 9] 7FF8D2D6547E daoqiaotool\daoqiaotool::ok_cb Line 920 +0x3e (daoqiaotool)
[10] 7FF8D2D6CC37 Callback\NXOpen::Callback0MemberFunction<daoqiaotool,int>::operator() Line 138 +0x27 (daoqiaotool)
[11] 7FF8683D75B0 (libnxopenuicpp)
[12] 7FF86893D85B (libnxblockstyler)
[13] 7FF88F8EBD02 (libuifw)
[14] 7FF88F8FE09E (libuifw)
[15] 7FF8A3BA2A05 (libugui)
[16] 7FF8A3BA5890 (libugui)
[17] 7FF8A3BA37BF (libugui)
[18] 7FF8A3CE02E9 (libugui)
[19] 7FF8A3CE0CB0 (libugui)
[20] 7FF88F8F6F7B (libuifw)
[21] 7FF8A3E49F09 (libugui)
[22] 7FF86894CCC4 (libnxblockstyler)
[23] 7FF8689B9186 (libnxblockstyler)
[24] 7FF8683D93EB (libnxopenuicpp)
[25] 7FF8D2D62ABC daoqiaotool\daoqiaotool::Show Line 171 +0x3c (daoqiaotool)
[26] 7FF8D2D6266E daoqiaotool\ufusr Line 112 +0xae (daoqiaotool)
[27] 7FF8A62411C0 (libsyss)
[28] 7FF8A62417B6 (libsyss)
[29] 7FF89CBACA69 (libpart)
[30] 7FF89CBAC046 (libpart)
[31] 7FF89CBABF78 (libpart)
[32] 7FF8A5EE515D (libuginitint)
[33] 7FF8A5EDD149 (libuginitint)
[34] 7FF8A3CBAD25 (libugui)
[35] 7FF8A3CBB75C (libugui)
[36] 7FF8A3CBDC79 (libugui)
[37] 7FF8A3CBCD3F (libugui)
[38] 7FF8A3CC91F3 (libugui)
[39] 7FF8A3B05787 (libugui)
[40] 027B113E6096 (windowsui)
[41] 027B113E7433 (windowsui)
[42] 027B113E59E4 (windowsui)
[43] 027B11471C17 (windowsui)
[44] 027B1147004F (windowsui)
[45] 7FF8E9A21382 (USER32)
[46] 7FF8E9A1E839 (USER32)
[47] 7FF8E9A1E72E (USER32)
[48] 7FF8EB511374 (ntdll)
[49] 7FF8E8BA1404 (win32u)
[50] 7FF8E9A02107 (USER32)
[51] 7FF86D5C38CF (quick_cam_nx10)
[52] 7FF8E9A88CD7 (USER32)
[53] 7FF8E9A1E839 (USER32)
[54] 7FF8E9A1E72E (USER32)
[55] 7FF8EB511374 (ntdll)
[56] 7FF8E8BA1404 (win32u)
[57] 7FF8E9A02107 (USER32)
[58] 7FF8691CDB53 (libmsstartup_x64)
[59] 7FF8E9A21382 (USER32)
[60] 7FF8E9A1E839 (USER32)
[61] 7FF8E9A1E72E (USER32)
[62] 7FF8EB511374 (ntdll)
[63] 7FF8E8BA1104 (win32u)
[64] 7FF8E9A2210E (USER32)
[65] 7FF8AB38F237 (mfc140u)
[66] 027B1146C8D0 (windowsui)
[67] 027B1146D100 (windowsui)
[68] 027B11470353 (windowsui)
[69] 7FF8A5A1409D (libugutils)
[70] 7FF8A3F36C99 (libugui)
[71] 7FF8A3E4CFD1 (libugui)
[72] 7FF8A3E4CE0C (libugui)
[73] 7FF8A5EE6E4A (libuginitint)
[74] 000180006C3F (ug)
[75] 000180003107 (ug)
[76] 7FF63D5E125E (ugraf)
[77] 7FF8EA347374 (KERNEL32)
[78] 7FF8EB4BCC91 (ntdll)
>>>> INTERNAL ERROR caught in file "o:\nx2212\ip1700\drv\part\no\ind\ja_builder_jam.cxx" at line number 139
&MACRO MESSAGE_BOX -2, Internal error
!!!&MACRO ASK_ITEM 3145730 (1 STRN 0) = "5" ! 出料沉桥
!!!&MACRO ASK_ITEM 3145730 (1 STRN 0) = "5" ! 出料沉桥
!!!&MACRO ASK_ITEM 3801091 (1 STRN 0) = "20" ! 倒桥角度
!!!&MACRO ASK_ITEM 3801091 (1 STRN 0) = "20" ! 倒桥角度
!!!&MACRO ASK_ITEM 6356994 (1 STRN 0) = "65" ! 倒斜深度
!!!&MACRO ASK_ITEM 6356994 (1 STRN 0) = "65" ! 倒斜深度
&MACRO END_ITEM 327680 (1 RADI 0) = 0 ! 拔模
&MACRO END_ITEM 917504 (1 BOOL 0) = 0 ! Curve
&MACRO END_ITEM 1441792 (1 BOOL 0) = 0 ! 显示之前状态
&MACRO END_ITEM 1703936 (1 BOOL 0) = 0 ! Curve
&MACRO END_ITEM 2228224 (1 BOOL 0) = 0 ! 显示之前状态
&MACRO END_ITEM 3145730 (1 STRN 0) = "5" ! 出料沉桥
&MACRO END_ITEM 3801090 (1 OPTM 0) = 1 ! °
&MACRO END_ITEM 3801091 (1 STRN 0) = "20" ! 倒桥角度
&MACRO END_ITEM 4587520 (1 OPTT 0) = 10 0 ! -ZC-axis
&MACRO END_ITEM 5570560 (1 OPTM 0) = 10 ! -ZC-axis
&MACRO END_ITEM 5570562 (1 TOOL 0) = 5 ! -ZC-axis
&MACRO END_ITEM 6356994 (1 STRN 0) = "65" ! 倒斜深度
&MACRO END_ITEM 7274498 (1 BOOL 0) = 1 ! Preview
&MACRO DIALOG_END -2, 0 ! 桥位tool-MiCH-明: OK
UNDO_UG: Recyclable status of mark 2445 set to True
Unloading D:\NXopen\BaiduSyncdisk\studio\daoqiaotool\x64\Debug\daoqiaotool.dll
&MACRO MENU, 0, UG_HELP_SYSTEM_LOG UG_GATEWAY_MAIN_MENUBAR <TopBorderBar->MenuBar->UG_HELP> ## ! ”
最新发布