• <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, 評(píng)論 - 21, 引用 - 0
            數(shù)據(jù)加載中……

            各種Arx后續(xù)美化小結(jié)

            ARX給CAD發(fā)送命令的幾種方法

            • ads_queueexpr( _T("(command\"_POINT\" \"1,1,0\")") );該函數(shù)CAD未公開,使用時(shí)提前聲明下就可以了。可以參考幫助文件中:Tips and Techniques
            • acDocManager->sendStringToExecute(curDoc(), _T("_POINT 2,2,0\n "));該函數(shù)在Arx幫助中有詳細(xì)說明。
            • 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 ") );

            }

             

             

            調(diào)用自定義命令:

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

             

             

            AuToCAD啟動(dòng)自定義加載程序研究(轉(zhuǎn))

            默認(rèn)分類 2010-03-24 13:19:18 閱讀121 評(píng)論0 字號(hào):

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

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

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

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

                   acad2006doc.lsp (AutoCAD使用)

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

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

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

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

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

                   acad.mnl (AutoCAD菜單文件)

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

                  acetmain.mnl (Express Tools菜單)

                  使用“對(duì)話框方式”加載的文件

                  s::startup (自動(dòng)執(zhí)行函數(shù),可用于自定義狀態(tài)欄等)

            注冊(cè)表法加載順序未知。

            注意:

            1.如果acad.lsp、acaddoc.lsp或MNL文件中包含自定義函數(shù)S::STARTUP,那么,創(chuàng)建新圖形或打開現(xiàn)有圖形時(shí)就會(huì)調(diào)用 這個(gè)函數(shù)。因此,在 LISP啟動(dòng)文件中添加S::STARTUP函數(shù)定義,就可以執(zhí)行全部所需的安裝操作。如果需要關(guān)于“S::STARTUP”函數(shù)的詳細(xì)信息,請(qǐng)參閱 “AutoCAD 2000 Customization Guide”的第六章。

            2.默認(rèn)情況下,acad.lsp 僅在啟動(dòng) AutoCAD 時(shí)加載一次,而 acaddoc.lsp 可隨每個(gè)文檔(或圖形)一起加載。這樣可使用戶將加載 acad.lsp 文件和啟動(dòng)應(yīng)用程序相關(guān)聯(lián),將 acaddoc.lsp 文件和文檔或圖形啟動(dòng)相關(guān)聯(lián)。通過更改 ACADLSPASDOC 系統(tǒng)變量的設(shè)置,可以修改加載這些啟動(dòng)文件的默認(rèn)方法。在CAD2006中,第一次新建圖形時(shí),也會(huì)出現(xiàn)對(duì)話框詢問:acad.lsp是僅在啟動(dòng) AutoCAD 時(shí)加載一次,還是隨每個(gè)文檔(或圖形)一起加載。

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

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

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

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

            比如:你定義了一系列自己編制的lisp程序并放在acad.lsp文件中,但該acad.lsp放在CAD安裝目錄中。當(dāng)“支持文件搜索路徑”所 包含的文件夾中,由于未知原因出現(xiàn)了一個(gè)與你自定義的acad.lsp文件不同的acad.lsp文件時(shí), 你自定義的acad.lsp文件就不會(huì)被加載。解決的辦法是將后加載的acad.lsp文件刪除或用自己定義的acad.lsp替換放后加載的 acad.lsp文件,或?qū)⒆约憾x的acad.lsp放在更靠后加載的目錄中。

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

            知道AutoCAD 2000啟動(dòng)時(shí)各個(gè)文件加載的順序,可能就會(huì)明白一個(gè)文件對(duì)另一個(gè)文件的影響。例如,已經(jīng)在從acad.lsp文件加載的LISP程序中定義了一個(gè)函數(shù), 但是在啟動(dòng)AutoCAD 2000后,這個(gè)函數(shù)卻不工作。這是因?yàn)閍caddoc.lsp是在acad.lsp文件之后加載,此函數(shù)已經(jīng)被acaddoc.lsp文件重新定義了。

            l         加載的dll文件同名但dll里的函數(shù)不同名,dll不會(huì)相互覆蓋。


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

            acad.lsp或acaddoc.lsp文件內(nèi)容:

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

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

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

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

            c.修改你的菜單組對(duì)應(yīng)的同名的MNL文件,里面加入加載代碼。

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

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

            缺點(diǎn):

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

            b.如果使用acad.lsp,新建文檔時(shí)出現(xiàn):“是否讀入每個(gè)圖形時(shí)都加載“acad.lsp”的提示。

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

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

            "NumStartup"="1"   //啟動(dòng)組加載的項(xiàng)目數(shù)
            "1Startup"="C:\\Program Files\\AutoCAD 2006\\222.lsp"

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

            注意:

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

            b.此方法每次打開一個(gè)新的文檔就會(huì)自動(dòng)加載啟動(dòng)組中指定的文件。

            c.(網(wǎng)友發(fā)言)加到啟動(dòng)組里面有時(shí)候不能加載,尤其是打開新圖的時(shí)候。

            --------------------------------------------------------------------------------------------------------------------
            3. 注冊(cè)表法:(注意:檢查L(zhǎng)OADER的路徑是否正確)

            在注冊(cè)表加入如下項(xiàng)值:

            [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為后綴的動(dòng)態(tài)鏈接庫文件;托管的ARX程序是指由.net程序(C#,C++.net或VB.net)編 譯的以.dll為后綴的動(dòng)態(tài)鏈接庫文件。托管的程序和非托管的程序相比,只要多創(chuàng)建一個(gè)“MANAGED”鍵,并設(shè)為Ox01,告訴CAD這是托管程序即 可。VBA,lisp的注冊(cè)表加載法參見“2. 對(duì)話框方式”。

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

            0x01:Load the application upon detection of proxy object.
               當(dāng)代理對(duì)像 被控知時(shí)另載相應(yīng)ARX程序.

            0x02:Load the application upon AutoCAD startup.
               當(dāng)AutoCAD啟動(dòng)時(shí)加載相應(yīng) ARX程序.

            0x04:Load the application upon invocation of a command.
               當(dāng)輸入命令時(shí)加 載相應(yīng)ARX程序.

            0x08:Load the application upon request by the user or another application.
               當(dāng)有用戶或別的程序請(qǐng)求時(shí)加載相應(yīng)ARX程序.

            0x10:Do not load the application.
               從不加載該應(yīng)用程序.

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

            c. 當(dāng)my。dll中有命令時(shí),還需要添加一個(gè)子鍵:

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

            "StartmyApp"="StartmyApp"

            -StartmyApp 是你程序中一個(gè)有效的命令。

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

            Public Sub StartmyApp()

            .....

            End Sub

            然后在ACAD.LSP, ACAD.MNL, 或其他自動(dòng)載入的文件里調(diào)用StartmyApp命令。

            優(yōu)點(diǎn):只要項(xiàng)鍵值不同就不會(huì)被覆蓋,所以建議鍵名使用gid。


            ---------------------------------------------------------------------------------------------------------------------
            于 CAD啟動(dòng)時(shí)自動(dòng)加載程序的研究(四)
            4.子進(jìn)程法:將二次開發(fā)的程序做成EXE程序。啟動(dòng)該程序會(huì)自動(dòng)啟動(dòng)CAD子進(jìn)程,關(guān)閉程序時(shí)可以關(guān)閉 CAD子進(jìn)程。

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

            6.配置文件法:可以把自己配置的AUTOCAD啟動(dòng)時(shí)加載的東西,保存成一個(gè)的配置文件。然后在AUTOCAD啟動(dòng)快捷方式中用參數(shù): /p 你的配置文件名。這樣就可以在啟動(dòng)的時(shí)候加載自己的CAD環(huán)境。


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


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

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

            等同于如下注冊(cè)表操作:注意需要先關(guān)閉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;"

            注意:此法每次打開一個(gè)新的文檔就會(huì)自動(dòng)加載注冊(cè)表中指定的文件。

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

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

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

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

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

            ---- 其中各參數(shù)含義如下:

            ---- moduleName:待裝載的ARX 應(yīng)用程序名;ARX 應(yīng)用程序擴(kuò)展名默認(rèn)為.ARX,如果不是.ARX,則此處char * moduleName 參數(shù)必須包括應(yīng)用程序擴(kuò)展名。

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

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

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

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

            該函數(shù)可將一個(gè)ARX 模塊裝載到相應(yīng)的ADS 或ARX 程序里。該函數(shù)的返回值表示裝載結(jié)果。與該函數(shù)對(duì)應(yīng)的AutoLISP 函數(shù)是(arxload)。

            用ads_arxload() 和acrxLoadModule() 裝入一個(gè)ARX 應(yīng)用程序的區(qū)別是:用ads_arxload() 裝入的ARX 應(yīng)用程序不僅注冊(cè)成一個(gè)ADS 程序,同時(shí)還注冊(cè)成一個(gè)ARX 程序。


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

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

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

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

            在加載自定義菜單時(shí),如果通過MENU加載,就會(huì)把a(bǔ)cad.cui趕跑了。如果想保留acad.cui(CAD默認(rèn)菜單),應(yīng)該用 MENULOAD來加載(局部加載),這樣兩個(gè)菜單都在,如果不用了,也可以通過這個(gè)命令來卸載。用了之后如果不卸載,退出cad之后下次啟動(dòng)還會(huì)加載自 定義菜單。

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

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

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

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


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久国产美女免费观看精品 | 亚洲成人精品久久| 99久久中文字幕| 99久久精品国产一区二区| 日本久久中文字幕| 久久99久国产麻精品66| 国产一久久香蕉国产线看观看| 91精品观看91久久久久久| 久久人妻无码中文字幕| 国产一级持黄大片99久久| 亚洲欧洲精品成人久久奇米网| 久久综合狠狠综合久久| 久久夜色撩人精品国产小说| 国内精品伊人久久久影院| 久久91精品国产91久久麻豆| 久久综合九色欧美综合狠狠| 久久国产亚洲精品麻豆| 久久人妻无码中文字幕| 久久精品无码一区二区三区日韩| 人人狠狠综合久久88成人| 久久久久亚洲?V成人无码| 精品永久久福利一区二区| 午夜精品久久久久| 国产精品热久久无码av| 狠狠色丁香久久婷婷综合五月| 久久亚洲精品国产精品婷婷| 久久AAAA片一区二区| 久久精品免费一区二区三区| 中文国产成人精品久久不卡| 欧美久久一区二区三区| 久久久艹| 久久夜色精品国产www| 久久久WWW成人免费毛片| 精品久久久久久无码人妻热| 久久综合丝袜日本网| 青青青伊人色综合久久| 国产精品岛国久久久久| 久久狠狠色狠狠色综合| 国产成人久久精品麻豆一区 | 国内精品久久久久久久coent| 久久超乳爆乳中文字幕|