DLX解决3-SAT问题

本文探讨了如何利用 Dancing Links (DLX) 算法解决3-SAT问题。介绍了DLX在处理重复覆盖与精确覆盖的转换,并讨论了K-SAT问题,特别是3-SAT实例。通过建模将元素和约束转化为DLX问题,寻找满足所有约束的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.关于DLX的重复覆盖:根据与精确覆盖概念的区别可知,只需改变remove()和resume()函数控制删除和恢复的过程即可实现,对于求解最少步数问题,可借助ida*中的h()函数优化。

2.重复覆盖+精确覆盖:某些元素可重复覆盖(目标),而某些元素只能精确覆盖(每类元素只能使用一次),这是要对前m列进行重复覆盖的删除回复操作,对后面的列进行精确覆盖的操作,也有一些特殊情况可直接使用重复覆盖代替。如hdu2828,每类元素只有两种,可通过visit数组在选中某个元素时删除同类中的另一个元素,实现精确覆盖)。

3.K-sat问题:

考虑CNF

Φ=C1∧C2∧...∧Ci∧...Cn


子句Ci具有如下形式

Xi1
我正在学习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> ## ! ”
最新发布
08-17
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值