天天看點

Objectarx 遇到的坑

3軟體架構師何志丹

一,已解決。

1, 工作者線中調用acDocManager->sendStringToExecute,如果第三個參數(bActivate)為true,則在CAD2010下崩潰,CAD2018不會崩潰。

2,acad.rx會自動加載arx,但如果有多個搜尋目錄有acad.rx隻有第一個acad.rx起作用。解決方法:用acad.lsp。如果多個搜尋目錄有acad.lsp,也隻有一個acad.lsp起作用。

3,寫了個crx,加載不了。需要的dll所在路徑 已經加到 option的搜尋目錄了,後來發現是沒加信任目錄,acad.exe沒加信任目錄,會提示;accoreconsole.exe不會提示,直接失敗! 問題出現環境:CAD2018。

4,long appID = 0;

    bool b2 = acedAddObjectContextMenu(pClass, p , &appID); // 向AutoCAD應用中添加實體對象上下文菜單

在CAD2010下低幾率崩潰,CAD2010、CAD2016、CAD2017、CAD2018下沒問題。

改成

static long appID = 0;

    bool b2 = acedAddObjectContextMenu(pClass, p , &appID); // 向AutoCAD應用中添加實體對象上下文菜單

就沒問題了。

可能原因:

acedAddObjectContextMenu 記錄并使用了appID的位址。

2,未解決。

1,自定義實體,高亮顯示的問題。需求:某個自定義實體,高亮的時候,我想加個邊框。

遇到的問題:

a,subHighlight subUnhighlight 是const,無法修改成員變量,這個好解決:mutable bool m_bHighLight;

b,subHighlight 無法調用非const函數 wordDraw recordGraphicsModified,下面的3個函數也沒用。

actrTransactionManager->queueForGraphicsFlush();

 actrTransactionManager->flushGraphics();

 acedUpdateDisplay();

2,自定義實體,派生于标注,捕捉點全亂了。

繼續閱讀