在.NET中打开任何Solidworks 2015 3D模型格式

3
我们在SolidWorks 2015中设计了产品模型。在一个.NET (C#)桌面应用程序中,我需要加载该模型(已使用OpenGL实现3D显示),并能够理解其零件(其尺寸和相对位置)。是否有任何方法可以使用Solidworks 2015导出格式之一来实现?
有两个相关的SO问题:“.NET库打开CAD模型/图纸”(2012)和“将AutoCAD/Solidworks绘图/对象导入winforms?”(2010)。
我的谷歌搜索:
“X3D.NET”(.NET的X3D库)-看起来已经停止更新
“Sharky”-已经停止(没有可用下载)
3个回答

4
发现了一种通过他们本地的3DXML格式的方法。您需要在达索系统注册以获得他们的“DS Passport”。这是免费的 - 您甚至不需要Solid Works许可证,但是注册过程(接收最终确认)可能需要几个小时。
成功注册后,下载一组XSD文件(目前的下载链接为this)。
使用Visual Studio工具xsd.exe /c 3DXML.xsd生成C#(de)序列化类,以加载3DXML结构文件NameSetTree.3dxml(将部件名称绑定到3DXML文件/即zip归档文件中的物理文件,它们在3D空间中的相对位置和旋转以及通过组装的重复项)。
键入xsd.exe /c 3DXMLMesh.xsd以生成用于读取每个部分的3D表示的C#类(TessPart_*.3DRep)。
解压缩3DXML文件,实现对包含的NameSetTree.3dxml和所有部件*.3DRep的读取。

1
如果您拥有SolidWorks的许可证,您可以使用API以编程方式打开模型并查询特征和几何图形。这里是一个简单的示例,获取草图和特征的尺寸。
SldWorks swApp = new SldWorks();
int nOpenErrors = 0, nOpenWarnings = 0;
string sConfig = string.Empty;
IModelDoc2 doc = swApp.OpenDoc6(sModelName,  (int)swDocumentTypes_e.swDocPART, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, sConfig, ref nOpenErrors, ref nOpenWarnings);

 // extract the features and dimensions
 Feature feat = doc.FirstFeature();
 while(feat != null)
 {
     string sFeatName = feat.Name;
     IDisplayDimension dispDim = feat.GetFirstDisplayDimension();
     if (dispDim != null)
     {
          Dimension dim = dispDim.GetDimension();
          if(dim != null)
          {
            // dim.FullName;
            // dim.GetSystemValue2(sConfig);
          }
          feat = feat.GetNextFeature();
      }
  }

  swApp.ExitApp();

非常好!谢谢。 - Hugues Paquet Blanchette

0

有一些商业库可以读取本地Solidworks文件并提供您想要的信息,但我猜这不是您想要的。

一些导出格式(如STL)是非常简单的格式,您可以很容易地找到阅读器库。 STL是一个三角网格格式,因此也很容易获得几何体的大小和位置。然而,这些简单的格式没有任何元信息,例如零件/装配关系。您可以通过查看几何体来确定未连接的实体。这可能与您在Solidworks中指定的“零件”相同,但并非总是如此。一个零件可能最终成为多个实体,多个零件可能最终成为一个实体,如果它们接触并且Solidworks STL导出器选择合并它们(也许它从来没有这样做,您必须尝试)。

我猜列表上的大多数格式都会有这个没有任何零件信息的问题。可能还有一些更复杂的格式具有该信息(例如本机文件格式本身),但是那么您将很难找到能够读取它的(非商业)库。

也许编写一个Solidworks插件/脚本,可以将每个零件导出为单独的STL(或其他简单格式)是一个选项?


感谢提供Solidworks插件/脚本的提示!除非有更简单的方法我们都忽略了,否则我会接受这个答案... - user681768917

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接