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

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>
            国产精品一区二区三区四区五区| 亚洲韩日在线| 国产三级精品三级| 欧美视频在线观看免费网址| 欧美xxxx在线观看| 欧美激情精品久久久久久蜜臀| 免费在线国产精品| 欧美精品1区| 国产精品久久久久国产a级| 国产精品久久久久久久久久免费 | 亚洲一区二区免费看| 夜夜嗨av一区二区三区免费区| 洋洋av久久久久久久一区| 一区二区三区免费看| 欧美电影免费观看高清| 免费观看在线综合色| 亚洲精品美女免费| 亚洲一区区二区| 久久久五月婷婷| 欧美日韩国产高清| 国产婷婷精品| 一本久久a久久免费精品不卡| 午夜久久久久| 亚洲大片精品永久免费| 亚洲午夜精品网| 免费黄网站欧美| 国产嫩草一区二区三区在线观看| 在线观看免费视频综合| 亚洲一区二区三区中文字幕| 激情成人中文字幕| 在线亚洲一区二区| 久久蜜桃香蕉精品一区二区三区| 91久久精品国产91久久性色tv| 亚洲午夜一区| 欧美激情视频网站| 亚洲丰满在线| 欧美中文字幕在线播放| 欧美激情视频一区二区三区在线播放 | 亚洲精品免费观看| 国内久久视频| 久久精品在线观看| 国产精品久久久久久久久借妻| 一区在线电影| 久久精品国产免费看久久精品| 亚洲三级视频| 免费亚洲一区二区| 久久久久久久久综合| 国产精品萝li| 亚洲午夜精品久久| 亚洲经典三级| 久久躁狠狠躁夜夜爽| 好看的av在线不卡观看| 久久久精品国产一区二区三区| 亚洲午夜精品久久久久久app| 欧美精品日韩综合在线| 亚洲精品1234| 欧美激情一区二区三区| 久久久久久婷| 一区二区三区在线免费观看| 欧美午夜欧美| 一本色道久久99精品综合| 欧美大片va欧美在线播放| 久久精品亚洲| 在线观看视频亚洲| 久久综合久久综合久久综合| 欧美一区二区三区成人| 国产欧美日韩精品在线| 欧美一区二区三区视频免费播放| 中文国产成人精品| 国产精品私房写真福利视频| 午夜日韩激情| 欧美一区二区三区在线视频| 国产午夜亚洲精品理论片色戒| 国产日韩欧美高清| 久久高清一区| 久久网站热最新地址| 亚洲国产精品久久| 最新日韩在线| 国产精品久久久久毛片软件 | 久久精品日韩欧美| 欧美专区在线观看一区| 精品盗摄一区二区三区| 欧美大片一区二区| 久久九九免费| 亚洲黄网站黄| 亚洲精品久久久久中文字幕欢迎你| 免费人成网站在线观看欧美高清| 亚洲经典视频在线观看| 日韩亚洲欧美在线观看| 国产精品视频一区二区高潮| 欧美在线视频免费| 久久综合免费视频影院| 一区二区欧美日韩视频| 亚洲一区激情| 亚洲国产精品精华液网站| 一区二区三区www| 国产亚洲欧美日韩在线一区| 亚洲人成在线免费观看| 日韩视频免费观看高清在线视频| 国产噜噜噜噜噜久久久久久久久 | 久久久久久网站| 免费在线观看成人av| 男女精品网站| 久久国产精彩视频| 欧美日韩成人免费| 久久精品卡一| 欧美日韩成人在线视频| 久久人人97超碰国产公开结果| 欧美成人嫩草网站| 欧美一级淫片播放口| 欧美精品一区在线发布| 久久综合色婷婷| 国产精品视频区| 亚洲精品久久久蜜桃| 亚洲午夜久久久久久尤物| 欧美一区二区啪啪| 一区二区三区成人| 久久嫩草精品久久久久| 国产精品一区二区三区成人| 亚洲福利专区| 狠狠色丁香婷婷综合影院 | 亚洲图片在线观看| 最新日韩欧美| 免费日韩精品中文字幕视频在线| 免费欧美日韩| 久久综合电影| 老司机精品视频网站| 国产久一道中文一区| 亚洲亚洲精品在线观看 | 亚洲在线网站| 亚洲一区二区三区四区五区午夜 | 一本大道久久精品懂色aⅴ| 美女亚洲精品| 免费在线亚洲| 在线观看成人av电影| 久久久999成人| 在线看片一区| 久久久精品五月天| 久久男人资源视频| 国产一区二区三区免费不卡 | 亚洲综合精品自拍| 欧美一区二区久久久| 18成人免费观看视频| 久久精品一区二区三区不卡| 久久久久久久综合狠狠综合| 国产日产欧美a一级在线| 欧美亚洲午夜视频在线观看| 久久免费精品视频| 亚洲国产精品久久久| 欧美激情精品久久久久久变态| 最新日韩在线| 亚洲男女自偷自拍| 国产日韩欧美| 久久亚洲捆绑美女| 亚洲人成在线播放| 亚洲欧美日韩在线| 好吊色欧美一区二区三区四区 | 久久精品国产精品亚洲| 久久久亚洲精品一区二区三区| 99精品欧美一区| 国产欧美日韩麻豆91| 亚洲综合精品自拍| 欧美在线欧美在线| 国产欧美日韩亚洲一区二区三区| 性8sex亚洲区入口| 欧美福利精品| 亚洲一区精品在线| 樱桃国产成人精品视频| 91久久久久久久久| 久久午夜色播影院免费高清| 欧美日韩在线电影| 欧美成人免费全部| 亚洲一区二区三区精品在线| 国产日韩高清一区二区三区在线| 久久国产主播| 99精品视频免费全部在线| 性伦欧美刺激片在线观看| 伊人激情综合| 欧美日韩妖精视频| 久久久久久久91| 亚洲在线一区| 亚洲国产一区二区三区高清| 午夜老司机精品| 日韩网站在线观看| 国语精品一区| 国产精品日韩一区二区三区| 欧美成人国产| 久久久精品2019中文字幕神马| 一本色道**综合亚洲精品蜜桃冫| 蜜臀av国产精品久久久久| 香蕉久久夜色| 亚洲一区二区三区乱码aⅴ蜜桃女| 久久全国免费视频| 亚洲欧美另类在线观看| 亚洲乱码国产乱码精品精天堂 | 亚洲视频狠狠| 亚洲激情一区二区三区| 一区在线播放视频| 国产三级欧美三级| 亚洲大胆人体视频|