1. 问题现象与背景分析
在SolidWorks二次开发过程中,我们经常会遇到需要将钣金零件的展开图导出为DWG/DXF格式的需求。最近在实际项目中遇到一个奇怪的现象:当使用ExportToDWG方法导出展开图时,必须先将文档的Visible属性设置为true,否则无法成功导出。而使用ExportFlatPatternView方法则不存在这个问题。
这个现象最初是在一个批量导出工具中发现的。我们开发了一个递归遍历装配体结构的工具,需要自动获取每个钣金零件的厚度并导出其展开图。核心代码片段如下:
csharp复制static private void TraverseComponent(SldWorks swApp, Component2 component)
{
// 获取子组件
object[] children = (object[])component.GetChildren();
if (children != null && children.Length > 0)
{
// 处理子组件...
}
else
{
var doc = (ModelDoc2)component.GetModelDoc2();
if (doc != null)
{
string? pathName = doc.GetPathName();
if (string.IsNullOrEmpty(pathName))
{
Console.WriteLine($"警告:组件 {component.Name2} 未保存或无法获取路径。");
return;
}
string docname = pathName.Replace(@"\", "/");
if (docnameCount.ContainsKey(docname))
{
docnameCount[docname]++;
}
else
{
docnameCount[docname] = 1;
var thickness = 0.0;
string? dxfname = null;
Profiler.Time(() => thickness = get_thickness_from_solidfolder.run2(doc), "获取厚度");
if (thickness > 0) {
Profiler.Time(() => doc.Visible = true, "打开零件");
