




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
CAD復(fù)習(xí)題及答案1、AutoLISP-AutoLISP是為二次開發(fā)AutoCAD而專門設(shè)計(jì)的編程詒言,它起源于LISP諾言,嵌入在AuMCAD的內(nèi)部,是LI$P語言^OAutoCAD有機(jī)結(jié)合的產(chǎn)物,LISP是人工智能領(lǐng)域中廣泛呆用的一種程序設(shè)計(jì)倍■AutoLISP^用了WCommonLISPg相近的語法和習(xí)慣為定,且有CommonLISP的特性,但又針jFtAutcCADlg加了許多功能,它既fiLlSPi*言人工智能的特性,又具^AutoCAD強(qiáng)大的圖形編輯功能的特點(diǎn)。它可以ffiAutoLISP程序和AutoCAD的維圖命令透明地培合起來,使設(shè)計(jì)和線圖完全融為一怵,還可以宴現(xiàn)^AutoCAD圖形數(shù)據(jù)庫的直接訪問和修改■利用AutoLISP語言可以進(jìn)行客種工程分析計(jì)氮自動(dòng)繪制宣雜的囹私還可以定義新的AutoCAD命令.驅(qū)動(dòng)時(shí)話成控制菜禮^AutoCAD擴(kuò)充具有一定智能化、卷敏化的功能,可以憤設(shè)計(jì)大員的主要精力用于產(chǎn)品的梅思和創(chuàng)新設(shè)計(jì)上.實(shí)現(xiàn)真亦底義I■的計(jì)算機(jī)蜻助設(shè)計(jì)2、VisualLISPVi利凱LISP(簡稱VLISP)是為加速AutoLISP程序開發(fā)而設(shè)計(jì)的強(qiáng)有力的工具°它提供了一個(gè)完整的集成開發(fā)環(huán)境(包括編譯器'調(diào)試器及其他工具.它可以顯著地提高自定義AutoCAD的效率)VisualLISP提供的主要工具有二文本編輯器,格式編排器.語法橙查器'源代碼調(diào)試器、榆驗(yàn)和監(jiān)視工具,文件編譯器、T程管理系統(tǒng)/快捷相關(guān)幫助與自動(dòng)匹配功能和智能化控制臺(tái)等3、 VBAAutoCADVBA就是集成在AutoCAD中的VisualBasic開發(fā)環(huán)境,與VB的主要區(qū)別是VBA在與AutoCAD相同的進(jìn)程空間中運(yùn)行,提供『與AutoCAD關(guān)聯(lián)的快捷的蝙程環(huán)境,程序設(shè)計(jì)直觀快捷。它還提供了與其它可使用VBA應(yīng)用程序集成的能力,可以為其它應(yīng)用程序如WoE或Excel的自動(dòng)化控制器“4、 ADS■當(dāng)Autodesk^布基于OSJW操作系純的AutoCADR10吐推出了T*全新的稱卻uitacao開度系藐用的編程懷境"隨莉AutoCADR11的發(fā)布,AutoCAD的D05版本用戶也可以使沖APSfu^AutoCADR1lZBUh太多數(shù)的應(yīng)用程序都是用AutoLISP開王的,當(dāng)出售開軍的第三方應(yīng)用程序射?丸法趣免用戶讀取牌的裁代碼? 的全名是AutoCADDevelopmentSystem,它是Au帕CAD的仁語言并澄系綠,ADS本質(zhì)上是一蛆可以用CiS言蝙與Aut就AD應(yīng)用程序的頭文件和目標(biāo)庠.它直接利用用戶熟悉的各神流行的C語言采譯器?穩(wěn)應(yīng)朋程序編譯成可餉行的文件在AutoCAD坪境下運(yùn)行.這種W以在也JtnCA。環(huán)境中直搜運(yùn)行的可執(zhí)行文件叫做ADS應(yīng)用*序--<ADS程序?qū)嶋H上是由一組外部函故坦成,它們由AutoLlSR解群器來卻赧調(diào)用.AD$??序本身并不能一直腰和RutoCA口謎行通訊?AMtoCAOIE供的口hj祁tARX中用含TADS南敢?guī)?,并稱5、 ObjectARX0bjectARX是一伸券新的開抵AutMAD應(yīng)用程序的工具,她以C+,為編程語言*采用先進(jìn)的面向時(shí)象的蝙程原理,提供可與AutoCADS接史互的開發(fā)環(huán)境.能使用戶方便快捷地開發(fā)出高效簡潔的Atit。CAD應(yīng)用程序。句wtARX提供2的個(gè)瓷3Q0Q參個(gè)成員函散0bjectARX還可以接需要加裁應(yīng)用程序;使用ObjectARX進(jìn)行應(yīng)用開澄還可以在同一水平上與Windows系蚯集成,井與兌它Windows應(yīng)用程序?qū)崿F(xiàn)立互操作-不同的ACAD版本用不|過的開澄包吱開發(fā)坪境^ACAD200D-ACAD20B2:VC++6.Cr-ACADZQW'ACADSQafl;V3rNET2QQ2^AC^D?007-ACAD2^Q9;VS.NET20Q&,ACAD2010^aCAQ2011:VS.MET2DOS-ACAD2012- :VS.NET201D■ACAC2QQ?開始字可苫采用UHIQODE始碼■點(diǎn)RX之間不熊連蚊傕贛,A.arxft翰rx,B^ri^KCdbx,BlJA.arx^'ii::ru5\■與AGAD已有功磁堆位T3.51ObjectARX-Acca$$.AutoCADdafabasfiInteractwithth*AutoCADeditorCreateus?rinterFaeesusingttie FckUHdab&HClasps[MFC}WmppoMIfrumuHipPedccumtntinterface(MDI]Createcustamcila^Ee^■日御4complexInberactwltitolhe<pc^gtainmin-genvjronments■ObjectARX類庫枸成kObjectARK六大類庫:(1>北獨(dú)庫:是為劫戀鏈接庫的初始化、璉撞、遠(yuǎn)行時(shí)類的注冊林識(shí)別提供蓋姓堀的生(2)虹Ed庫;用于注冊本地命令及系境事件通她的美;(3)庫;用于存放所有實(shí)體及其他類(4)AcGijg:用于治染AutoCAD宅怵的圖形接口(5)幅鹽庫:用于曾通知伐數(shù)和幾何實(shí)體通用庫(6)ADSKX庫:用于國蛭*uW!AD應(yīng)用程序的哺言庫6、.NET托管API-AutoCADNETAPI使用戶可通過編程的方法利用程序集虱庫顯示的AutoCAD和圖形女件的對(duì)象案操填它侑.通過顯示的對(duì)象,它們可帔iT多不1“】的編程語言和環(huán)境訪間。■在AutoCAD中實(shí)現(xiàn)旺TAPI的幾大伏點(diǎn):-更多的編程環(huán)境可以瑞程訪問AutoCAD-在.NETAPItH理之前,7T發(fā)人員只能局限于使用ActiveX*自動(dòng)操作和支持CC3M的語言.AutoLISPObjectARX的C++.-通過使用內(nèi)用程序本地化的NETAPI或顯示的ActivcX/COM庫與其它windtiws1-應(yīng)用暮序(例MlMbcroMftExcel和Word)It亭敕據(jù)比以前童方使得多。>-NET梅架是為位及64位皖作系統(tǒng)而設(shè)計(jì),而*部只為3W恒樣忤系統(tǒng)設(shè)計(jì)。?&AutcCACJ中玄現(xiàn)NETAPI的凡大優(yōu)炯雄】:?相對(duì)于枝統(tǒng)珀程懦言.如C++..NETR^更帔的學(xué)習(xí)成本來訪問高璽接口。a對(duì)蒙是AutoCAD.NETAPI的主盟構(gòu)誥塊。每一個(gè)顯示的對(duì)聚均精煽代建一個(gè)AutoCAD沮件,它fl之間又曲了不同的程廳集利命名空間。AutoCADNETAPI有評(píng)務(wù)不同類刑的舛蒙匚例如::?點(diǎn)雄,玄字和樣注獸圖庵可蟄與星時(shí)家“?姓型勺怵注打式車村式諼苫部是對(duì)盤,?圖房、坦合如塊客里媽站構(gòu)都是時(shí)愈.?攜圖和摭口與圖形超派律是對(duì)圈”■甚至尚1形、AutoCAD巧用料序本身也是利虢.7、ActiveXAutomation
術(shù)是OLE技本的誑一步擴(kuò)展,其作用是SWindcws系線的統(tǒng)-管理b協(xié)調(diào)不同的應(yīng)用程序.允許應(yīng)用程片之間相互控制,相21調(diào)用.月前,Actiw&XAulommticin術(shù)是OLE技本的誑一步擴(kuò)展,其作用是SWindcws系線的統(tǒng)-管理b協(xié)調(diào)不同的應(yīng)用程序.允許應(yīng)用程片之間相互控制,相21調(diào)用.月前,Actiw&XAulommticin技木已is在Int4(ner.Offict系列辦妙較祥的開發(fā)中得到了廣堂的應(yīng)用、從AutoCADRU版開始,AuIgCAD引入了ActiveXAutomation技術(shù).由于ActEX技術(shù)是一旃完全面向?qū)娴募夹g(shù)、所頃許多面向卻蕃化蝙程的舊言和應(yīng)用程序,河以通3ACtNiXijAdtoCADjffiffiiS,并操甄從AutoCADRU版開始,AuIgCAD引入了ActiveXAutomation技術(shù).由于ActEX技術(shù)是一旃完全面向?qū)娴募夹g(shù)、所頃許多面向卻蕃化蝙程的舊言和應(yīng)用程序,河以通3ACtNiXijAdtoCADjffiffiiS,并操甄AutoCAD的許蘇劫.Aetl^Xffi具備的絕大基SfcAuMCa□功能,俱以方注和風(fēng)性的方式秘甘董在Art阪XjOf象中,只暖使用某種方式,使Acti伸X對(duì)缺得以,那也就叫以怯H1答抻面向時(shí)齦埠程的語宣有其中的方法、反性進(jìn)行引用.從而遇到莉AuMCAD實(shí)現(xiàn)罩程的目的.8、VisualJava1、AutoCAD二次開發(fā)方式有哪些?各自優(yōu)缺點(diǎn)?2、 AutoCAD中實(shí)現(xiàn)ObjectARX.NETAPI的有哪些優(yōu)點(diǎn)??在&誠心1中實(shí)觀wrapi的幾大悅點(diǎn);"更多的號(hào)曜坍境司瞄程訕何森UtOCAP.在.NETAH咕迎之前,開發(fā)A髭W隘局限于ttJBActiveX"白動(dòng)榻作咨更持CONI的博吉.AutoLISP'網(wǎng)QbjcetARX的C++..>通迎使申屁用程沖本地世的.NETAPI或顯示:的ActiveX/COM專與其它windows'反用再斥[例如Micrcsort或rH和刊。r"丈享蚊據(jù)比以藺堂方便群多。>.NET框架是為3頌及64值操作弟嫌而設(shè)計(jì),而MBA只方W憤理件東毗謎計(jì)。?在AutoCAD中實(shí)現(xiàn),NETAPI的幾大憤點(diǎn)〔詢:*相對(duì)于仕好和語言,C++b.NET具有更忸的學(xué)習(xí)成本來訪悶高圾接口.*jf.lftSAutvC^C-NETAFI的主嚏物蒞虬每一個(gè)阪柬的卻t持柄福代表一個(gè)AutoCAD坦件,它門之間W組成了不伺的并卻族和命名空I虱AutoCAD-METAPI有許第不同琵型的耐乳佩如:?直線.園蛆、文宇和林注署闈監(jiān)洞陞昴是對(duì)單.?費(fèi)牽與林洋樣式字特式由面廓墨耐堆.■圉辰.坦臺(tái)制嫌等蛆織培構(gòu)部是對(duì)魚一*擔(dān)1群*1??诘认魍帐疚闶菚r(shí)18..**至出電、AuWCMi旦用樣序牢身也毋月SL .3、 AutoCAD.NETAPI的三個(gè)主要的DLL文件是?4AutoCAD.NETAPI的三個(gè)主要的口LL文件:>AcDbMgd.dth-^用國形文件中的對(duì)象時(shí)快用這個(gè)DLL*件'該動(dòng)態(tài)庫^L^ObjectDBX托管類>AcMgd.dl^-當(dāng)使用AutoCAD應(yīng)用程序時(shí)使用通個(gè)DLL文件,該動(dòng)態(tài)隹包窖MtcCaO托管美K3T4當(dāng)快用自定乂文件時(shí)使用這個(gè)DLL文件■DLL*件所在位直>C:\ObjectARX2012\irtcV.dll4、 簡述ObjectARX.NETAPI所對(duì)應(yīng)的VS.NET版本。.ACAD2Q00~ACAD2D02:VC++6.0-ACAD2004*ACAD2OQ6:VS.NET2002,ACAD2007*ACAD2D09:VSNET2005>ACAD2010*ACAD2011:VS.NET2008>ACAD2O12-ACAD2O14:VS.NET2010>ACAD2Q15* : VS.NET20125、 簡述AutoCAD數(shù)據(jù)庫的組成。AutoCAD數(shù)據(jù)庫是用來管理當(dāng)前圖形中的圖元實(shí)體和其他非幾何信息的容器對(duì)象,一個(gè)AutoCAD數(shù)據(jù)庫包含一套固定的符號(hào)表和命名的對(duì)象詞典,每一個(gè)符號(hào)表包含一個(gè)特定符號(hào)
表記錄類的實(shí)例,例如層表(AcDbLayerTable)中包含層表的記錄,塊表(AcDbBlockTable)中包含塊表記錄,所有的AutoCAD實(shí)體均包含于塊表記錄中。詞典提供了一種通用容器來存儲(chǔ)對(duì)象,它可以保存AcDbObject對(duì)象以及其它對(duì)象,也可以創(chuàng)建新的對(duì)象詞典,將新的數(shù)據(jù)庫元素加入其中。AutoCAD數(shù)據(jù)庫的組成如圖所示,從圖中我們可以看出數(shù)據(jù)庫主要由一下內(nèi)容組成:1) 層表AcDbLayerTable和層表記錄AcDbLayerTableRecord。2) 塊表AcDbBlockTable和塊表記錄AcDbBlockTableRecord。AutoCAD中所有可見實(shí)體均存儲(chǔ)在塊表記錄。塊表中包含有兩條特殊的記錄*MODEL_SPACE(模型空間)和*PAPER_SPACE(圖紙空間)。3) 其他符號(hào)表和符號(hào)表記錄。4) 命名對(duì)象詞典。缺省情況下當(dāng)AutoCAD數(shù)據(jù)庫被建立以后,詞典中就包括了組詞典以及MILINE樣式詞典。5) 符號(hào)表和命名對(duì)象詞典都是存儲(chǔ)數(shù)據(jù)庫對(duì)象的容器,用于組織和管理數(shù)據(jù)庫對(duì)象。AutoCAD數(shù)據(jù)庫通常有9個(gè)固定類型的符號(hào)表,開發(fā)者不能向數(shù)據(jù)庫中新增或者刪除任何一種類型符號(hào)表,能實(shí)現(xiàn)的是向符號(hào)表中添加對(duì)應(yīng)的符號(hào)表記錄。6、Application對(duì)象是AutoCAD.NETAPI對(duì)象模型的根對(duì)象,它包括哪些部分?Application對(duì)象是層次結(jié)構(gòu)的根,而且它提供對(duì)AutoCAD的主窗口的訪問。集合名稱功能BlockTableRjecord包含一個(gè)特定境內(nèi)定義的所有圖元BlockP>ible包含圖形中的所有塊NamedObjectsJiutionaiy包含圖形中的所有字典DniiensionSlylel>ble包含圈形中的所有標(biāo)注樣式DocmueidCollec\on包含當(dāng)前進(jìn)程中打開的所有圖形FilmDependencyColhcnon包含“文件依賴性''列表中的所有項(xiàng)Diehoi沖包含圖形中的所有漏蛆Hvpeihtikt^lkctior.包含給定圖無的所有超鏈接LayerTable包含圖形中的所有圖層Layc.r包含圖形中的所有布局Lrielype'liible包含圖形中的所有線型藐合名稱功能MeiinBarColletlion包含AutoCAD中當(dāng)前顯示的所有菜單MenuGroupCollection代.含AutoCAD當(dāng)前加我的折有U定義紀(jì),自定義近煎示如我的Cl:Ix丈仁,它可以句空菜午、工具T布Ribbon選項(xiàng)PlotConlisuraIlouEXictianary句含囹托中的命■名扣口設(shè)宣RegisteredApplicMonTable包含圖形中所有注冊的互用近序TextSfy]eTable包含圖抒中的折有支字樣式UCSTable氣含囹H中的折有用戶平標(biāo)幺(UCS)ViewTable可含?囹杉中的.折有祁.囹ViewporTab'e包含圖形中的所有視117、 列出所有圖形與非圖形對(duì)象,他們有什么區(qū)別?圖形對(duì)象,也稱為圖元,是組成圖形的可見對(duì)象(例如直線、圓、光柵圖像等):1) 添加圖形對(duì)象到圖形中是通過正確的塊表記錄引用,然后使用AppendEntity方法將一個(gè)新對(duì)象添加到圖形中來完成的2) 要修改或查詢這些對(duì)象,請從正確的塊表記錄獲得對(duì)象引用,然后使用對(duì)象本身的方法或特性。每一個(gè)圖形對(duì)象都擁有允許應(yīng)用程序執(zhí)行大部分AutoCAD編輯命令的方法,例如復(fù)制、刪除、移動(dòng)、鏡像等這些對(duì)象還提供了一些方法,用來設(shè)置和檢索對(duì)象的擴(kuò)展數(shù)據(jù)(xdata),亮顯和更新對(duì)象,以及從另外的圖元設(shè)置屬性。大多數(shù)圖形對(duì)象具有諸如Layerld、Linetypeld、Color和Handle之類的典型特性。每個(gè)對(duì)象也具有一些特有的特性,例如Center、StartPoint、Radius和FitTolerance非圖形對(duì)象是指屬于圖形的一部分但不可見的(提示性的)對(duì)象,例如Layers、Linetypes、DimStyles、TableStyle等1) 若要?jiǎng)?chuàng)建新的符號(hào)表記錄,請使用表所有者的Add方法或使用SetAt方法添加一個(gè)字典到命令對(duì)象字典中2) 要修改或查詢這些對(duì)象,請使用對(duì)象本身的方法或特性。每一個(gè)非圖形對(duì)象都有用于特定目的的方法和特性,都有設(shè)置和檢索擴(kuò)展數(shù)據(jù)以及刪除自己的方法8、 如何實(shí)現(xiàn)對(duì)AutoCAD數(shù)據(jù)庫圖形對(duì)象的訪問?給出實(shí)例代碼。大部分的集合和容器對(duì)象都是通過Document或Database對(duì)象訪問的。Document和Database對(duì)象都包含一些相應(yīng)的特性用來訪問大多數(shù)可用集合的對(duì)象或?qū)ο驣D。例如,以下代碼定義一個(gè)變量,并將其設(shè)置為當(dāng)前圖形的LayersTable對(duì)象://GelHueCLinnciitdoaimcntandstartlIkTransactionManagerDatabaseacCinDb=usiii^(TraiisHctionacTransHHcCurDb-TraiEactifHNhlaitager.SlaitTrwiisKtiEiO)"Thisexamplereturnsthelayertableforthecurrent,dalabaseI^iyerTable-ftcLyiTbl;ncLyrTbl=acTiaiis.GELObjed(JicCiiLDb.LsiyeiTableId.OpcnModc.ForRcad)asLaycrTable;WDi叩典oftlieLmnsacLioi]9、AutoCAD中集合對(duì)象是指?列舉出部分實(shí)例。-AutoCAD將大部分囹形或非圖器對(duì)象地行蝙組,蛆成集合或客器對(duì)彖.■然集合包含了不同的數(shù)臨類型,怛是可以便用相似的技術(shù)乖姓理它們“每T集合都提供了向H中添捕?;驈募现兄星№?xiàng)目的方法.大釜致集合是通過Add成方法滯加對(duì)象到集合中■大多數(shù)集合提供相似的方法和屬性,使它們易于使用和學(xué)習(xí)>跖皿七特性用于獲取集合中從等H始的對(duì)象個(gè)數(shù)Item函數(shù)從集合中返回一個(gè)對(duì)象■在AutoCAD.NETAPI中的集合成員的例于有:a圖層符號(hào)表中的層表記錄ACAD_LA¥OUT字典中的布局-DocurrcntCcIlection中的DocumentabJnck引用中的Attributes 鬢名雀-WTableRetwd包含一個(gè)精定塊內(nèi)定義的所有圖元BlockTabic包含圖密中的所有塊MaincdObjcclsDictionary-包含囹寤中的所有字典DbiiejisioiiStyleTable包含圖形中的所有標(biāo)注樣式DocumentCoUectio]!包含當(dāng)前謎程中打開印所有圖形FileDe-paidencyCollection包含-■文件修藏性r列卷中的所有項(xiàng)GroupDictionan-包含圍形中的所有蝙紐HypeilbLkColleclioji包含給定圖元前所有超鏈接LayeiTable包含圖形中的航有囹掠LayoutDictiojiaiy包含圖形中乾所有布局LinHtyp*Tfible包含圖形中的而有踐型集合名稱J;范MenuBarCollection包含AutoCAD中當(dāng)前顯示的所有菜單MtrmGio叩Collzicm手恃,^HflCAD圣前加女工!占宥七W岌::il白定義史云不i.A質(zhì)KCUIN立住,r可以包含景中.1具廣上Ribtm選上卡算廠亡之義心用戶暴面PlotConfigurationDicti&naiy。窩善:形中笆合名二L?:H丑RegisteredA|)pli?irionTable坂含:E她中,所有2.']■:片應(yīng)用驀*Tex!StyleTuhlc坂含空蚓中冷.所T7文宇癖丸UCSl^ible口含譽(yù):形中⑵r山劉+E■?我:Lt”ViewTaWc仞含空蛇中的.所TT總里UiewportTable。含落*中芒.所為右110、 如何定義一個(gè)用戶命令?CommandMethod所接受的屬性包括哪些?命令和AutoLISP函數(shù)可以通過使用兩個(gè)屬性:CommandMethod和LispFunction就可以在AutoCAD.NETAPI中被定義使用CommandMethod屬性定義一個(gè)命令,CommandMethod屬性期待一個(gè)字符串值,它將當(dāng)作被定義命令的全局名稱。和全局命令名稱一起,CommandMethod屬性還能接受如下值:[CommandFlags]-定義命令的行為【GroupName】-命令組名稱[LocalName】-本地化命令名稱,通常用于特定語言[HelpTopicName]-當(dāng)按F1鍵時(shí)應(yīng)該顯示的幫助主題名稱[ContextMenuTypeFlags]-定義當(dāng)命令被激活時(shí)相應(yīng)的快捷菜單的狀態(tài)[HelpFileName]-包含當(dāng)命令激活并按F1鍵時(shí)將要顯示其中幫助主題的幫助文件11、 如何通過代碼調(diào)用AutoCAD內(nèi)部命令?A、 使用SendStringToExecute方法可以直接將命令發(fā)送到AutoCAD命令行。SendStringToExecute方法將單個(gè)字符串發(fā)送到命令行。該字符串必須包含提供給所執(zhí)行命令的參數(shù),并依照該命令的提示順序所要求的次序排列這些參數(shù)B、 使用SendStringToExecute執(zhí)行命令是異步的,直到.NET命令結(jié)束,否則不會(huì)被調(diào)用。如果需要立即執(zhí)行一個(gè)命令(同步),應(yīng)該:使用COMAutomation庫中的SendCommand方法,它可以利用.NETCOMInterop訪問使用ObjectARX或.NETAPI定義命令,P/Invoke非托管的用于本地化的AutoCAD命令的acedCommand或acedCmd方法通過定義AutoLISP命令,P/Invoke非托管的acedInvoke方法12、 如何實(shí)現(xiàn)圖形對(duì)象的旋轉(zhuǎn)、平移、縮放?請給出具體實(shí)現(xiàn)。使用transformBy函數(shù)進(jìn)行幾何變換Entity.TransformBy(Matrix3dtransform)transformBy是Entity類的一個(gè)成員函數(shù),該函數(shù)使用一個(gè)Matrix3d參數(shù)對(duì)實(shí)體進(jìn)行相應(yīng)的幾何變換Matrix3d是一個(gè)四維矩陣,常用函數(shù):Translation:生成一個(gè)移動(dòng)對(duì)象的矩陣Rotation:生成旋轉(zhuǎn)矩陣Scaling:生成比例縮放矩陣。Mirroring:生成鏡像矩陣publicstaticvoidMove(Entityent,Point3dptStart,Point3dptEnd){ent.TransformBy(Matrix3d.Displacement(ptEnd-ptStart));}publicstaticvoidMirror(Entityent,Line3dline){ent.TransformBy(Matrix3d.Mirroring(line));}publicstaticvoidScale(Entityent,Point3dcenter,floatscaleAll){ent.TransformBy(Matrix3d.Scaling(scaleAll,center));}publicstaticvoidRotate(Entityent,Point3dcenter,doubleangle){//newVector3d(0,0,1)應(yīng)該是用來標(biāo)識(shí)基準(zhǔn)平面的,這里指的是在*丫平面內(nèi)旋轉(zhuǎn)ent.TransformBy(Matrix3d.Rotation(angle,newVector3d(0,0,1),center));}13、 如何實(shí)現(xiàn)AutoCAD填充過程?創(chuàng)建填充必須遵循的步驟;(1)創(chuàng)建一個(gè)空的填充對(duì)象X5指定坑充對(duì)象所在的平面設(shè)后填充對(duì)象的美聯(lián)性<4)指定填充圖案孕<5)添加填充邊界>(6)顯示填充對(duì)象「(7)將Jt添加到稅型空間-GO如果是美聯(lián)性的境充將填充對(duì)象與邊界館定
構(gòu)暗函數(shù)Hatch。設(shè)置關(guān)聯(lián)性boolAssociative(set.gel:}v用口可以劇建美聯(lián)的或非美聯(lián)的圖案職充。關(guān)擘的圖案填充鏈接到它們的邊界并且會(huì)在邊界改變時(shí)肖動(dòng)史新,而非關(guān)黑的圖變M充則獨(dú)立F它們的邊界設(shè)置填充模式二SetHatchPaHern(HatchPaIternTypep^ttemType,firingpa湖e爆mwj*■PirDcnued:Artcatl.pat文忤中定又的圍案名中誕行選擇^UserD?nnfri:用當(dāng)前線型定義直線圖案Cnit?iil>cllud:MPAT而不是swLpar文件中遂擇圖案名/輸入固案名爵時(shí),名稱必源對(duì)由圖取斐罕指定附文件有蛇定義填充邊界"創(chuàng)建圖案填充時(shí)是美棒步驟,邊界可以是直線、圓眼、同、=務(wù)段線、橢圓、杵條曲線和面域的任意坦舍ApptindLoop(HatchL0tiphatchLoop)AppendLoop(HatchLocpTypesJoopType,0bjectldCollectiondbObjlds)設(shè)置圖案填充樣式HatchstyleHatchStyi?{set;get;}14、如何創(chuàng)建用戶菜單和用戶工具條,請給出具體實(shí)現(xiàn)過程?菜單:[assembly:<.!ounmnniiidCIs(typeior(MyMeiiui.ridsCneohniiiidis))]ji^jnespmceMy^lemupublicclassMyMenuClsss:lEKtEnsinnAppliEiitiimi'oait■pxtMpniiExLFiiiisiiti[]iTi_CoiiIpxILMfeiiiji:.加載命名空間usingSystem;u&mgAutod^k.AutoCAD.Runtime;usingAnted加載命名空間usingSystem;u&mgAutod^k.AutoCAD.Runtime;usingAnted噸k.AutoCAD.Windows;定曳類L1自定義上下文菜單添加AddConWctMmu函數(shù)定文菜單添加RemQV-ftGonlextMenu函數(shù)移除菜單添加菜單操作函數(shù)實(shí)現(xiàn)Inltlaiim。fuTermlnaiteO函數(shù)工具條:定義全局變量,構(gòu)造函數(shù)設(shè)計(jì)與自定義菜單的相同定義工具條及按鈕把工具條加藏到工作空間保存用戶自定義工兵閨
[CDmmandLIethodC'LDadRoad81)]publicvoldaddT口tallbai^QiTg】barnewKb=newTool心arC公路辿帆繪制工具七mMjenuGTDiip);new'rb.ToalbarOrient=ToollbarCiientfloating;dswTU-TddIbarVisible=ToolbarVisible.shcrwr;newTti-Desciiption"公路邊枇結(jié)制";TDQllbarBiiitonitbBtn=newToolbarBmttonftiie^vTbrl);Ma^roGmiipoMncroGraiJip=newMacroGt'oiipC1"rnyMenuGroiipO!!,M.MermiGrcmpj;MemiMacraoMenifMncral=newMemAIacrat^facrDGroiiip^isMeniiMacrcOr,1,BSetFirst!,?"MeniiMacrcOl",MacroTjTpeAtiy);tbEtii-newToolibarButtonXnewTb,-1);oMenuLMacroljnacroiSmaJlIm^ige-C:\RoiadSet.begtns>et.BLIP11;oMenuLMacroljnacroXargelinage— C:'.RoadSet\begiii5et.BMF1';tbBtnJiame="fe始里程設(shè)置氣tbBtD-MacroID1^olfelenuMacio1.ElementlD:foreacli(Workspacewkincs.WorLspaces){WorkspaceToolbarwkTb=newWosrksp就eToolbar(wrktnewTb);wk.WarkspaceToolbars.Add(wkTb);uskTb.Display=1;JsawCuiOc15、 有模態(tài)對(duì)話框和無模態(tài)對(duì)話框有什么區(qū)別?如何實(shí)現(xiàn)無模態(tài)對(duì)話框?模態(tài)對(duì)話框?yàn)椴豢汕袚Q焦點(diǎn)的對(duì)話框,一般用于靜態(tài)的輸入或輸出數(shù)據(jù)或切換至AutoCAD拾取對(duì)象操作。模態(tài)窗體顯示時(shí),程序的焦點(diǎn)始終保持在模態(tài)窗體上,如果要切換到AutoCAD環(huán)境進(jìn)行交互時(shí)需要EditorUserInteraction類來切換焦點(diǎn)到AutoCAD的命令行無模態(tài)對(duì)話框?yàn)榛顒?dòng)焦點(diǎn)的對(duì)話框,程序焦點(diǎn)可以自由的從AutoCAD界面到窗體之間切換,用于用戶與AutoCAD環(huán)境的即時(shí)交互操作過程:1) 引用命名空間Autodesk.AutoCAD.Windows2) 創(chuàng)建用戶控件并添加相應(yīng)控件3) 創(chuàng)建面板并加載用戶自定義窗體4) 添加拖拽操作,從Autodesk.AutoCAD.Windows.DropTarget派生對(duì)象,并重載OnDrop5) 在自定義窗體中創(chuàng)建“拖拽創(chuàng)建”控件,假設(shè)命名為“l(fā)b_drp”6) 自定義用戶窗體的構(gòu)造函數(shù)中添加事件處理16、 列出ObjectARX.NETAPI可以創(chuàng)建AutoCAD數(shù)據(jù)庫中的所有圖形對(duì)象,并給出創(chuàng)建代碼。17、 用戶交互輸入包括哪些?如何判斷用戶輸入值的有效性?A、讀入字符串class用戶主互Editit:ed二AutodeAutoCADuApplication3eevices-Applicalloil-DiJciLLentHatisiger□IdiictLveDacujierrtuE±itor;flregioTi詼入字符串[Coruao-idllethad.(^Kead5trin^^)]publicvc-Ld£.9adStELTigG'lProinptStrinsOptionsplnputBlockNane=nevPrarMptStrineQptiotis :PcojiptResultjEesuL't=ed,5cdSinns(plriputBlockW-McJ:stringpBlackMaoriE-—pEtesu.lt.S"trin^Eiesult.Trira();B、讀入Double型數(shù)據(jù)B、讀入Double型數(shù)據(jù)讀入型數(shù)據(jù)SreEion瀆.X.dtmb22!封:據(jù)[CoiunandJIethadf'Eicaddoublc'1]pubLievoidReaddoub1b0PronptDuubLcDptioilspRaDp=newProniptDoubleOptions(*'n輸入你的Doub1匕數(shù)據(jù);');Pran.ptDoub1BResultpDouResult=ed.GstDaubLetpRaOp);doublepRadius=pDouResuit.Talus:} iendregicm。、讀入Point#region讀Xpoini[rQiijTiaridWethod(^ReadPDint")[publicvoidReaidPoint()PronjjtPoin-1:OptionspFtfOp=nevPranpiPaintOirtions(nAnSwAfi:r)ProiiptPoititResultpPoResult=&d.GetPoirrt(pPadp):if{pPdRbsu11-Status—Prompt51actus.OK)PointedpPt-pPofirsultrValue:elsereturn.D、拾取實(shí)體[□□iinaridJfe-thodCEtvtit愕}]publicvoidGetEntity()Databasedb=HostApplicationsetvices-VorkingDatabasB;PrcorptEntityOptLanspEntOp=nevPronp-tEntilOptions("):FronptEntityResulipErrtResult二eiGetEntityCpEntOp);if(pEntRe^nlt.Status--PronpiStatus.OK)ObjEdTdpEntld=pEn1Resuit.Objec!Id:using(Transactinntraris-dbBTransactiohnCana.ger.Sl^ElIransacliont])butityoEnt-.it~11:■?}irut:.'k7Oti:ct1pit-1d.OicuY.ode.^or^.c:ic.;risereluin;E、打開dwg文件[CanjiarLdMctliijdCDpendvg'j]publicvoidOpendwg()OpenFileDiaLoEpOpenFDia-newClpenFileDiaLogffdws^jniillu^dve^j^apenfile^jDpeuF11bDIs!og?OpenF11eDialagFLage:.DefaultIsFo1der);rOperiFDia-ShowDialogO:siringnajiB=pOpeTiFDis-Filensme;DocumentDoc=ADDlicaftion.DocumentJIanagerrItdiAd:iveDocimeTit:Editored=Doc.Editor;if(IFile-Ezists(nana))name-Ho^tApplicsftionScrviccs.Curren-t.FindFile(nairiejD0GaDaiabase5FindFileHint.DefauLiJ,usingQjalmb3SEdb-nevrDatabsse(ffaLse))iJti.ReadDweFile(najne,Fi1eS?iarerReadWrite?true,null).□sing(Transaciiant=Doc.Iransactioidllanager.St:artlransacti'3iL(JJ十.CorranitU;18、一個(gè)AutoCAD的圖形數(shù)據(jù)庫中可以包含多個(gè)塊表BlockTable和BlockTableRecord嗎?塊表:包含模型空間、圖紙空間和用戶創(chuàng)建的塊定義,塊表記錄中保存了圖形數(shù)據(jù)庫中的實(shí)體。生成一個(gè)實(shí)體對(duì)象的實(shí)質(zhì)是向AutoCAD數(shù)據(jù)庫的塊表記錄中增加一條記錄。在ARX應(yīng)用程序中,這個(gè)過程是通過ARX數(shù)據(jù)庫操作函數(shù)來完成的。因此,BlockTable只能有一個(gè),而BlockTableRecord可以有多個(gè)19、AutoCAD可以定義哪些類型的塊?它們有何區(qū)別?存在什么地方?帶屬性塊的屬性指的是什么的屬性?分別給出所有類型塊定義及引用代碼。帶屬性的塊和不帶屬性的塊,存在于當(dāng)前圖形數(shù)據(jù)庫的塊表里,屬性指的是:使用AttributeDefinition類創(chuàng)建屬性對(duì)象,它是從DBText類繼承而來A、屬性文字的插入點(diǎn)、高度、旋轉(zhuǎn)角度、對(duì)齊方式和寬度。B、屬性提示(Prompt)。C、屬性的默認(rèn)值。D、屬性的模式,如不可見方式(Invisible)、常量方式(Constant)、驗(yàn)證方式(Verify)E、預(yù)置方式(Preset)。F、屬性標(biāo)簽名(Tag)1)不帶屬性的塊:A、塊定義:I:...:-Il'-IlI:.,.,?廣i時(shí):],£消|publicmidAddHZMlmk'sit:3b:isedb=MostA[irlicatioriSenricisiSrWui^irieDatabase:Ob-jcrtldblkid://a31ft定岌usine[rf^isaction.tr:ari3=db.Tiansact ee,Stait7iansaction0)ElockTahlebt=transuG>?tObject(db.BLncklabl^IcUOpenltoiieBFoilTritslaz-BlDcklable-.TSib1■=:J:$C:Htd0[卜1三如=:_::吒,-;、買二::]F瑁吒域thI原閂blk.Oriein=nevPoint:id<0,0PD):Paint3dpCEtner=tie?jPoint3[l(0,0,0^;〃刖建外句的園 CircleC=tiffwCircleCPoint3(LOtieii%i?ectot3d.IAriSj328):z/eoinrf的囹形LintLL=IV9VLuw(iwvFeint3d(-]52-60*15E.60jU).iwvPoint3d(15E.60jL52u60?0).LinsL2=navLanMnmvPoint:id<-228,SO,-】田MO,0),newFint3d(22B,SO,T52M0,0)LitieL3=il?jLin*(iL?jPoint3d(-1E2.60.,-1E2.60,口、tierPoint3d(-L52-fiti,22B.5D?□>LintL4=nevLula(nevFeintJd(152i50j~152.60j0)tiwvPoint3d(15E.60j228u90..□).LineL&=ksvLinMnmvPoint:idCDP1523。EksvPointjdCD,戲&9H0:1):b1L:,.1-lripen.d£n.t11yILLJ.bit,AppendEtitity<L2:'.bllr.AnDehdEtrtitv(L3)blkid=bt.Add(blk);trans.AddNewlyCreatedDBObject(blk,true);trans.Commit();BlockTablebt=trans.GetObject(db.BlocklableldclassAutode-sk.AutoCAD.DatabaseServices.BIockTahi?ElockTableRec&rdblit=newElockTableRec&rdO:classAutodesk.AutoCAD.DatabaseService-&.BIockTabl&RecordB、使用BlockReference類定義快引用,using(Transactiontr=db.TransactionJIariaser.StartTransactionO)1 J/創(chuàng)建埃弓I用BlachTablebt=tr.CetObj?ct(,db.BlockTableldjOperJitode.ForRead)asBlo?kFab1cBiackTab1;Recordnode1Space=tr.Get0bjeat(bt[Blo^kTablcRccard.ModeISpac&]OpEriModos,ForWri^te.)asBlockTableRecoid;BlockReferencebr-newBlockReference(newP3d(D3孱0)3blkid),IWg1耳WC巴?Hpp已ncLEEITV中口;/廠|■亡決空;M:爭加刊技表見牙:tr.AddNewlyCreatedDBObject(br3true);//]§袒事物濡加決拶S=到—據(jù)庫tr.CoiruTiit();2)帶屬性的塊A、定義publicvoidIddRefBlock(jDslah-as-edb=HostApplicationSetvices.VoikingDsisbsse;lining(Transactiontrms-=dbuTisnsactiordflanager.StartrtanssctiDnO)z1DdklablaKBCOEdbtr=nBVBlocklBblaEecard();ziDdklablabl二traris?GetObjeiTtfdb.BlDdklableliOperJIade-FDiVrite)asBlodklsble//浙建新的塊■記毛strtngblknsM="三用點(diǎn)”;btr?ITajie二bLktisi由;btrBQrisiti=ne^Pairrt^dCO,0,0):PdirrtJdpCerrtci:=nevPaint3d(0?D,0):〃創(chuàng)51中心點(diǎn)DBPointpDEPt=newDBPaint(^Center):打創(chuàng)里回Ciccle-j^Zic—nexjCircleCjZZeirter,hewVectdt3^(Q,D,1)40.2E);〃們建三角也 ^ '''PalylmepLtl-newPolylrrbs(4)?pTtl.AddVefteiAt(fl?neuPoiat2d.(0j1)40?%0):pTtl.AddVefteiAt(]?neuPoiat2d.(Q.866.,~0-5]?%口);plt:i-AddVeete^At(2^iwurPoitit2d(-DuSfiEj,-0.0s%0);plt:i-AddVeete^At(3^iwurPoititSdtOj山0.,缶0),PoLylinepPl=neurPoLyliiw(2J,pPLuIddTertexit(0^neuPDint2d(CLPj,0,0$0?Dj,pPL.AddTertE:sAt(L,nw?zitit2d[2.!?,0?,0,0RD):而有就 7 PairrtJdrPDEitiEin-nwPoint3d(LCL2,0);AttributeDefinitionpAttDecf=newAttributeDefirdtion(pPDsitim.“坡頭二“三用點(diǎn)宮七『輸入三所點(diǎn)礦db.lE:3rtstyle);pAtrDefrHeichi=]:PaiirtJdDPcisi-tiDnZ=nevrPoiTYt3d(L-L2,0]:AttributeDefmitlop.pHYaue=nwAftributeDefiriftiran(pPositinnZ,"0,00'^"商程ifi','輔j入高程ifi"』db.Twctstylr]:pEOJBLie.Heig.lrtsL.刀?定■的切點(diǎn)htr.Origin.二newPaini3*(fl,D.口];"將圖R;買體凌加到塊表記錄■htc.AppendErrtity(pDEPt):B、塊的引用:同上20、 試分析Autodesk.AutoCAD.DatabaseServices與Autodesk.AutoCAD.Geometry中的幾何對(duì)象的區(qū)別、聯(lián)系與作用?前者參見P98,后者參見P29221、 如何在當(dāng)前文件中插入外部文件中的塊?在當(dāng)前AutoCAD數(shù)據(jù)庫中導(dǎo)入其他文件中的塊,但文件本身是不會(huì)被當(dāng)作一個(gè)塊導(dǎo)入實(shí)現(xiàn)過程:A、首先定義一個(gè)數(shù)據(jù)庫對(duì)象來表示包含塊的文件,該數(shù)據(jù)庫對(duì)象會(huì)被加載到內(nèi)存中但不會(huì)被顯示在AutoCAD窗口中B、 調(diào)用Database類的ReadDwgFile函數(shù)將外部Dwg文件讀入到新創(chuàng)建的數(shù)據(jù)庫對(duì)象中C、 調(diào)用Database類的WblockCloneObjects函數(shù)將外部Dwg文件中的塊對(duì)象復(fù)制到當(dāng)前數(shù)據(jù)庫中程序?qū)崿F(xiàn)過程:1)創(chuàng)建R標(biāo)數(shù)據(jù)庫和源教據(jù)庫DiK'nmenlColIvt'lmiridm-ALitodcAkuAuitDCAIXApplicfitionScrviEtSu.IppJication.Ilacijnicnt^llanagcr;Editn-ifd=dniPMdiAclii'eDocumeint,Editor;Ihiiuhii1*.!1=dlniA1dii.*^elLv<!Daeiimciii1,DuilAbniie;DuilubuhM:suurccDb=hlwDmUil以%)21(「』1強(qiáng)&Iruc);耳創(chuàng)建集合變五來有儲(chǔ)塊ID的列表ObjecddCoLIettionHocUds=n?wObjectldCollectionO;把源DWGi^A源數(shù)據(jù)庫sourceDbsourccDb.R<lh(1DwgFile(soiirccFH(?NamcSystemrIO.lileShare.Read*tnie^
4)讀取外部塊Objectldusmj*(Irunsii-LlJon4)讀取外部塊Objectldusmj*(Irunsii-LlJonmvT=trn.SlurlIrrnismctiimO)JJ罹塊無中檢代每個(gè)映Ibrcach(Object]dbtrldiiabt)IJI^klLibleRccurdht「-(llluckIub[eRtLord}tnL(iet(?jcct(btrld,I)|i-Li]Mndt.l'm'RtuidH物I舛);ii只諾加有北埃和*1叮明In切U瞰是非和非"的塊)if(:blr.liAiiiiiiiiiTiQiig&&ibfr.KLMVO'iiillihlDckTd^uAdkt(1bEr1(l)xhmm華gMM ■』i*-:更三n好r-nl;.、uulit. 計(jì)樣敵場表『用登斌所勺用的資魏□沒有作改變.不需要提交事務(wù)啟T開塊衣BhtkJ'^iljlLbt={blurkT4Lbk*>tj]j.Gc[Obje€(^uurrrbb.BhckTiibkld^OpenMudf.FurRi'ud,ml就Autodeskn4ut?CAD.DatabfiiSf:Servicc&Tinin喝心i,>n.Mtriage「tm禎UHcDLi.TEfL皤UitumAlkilii飄ir£5}克隆到目標(biāo)數(shù)據(jù)庫中村用WblDLkCloneObjeers把所有的塊質(zhì)源庫拷員塊到目的庫的塊表中。這只能實(shí)現(xiàn)導(dǎo)入塊到指定的數(shù)據(jù)席中,但不是深度克隆,若對(duì)塊參瞬。實(shí)行深度克曉的話,其所引用的塊也會(huì)械克隆到指定的數(shù)據(jù)寐中sourceDbAVblockClonellibjettsiblockldls,dNtUh.RlockTMleldmapping^D叩的ateR財(cái)ordCionJn^+Replag.瑜網(wǎng));22、如何在當(dāng)前文件中插入其他DWG文件?在當(dāng)前CAD圖形文件中加載其他DWG文件其實(shí)質(zhì)就是源數(shù)據(jù)庫讀取圖形實(shí)體添加到當(dāng)前的圖形數(shù)據(jù)庫中,基本過程如下:1) 創(chuàng)建目標(biāo)數(shù)據(jù)庫和源數(shù)據(jù)庫2) 通過源數(shù)據(jù)庫的ReadDwgFile方法讀取外部DWG文件3) 使用Insert方法將外部DWG文件的源數(shù)據(jù)庫合并到目標(biāo)數(shù)據(jù)庫中,那么外部文件在目標(biāo)數(shù)據(jù)庫的塊表中就以新的塊表記錄存在ObjectIdInsert(stringblockName,Autodesk.AutoCAD.DatabaseServices.DatabasedataBase,boolpreserveSourceDatabase)ObjectIdidBTR=destDb.Insert(fname.Substring(n+1,fname.Length-n-5),sourceDb,false);4) 將新建塊表記錄加載到當(dāng)前塊表記錄中5) 刪除新建塊表記錄DBObjectdbObj=Trans.GetObject(idBTR,OpenMode.ForWrite);dbObj.Erase();23、AutoCAD有哪些選擇集過濾規(guī)則類型?請列舉部分實(shí)例代碼。選擇集過濾規(guī)則類型:A、 使用選擇集過濾器定義選擇集規(guī)則B、 在選擇集過濾器中指定多個(gè)條件C、 添加復(fù)雜的過濾器列表?xiàng)l件D、 在選擇器過濾器條件中使用通配符E、 過濾擴(kuò)展數(shù)據(jù)實(shí)例:
實(shí)例:使用過濾器選擇圓圖形實(shí)體piunimnnd\Tflh?bLl(,!Fill 獨(dú)publicvoidFintei^eleeiiOfliSelO{M換得當(dāng)前丈檔的拍輯舜EditfiiacDocEd=\ppli>c3tiQni.Dii>£iLiEiiejirMaiL3gci\M>dlA!eriY>cDocume]iit.EJ1rar^B創(chuàng)建一個(gè)TypedVraBue數(shù)蛆.用于定一義過建條件l>pc!dXSiluel|flcTypVfllAr=new1擴(kuò)叩4\時(shí)睥[11;SW1'pV州AnJSHVsiluHmwJ'vpedV'uiJije((ihnDilCudt.SllMnhT'CIRCLErK0);0戒值過渡條件陪秘1用〔叫而而對(duì)蒙Sclwll加iFIH刊ac^lF(r=mew5fk<lluiiFI]1k'ttacT>[pVaiAr|;&要求在圖形區(qū)域中選擇州象PrtunptSLHiTlidnRcnuIiacSSPrcrnipt;oicSSPrampt=aff>MEjd.G£iSekrlloii(ft£5eLFtr]i;0如果提示狀哀是OK,對(duì)Si就被選擇了if位 wpi孺 ==PniiiipiSmin\POK)SLleclicHaStldcSScl=m£S^P「empt?、'Mu以印[疝Ei加胡hg,U"fDii仙唧”所選擇對(duì)期個(gè)數(shù):1,1+atSStt-CwiiBLToSkiliUgO);rlsr(辿叫頃或頂時(shí)州再心口詢嘩廣所選擇對(duì)軟個(gè)故?');\實(shí)例/?獲得當(dāng)前文檔的編輯器EditoracDvcEd=kpplicut*iin,DocuinentMaiui{ger?MdiActivcI>()cuniciit.Editor;H創(chuàng)建一個(gè)TyptdValiic 用于定義過寤條件Typed\'alm[|arTypVrulAr=newTypecR\klut[3|:3cTypVaIAr+SetVuIuc(newI>pedValue((int)DxTCihIcjCoftor}5),0);;ikT;|AnlAi\SftViiluv(ii頃Ty[]cdValuc((int)Dxf(?diJ>tnrt,"CIRCLE”),1);bcTypVralAr*SetValue{iicwTypcx)Valuc((int)fJxftuclt\I.ayerFsamc,"Uhb}t2)://賦值過濾條件給SeltL-tionFilterXl象SelectiimI'ilttiracSelFlr=newSelectiimIiltur^acrvpVrtlAr);1要求在圖形區(qū)域中選擇對(duì)象PromptSclecdonResultacSSPrumpt:acSSPrimipt=acDocEd.(ittSeledi<?n(3£SelFtr};n如果提示狀戀是ok.對(duì)象就被遍椅fif(dtSSPmiripl.SUiu^==PrcjniplSlaius.OK)SplcclionSftjicSSeT=acSSProm|JLVflluo^ApplkatioH.ShQwAlertDialoKC,所選擇對(duì)象個(gè)數(shù):"十jkSSMCqunt,ToStri嘩0);else{AppIkatifm.ShowAlertDialogC1所選擇對(duì)象個(gè)數(shù);(T);i實(shí)例1:選擇半徑大于或等于5.0的圓//創(chuàng)建一個(gè)TypedValue數(shù)組,用于定義過濾條件TypedValue[]acTypValAr=newTypedValue[3];acTypValAr.SetValue(newTypedValue((int)DxfCode.Start,"CIRCLE"),0);acTypValAr.SetValue(newTypedValue((int)DxfCode.Operator,">="),1);acTypValAr.SetValue(newTypedValue(40,5),2);//賦值過濾條件給SelectionFilter對(duì)象SelectionFilteracSelFtr=newSelectionFilter(acTypValAr);//要求在圖形區(qū)域中選擇對(duì)象PromptSelectionResultacSSPrompt;acSSPrompt=acDocEd.GetSelection(acSelFtr);實(shí)例2:選擇Text或Mtext對(duì)象〃創(chuàng)建一個(gè)TypedValue數(shù)組,用于定義過濾條件TypedValue[]acTypValAr=newTypedValue[4];acTypValAr.SetValue(newTypedValue((int)DxfCode.Operator,"<or"),0);acTypValAr.SetValue(newTypedValue((int)DxfCode.Start,"TEXT"),1);acTypValAr.SetValue(newTypedValue((int)DxfCode.Start,"MTEXT"),2);acTypValAr.SetValue(newTypedValue((int)DxfCode.Operator,"or>"),3);〃賦值過濾條件給SelectionFilter對(duì)象SelectionFilteracSelFtr=newSelectionFilter(acTypValAr);〃要求在圖形區(qū)域中選擇對(duì)象PromptSelectionResultacSSPrompt;acSSPrompt=acDocEd.GetSelection(acSelFtr);實(shí)例:選擇所有文字字符串中出現(xiàn)“The”的多行文字H創(chuàng)建一個(gè)Typed\?31ne數(shù)組.用于定義過濾條件acTypVaLV=u傾TypeiB'silucP];ucTypVn14r.SetVhlunen1ypedValiK((int)D\1CudcfSt3rL'fMTEXT1T),Q);■cTypVuLAr.SetVuluI%pedVhIuc((int)]>xfCiidc.Text, 1);H賦值過濾條件給SelectinnFilfer對(duì)象SekctinnFiltPiracSelFtr=newSellectioaiFilitej_(acTypVailAr):甘要求在圖形區(qū)域中選擇對(duì)象IfcrnniptSelcctinnResuItacSSPrompt;HcSSPnrmpt=acDoeE(LGe4S?lectk>nUc$eiFtr);實(shí)例:查找出包含通過“MY_APP”應(yīng)用程序添加的外部數(shù)據(jù)的圓/.■'獲一當(dāng)前文檔的編輯器EditoracDdcEcI=Appiicalioo^DocigimenfManS£Cr+MdiActiveDoemmentBdilor-〃創(chuàng)建一個(gè)T/p<?dViihw數(shù)那用于定義過濾條件Ty|jedV^luc[|acTypValAr=newTtptdValu<i."[2|;ucTypVaIAr.SetVmlue(newfypud\silue((iiat)DxFCude.Start4,lCirctell)sB);acTypVaIAr-SetVfllu^niewfypcdXalue((int)DxfCudc.ExtendedDwtaRegAppName9ffM¥APP'I);f/陌值過沌條件^StlKtinnFiltcr肘象Stkctioii acSelFtr■newSekcrioiiIiltci(ac1ypVaiAr):H要求在圖形區(qū)域中逸擇對(duì)彖PourkiptSelcLLiuiiRu^ulI ;ueSSProinpl=atDocEd.GelSdt^eliuiri(acSelFt24、在AutoCAD中如何給一條道路添加擴(kuò)展屬性數(shù)據(jù)XData?請給出具體實(shí)現(xiàn)。1)擴(kuò)展數(shù)據(jù)需要一個(gè)唯一的應(yīng)用程序名,可以通過acdbRegApp()進(jìn)行注冊,名字最長可達(dá)31個(gè)字符2)由于每個(gè)數(shù)據(jù)庫對(duì)象可以附加多個(gè)應(yīng)用程序的數(shù)據(jù),所以在結(jié)果緩沖區(qū)鏈表中,應(yīng)用程序名是每段擴(kuò)展數(shù)據(jù)的第一個(gè)數(shù)據(jù),其后的結(jié)果緩沖數(shù)據(jù)都?xì)w此應(yīng)用程序名所有具體實(shí)現(xiàn):publicstringappName="Road";[CommandMethod("setXData")]publicvoidsetXData(){〃選擇實(shí)體PromptEntityOptionspEntityOptions=newPromptEntityOptions("\n請選擇道路");PromptEntityResultpEntityResult=pEd.GetEntity(pEntityOptions);if(pEntityResult.Status==PromptStatus.OK){ObjectIdpEntId=pEntityResult.ObjectId;using( pTrans=m_db.TransactionManager.StartTransaction()){EntitypRoadEnt=(Entity)pTrans.GetObject(pEntId,OpenMode.ForWrite);TypedValue[]vals=newTypedValue[]{//注冊應(yīng)用程序newTypedValue(Convert.ToInt16(DxfCode.ExtendedDataRegAppName),appName),newTypedValue(Convert.ToInt16(DxfCode.ExtendedDataAsciiString),"中央路”),newTypedValue(Convert.ToInt16(DxfCode.ExtendedDataAsciiString),"瀝青路面"),newTypedValue(Convert.ToInt16(DxfCode.ExtendedDataAsciiString),"2000"),newTypedValue(Convert.ToInt16(DxfCode.ExtendedDataAsciiString),"雙向")};〃創(chuàng)建緩存ResultBufferpResBuff=newResultBuffer(vals);〃設(shè)置擴(kuò)展數(shù)據(jù)pRoadEnt.XData=pResBuff;pTrans.Commit();}[CommandMethod("ReadXData")]publicvoidReadXData(){〃選擇實(shí)體PromptEntityOptionspEntityOptions=newPromptEntityOptions("\a請選擇道路");PromptEntityResultpEntityResult=pEd.GetEntity(pEntityOptions);if(pEntityResult.Status==PromptStatus.OK){ObjectIdpEntId=pEntityResult.ObjectId;using( pTrans=m_db.TransactionManager.StartTransaction()){EntitypRoadEnt=(Entity)pTrans.GetObject(pEntId,OpenMode.ForRead);if(pRoadEnt.XData==null)return;//得到實(shí)體擴(kuò)展數(shù)據(jù)緩存ResultBufferpResBuff=pRoadEnt.XData;//轉(zhuǎn)換成!^部¥涮?!陻?shù)組TypedValue[]getvals=pResBuff.AsArray();stringpRoadName=getvals[1].Value.ToString();stringpRoadMtia=getvals[2].Value.ToString();stringpRoadYear=get
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中考化學(xué)模擬考試卷(帶答案)
- 2025年藥學(xué)招聘考試試題及答案
- 牙科口腔常識(shí)題庫及答案
- 2025年高考綜合測評(píng)真題及答案
- 2025年體育場館管理試題及答案
- 2025年中職面試文秘真題及答案
- 化學(xué)實(shí)驗(yàn)活動(dòng)(設(shè)計(jì)實(shí)驗(yàn))參與度與興趣調(diào)查試題
- 2025年高三物理高考復(fù)習(xí)試題
- 構(gòu)成理論考試題及答案解析
- 2025年高考物理多過程問題分析能力提升試題
- 徽商與徽文化課件
- 品質(zhì)測量員試題及答案
- 潔凈燈具行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 項(xiàng)目公司廉政風(fēng)險(xiǎn)點(diǎn)及防范措施
- 無人駕駛車輛在醫(yī)療物資運(yùn)輸中的應(yīng)用研究-洞察分析
- 暴雨過后工地復(fù)工復(fù)產(chǎn)方案
- TNBSIA 001-2024 建筑設(shè)備一體化管控平臺(tái)建設(shè)技術(shù)要求
- JT-T-848-2013公路用復(fù)合隔離柵立柱
- 《客艙安全與應(yīng)急處置》-課件:其他輔助設(shè)備
- chap5-高性能混凝土的性能-物理力學(xué)性能
- 縣河長制方案
評(píng)論
0/150
提交評(píng)論