arx
arx
AcApDocManager對象是所有文件對象的容器(對於每一個打開的且正在編輯的圖形文件都有一個文件對象)。使用宏名為acDocManager的宏可以取得唯一的實例。
AcApDocManager類
繼承自
AcRxObject
Include 文件
Acdocman.h
參見
AcApDocument, AcApDocManagerReactor, AcApDocumentIterator
成員
AcApDocManager函數
AcApDocManager::activateDocument函數
virtual Acad::ErrorStatus
activateDocument(
AcApDocument* pAcTargetDocument,
bool bPassScript = false) = 0;
pAcTargetDocument | 指向要轉移至的目標文件的輸入指針 |
bPassScript | 輸入布爾值,表示在轉移至另一文件時是否要繼續執行腳本 |
這個函數作用是從當前的 文件中轉移至另一文件中。這個函數不會掛起在應用程序下執行的代碼。如果是一個正常或空閑的狀態則調用者被掛起。如果bPassScript值為Adesk::kTrue,則已經調用了執行改變文件的命令的腳本將繼續執行。這個參數允許一個腳本跨文件運行。
AcApDocManager::addReactor函數
virtual void
addReactor(
AcApDocManagerReactor* unnamed) = 0;
unnamed | 輸入增加的AcApDocManagerReactor對象 |
這個函數向文件管理器中增加一個AcApDocManagerReactor對象。
AcApDocManager::appContextNewDocument函數
virtual Acad::ErrorStatus
appContextNewDocument(
const char * pszTemplateName) = 0;
pszTemplateName | 輸入新建圖形文件時要使用的圖形模板名稱或URL地址 |
這個函數允許同步訪問“新建”圖形文件的操作,只能在應用程序中調用。
AcApDocManager::closeDocument函數
virtual Acad::ErrorStatus
closeDocument(
AcApDocument* pAcTargetDocument) = 0;
pAcTargetDocument | 有效的AcApDocument對象的輸入指針 |
這個函數關閉pAcTargetDocument所指定的 文件。若輸入文件不是當前文件,則當前文件仍具有控制權;若輸入文件是當前文件,則在這個函數返回之前文件的執行環境就被終止,並且終止正常的命令。
AcApDocManager::curDocument函數
virtual AcApDocument *
curDocument() const = 0;
這個函數返回含有當前環境的文件。關聯的函數mdiAcitveDocument(),返回MDI的活動文件。curDocument() 和mdiActiveDocument()可以不同。可以調用curDocument()使一個文件成為當前文件而實際上不激活它。在臨時的當前文件下完成acDbDAtabase操作后,調用setCurDocument(acDocManager->mdiActiveDocument())重新設置MDI的活動文件為當前的文件。
AcApDocManager::disableDocumentActivation函數
virtual Acad::ErrorStatus
disableDocumentActivation() = 0;
這個函數將禁止用戶轉移至另一文件中。結束后,應用程序必須重新激活(使用AcApDocManager::enableDocumentActivation)。當一個應用程序命令執行的時間較長時就可以使用這個函數。
若已經處於無效模式則返回一個錯誤,否則,返回Acad::eOk。
AcApDocManager::document函數
virtual AcApDocument *
document(
AcDbDatabase* unnamed) const = 0;
unnamed | 一個AcDbDatabase對象的輸入指針 |
這個函數返回含有輸入的資料庫的文件。所有的資料庫都在ObjectARX中建立,當前的數據和任何一個載入的Xref資料庫都擁有一個和它們關聯的文件。由ObjectARX應用程序建立的資料庫將會自動和建立它們的環境文件關聯。那麼資料庫中就會記錄這個文件的Undo(撤消)信息。同時對資料庫中的對象必須使用這個文件的Transaction Manager(事務管理器)。
AcApDocManager::documentCount函數
virtual int
documentCount() const = 0;
這個函數返回當前開啟的文件個數。
AcApDocManager::enableDocumentActivation函數
virtual Acad::ErrorStatus
enableDocumentActivation() = 0;
這個函數將允許用戶轉移至另一文件中。這個函數用於重新激活調用AcApDocManager::disableDocumentActivation后。
若已經處於無效模式則返回錯誤,否則,返回Acad::eOk。
AcApDocManager::inputPending函數
virtual int
inputPending(
AcApDocument* pAcTargetDocument) = 0;
pAcTargetDocument | 指向您要查詢的是否有未完成的輸入的文件的指針 |
這個函數將指定文件的輸入緩衝器的狀態,只和AcApDocManager::sendStringToExecute函數聯合使用。
返回待處理的特性的數值。返回0表示沒有未完成的輸入,返回-1表示錯誤。
AcApDocManager::isDocumentActivationEnabled函數
virtual bool
isDocumentActivationEnabled() = 0;
這個函數顯示作用中的文件是否為激活狀態。
若為激活狀態則返回true,否則,返回false。
AcApDocManager::lockDocument函數
virtual Acad::ErrorStatus
lockDocument(
AcApDocument* pDoc,
AcAp::DocLockMode unnamed = AcAp::kWrite,
const char* pGlobalCmdName = NULL,
const char* pLocalCmdName = NULL,
bool prompt = true) = 0;
pDoc | 輸入要被鎖定的文件 |
unnamed | 從AcAp::DocLockMode enum(枚舉)輸入的鎖定模式 |
pGlobalCmdName | 輸入命令名稱。每次鎖定一個文件都被認為是在acad中另一命令或動作的開始。這個名稱由doc管理器反應器返回當作鎖定命令的名稱,可以為NULL |
pLocalCmdName | 輸入當命令未執行完時顯示在命令行的名稱,可以為NULL |
prompt | 輸入的提示。由於正對目標文件執行某一命令,文件未被鎖定,如果提示為True,就會顯示標準的提示符,讓用戶完成目標文件的操作並鎖定文件。如果用戶選擇取消鎖定或提示為False,則鎖定失敗並返回eLockConflict |
這個函數用於為了鎖定文件以訪問文件資源。文件資源含有和文件關聯的所有AcDbDatabases對象、資料庫中的AcDbObject對象和所有的AcDbDatabase常駐系統變數。文件資源也含有所有的基於文件的系統變數以及和文件關聯的Transaction Manager(事務管理器)。在AcDb::kForRead中的打開AcDbObject或取得系統變數,不必鎖定文件,也不必取得系統變數。
注意:kForRead為只讀型。
通常應用程序不必總是鎖定或解鎖當前文件。以addCommand() 或 aceddefun()註冊的命令,開始執行時會鎖定文件,完成後會解除鎖定。可以使用addCommand()函數標籤控制。
返回值:
Acad::eOk | 鎖定成功 |
Acad::eLockChangeInProgress | 如果鎖定文件的請求是由文件鎖定切換反應器的回調發出,則不能“嵌套”鎖定的請求 |
Acad::eVetoed | 切換鎖定被另一應用程序禁止 |
Acad::eNoDocument | pDoc為NULL |
AcApDocManager::mdiActiveDocument函數
virtual AcApDocument *
mdiActiveDocument() const = 0;
這個函數返回MDI的活動文件。關聯的函數mdiAcitveDocument(),返回含有當前環境的 文件。curDocument() 和mdiActiveDocument()可以不同。您可以調用curDocument()使一個文件成為當前文件而實際上不激活它。在臨時的當前文件下完成acDbDAtabase操作后,調用setCurDocument(acDocManager->mdiActiveDocument())重新設置MDI的活動文件為當前的文件
AcApDocManager::newAcApDocumentIterator函數
virtual AcApDocumentIterator *
newAcApDocumentIterator() = 0;
返回指向AcApDocumentIterator對象的新的指針。
AcApDocManager::newDocument函數
virtual Acad::ErrorStatus
newDocument() = 0;
這個函數使用標準的用戶互動式界面建立一個新的文件。
注意:文件的建立會掛起活動文件的環境。
AcApDocManager::openDocument函數
virtual Acad::ErrorStatus
openDocument() = 0;
這個函數使用標準的用戶互動式界面打開一個文件。
AcApDocManager::popResourceHandle函數
virtual void
popResourceHandle() = 0;
這個函數使堆棧頂部的資源文件句柄成為當前的,並將它從堆棧中刪除。
AcApDocManager::pushAcadResourceHandle函數
virtual void
pushAcadResourceHandle() = 0;
這個函數把當前源句柄壓入當前文件的源句柄堆棧中並使AutoCAD源文件成為當前的。
AcApDocManager::pushResourceHandle函數
virtual void
pushResourceHandle(
HINSTANCE hNewResourceHandle) = 0;
hNewResourceHandle | 輸入指定句柄作為當前的 |
這個函數把當前源句柄壓入當前文件的源句柄堆棧並使指定句柄成為當前的。
AcApDocManager::removeReactor函數
virtual void
removeReactor(
AcApDocManagerReactor* unnamed) = 0;
unnamed | 輸入要刪除的AcApDocManagerReactor對象 |
這個函數從文件管理器中刪除指定的AcApDocManagerReactor對象。
AcApDocManager::sendStringToExecute函數
virtual Acad::ErrorStatus
sendStringToExecute(
AcApDocument* pAcTargetDocument,
const char * pszExecute,
bool bActivate = true,
bool bWrapUpInactiveDoc = false,
bool bEchoString = true) = 0;
pAcTargetDocument | 要將輸入傳送至的文件 |
pszExecute | 用於輸入的字元串 |
bActivate | 布爾值,表示是否激活目標文件 |
bWrapUpInactiveDoc | 布爾值,表示在轉換活動文件時,是否在下一個OnIdle()中等待當前活動文件完成 |
bEchoString | 布爾值,表示是否在命令行中顯示的字元串 |
這個函數在命令行中輸入一字元串並在給定的目標文件中執行。
AcApDocManager::setCurDocument函數
virtual Acad::ErrorStatus
setCurDocument(
AcApDocument* pDoc,
AcAp::DocLockMode unnamed = AcAp::kNone,
bool activate = false) = 0;
pDoc | 輸入臨時作為當前的文件 |
unnamed | 輸入需要鎖定的文件的類型。預設值為空。 |
activate | 輸入的布爾值,表示是否激活文件。預設值為:false或不激活文件 |
這個函數允許在應用程序環境下運行一外部應用程序使一個文件成為當前文件而實際上不激活它。這個當前狀態只有在調用這個API函數的環境時有效。這樣可以安全地操作文件數據而實際上使文件不處於最上層或激活狀態。預設的鎖定模式參數和活動狀態允許鎖定和激活文件。這是允許用單一的API函數和調用單獨的API函數完成多個步驟的捷徑。
如果調用acDocManager->setCurDocument(pDoc, AcAp::kWrite),就可以有效地設置當前文件並鎖定它。一旦完成對文件的操作,則必須將它解鎖,可以調用acDocManager->unlockDocument(pDoc)進行解鎖。
AcApDocManager::setDefaultFormatForSave函數
virtual Acad::ErrorStatus
setDefaultFormatForSave(
AcApDocument::SaveFormat format) = 0;
format | 輸入保存圖形時使用的預設文件格式 |
這個方法在用SAVEAS(另存為)、SAVE(保存)和QSAVE(快速保存)命令保存一個圖形時使用SaveFormat值中的一種來設置文件的使用格式。這裡設置了工作區間範圍的默認值,然而對於一個文件,用戶可以臨時選擇另外一個值使用。
可能的AcApDocument枚舉SaveFormat(保存格式)如下:
名稱 | 值 | 用途 (文件擴展名) |
kR12_dxf | 1 | AutoCAD R12/LT2 DXF (*.dxf) |
kR13_dwg | 4 | AutoCAD R13/LT95 Drawing (*.dwg) |
kR13_dxf | 5 | AutoCAD R13/LT95 DXF (*.dxf) |
kR14_dwg | 8 | AutoCAD R14/LT97 Drawing (*.dwg) |
kR14_dxf | 9 | AutoCAD R14/LT97 DXF (*.dxf) |
kR15_dwg | 12 | AutoCAD R15 Drawing (*.dwg) |
kR15_dxf | 13 | AutoCAD R15 DXF (*.dxf) |
kR15_Template | 14 | AutoCAD 2000 Drawing Template File (*.dwt) |
kNative | kR15_dwg | 當前DWG版本是AutoCAD 2000 |
kUnknown | -1 | 無效格式 |
這個方法可以由用戶輸入互動式命令直接設置文件格式。如果每次保存資料庫時,希望將您的應用程序用當前的保存格式保存,您首先需要調用AcApDocument::formatForSave(),再用返回的SaveFormat值決定調用哪個函數。例如:如果formatForSave()返回kR14_dxf,則調用acdbDxfOutAsR14()將資料庫寫為Release14的DXF文件。
小結:
● 您和您的用戶都可以設置一個永久的工作區間範圍的保存默認值,這個默認值將用於所有保存命令,除了AUTOSAVE(自動保存)。
● 只有用戶可以臨時(在工作區間中並不持久)為特定的文件選擇這項設置。
● formatForSave()方法返回用戶需要的一個文件保存的格式,它可以是永久的工作區間範圍的默認值或臨時選擇的值。
AcApDocManager::unlockDocument函數
virtual Acad::ErrorStatus
unlockDocument(
AcApDocument* pDoc) = 0;
pDoc | 輸入要被解鎖的文件 |
這個函數用於解鎖之前被鎖定的一個文件。除了kAutoWrite鎖定模式,所有用lockDocument()鎖定的文件必須配合相應的unlockDocument()調用進行解鎖。除非首先成功調用了lockDocument(),否則不能調用unlockDocument()。不能調用unlockDocument()解鎖kAutoWrite模式。
注意:kProtectedAutoWrite是kAutoWrite的一種特殊形式。只有在不知道鎖定何時被解鎖時才使用kAutoWrite模式鎖定。它們會在下一次鎖定中自動解鎖。然而,如果存在鎖定不能被嵌套的鎖定請求解鎖的一段時間,則使用kProtectedAutoLock。當沒有嵌套鎖定的危險時,可以調用unlockDocument()。此時kProtectedAutoWrite降級為一個普通的kAutoWrite鎖定。
如果解鎖成功,則返回Acad::eOk。
如果pDoc 是NULL,則返回Acad::eNoDocument。
如果鎖定文件的請求是由文件鎖定切換反應器的回調發出,則返回Acad::eLockChangeInProgress。不能“嵌套”鎖定的請求。
如果還沒有鎖定文件,則返回Acad::eLockViolation。
AcApDocManagerReactor類
這個類為文檔管理的多種事件提供通知。
繼承自
AcRxObject
包含文件
Acdocman.h
成員
AcApDocManagerReactor函數
AcApDocManagerReactor::documentActivated函數
virtual void
documentActivated(
AcApDocument* pActivatedDoc);
pActivatedDoc | 指針指向的活動文檔 |
這個通知在文檔被激活且其環境成功地切換時發出。
注意:存在標準用戶交互作用如documentToBeActivated()之外的文檔被激活的情況。
AcApDocManagerReactor::documentActivationModified函數
virtual void
documentActivationModified(
bool bActivation);
bActivation | true:文檔是激活的,false:文檔不是激活的 |
這個通知在調用disableDocumentActivation()或enableDocumentActivation()導致激活狀態發生變化時發出。
AcApDocManagerReactor::documentBecameCurrent函數
virtual void
documentBecameCurrent(
AcApDocument* unnamed);
unnamed | 指針指向剛成為當前的活動文檔 |
這個通知在當前文檔轉換時發出。這不能與文檔獲取焦點或激活混淆。同一文檔中可以獲取或失去焦點,或成為激活或不激活。這個通知只有在文檔激活時發出,且不同於前一個活動文檔。
AcApDocManagerReactor::documentCreateCanceled函數
virtual void
documentCreateCanceled(
AcApDocument* pDocCreateCancelled);
pDocCreateCancelled | 指針指向剛取消的文檔 |
這個通知在用戶取消文檔的建立時發出。通知只有在MDI多文檔模式和documentCreateStarted()返回后才發出。
AcApDocManagerReactor::documentCreated函數
virtual void
documentCreated(
AcApDocument* pDocCreating);
pDocCreating | 指針指向剛建立的文檔 |
這個通知在建立一個新的AcApDocument時發出。它不和資料庫鏈接。當開始新建一個文檔時,應用程序可以使用在acrxEntryPoint()中的新信息確定,儘管這種方法有一指針指向新的AcApDocument。
AcApDocManagerReactor::documentCreateStarted函數
virtual void
documentCreateStarted(
AcApDocument* pDocCreating);
pDocCreating | 指針指向正在建立的文檔 |
這個通知在文檔第一次示例和無資料庫訪問時發出。
AcApDocManagerReactor::documentDestroyed函數
virtual void
documentDestroyed(
const char* fileName);
fileName | 被消除文檔的文件名 |
這個通知在文檔被完全消除且與文檔對應的基本資料庫也被刪除時發出。
AcApDocManagerReactor::documentLockModeChanged函數
virtual void
documentLockModeChanged(
AcApDocument* unnamed,
AcAp::DocLockMode myPreviousMode,
AcAp::DocLockMode myCurrentMode,
AcAp::DocLockMode currentMode,
const char* pGlobalCmdName);
unnamed | 輸出鎖定模式已改變的文檔 |
myPreviousMode | 輸出鎖定模式變化前的最高級鎖定模式 |
myCurrentMode | 輸出當前執行環境的新的最高級鎖定模式 |
currentMode | 輸出在文檔中鎖定的所有執行環境的新的最高級鎖定模式 |
pGlobalCmdName | 輸出啟用改變鎖定模式的原始命令的名稱。如果是解鎖命令,應加上前綴‘#’。它可能會使命令名稱失效,在這種情況下,只有‘#’本身是解鎖命令。 |
這個通知在一個鎖定已確定或在文檔中已刪除時發出。您可以區分鎖定或解鎖命令,解鎖命令在命令名稱前總帶有前綴‘#’。鎖定可以被禁止,但解鎖不能。
AcApDocManagerReactor::documentLockModeChangeVetoed函數
virtual void
documentLockModeChangeVetoed(
AcApDocument* unnamed,
const char* pGlobalCmdName);
unnamed | 輸出鎖定被禁止的文檔 |
pGlobalCmdName | 輸出鎖定已被禁止的原始命令的名稱 |
要求在文檔中建立鎖定的請求可通過反應器接受documentLockModeChanged()回調來禁止。如果這種情況發生,則接受這個回調的所有的反應器均知道請求被禁止,儘管在禁止之前不是所有的反應器都接受了documentLockModeChanged()回調。
AcApDocManagerReactor::documentLockModeWillChange函數
virtual void
documentLockModeWillChange(
AcApDocument* unnamed,
AcAp::DocLockMode myCurrentMode,
AcAp::DocLockMode myNewMode,
AcAp::DocLockMode currentMode,
const char* pGlobalCmdName);
unnamed | 輸出鎖定模式即將改變的文檔 |
myCurrentMode | 輸出當前執行環境的最高級鎖定模式 |
myNewMode | 輸出當新的鎖定被確定時用於當前執行環境的新的最高級鎖定模式 |
currentMode | 輸出含有文檔當前鎖定的所有執行環境的新的最高級鎖定模式 |
pGlobalCmdName | 輸出將要改變鎖定模式的原始命令的名稱。如果是解鎖命令,應加上前綴‘#’。 |
這個通知在文檔改變所有鎖定之前發出。它不能被禁止。
AcApDocManagerReactor::documentToBeActivated函數
virtual void
documentToBeActivated(
AcApDocument* pActivatingDoc);
pActivatingDoc | 指針指向即將被激活的AcApDocument |
這個通知在文檔即將被激活時發出。
AcApDocManagerReactor::documentToBeDeactivated函數
virtual void
documentToBeDeactivated(
AcApDocument* pDeActivatedDoc);
pDeActivatedDoc | 指針指向即將被解除激活的AcApDocument |
這個通知在文檔即將被解除激活時發出。
AcApDocManagerReactor::documentToBeDestroyed函數
virtual void
documentToBeDestroyed(
AcApDocument* pDocToDestroy);
pDeActivatedDoc | 指針指向即將被刪除的文檔 |
這個通知在開始刪除文檔時發出。
AcApDocManagerReactor::veto函數
Acad::ErrorStatus
veto();
如果documentLockModeChanged()是一個鎖定請求的回調,則這個函數可以在這個documentLockModeChanged()的回調期間調用。調用這個函數的結果會使鎖定請求被禁止,這通常意味著在開始執行鎖定命令之前取消命令。當調用這個函數時,documentLockModeChangeVetoed()將發出通知。
如果在其它回調期間或是在解鎖請求時調用此函數,將返回eNotApplicable。
為了滿足函數調用接收者需要在決定是否要vote(禁止)之前對文件進行一些修改,在documentLockModeChanged()期間此函數只能為激活。通過等待發生修改的回調,文件將在具有禁止能力時被當前鎖定。這是必要的,因為從這些回調的任何一個中都不能改變文檔的鎖定狀態。
ARX-7是以M9 Gernsback為原型,米斯里魯投入所有黑科技之試作機體,作品中米斯里魯唯一擁有搭載λ-Driver之AS。
由於是以當時仍在開發中的M9為原型進行製作,因此在機體基礎系統設計上大多與M9相同,零件上還有不少是直接流用XM-9之設計,因此只要進行M9轉換訓練之駕駛員即可使用此機;由於搭乘者相良宗介在戰鬥中大多是處於前鋒之位置,因此慣用oto-Melala制57mm散彈炮"boxer"進行作戰。
作戰上說,似乎ARX-7與M9最大的相異點就是在於搭載了λ-Driver。拜此所賜,ARX-7的機體骨架為驅動λ-Driver的前提進行特別製作,此機與M9使用的骨架雖然在外觀上沒有差異,但內部組成架構完全不同;由於ARX計劃的核心人物已經死亡的因素,因此骨架的備用零件已經無法生產,如果備用零件用光之後雖然可以使用M9的零件進行運作,但是無法驅動λ-Driver。另外,由於驅動λ-Driver的時候會消耗大量電力以及發出極高熱量,因此機體也裝備了大型電容器以及散熱裝置,由於這些相關裝置的因素,ARX-7的設計作戰時間比M9的作戰時間來的短。
但是最重要的不同,也就是ARX系統的真面目,是隱藏在其機器人面目之下的,由人工智慧“AL”為核心的整體系統。AL是由黑科技技術開發(開發者為“細語者”巴尼·摩拉塔)的,具有高度擬人化的模擬人格計算機,其性格,思維會隨著駕駛員思維展現一定的同調性。同時整部機體(尤其λ-Driver)也會因為ARX系統的存在而向著配合駕駛員的方向變化,是藏有大量潛力和迷團的技術。
在外觀上除了配色之外與M9不同的地方,主要是λ-Driver冷卻器安裝位置(雙肩以及背後之翼狀散熱版),雙眼感應器,還有類似人類的口部臨時武裝搭載硬點(可在戰鬥中固定單分子刀)。
該機體在2006年12月28日於東京市區,在多架汞合金AS以及雷納德。泰斯塔羅莎駕駛的鋼鐵墮天使圍攻下嚴重毀損,後由前秘銀人員亨利(化名)勉強收集並由另一名“細語者”米拉指導修復為新型機ARX-8,后話按下不表。
機體名稱英文翻譯為中世紀的弩,以雷納德。泰斯塔羅莎的說法,ARX計劃之機體皆以中世紀武器為名(ARX-6代號為戟,順便一提ARX只是帶有實驗模塊的模擬系統,並非一架機器人)
因此中文翻譯中翻成強弩兵其實乃錯誤翻譯。
ARX-7強弩
搭載系統:
1.ECS系統鐳射全方位光學迷彩系統:在全身各關節裝上鐳射投影頭,在機體上投影出反方向的影像,原理就很簡單就現在演唱會中在空中寫字的鐳射投影機,只不過是完全真彩的。該系統只對光學設備起作用,對雷達無效.
2.λDRIVE系統精神實體化系統:即所想即所得,你想防守,系統就在機體前產生防護系統。在敵我雙方都有λDRIVE系統時,集中力強的會突破對方的防護系統 駕駛員
相良宗介此機是秘銀的耳語者工程師BonnyMorauta開發的LambdaDriver系統試驗機是至目前為止秘銀唯一一架用於實戰的搭載LambdaDriver系統的機體實力超強的機體,配合能力同樣超強的駕駛員,戰功可謂顯赫。曾創造過單機擊毀四台VENOM及一台VENOM隊長機(均搭載LambdaDriver系統,其隊長機實力更是強的離譜)的輝煌戰績然而由於ARX只是實驗機,所以仍然有很多的錯誤。例如,它裝載的LambdaDriver並不是每次都會處於完全工作狀態,LambdaDriver系統的散熱也是