/// <summary> /// 获取当前SolidEdge活动文档 /// <para> /// 注:如果传入ASM文档名称,则寻找当前活动文档下的Occurrence为当前活动文档 /// </para> /// </summary> /// <param name="ASMDocumentName">ASM文档名称</param> /// <returns></returns> private SolidEdgeDocument GetActiveObjectDocument(string ASMDocumentName = null) { if (SolidEdgeApplication.Instance == null) { throw new NullReferenceException("SolidEdgew程序对象获取失败!"); } object objDoc = SolidEdgeApplication.Instance.ActiveDocument; if (objDoc == null) { throw new NullReferenceException("SolidEdge程序当前活动文档不存在!"); } //查找Occurrence if (!string.IsNullOrEmpty(ASMDocumentName)) { AssemblyDocument ObjAsm = (AssemblyDocument)objDoc; if (ObjAsm.Name.Equals(ASMDocumentName, StringComparison.OrdinalIgnoreCase)) { return((SolidEdgeDocument)objDoc); } //工作站环境 Occurrences occurrences = ObjAsm.Occurrences; var tor = occurrences.GetEnumerator(); while (tor.MoveNext()) { Occurrence occurrence = (Occurrence)tor.Current; if (ASMDocumentName.Equals(occurrence.Name, StringComparison.OrdinalIgnoreCase)) { return((SolidEdgeDocument)occurrence.OccurrenceDocument); } } throw new NullReferenceException($"SolidEdge程序当前活动文档{ASMDocumentName}不存在!"); } //直接返回 else { return((SolidEdgeDocument)objDoc); } }