aardio 文档

模型反馈与图像

1. 先读轻量摘要

import com.sldWorks;
import JSON;
var sw,err = com.sldWorks(false);
if(!sw){ print(err); return; }
var info,infoError = sw.GetDocInfo();
if(!info){ print(infoError); return; }
print(JSON.stringify(info,true));

GetDocInfo(doc) 返回普通表,不含 COM 对象:

字段 含义
title,path 当前标题与文件路径;尚未保存时 path 为空字符串
documentType,documentTypeName 1/part、2/assembly、3/drawing
modified,readOnly 未保存修改、只读打开标志
configuration,configurations 零件或装配体的活动配置与全部配置名
units 文档显示单位:length/angle 名称与 lengthFactor/angleFactor(每米、每弧度对应的单位数,例如 mm 为 1000)
material 仅零件:name、database、density(kg/m³);未指定材料时名称为空、密度为文档默认值
selectionCount 当前选择数
hasActiveSketch 原生接口是否返回活动草图;工程图的图纸草图也可能为 true
editingSketch 仅零件/装配体提供;工程图不以此字段推断 UI 编辑模式
solidBodyCount,surfaceBodyCount 仅零件;包含隐藏实体
approximateBounds,boundsUnit 仅非空零件;[xmin,ymin,zmin,xmax,ymax,zmax],单位 m

工程图即使没有进入零件式的草图编辑,也可能返回活动图纸草图。因此不要把 hasActiveSketch=true 直接当作“需要退出草图”的命令条件。

它不自动激活或重建文档,不计算质量,也不递归读取装配体/特征树。大模型需要什么再取什么,避免每个动作后都遍历全部几何。

2. 有限的特征诊断

import com.sldWorks;
var sw,err = com.sldWorks(false);
if(!sw){ print(err); return; }
var features,truncated = sw.GetFeatures(,200);
if(!features){ print(truncated); return; } // 失败时第 2 返回值为错误说明

var issues = [];
for i,item in features {
    if(item.code) table.push(issues,item);
}
print({issues=issues;truncated=truncated;scanned=#features});

每项包含 index,name,typeName,suppressed,code,isWarning;草图特征(ProfileFeature)另有 constrainedStatus,constrainedStatusName(3/fullyDefined 才是完全定义):

需要原生特征对象时用 eachFeature(doc) 或 FindFeature(doc,name)。不要把 COM 对象放进 JSON 结果;提取实际需要的字段。

2.1 草图状态、尺寸与面

import com.sldWorks;
var sw,err = com.sldWorks(false);
if(!sw){ print(err); return; }
var doc,findError = sw.FindDoc();
if(!doc){ print(findError); return; }

// 本段针对 plate-with-hole 示例创建的零件。
print(sw.GetSketchInfo(doc,"AA_Profile"));          // constrainedStatusName、segmentCount、contourCount ...
var dimensions,truncated = sw.GetDimensions(doc,"AA_Block");
for i,item in dimensions { print(item.fullName,item.value,item.unit,item.driven); }
var faces = sw.GetFaces(doc);
for i,face in faces {
    if(face.isPlane) print(face.index,face.normal,face.area,face.point);
}

3. 整体质量属性与 SI 单位

GetMassProperties(doc,accuracy) 返回:

accuracy 可为 0(现有精度)、1(默认)、2(最高)。本库使用兼容接口 GetMassProperties2(...,false),明确计算整个模型,而不是当前选中的组件子集;不会清除选择。此原生接口已被较新的 IMassProperty2 取代,但仍用于提供清晰的整体范围与兼容行为。

只有零件/装配体支持质量属性。空零件、纯曲面模型、未解析模型等情况可能计算失败,会返回 null,说明,原生状态码,不会用 0 冒充有效结果。装配体压缩组件不计入计算。

质量依赖材质/密度及模型设置。 未指定材质时,不能从“质量有数值”推断材料正确;验证普通几何时通常优先检查体积。

换算 公式
m → mm × 1000
m² → mm² × 1000000
m³ → mm³ × 1000000000
kg → g × 1000

4. 当前模型视图导出

import com.sldWorks;
var sw,err = com.sldWorks(false);
if(!sw){ print(err); return; }
var doc,findError = sw.FindDoc();
if(!doc){ print(findError); return; }

// view 参数:isometric/front/top/... 先切换标准视图再缩放到适合;"fit" 仅缩放;省略则保持当前视角。
var image,imageError = sw.CaptureView("/output/model.png",doc,960,720,"isometric");
if(!image){ print(imageError); return; }
print(image); // path,width,height,title,documentPath,source

CaptureView(path,doc,width,height,view):

这是模型视图,不是桌面截图,也不包含独立对话框、完整软件界面或文件的旧预览缩略图。不要把图像像素直接视为草图平面上的米制坐标。

不保证最小化、隐藏文档、无交互桌面或异常显卡驱动环境下仍能正确渲染。若图像为空白/黑屏,应检查窗口和图形环境;函数成功仅表示文件生成,不证明视觉内容正确。

5. 反馈优先级

  1. 先核对目标路径、类型、配置、编辑状态。
  2. 判断 API 返回对象/布尔值及错误、警告码。
  3. 重建后验证实体数、关键尺寸、体积或其他任务不变量。
  4. 需要时进行有限特征扫描,明确保留截断标志。
  5. 最后看图像检查方向、遮挡、显示范围等。
  6. 保存后有条件地关闭重开,再读取关键几何量验证持久化结果。

结构化检查不应由模糊视觉识别替代。图像和数值互相补充,才能形成可靠的小闭环。

官方接口

返回首页

Markdown 格式