青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

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 閱讀(1236) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲欧洲av一区二区| 久久经典综合| 久久天堂成人| 快播亚洲色图| 亚洲区欧美区| 亚洲激情自拍| 亚洲精品免费在线播放| 日韩视频不卡中文| 亚洲综合日本| 麻豆国产va免费精品高清在线| 久久午夜激情| 欧美久久九九| 国产欧美三级| 日韩视频在线播放| 亚洲电影自拍| 影音先锋日韩有码| 亚洲精品综合精品自拍| 亚洲欧美综合v| 欧美1区3d| 亚洲午夜未删减在线观看| 久久成人国产精品| 老司机精品久久| 欧美日韩午夜视频在线观看| 国产亚洲欧美另类一区二区三区| 在线免费观看视频一区| 亚洲夜间福利| 美女精品一区| 一区二区精品在线| 老色鬼精品视频在线观看播放| 欧美日韩国产另类不卡| 国产亚洲欧美日韩一区二区| 一本久久综合亚洲鲁鲁五月天| 久久久久久999| 亚洲人成久久| 久久精品视频网| 国产乱码精品| 亚洲欧美日韩在线播放| 亚洲国产精品成人久久综合一区 | 亚洲综合色网站| 麻豆国产精品va在线观看不卡| 亚洲国产精品一区二区久| 欧美一区视频在线| 国产精品任我爽爆在线播放| 一本久道久久综合中文字幕| 欧美11—12娇小xxxx| 午夜一区二区三区在线观看| 欧美性猛交xxxx乱大交退制版| 国际精品欧美精品| 午夜亚洲福利在线老司机| 亚洲精品女av网站| 久久精品观看| 国产欧美一区视频| 日韩视频在线观看一区二区| 欧美与黑人午夜性猛交久久久| 亚洲无吗在线| 国产精品三级视频| 欧美一区二区三区视频在线观看| 亚洲激情av| 欧美国产精品va在线观看| 一区二区在线观看av| 久久国产精品亚洲77777| 99精品视频免费观看| 欧美高清在线视频| 亚洲国产欧美一区二区三区久久| 久久久久.com| 欧美一区二区精品| 欧美亚州韩日在线看免费版国语版| 日韩亚洲欧美精品| 亚洲欧洲精品一区二区三区| 欧美电影在线免费观看网站 | 亚洲国产精品激情在线观看| 新67194成人永久网站| 国产精品视频免费观看| 午夜在线视频一区二区区别| 9久re热视频在线精品| 男女精品视频| 夜夜精品视频一区二区| 日韩视频三区| 国产欧美精品一区二区三区介绍| 亚洲区欧美区| 一区二区不卡在线视频 午夜欧美不卡在| 欧美激情一区二区三区在线视频 | 亚洲女人天堂av| 亚洲欧美国产高清| 精品88久久久久88久久久| 欧美99久久| 欧美日韩亚洲高清一区二区| 欧美在线观看网址综合| 久久综合影视| 亚洲女同精品视频| 久久青草福利网站| 亚洲性视频网站| 久久久不卡网国产精品一区| 99成人在线| 久久国产婷婷国产香蕉| 日韩一级精品| 亚洲一区免费在线观看| 亚洲黄色在线视频| 亚洲影音先锋| 日韩视频一区| 久久久久久久久久看片| 一本色道久久综合| 欧美一区在线视频| 中国成人亚色综合网站| 久久精品午夜| 欧美在线黄色| 欧美午夜视频一区二区| 蜜臀久久99精品久久久久久9 | 亚洲私拍自拍| 久久综合狠狠| 久久久精品一区| 国产精品普通话对白| 最新国产成人在线观看| 海角社区69精品视频| 在线中文字幕一区| 99视频在线精品国自产拍免费观看| 欧美一区二区三区四区在线观看 | 91久久在线| 136国产福利精品导航网址应用| 亚洲一区国产视频| 亚洲在线播放电影| 欧美日韩午夜精品| 亚洲人成欧美中文字幕| 亚洲福利视频二区| 久久精品国产免费| 久久福利精品| 国产午夜精品一区二区三区欧美| 亚洲激情另类| 欧美一区二区三区免费在线看| 欧美激情中文不卡| 欧美大片在线看| 亚洲高清在线精品| 久久免费精品日本久久中文字幕| 久久激情中文| 国内自拍一区| 久久久久久尹人网香蕉| 蜜臀av性久久久久蜜臀aⅴ| 伊甸园精品99久久久久久| 久久福利一区| 欧美大片91| 日韩一级精品视频在线观看| 欧美激情亚洲综合一区| 亚洲精品在线视频| 亚洲淫性视频| 国产欧美日韩激情| 久久精品国产亚洲一区二区| 免播放器亚洲| 日韩视频久久| 国产精品美女午夜av| 欧美一区二区三区视频免费播放 | 日韩网站免费观看| 一区二区电影免费观看| 欧美日韩一区二区三区在线视频| 亚洲免费福利视频| 亚洲一区www| 国产亚洲aⅴaaaaaa毛片| 久久久久国产精品www| 欧美韩国一区| 亚洲欧美韩国| 激情国产一区二区| 欧美成人日韩| 亚洲视频一二| 免费日本视频一区| 亚洲一区图片| 在线观看不卡| 国产精品va| 久久久久中文| 一本色道久久88综合日韩精品| 久久福利毛片| 一区二区三区高清| 国内精品伊人久久久久av影院| 欧美大片在线看免费观看| 亚洲一区欧美| 亚洲高清免费视频| 欧美影院午夜播放| 日韩一区二区精品在线观看| 国产欧美va欧美不卡在线| 欧美韩日高清| 久久国产精品亚洲77777| 日韩亚洲欧美成人| 牛牛国产精品| 欧美在线视频a| 亚洲视频在线观看一区| 亚洲国产成人av| 国产一区二区视频在线观看| 欧美区在线播放| 久久伊伊香蕉| 欧美自拍偷拍午夜视频| 一本到12不卡视频在线dvd| 欧美成人三级在线| 久久精品导航| 性做久久久久久久久| 一区二区三欧美| 亚洲人成网站777色婷婷| 国产综合色产在线精品| 国产精品嫩草99av在线| 国产精品久久久久久久午夜| 99国内精品| 亚洲激情在线观看| 国产在线拍偷自揄拍精品|