From 31a636e735a0addc56e4f4527f500b7aa0874eb5 Mon Sep 17 00:00:00 2001
From: chr <chr@mailcom>
Date: 星期五, 03 一月 2025 11:21:46 +0800
Subject: [PATCH] 改了一大堆;
---
PdmSwPlugin.Main/EventHandler/BaseAttacher.cs | 68 ++++++++++++++++++++++++++++++----
1 files changed, 60 insertions(+), 8 deletions(-)
diff --git a/PdmSwPlugin.Main/EventHandler/BaseAttacher.cs b/PdmSwPlugin.Main/EventHandler/BaseAttacher.cs
index 39d3dcb..70ce1ae 100644
--- a/PdmSwPlugin.Main/EventHandler/BaseAttacher.cs
+++ b/PdmSwPlugin.Main/EventHandler/BaseAttacher.cs
@@ -4,10 +4,14 @@
using SolidWorks.Interop.swconst;
using System;
using System.Collections;
+using System.Threading.Tasks;
using System.Windows.Controls;
namespace PdmSwPlugin.Main.EventHandler
{
+ /// <summary>
+ /// 浜嬩欢闄勫姞鍣�
+ /// </summary>
public class BaseAttacher : IEventAttacher, IDocEventHandler
{
public static ILog Logger { get; } = LogManager.GetLogger("SwAddin");
@@ -33,8 +37,9 @@
/// <returns></returns>
public virtual bool AttachEventHandlers()
{
+ // 娣诲姞搴旂敤浜嬩欢鐩戝惉
AttachSwEvents();
- //Listen for events on all currently open docs
+ // 娣诲姞鏂囨。浜嬩欢鐩戝惉
AttachEventsToAllDocuments();
return true;
}
@@ -60,14 +65,55 @@
private bool AttachEventsToAllDocuments()
{
- ModelDoc2 modDoc = (ModelDoc2)SwApp.GetFirstDocument();
- while (modDoc != null)
+ //ModelDoc2 modDoc = (ModelDoc2)SwApp.GetFirstDocument();
+ //while (modDoc != null)
+ //{
+ // if (!OpenDocContext.IsOpenDoc(modDoc))
+ // {
+ // AttachModelDocEventHandler(modDoc);
+ // }
+ // modDoc = (ModelDoc2)modDoc.GetNext();
+ //}
+
+ /// 璇曚竴涓嬪紓姝ラ檮鍔犱簨浠�
+ var objs = SwApp.GetDocuments();
+ if (objs != null && objs.Length > 0)
{
- if (!OpenDocContext.IsOpenDoc(modDoc))
+ Task[] tasks = new Task[objs.Length];
+ for (int i = 0; i < objs.Length; i++)
{
- AttachModelDocEventHandler(modDoc);
+ var obj = objs[i];
+ if (obj is ModelDoc2 modDoc)
+ {
+ tasks[i] = Task.Run(() =>
+ {
+ if (!OpenDocContext.IsOpenDoc(modDoc))
+ {
+ AttachModelDocEventHandler(modDoc);
+ }
+ });
+ }
}
- modDoc = (ModelDoc2)modDoc.GetNext();
+ Task.WaitAll(tasks);
+ }
+ return true;
+ }
+
+ private bool AttachEventsToAllDocuments(ModelDoc2 modDoc)
+ {
+ if (!OpenDocContext.IsOpenDoc(modDoc))
+ {
+ AttachModelDocEventHandler(modDoc);
+ }
+ return true;
+ }
+
+ private bool AttachEventsToAllDocuments(string fileName)
+ {
+ ModelDoc2 modDoc = SwApp.GetOpenDocument(fileName);
+ if (!OpenDocContext.IsOpenDoc(modDoc))
+ {
+ AttachModelDocEventHandler(modDoc);
}
return true;
}
@@ -208,7 +254,7 @@
public int OnFileNew(object newDoc, int docType, string templateName)
{
- AttachEventsToAllDocuments();
+ AttachEventsToAllDocuments((ModelDoc2)newDoc);
return 0;
}
@@ -217,7 +263,13 @@
return 0;
}
- public int FileOpenPostNotify(string FileName)
+ /// <summary>
+ /// Post-notifies an application when a file has been opened.
+ /// 鍦ㄦ墦寮�鏂囦欢鏃� Post-閫氱煡搴旂敤绋嬪簭銆�
+ /// </summary>
+ /// <param name="FileName"></param>
+ /// <returns></returns>
+ public int FileOpenPostNotify(string filePath)
{
AttachEventsToAllDocuments();
return 0;
--
Gitblit v1.9.1