• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Life is Good.

            Enhance Tech and English
            隨筆 - 65, 文章 - 20, 評論 - 21, 引用 - 0
            數據加載中……

            各種Arx后續美化小結

            ARX給CAD發送命令的幾種方法

            • ads_queueexpr( _T("(command\"_POINT\" \"1,1,0\")") );該函數CAD未公開,使用時提前聲明下就可以了。可以參考幫助文件中:Tips and Techniques
            • acDocManager->sendStringToExecute(curDoc(), _T("_POINT 2,2,0\n "));該函數在Arx幫助中有詳細說明。
            • acedCommand(RTSTR, _T("_POINT"), RTSTR,_T("5,5,0"), RTNONE);
            • Windows API 方法

            void SendCmdToAcad(ACHAR *cmd)

            {

            COPYDATASTRUCT cmdMsg;

            cmdMsg.dwData = (DWORD)1;

            cmdMsg.cbData = (DWORD)(_tcslen(cmd) + 1) * sizeof(ACHAR);

            cmdMsg.lpData = cmd;

            SendMessage(adsw_acadMainWnd(), WM_COPYDATA, NULL, (LPARAM)&cmdMsg);

            }

            • Com 方法

            void SendCommandTest(void)

            {  

            IAcadApplicationPtr pApp = acedGetIDispatch(TRUE);

            IAcadDocumentPtr pDoc;

            pApp->get_ActiveDocument(&pDoc);

            pDoc->SendCommand( _T("_POINT 4,4,0 ") );

            }

             

             

            調用自定義命令:

            acDocManager->sendStringToExecute(acDocManager->curDocument(),_T("tonsel\n"),false,true);

             

             

            AuToCAD啟動自定義加載程序研究(轉)

            默認分類 2010-03-24 13:19:18 閱讀121 評論0 字號:

            CAD文件加載順序:       acad2006.lsp (AutoCAD使用)

                   acad.rx (用戶自定義的*.arx文件加載清單)

                   注:在CAD2006中,由錯誤提示懷疑:*.arx文件檢測先于acad2006.lsp加載。

                   acad.lsp (用戶自定義的Lsp自動加載程序)

                   acad2006doc.lsp (AutoCAD使用)

                  acetutil.fas (Express Tools初始化程序)

                   acaddoc.lsp (用戶自定義的Lsp自動加載程序)

                   mymenu.mnc (用戶自定義或第三方編譯菜單文件)

                  mymenu.mnl (用戶自定義或第三方菜單文件)

                  acad.mnc (AutoCAD編譯菜單文件)

                   acad.mnl (AutoCAD菜單文件)

                 acetmain.mnc (Express Tools編譯菜單文件)

                  acetmain.mnl (Express Tools菜單)

                  使用“對話框方式”加載的文件

                  s::startup (自動執行函數,可用于自定義狀態欄等)

            注冊表法加載順序未知。

            注意:

            1.如果acad.lsp、acaddoc.lsp或MNL文件中包含自定義函數S::STARTUP,那么,創建新圖形或打開現有圖形時就會調用 這個函數。因此,在 LISP啟動文件中添加S::STARTUP函數定義,就可以執行全部所需的安裝操作。如果需要關于“S::STARTUP”函數的詳細信息,請參閱 “AutoCAD 2000 Customization Guide”的第六章。

            2.默認情況下,acad.lsp 僅在啟動 AutoCAD 時加載一次,而 acaddoc.lsp 可隨每個文檔(或圖形)一起加載。這樣可使用戶將加載 acad.lsp 文件和啟動應用程序相關聯,將 acaddoc.lsp 文件和文檔或圖形啟動相關聯。通過更改 ACADLSPASDOC 系統變量的設置,可以修改加載這些啟動文件的默認方法。在CAD2006中,第一次新建圖形時,也會出現對話框詢問:acad.lsp是僅在啟動 AutoCAD 時加載一次,還是隨每個文檔(或圖形)一起加載。

            不同位置的acad.lsp 和acaddoc.lsp按如下順序加載:       CAD安裝目錄(即:acad.exe所在文件夾)

                   “支持文件搜索路徑”所包含的文件夾的逆序加載

                  Dwg文件所在文件夾(打開Dwg文件時加載)

            有關同名覆蓋的問題:l         同名文件被最后加載的版本覆蓋。

            比如:你定義了一系列自己編制的lisp程序并放在acad.lsp文件中,但該acad.lsp放在CAD安裝目錄中。當“支持文件搜索路徑”所 包含的文件夾中,由于未知原因出現了一個與你自定義的acad.lsp文件不同的acad.lsp文件時, 你自定義的acad.lsp文件就不會被加載。解決的辦法是將后加載的acad.lsp文件刪除或用自己定義的acad.lsp替換放后加載的 acad.lsp文件,或將自己定義的acad.lsp放在更靠后加載的目錄中。

            l         同名函數(或命令)被最后加載的版本覆蓋。

            知道AutoCAD 2000啟動時各個文件加載的順序,可能就會明白一個文件對另一個文件的影響。例如,已經在從acad.lsp文件加載的LISP程序中定義了一個函數, 但是在啟動AutoCAD 2000后,這個函數卻不工作。這是因為acaddoc.lsp是在acad.lsp文件之后加載,此函數已經被acaddoc.lsp文件重新定義了。

            l         加載的dll文件同名但dll里的函數不同名,dll不會相互覆蓋。


            ---------------------------------------------------------------------------------------------------------------------
            關 于CAD啟動時自動加載程序的研究(二)
            1.Lisp法:a.在ACAD.EXE所在目錄加入acad.lsp或acaddoc.lsp

            acad.lsp或acaddoc.lsp文件內容:

            (defun S::STARTUP() ;函數名不可以改變

            (command "_netload" "my.dll"); my.dll為相對路徑也可用絕對路徑
            )

            或:(load “1111.lsp”)在1111.lsp文件中調用my.dll。

            b.修改AutoCAD 2006\Support\acad2006.lsp或cad2006doc.lsp文件,里面加入加載代碼。(加載代碼同上。)

            c.修改你的菜單組對應的同名的MNL文件,里面加入加載代碼。

            MNL文件其實是一種與菜單同名,擴展名為MNL的LISP文件。它隨同名菜單加載。

            acad.mnl的位置:C:\Documents and Settings\用戶名\Application Data\Autodesk
            \AutoCAD 2006\R16.2\chs\Support\acad.mnl

            缺點:

            a.可能被其他第三方程序修改時覆蓋。

            b.如果使用acad.lsp,新建文檔時出現:“是否讀入每個圖形時都加載“acad.lsp”的提示。

            2.對話框方式: a。菜單:工具->加載應用程序,(或用命令:_APPLOAD)
            b。啟動組:“內容”按鈕,
            c。“添加”按鈕

            等 同于如下注冊表操作:[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R16.2\ACAD- 4001:804\Profiles\<<未命名配置>>\Dialogs\Appload\Startup]

            "NumStartup"="1"   //啟動組加載的項目數
            "1Startup"="C:\\Program Files\\AutoCAD 2006\\222.lsp"

            //數字1表示在cad中加載的順序,后面是加載文件的路徑。

            注意:

            a.此方法在CAD2006以下版本中,只能加載lisp、VBA、arx等,不能加載dll。但可通過lisp間接加載dll。

            b.此方法每次打開一個新的文檔就會自動加載啟動組中指定的文件。

            c.(網友發言)加到啟動組里面有時候不能加載,尤其是打開新圖的時候。

            --------------------------------------------------------------------------------------------------------------------
            3. 注冊表法:(注意:檢查LOADER的路徑是否正確)

            在注冊表加入如下項值:

            [HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R16.2\ACAD-4001:804\Applications\my]

            "MANAGED"=dword:00000001

            "LOADER"="C:\\Program Files\\AutoCAD 2006\\my.dll"

            "LOADCTRLS"=dword:00000002

            "DEION"="my"


            說明:
            a. 非托管的ARX程序是指用C++編譯的以.arx為后綴的動態鏈接庫文件;托管的ARX程序是指由.net程序(C#,C++.net或VB.net)編 譯的以.dll為后綴的動態鏈接庫文件。托管的程序和非托管的程序相比,只要多創建一個“MANAGED”鍵,并設為Ox01,告訴CAD這是托管程序即 可。VBA,lisp的注冊表加載法參見“2. 對話框方式”。

            b. 注冊表鍵值"LOADCTRLS"控制說明,控制ARX程序的加載方式

            0x01:Load the application upon detection of proxy object.
               當代理對像 被控知時另載相應ARX程序.

            0x02:Load the application upon AutoCAD startup.
               當AutoCAD啟動時加載相應 ARX程序.

            0x04:Load the application upon invocation of a command.
               當輸入命令時加 載相應ARX程序.

            0x08:Load the application upon request by the user or another application.
               當有用戶或別的程序請求時加載相應ARX程序.

            0x10:Do not load the application.
               從不加載該應用程序.

            0x20:Load the application transparently.
               顯式加載該應該程序.(不知該項譯法是否有誤)

            c. 當my。dll中有命令時,還需要添加一個子鍵:

            [HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R16.2\ACAD-4001:804\Applications\my\Commands]

            "StartmyApp"="StartmyApp"

            -StartmyApp 是你程序中一個有效的命令。

            這樣,你的程序就會在AutoCAD 啟動時加載并初始化。你可以添加代碼到程序的如下地方(VB.Net代碼):

            Public Sub StartmyApp()

            .....

            End Sub

            然后在ACAD.LSP, ACAD.MNL, 或其他自動載入的文件里調用StartmyApp命令。

            優點:只要項鍵值不同就不會被覆蓋,所以建議鍵名使用gid。


            ---------------------------------------------------------------------------------------------------------------------
            于 CAD啟動時自動加載程序的研究(四)
            4.子進程法:將二次開發的程序做成EXE程序。啟動該程序會自動啟動CAD子進程,關閉程序時可以關閉 CAD子進程。

            5.ACAD.RX文件法:在AutoCAD 啟動文件acad.rx 中指定待裝入的ARX 應用程序名。acad.rx 是ASCII 文本文件,每個ARX 應用程序必須單獨占一行,AutoCAD 啟動時會自動裝載該文件中的ARX 應用程序。另外,應確保$ACAD 路徑定義中包括文件acad.rx 的存放目錄。

            6.配置文件法:可以把自己配置的AUTOCAD啟動時加載的東西,保存成一個的配置文件。然后在AUTOCAD啟動快捷方式中用參數: /p 你的配置文件名。這樣就可以在啟動的時候加載自己的CAD環境。


            具體如下:菜單:工具--選項(或用命令:_OPTIONS),“配置”選項卡,選擇配置文件后,點擊“輸出”。可以輸出一個擴展名為 arg的文本文件,保存到某個位置,然后再桌面上將cad 的快捷方式復制一個,右鍵屬性,將目標中"C:\\My Programs\\Auto CAD\\acad.exe"的后面加上/p "d:/test/test.arg" (注意:雙引號,不是漢字的,而是英文的!)


            有些命令要求:將加載的文件的路徑,加入搜索路徑。方法如下:

            加入搜索路徑:菜單:工具->選項,(或用命令:_OPTIONS)
            選中“支持文件搜索路徑”,點“添加”,點“瀏覽”,選擇要添加 的路徑,點“確定”。

            等同于如下注冊表操作:注意需要先關閉CAD

            [HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R16.2\ACAD-4001:804 \Profiles\<<未命名配置>>\General]

            "ACAD"="C:\\Documents and Settings\\用戶名\\Application Data\\Autodesk\\AutoCAD 2006\\R16.2\\chs\\support;C:\\Program Files\\AutoCAD 2006\\support;C:\\Program Files\\AutoCAD 2006\\fonts;C:\\Program Files\\AutoCAD 2006\\help;C:\\Program Files\\AutoCAD 2006\\Express;C:\\Program Files\\AutoCAD 2006\\support\\color;C:\\Program Files\\AutoCAD 2006\\myfile;"

            注意:此法每次打開一個新的文檔就會自動加載注冊表中指定的文件。

            --------------------------------------------------------------------------------------------------------------------
            關 于CAD啟動時自動加載程序的研究(五)
            附:      CAD加載命令:appload (加載VBA,Arx,Lisp), netload(加載dll),arxload(加載Arx),load(加載Lisp),autoload(加載 Lisp),autoarxload(加載Arx)

                   加載二次開發線程的方法:loadDVB(加載VBA的方法)和loadARX(加載ARX的方法)

                  用acrxLoadModule() 或AcRxDynamicLinker::loadModule() 函數,在一個ARX 應用程序里裝載另一個ARX 應用程序。這兩個函數的原型是:

            ---- int acrxLoadModule(char * moduleName, int printit);

            ---- virtual Adesk::Boolean AcRxDynamicLinker::loadModule (char * fileName, int printIt) = 0;

            ---- 其中各參數含義如下:

            ---- moduleName:待裝載的ARX 應用程序名;ARX 應用程序擴展名默認為.ARX,如果不是.ARX,則此處char * moduleName 參數必須包括應用程序擴展名。

            ---- fileName:含義與上述moduleName 相同。但是fileName 必須包括待裝載的ARX 應用程序的路徑和擴展名。

            ---- printit:取0 則不顯示裝載結果,取非0 值則顯示。當printit 取非0 值時,如裝載成功,則在AutoCAD 命令窗口顯示“Runtime Extension is already loaded.\",否則,顯示“AcRxDynamicLinker failed to load \"。

            ---- acrxLoadModule() 與AcRxDynamicLinker::loadModule 不同的是:acrxLoadModule() 從$ACAD 定義的AutoCAD 搜索路徑自動搜索待裝載的ARX 應用程序,并默認ARX 應用程序擴展名為.ARX。

                  int ads_arxload(const char *ArxAppName) 函數。在ADS 或ARX 程序里使用

            該函數可將一個ARX 模塊裝載到相應的ADS 或ARX 程序里。該函數的返回值表示裝載結果。與該函數對應的AutoLISP 函數是(arxload)。

            用ads_arxload() 和acrxLoadModule() 裝入一個ARX 應用程序的區別是:用ads_arxload() 裝入的ARX 應用程序不僅注冊成一個ADS 程序,同時還注冊成一個ARX 程序。


            --------------------------------------------------------------------------------------------------------------------
            關 于CAD啟動時自動加載程序的研究(六)
            菜單的加載:AutoCAD啟動時將自動加載默認的基本菜單文件“acad.mnu ”,其默認路徑可在“工具→選項→文件→工作支持文件搜索路徑”中查看。

            其中,后綴為mnu的是原始 ASCII 菜單文件,mnc是已編譯的菜單文件,mns是源菜單文件。

            AutoCAD啟動時會在默認路徑中按mns→mnc→mnu的順序依次查找,找到任何一類文件都可生成mnc文件并加載。如這些文件均未找到,將 彈出上述信息窗口。按“確定”進入AutoCAD后工具欄就丟失了,而且相應菜單中沒有恢復工具欄的功能。但此時命令行還可以使用,只需要輸入 “menu”命令,就會彈出一個“選擇菜單文件”窗口,找到上述任何一類菜單文件打開即可恢復工具欄。

            如果文件損壞或被刪除,可以從其它AutoCAD運行正常的計算機上拷貝一個菜單文件按同樣的方法加載。當然還可以把可正常使用的菜單文件拷貝到默 認路徑下,這樣AutoCAD將自動加載而不用我們手動設置,此時可用“options”命令進入“選項”窗口查看默認路徑。

            在加載自定義菜單時,如果通過MENU加載,就會把acad.cui趕跑了。如果想保留acad.cui(CAD默認菜單),應該用 MENULOAD來加載(局部加載),這樣兩個菜單都在,如果不用了,也可以通過這個命令來卸載。用了之后如果不卸載,退出cad之后下次啟動還會加載自 定義菜單。

            怎樣在Auto CAD 2006 加載自定義菜單文件?

            問題:我想在Auto CAD 2006 加載自定義菜單文件,不改變acad.cui的原有菜單只是在其后加一欄菜單(在"幫助"菜單POP12后加"自定義"菜單POP13)

            回答:你可以用寫字板程序打開acad.MNU文件,然后按照其格式把POP13的內容寫進去,存盤后,重新啟動ACAD就行了。如果還不行,就在 啟動ACAD后鍵入命令MENU,然后根據提示選擇ACAD.MNU。

            posted on 2010-06-22 17:09 Mike Song 閱讀(1222) 評論(0)  編輯 收藏 引用

            欧美久久综合性欧美| 久久男人Av资源网站无码软件 | 日本福利片国产午夜久久| 日本一区精品久久久久影院| 国产精品欧美亚洲韩国日本久久| 久久婷婷五月综合97色直播| 国产精品亚洲综合久久| 日日噜噜夜夜狠狠久久丁香五月 | 久久无码国产| 久久天天躁夜夜躁狠狠| 久久国产精品久久久| 伊色综合久久之综合久久| 国产韩国精品一区二区三区久久| 久久久久人妻一区精品| 久久国产乱子伦免费精品| 久久五月精品中文字幕| 久久精品国产福利国产秒| 久久人人添人人爽添人人片牛牛| 超级碰久久免费公开视频| 久久国产精品无码HDAV| 久久亚洲精品国产亚洲老地址 | 热综合一本伊人久久精品| 天堂久久天堂AV色综合 | 久久久久亚洲av无码专区 | 欧美亚洲国产精品久久高清| 久久精品嫩草影院| 69国产成人综合久久精品| 国产成人久久精品一区二区三区| 久久国产视屏| 国产99久久久国产精品~~牛| 99久久精品影院老鸭窝| 亚洲精品无码成人片久久| 国内精品人妻无码久久久影院导航| 久久综合色区| 欧美一区二区久久精品| 国产精品美女久久福利网站| 一级a性色生活片久久无少妇一级婬片免费放| 青青青伊人色综合久久| AA级片免费看视频久久| 7国产欧美日韩综合天堂中文久久久久 | 久久亚洲AV无码精品色午夜|