iCAx开思工具箱

标题: 如何捕捉使用者刪除行為 [打印本页]

作者: ggyybon    时间: 2011-7-11 11:17
标题: 如何捕捉使用者刪除行為
各位高手,
在下今想開發個功能,主要是透過當使用者刪除part檔案中的某個實體而觸發執行,而又不想一直遍歷part檔案中的實體來檢查是否有減少,請問是否有辦法透過ugopen api來得知使用者目前進行刪除實體的動作?
請問各位是否有看過捕捉使用者操作刪除行為的api?
還是各位是否有些思路可以提供在下實現呢?
作者: qindongjun88    时间: 2011-7-11 16:21
用hook应该可以完成你想要的功能!
作者: ggyybon    时间: 2011-7-12 10:13
感謝qindongjun88前輩提供的思路。
但我想HOOK可能是最後手段,難道沒有API可以得知目前使用者正在做刪除動作並得知是刪除哪個物件嗎?
研究了一下solidworks是有提供"swPartDeleteItemNotify"可得知使用者刪除動作,及proE也有提供"ProNotificationSet"可以自行定義要捕捉的動作及呼叫的callback function想想NX應該也會有類似的功能,
請問是否有其他高手看到過呢?

謝謝各位提點了~
作者: qindongjun88    时间: 2011-7-14 09:30
我想问一下楼主,你捕捉删除消息的用意是什么呢?看看能否用其它方法达到同样的目的……
作者: ggyybon    时间: 2011-7-14 12:19
主要是做了一個外部的介面,使用者透過這外部介面對NX做相關操作動作,且會紀錄對NX畫面中哪個特徵做了操作,但這些都是單向性的,都是由此介面對NX下指令,若使用者直接對工作視窗中的特徵作變更或刪除動作,此外部介面所記錄的資訊便會發生錯誤,因此想捕捉若NX中的特徵若有直接被使用者變更或刪除的時候需要重整此外部介面的資訊,因此才想捕捉刪除事件主要是想藉此達到上述功能。由於目前已經啟動了HOOK偵測了其他事件,且常常會出現漏洞所以目前捕捉刪除動作不想藉由HOOK達成。

目前想透過UF_TAG_register_event_cb()來捕捉tag刪除的事件,但NX有非常大量的tag一直在變動,一直無法確定何者是在刪除目前工作視窗中物件的動作。

請問是否有人有類似的經驗可以分享,只要是對NX視窗作變更、刪除或是還原動作的事件皆可,還望高人指點一下小弟我




作者: qindongjun88    时间: 2011-7-14 15:05
ggyybon兄:
UF_TAG_register_event_cb()的第一个参数传递UF_TAG_EVENT_NORMAL_DELETE不可以捕捉tag刪除的事件吗?

UF_TAG_event_e
enum UF_TAG_event_e
UF_TAG_EVENT_NORMAL_CREATE  The tag was created.

UF_TAG_EVENT_UNDO_OVER_CREATE  An undo occurred over the tag's
creation and so is now invalid.

UF_TAG_EVENT_NORMAL_DELETE  The tag was deleted.

UF_TAG_EVENT_UNDO_OVER_DELETE  An undo occurred over the tag's
deletion and so has come back to
life.

UF_TAG_EVENT_UNDO_DELETE_EXPIRED  NX will now never undo over
the deletion so it will never come back
to life.

UF_TAG_EVENT_UNDO_CREATE_EXPIRED  NX will now never undo over
the tags creation.


作者: ggyybon    时间: 2011-7-18 10:09
的確我目前是使用UF_TAG_register_event_cb()的参数UF_TAG_EVENT_NORMAL_DELETE來達到我的目的,但如我所說的傳遞的tag非常大量,將傳入的tag依序檢查是否為我要的tag,由於沒什麼其他方法來辨識傳入的tag為何種物件,因此效率無法提高,不過看來似乎是沒其他方法了,也謝謝qindongjun88前輩陪我分憂解勞~





欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3