You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C# SolidWorks API中选择Bottom Plane(底部基准面)?

在C# SolidWorks API中选择底部基准面的解决方案

核心问题修正:实体类型参数错误

你当前代码的主要问题是SelectByID2的第二个参数使用了"PLANE",而SolidWorks API中基准面的正确实体类型是"DATUMPLANE"。修正后的基础代码如下:

// 确保doc是已打开的SolidWorks文档对象(如PartDoc)
bool isSelected = doc.Extension.SelectByID2(
    "Bottom",          // 基准面名称
    "DATUMPLANE",      // 正确的实体类型
    0, 0, 0,           // 选择坐标(基准面可忽略,填0即可)
    false,             // 是否追加到选择集
    0,                 // 选择标记
    null,              // 标注对象
    0                  // 选择选项
);

处理多语言/自定义名称问题

如果上述代码仍不生效,大概率是基准面名称因SolidWorks语言版本或自定义修改而不一致:

  • 英文默认基准面名称为"Top Plane"/"Front Plane"/"Right Plane",中文则为"上视基准面"/"前视基准面"/"右视基准面"
  • 若你自定义了名为"Bottom"的基准面,需确保名称完全匹配(区分大小写)

更可靠的方式是通过特征管理器遍历获取基准面,避免硬编码名称:

ISldWorks swApp = (ISldWorks)Activator.CreateInstance(Type.GetTypeFromProgID("SldWorks.Application"));
IModelDoc2 doc = swApp.ActiveDoc;
IFeatureManager featMgr = doc.FeatureManager;

// 遍历特征树,找到指定名称的基准面
IFeature feat = featMgr.GetFirstFeature();
while (feat != null)
{
    if (feat.GetTypeName2() == "RefPlane" && feat.Name == "Bottom")
    {
        // 获取基准面的选择数据并选中
        object selData = feat.GetSelectMark();
        doc.Extension.SelectByID2(feat.Name, "DATUMPLANE", 0, 0, 0, false, 0, selData, 0);
        break;
    }
    feat = feat.GetNextFeature();
}

额外注意事项

  • 确保代码执行时,SolidWorks文档处于激活状态,且基准面可见(未被隐藏)
  • 若要选择默认的底部基准(通常对应英文的Top Plane,即中文的上视基准面),可直接使用其默认名称匹配,或通过GetRefPlane方法获取默认基准面

内容的提问来源于stack exchange,提问作者user563147

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 06:25:02