当前位置: 首页 > news >正文

solidworks获得工程图选中面selectionMgr.GetSelectedObjectType3(i, -1)

usingSystem;usingSolidWorks.Interop.sldworks;usingSolidWorks.Interop.swconst;usingView=SolidWorks.Interop.sldworks.View;usingSystem.Diagnostics;namespacetools{publicclassselect_face_recognize{/// <summary>/// 获取当前选中的面并分析面积/// </summary>staticpublicvoidrun(ModelDoc2swModel){if(swModel==null){Console.WriteLine("错误:没有打开的活动文档。");return;}Debug.WriteLine("\n=== 开始分析选中的面 ===");// 获取选择管理器SelectionMgrselectionMgr=(SelectionMgr)swModel.SelectionManager;if(selectionMgr==null){Debug.WriteLine("错误:无法获取选择管理器。");return;}// 获取选中对象数量intselectCount=selectionMgr.GetSelectedObjectCount();if(selectCount==0){Debug.WriteLine("警告:没有选中的对象,请先选择面。");return;}Debug.WriteLine($"选中对象总数:{selectCount}");// 遍历所有选中的对象for(inti=1;i<=selectCount;i++){try{// 获取选中对象的类型intobjectType=selectionMgr.GetSelectedObjectType3(i,-1);Debug.WriteLine($"\n--- 选中对象{i}---");Debug.WriteLine($"对象类型:{(swSelectType_e)objectType}");// 判断是否为面if(objectType==(int)swSelectType_e.swSelFACES){Face2selectedFace=(Face2)selectionMgr.GetSelectedObject6(i,-1);if(selectedFace!=null){AnalyzeFace(selectedFace,i);}else{Debug.WriteLine($" 错误:无法获取面对象{i}");}}elseif(objectType==(int)swSelectType_e.swSelEDGES){// 如果选中的是边,获取相邻面EdgeselectedEdge=(Edge)selectionMgr.GetSelectedObject6(i,-1);if(selectedEdge!=null){Debug.WriteLine(" 选中的是边,获取相邻面:");varadjacentFaces=(object[])selectedEdge.GetTwoAdjacentFaces();if(adjacentFaces!=null&&adjacentFaces.Length>0){for(intj=0;j<adjacentFaces.Length;j++){if(adjacentFaces[j]isFace2adjFace){Debug.WriteLine($" 相邻面{j+1}:");AnalyzeFace(adjFace,i);}}}else{Debug.WriteLine(" 该边没有相邻面。");}}}else{Debug.WriteLine($" 跳过非面对象 (类型:{(swSelectType_e)objectType})");}}catch(Exceptionex){Debug.WriteLine($" 处理选中对象{i}时出错:{ex.Message}");}}Debug.WriteLine("\n=== 分析完成 ===");}/// <summary>/// 分析面的详细信息/// </summary>staticprivatevoidAnalyzeFace(Face2face,intindex){if(face==null){Debug.WriteLine($" 面对象为空");return;}try{// 计算面积 (mm²)doublearea=Math.Round(face.GetArea()*1000000,2);// 获取曲面类型varsurface=face.IGetSurface();stringfaceType="未知";if(surface.IsPlane())faceType="平面";elseif(surface.IsCylinder())faceType="圆柱面";elseif(surface.IsCone())faceType="圆锥面";elseif(surface.IsSphere())faceType="球面";elseif(surface.IsTorus())faceType="圆环面";elsefaceType="其他曲面";// 获取面的法向double[]normal=(double[])face.Normal;stringnormalStr="";if(normal!=null&&normal.Length>=3){normalStr=$", 法向:({normal[0]:F3},{normal[1]:F3},{normal[2]:F3})";}// 获取面的边界信息object[]edges=(object[])face.GetEdges();intedgeCount=edges?.Length??0;// 输出面的信息Debug.WriteLine($" 面{index}:");Debug.WriteLine($" 面积:{area}mm²");Debug.WriteLine($" 类型:{faceType}{normalStr}");Debug.WriteLine($" 边数:{edgeCount}");// 如果是圆柱面,显示半径if(surface.IsCylinder()){double[]cylinderParams=(double[])surface.CylinderParams;if(cylinderParams!=null&&cylinderParams.Length>=7){doubleradius=Math.Round(cylinderParams[6]*1000,2);Debug.WriteLine($" 圆柱半径:{radius}mm");}}// 如果是圆锥面,显示角度elseif(surface.IsCone()){double[]coneParams=(double[])surface.ConeParams;if(coneParams!=null&&coneParams.Length>=7){doubleangle=Math.Round(coneParams[6]*180/Math.PI,2);Debug.WriteLine($" 圆锥半角:{angle}°");}}}catch(Exceptionex){Debug.WriteLine($" 获取面信息时出错:{ex.Message}");}}}}
http://www.jsqmd.com/news/588456/

相关文章:

  • 避坑指南:在昇腾Atlas服务器部署FunASR说话人分离模型时,如何解决Torch_npu版本冲突和依赖问题
  • yolov8专栏改进,具体内容可见图。你也可以改进自己的模型。在读博士,欢迎打扰
  • NotebookLM
  • 微信支付点金计划实战:如何高效配置自定义小票跳转页面
  • linux scp 上传下载文件 - So
  • HybridCLR热更新设计指南:如何划分AOT与热更程序集?
  • 安徽及融科技有限公司介绍 - 野榜精选
  • Windows Cleaner真的能让你的电脑告别卡顿吗?一个开源工具的深度体验
  • 从STM32切换到MSPM0G3507?这份串口驱动移植避坑指南请收好
  • claw-code 源码详细分析:Turn Loop 里的工程细节——多轮对话如何在移植期保持可测试、可回放?
  • RTX 5080 + CUDA 12.8 踩坑实录:Windows下源码编译MMCV 2.1.0,搞定mmdetection3d环境
  • 鸿蒙Flutter混合开发:如何优雅地实现离线TTS/STT的多语言动态切换?
  • 头歌平台MySQL实战:5种连接查询的保姆级教程(附常见错误排查)
  • Sprout Social 2026报告:评论1小时内回复,品牌成单率高40% - SocialEcho社媒管理
  • R-HORIZON:探索长程推理边界,复旦 NLP美团 LongCat 联合提出
  • 从0.93 Dice系数看U-Net结合可分离卷积在肺部分割中的实战优化
  • 草原牛羊马目标检测数据集数据集拥有3个类别、总计2400张图片支持YOLO、VOC格式已经划分为训练集、验证集、测试集可直接进行YOLOv5、YOLOv6、YOLOn7、YOLOv8使用YO
  • 毫米波雷达点云处理进阶:用Open3D+Python实现轻量级SLAM系统的5个关键技巧
  • .NET AgentFramework实战:构建高可用多智能体工作流与微服务集成
  • 大阪大学揭秘动物王国的“三语通“
  • 手把手教你用kubeadm在CentOS 7上搭建纯离线K8s 1.23.5集群(附完整脚本包)
  • 音频像素工坊快速体验:开箱即用的90年代风格语音合成与分离工具
  • LongCat-Flash-Omni正式发布并开源:开启全模态实时交互时代
  • Codesys V3.5 SP18 实战:用G代码驱动Delta机械手,从CNC到机器人控制的平滑迁移
  • XUnity.AutoTranslator全攻略:突破游戏语言壁垒的本地化解决方案
  • CANoe诊断实战:从Console到Fault Memory的故障排查全流程
  • Vue3启动流程和文件结构
  • OpenClaw二次开发入门:自定义技能,适配自身工作需求
  • 别再乱接纽扣电池了!STM32 VBAT引脚的正确接法,实测这几种电路都踩坑了
  • 生产异常反复?8D 分析法——精益问题解决的终极闭环工具