2015-11-02 16 views
0

我仍然不清楚Revit插件在運行時如何知道是否存在其他活動本地文件(其他活動用戶)。Revit工作共享 - 獲取活動本地用戶

正在考慮的插件需要在共享參數'SPuniqueID'中提供所有具有其UniqueID的預定元素。其目的是可以將此SPuniqueID添加到日程表中(遺憾的是,無法通過Revit用戶界面將UniqueID直接添加到日程安排中)。

接下來,可以將帶有添加到日程表中的字段SPuniqueID的日程表導出到excel。由於包含UniqueID的SPuniqueID被添加到Excel表中,因此可以編寫一個ScheduleCompare程序,比較在Revit項目生命週期中不同時刻生成的2個數量調查,並找出差異(已更改的數量對於某些物品)。

我已經構建了這個ExportSchedules插件,可以在獨立的修復文件中完美工作,甚至可以使用來自修復鏈接的鏈接元素。但是,當我在中央模型的本地副本上運行此操作時,我當然會遇到一些例外情況,即其他用戶借用了某些元素,並且無法設置SPuniqueID。

我想事先檢查我是否對所有預定的元素擁有完整的權利。 在預定的元素列表上操作'WorksharingUtils.CheckoutElements()'並捕獲異常,實現此目的的唯一方法是?

我以爲有可能是一個日誌文件的地方,將跟蹤活動的本地用戶。當且僅當此列表僅包含我的名字時,我會讓插件繼續,因爲我會自動知道所有可用於編輯的元素。

親切的問候

保盧斯

+0

C.F.也http://forums.autodesk.com/t5/revit-api/worksharing-get-active-local-users/td-p/5888747 –

+0

你檢查了Document.HasAllChangesFromCentral()方法嗎?它可能有用,但我懷疑它沒有報告其他用戶在本地文件中借用的元素,但沒有將這些更改同步到中央。 –

+0

感謝您的回答cs1088。 Howerver我不需要知道我的本地文件是否是最新的。我知道我是最新的,因爲我在出口數量調查之前與CM同步。正如你所提到的,我需要知道其他用戶是否仍然活躍和工作。他們不應該,而不是在進行數量調查時。 –

回答

0

保盧斯, 退房的WorksharingUtils.GetCheckoutStatus()方法 - 它可以告訴你元素是否被選中了,如果是哪個用戶。

除此之外,唯一的另一個地方是通過監視中央文件夾中的SLOG文件(但是 - yuck!)。

最好的問候, 馬特

+0

感謝您的回答。事實上,WorksharingUtils.GetCheckoutStatus()方法將更直接地用於WorksharingUtils.CheckoutElements()並捕獲異常。 –

+0

對於大型項目(el 100000+),我懷疑這是一個密集的過程。在ExportSchedules插件運行時,打電話並詢問每個本地用戶同步並保持5分鐘會更快。通常這個命令只需要經常使用一次。此外,當您對項目進行官方數量調查時,您不希望任何其他本地用戶在命令運行時仍在添加元素。因此,在這種情況下,只需調用每個人並要求他們關閉,而不是遍歷所有元素以獲取活動用戶列表就可以了。 –

+0

我想也許Revit在活動用戶的某個地方保留了一個API可訪問列表......它會容易得多。 所有這一切都是因爲Element.UniqueID無法在Revit計劃中設置爲Revit參數。 –