




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)第第6講講 AutoCAD內(nèi)部命令調(diào)用內(nèi)部命令調(diào)用及用戶(hù)交互及用戶(hù)交互主講人:劉德兒主講人:劉德兒2國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)2 2、使用、使用AutoCADAutoCAD內(nèi)部命令內(nèi)部命令主要內(nèi)容3 3、和用戶(hù)交互、和用戶(hù)交互4 4、選擇集、選擇集1 1、C+C+類(lèi)型轉(zhuǎn)換成類(lèi)型轉(zhuǎn)換成C#C#類(lèi)型類(lèi)型3國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)1、C#調(diào)用調(diào)用dll時(shí)的類(lèi)型轉(zhuǎn)換時(shí)的類(lèi)型轉(zhuǎn)換C+(Win 32)C#char*作為輸入?yún)?shù)轉(zhuǎn)為char,通過(guò)Encoding類(lèi)對(duì)這個(gè)string進(jìn)行編碼后得到的一個(gè)
2、char作為輸出參數(shù)轉(zhuǎn)為byte,通過(guò)Encoding類(lèi)對(duì)這個(gè)byte進(jìn)行解碼,得到字符串4國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)C+ Dll接口:接口:void CplusplusToCsharp(in char* AgentID, out char* AgentIP);C#中的聲明:DllImport(Example.dll)public static extern void CplusplusToCsharp(char AgentID, byte AgentIP);C#中的調(diào)用:中的調(diào)用:Encoding encode = Encoding.Default;byte tAg
3、entID;byte tAgentIP;string AgentIP;tAgentID = new byte100;tAgentIP = new byte100;CplusplusToCsharp(encode.GetChars(tAgentID), tAgentIP);AgentIPi = encode.GetString(tAgentIP,i*Length,Length);5國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)1、C#調(diào)用調(diào)用dll時(shí)的類(lèi)型轉(zhuǎn)換時(shí)的類(lèi)型轉(zhuǎn)換HandleIntPtrHwndIntPtrint*ref intint&ref intvoid*IntPtrunsig
4、ned char*ref byteBOOLboolDWORDint 或 uint(int 更常用一些)6國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)枚舉類(lèi)型枚舉類(lèi)型Win32:BOOL MessageBeep(UINT uType / 聲音類(lèi)型聲音類(lèi)型); 其中其中的聲音類(lèi)型為枚舉類(lèi)型中的某一值。的聲音類(lèi)型為枚舉類(lèi)型中的某一值。C#:用戶(hù)需要自己定義一個(gè)枚舉類(lèi)型:public enum BeepType SimpleBeep = -1, IconAsterisk = 0 x00000040, IconExclamation = 0 x00000030, IconHand = 0 x00
5、000010, IconQuestion = 0 x00000020, Ok = 0 x00000000,C#中導(dǎo)入該函數(shù):中導(dǎo)入該函數(shù):DllImport(user32.dll)public static extern bool MessageBeep(BeepType beepType);C#中調(diào)用該函數(shù):中調(diào)用該函數(shù): MessageBeep(BeepType.IconQuestion);7國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)1、C#調(diào)用調(diào)用dll時(shí)的類(lèi)型轉(zhuǎn)換時(shí)的類(lèi)型轉(zhuǎn)換結(jié)構(gòu)結(jié)構(gòu)轉(zhuǎn)換轉(zhuǎn)換Win32:使用結(jié)構(gòu)指針作為參數(shù)的函數(shù):BOOL GetSystemPowerStat
6、us(LPSYSTEM_POWER_STATUS lpSystemPowerStatus);Win32中該結(jié)構(gòu)體的定義:中該結(jié)構(gòu)體的定義:typedef struct _SYSTEM_POWER_STATUS BYTE ACLineStatus;BYTE BatteryFlag;BYTE BatteryLifePercent;BYTE Reserved1;DWORDBatteryLifeTime;DWORDBatteryFullLifeTime; SYSTEM_POWER_STATUS, *LPSYSTEM_POWER_STATUS;8國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)1、C
7、#調(diào)用調(diào)用dll時(shí)的類(lèi)型轉(zhuǎn)換時(shí)的類(lèi)型轉(zhuǎn)換C#:用戶(hù)自定義相應(yīng)的結(jié)構(gòu)體:用戶(hù)自定義相應(yīng)的結(jié)構(gòu)體:struct SystemPowerStatus byte ACLineStatus; byte batteryFlag; byte batteryLifePercent; byte reserved1; int batteryLifeTime; int batteryFullLifeTime;C#中導(dǎo)入該函數(shù):中導(dǎo)入該函數(shù):DllImport(kernel32.dll)public static extern bool GetSystemPowerStatus( ref SystemPowerSta
8、tus systemPowerStatus);C#中調(diào)用該函數(shù):中調(diào)用該函數(shù):SystemPowerStatus sps;.sps初始化賦值GetSystemPowerStatus(ref sps);9國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)1、C#調(diào)用調(diào)用dll時(shí)的類(lèi)型轉(zhuǎn)換時(shí)的類(lèi)型轉(zhuǎn)換字符串字符串對(duì)于字符串的處理分為以下幾種情況:1、字、字符串常量指針的處符串常量指針的處理理(LPCTSTR),也也適應(yīng)于字符串常量的處理,適應(yīng)于字符串常量的處理,.net中的中的string類(lèi)型是不可變的類(lèi)類(lèi)型是不可變的類(lèi)型型2、字、字符串緩沖區(qū)的處理(符串緩沖區(qū)的處理(char*),即),即對(duì)于
9、變長(zhǎng)字符串的處理,對(duì)于變長(zhǎng)字符串的處理,.net中中StringBuilder可用作緩沖可用作緩沖區(qū)區(qū)10國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)1、C#調(diào)用調(diào)用dll時(shí)的類(lèi)型轉(zhuǎn)換時(shí)的類(lèi)型轉(zhuǎn)換-字符字符串串實(shí)實(shí)例例Win32:BOOL GetFile(LPCTSTR lpRootPathName);C#:函數(shù)聲明:DllImport(kernel32.dll, CharSet = CharSet.Auto)static extern bool GetFile (MarshalAs(UnmanagedType.LPTStr)string rootPathName);函數(shù)調(diào)用:函數(shù)調(diào)用
10、:string pathname;GetFile(pathname);備注:備注:DllImport中的CharSet是為了說(shuō)明自動(dòng)地調(diào)用該函數(shù)相關(guān)的Ansi版本或者Unicode版本11國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)1、C#調(diào)用調(diào)用dll時(shí)的類(lèi)型轉(zhuǎn)換時(shí)的類(lèi)型轉(zhuǎn)換-字符串字符串實(shí)實(shí)例例變長(zhǎng)字符串處理:變長(zhǎng)字符串處理:C#:函數(shù)聲明:DllImport(kernel32.dll, CharSet = CharSet.Auto)public static extern int GetShortPathName( MarshalAs(UnmanagedType.LPTStr)
11、string path, MarshalAs(UnmanagedType.LPTStr) StringBuilder shortPath, int shortPathLength);函數(shù)調(diào)用:函數(shù)調(diào)用:StringBuilder shortPath = new StringBuilder(80);int result = GetShortPathName(d:test.jpg, shortPath, shortPath.Capacity);string s = shortPath.ToString();12國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)1、C#調(diào)用調(diào)用dll時(shí)的類(lèi)型轉(zhuǎn)換時(shí)
12、的類(lèi)型轉(zhuǎn)換struct具有內(nèi)嵌字符數(shù)組的結(jié)構(gòu):具有內(nèi)嵌字符數(shù)組的結(jié)構(gòu):Win32:typedef struct _TIME_ZONE_INFORMATION LONG Bias;WCHARStandardName 32 ;SYSTEMTIME StandardDate;LONG StandardBias;WCHARDaylightName 32 ;SYSTEMTIME DaylightDate;LONG DaylightBias; TIME_ZONE_INFORMATION, *PTIME_ZONE_INFORMATION;13國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)1、C#調(diào)用調(diào)
13、用dll時(shí)的類(lèi)型轉(zhuǎn)換時(shí)的類(lèi)型轉(zhuǎn)換C#:StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)struct TimeZoneInformation public int bias; MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32) public string standardName; DateTime standardDate; public int standardBias; MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3
14、2) public string daylightName; SystemTime daylightDate; public int daylightBias;14國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)1、C#調(diào)用調(diào)用dll時(shí)的類(lèi)型轉(zhuǎn)換時(shí)的類(lèi)型轉(zhuǎn)換具有回調(diào)的函數(shù)Win32:BOOL EnumDesktops(HWINSTA hwinsta, / 窗口實(shí)例的句柄ENUMDESKTOPPROC lpEnumFunc,/ 回調(diào)函回調(diào)函數(shù)數(shù)LPARAM lParam/ 用于回調(diào)函數(shù)的值);回調(diào)函數(shù)DESKTOPENUMPROC的聲明:BOOL CALLBACK EnumDesktopPr
15、oc(LPTSTR lpszDesktop,/ 桌面名稱(chēng)LPARAM lParam/ 用戶(hù)定義的值);15國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)1、C#調(diào)用調(diào)用dll時(shí)的類(lèi)型轉(zhuǎn)換時(shí)的類(lèi)型轉(zhuǎn)換C#:將回調(diào)函數(shù)的聲明轉(zhuǎn)化為委托:delegate bool EnumDesktopProc(MarshalAs(UnmanagedType.LPTStr) string desktopName, int lParam);該函數(shù)在C#中的聲明:DllImport(user32.dll, CharSet = CharSet.Auto)static extern bool EnumDesktops
16、( IntPtr windowStation, EnumDesktopProc callback, int lParam);16國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)2 2、使用、使用AutoCADAutoCAD內(nèi)部命令內(nèi)部命令主要內(nèi)容3 3、和用戶(hù)交互、和用戶(hù)交互4 4、選擇集、選擇集1 1、C+C+類(lèi)型轉(zhuǎn)換成類(lèi)型轉(zhuǎn)換成C#C#類(lèi)型類(lèi)型17國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)2、使用、使用AutoCAD內(nèi)部命令內(nèi)部命令n方式一:使用方式一:使用SendStringToExecute n方式二:使用方式二:使用P/Invoke 18國(guó)家制造業(yè)信息化工程重大項(xiàng)目-C
17、AD二次開(kāi)發(fā)二次開(kāi)發(fā)使用使用SendStringToExecutenSendStringToExecute 方法將單個(gè)字符串發(fā)送到命方法將單個(gè)字符串發(fā)送到命令行。該字符串必須包含提供給所執(zhí)行命令的參數(shù),令行。該字符串必須包含提供給所執(zhí)行命令的參數(shù),并依照該命令的提示順序所要求的次序排列這些參數(shù)并依照該命令的提示順序所要求的次序排列這些參數(shù) n使用使用 SendStringToExecute 執(zhí)行命令是異步的,直執(zhí)行命令是異步的,直到到 .NET 命令結(jié)束,否則不會(huì)被調(diào)用命令結(jié)束,否則不會(huì)被調(diào)用 19國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)使用使用P/Invoke方式方式n在在Obj
18、ectARX編程中,可以使用以下函數(shù)來(lái)執(zhí)行編程中,可以使用以下函數(shù)來(lái)執(zhí)行AutoCAD內(nèi)部的命令內(nèi)部的命令acedCommandacedCmd20國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)acedCommand函數(shù)函數(shù)nC+acedCommand函數(shù)的定義為:函數(shù)的定義為: int acedCommand(int rtype, . unnamed); 21國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)22國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)acedCommand函數(shù)函數(shù)n.NET中調(diào)用中調(diào)用acedCommand函數(shù)函數(shù)實(shí)例:繪制圓實(shí)例:繪制圓23國(guó)家制造業(yè)信息
19、化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)效果效果24國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)acedCommand函數(shù)函數(shù)n創(chuàng)建將塊生成創(chuàng)建將塊生成ICON命令命令BlockIcon25國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)acedCmd函數(shù)函數(shù)nC+中,中,acedCmd函數(shù)的定義為:函數(shù)的定義為: int acedCmd(const struct resbuf * rbp); n該函數(shù)的參數(shù)是一個(gè)該函數(shù)的參數(shù)是一個(gè)resbuf類(lèi)型的指針,這里需要的結(jié)果緩類(lèi)型的指針,這里需要的結(jié)果緩沖區(qū)可以由沖區(qū)可以由acutBuildList函數(shù)生成。由于函數(shù)生成。由于acedCo
20、mmand函函數(shù)實(shí)質(zhì)上也是為要執(zhí)行的命令構(gòu)造了一個(gè)數(shù)實(shí)質(zhì)上也是為要執(zhí)行的命令構(gòu)造了一個(gè)resbuf結(jié)構(gòu),因此結(jié)構(gòu),因此acedCmd函數(shù)和函數(shù)和acedCommand函數(shù)完全能夠?qū)崿F(xiàn)相同的功函數(shù)完全能夠?qū)崿F(xiàn)相同的功能能26國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)acedCmd函數(shù)函數(shù)union ads_u_val ads_real rreal; ads_real rpoint3; short rint; / Must be declared short, not int. char *rstring;long rlname2; long rlong; struct ads_bina
21、ry rbinary; ; struct resbuf struct resbuf *rbnext; / Linked list pointer short restype; union ads_u_val resval; ; 27國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)acedCmd函數(shù)函數(shù)nC#中使用中使用acedCmd函數(shù)函數(shù)創(chuàng)建創(chuàng)建Zoom實(shí)例實(shí)例28國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)acedCmd函數(shù)函數(shù)nC#中使用中使用acedCmd函數(shù)函數(shù)創(chuàng)建創(chuàng)建Circle實(shí)例實(shí)例29國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)2 2、使用、使用AutoC
22、ADAutoCAD內(nèi)部命令內(nèi)部命令主要內(nèi)容3 3、和用戶(hù)交互、和用戶(hù)交互4 4、選擇集、選擇集1 1、C+C+類(lèi)型轉(zhuǎn)換成類(lèi)型轉(zhuǎn)換成C#C#類(lèi)型類(lèi)型30國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)3、和用戶(hù)交互、和用戶(hù)交互nAutoCAD中命令提示中命令提示如在如在AutoCAD中執(zhí)行中執(zhí)行PLINE命令時(shí),能夠得到如下的命令時(shí),能夠得到如下的命令提示:命令提示: 命令命令: _pline 指定起點(diǎn)指定起點(diǎn): 當(dāng)前線寬為當(dāng)前線寬為 0.0000 指定下一個(gè)點(diǎn)或指定下一個(gè)點(diǎn)或 圓弧圓弧(A)/半寬半寬(H)/長(zhǎng)度長(zhǎng)度(L)/放棄放棄(U)/寬度寬度(W): 指定下一點(diǎn)或指定下一點(diǎn)或 圓弧圓
23、弧(A)/閉合閉合(C)/半寬半寬(H)/長(zhǎng)度長(zhǎng)度(L)/放棄放棄(U)/寬度寬度(W): 其中的提示其中的提示“指定下一個(gè)點(diǎn)或指定下一個(gè)點(diǎn)或 圓弧圓弧(A)/半寬半寬(H)/長(zhǎng)長(zhǎng)度度(L)/放棄放棄(U)/寬度寬度(W):”就將提示用戶(hù)輸入點(diǎn)和關(guān)就將提示用戶(hù)輸入點(diǎn)和關(guān)鍵字結(jié)合在一起。鍵字結(jié)合在一起。31國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā) 3、和用戶(hù)交互、和用戶(hù)交互nC+ ObjectARX中提供了多個(gè)提示用戶(hù)輸入的全局函數(shù),包括中提供了多個(gè)提示用戶(hù)輸入的全局函數(shù),包括acedGetString、acedGetPoint、acedGetInt、acedGetKword和和ac
24、edGetReal等等nC#命名空間:命名空間:Autodesk.AutoCAD.EditorInputGetString、GetPoint、GetInt、GetKword和和GetReal等等輸入提示并獲取輸入結(jié)果模板輸入提示并獲取輸入結(jié)果模板輸入提示輸入提示 PromptXXXOptions pOptions = new PromptXXXOptions(“”)獲得輸入結(jié)果獲得輸入結(jié)果 (1)有指定類(lèi)型返回結(jié)果)有指定類(lèi)型返回結(jié)果 PromptXXXResult pResult = ed.GetXXX(pOptions ); (2)沒(méi)有指定類(lèi)型返回結(jié)果()沒(méi)有指定類(lèi)型返回結(jié)果(string
25、型型) PromptResult pResult = ed.GetXXX(pOptions ); (3)得到具體結(jié)果,如)得到具體結(jié)果,如 string DK = pResult .StringResult.Trim();32國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)3、和用戶(hù)交互、和用戶(hù)交互n輸入提示抽象類(lèi):輸入提示抽象類(lèi):PromptOptions,所有具體提示,所有具體提示輸入類(lèi)都繼承了該類(lèi)輸入類(lèi)都繼承了該類(lèi)33國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)3、和用戶(hù)交互、和用戶(hù)交互-實(shí)例實(shí)例n讀入字符串讀入字符串34國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)3
26、、和用戶(hù)交互、和用戶(hù)交互-實(shí)例實(shí)例n讀入讀入Double型數(shù)據(jù)型數(shù)據(jù)35國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)3、和用戶(hù)交互、和用戶(hù)交互-實(shí)例實(shí)例n讀入讀入Point36國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)3、和用戶(hù)交互、和用戶(hù)交互-實(shí)例實(shí)例n拾取實(shí)體拾取實(shí)體37國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)3、和用戶(hù)交互、和用戶(hù)交互-實(shí)例實(shí)例n打開(kāi)打開(kāi)dwg文件(文件(using Autodesk.AutoCAD.Windows;)38國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)2 2、使用、使用AutoCADAutoCAD內(nèi)部命令內(nèi)部命令主要內(nèi)容
27、3 3、和用戶(hù)交互、和用戶(hù)交互4 4、選擇集、選擇集1 1、C+C+類(lèi)型轉(zhuǎn)換成類(lèi)型轉(zhuǎn)換成C#C#類(lèi)型類(lèi)型39國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)4、選擇集、選擇集n1)獲得)獲得PickFirst選擇集選擇集 n2)在圖形區(qū)域中選擇對(duì)象)在圖形區(qū)域中選擇對(duì)象 n3)添加或合并多個(gè)選擇集)添加或合并多個(gè)選擇集 n4)定義選擇集過(guò)濾規(guī)則)定義選擇集過(guò)濾規(guī)則 n5)從選擇集中移除對(duì)象)從選擇集中移除對(duì)象 40國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)4.1、獲得獲得PickFirst選擇集選擇集 nPickFirst 選擇集是在先選擇對(duì)象后啟動(dòng)命令的時(shí)候創(chuàng)建的選擇集是在先選
28、擇對(duì)象后啟動(dòng)命令的時(shí)候創(chuàng)建的n為了獲得為了獲得 PickFirst 選擇集的對(duì)象,必須滿(mǎn)足:選擇集的對(duì)象,必須滿(mǎn)足:PICKFIRST 系統(tǒng)變量必須設(shè)置為系統(tǒng)變量必須設(shè)置為 1 必須給命令定義必須給命令定義 UsePickSet 命令標(biāo)記,用以通知命令要使用命令標(biāo)記,用以通知命令要使用 Pickfirst 選擇集選擇集 調(diào)用調(diào)用 SelectImplied 方法獲得方法獲得 PickFirst 選擇集選擇集 41國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)4.2、在圖形區(qū)域中選擇對(duì)象在圖形區(qū)域中選擇對(duì)象 n允許用戶(hù)從圖形中選擇對(duì)象的函數(shù):允許用戶(hù)從圖形中選擇對(duì)象的函數(shù): GetSele
29、ction:提示用戶(hù)從屏幕中拾取對(duì)象提示用戶(hù)從屏幕中拾取對(duì)象 SelectAll:在當(dāng)前空間中選擇所有對(duì)象,但不包括鎖在當(dāng)前空間中選擇所有對(duì)象,但不包括鎖定或凍結(jié)的定或凍結(jié)的 SelectCrossingPolygon:選擇與通過(guò)指定點(diǎn)定義的多選擇與通過(guò)指定點(diǎn)定義的多邊形內(nèi)部和相交的對(duì)象。多邊形可以是任何形狀但不邊形內(nèi)部和相交的對(duì)象。多邊形可以是任何形狀但不能與它自己相交或接觸能與它自己相交或接觸 SelectCrossingWindow:選擇與通過(guò)兩個(gè)點(diǎn)定義的區(qū)選擇與通過(guò)兩個(gè)點(diǎn)定義的區(qū)域內(nèi)部和相交的對(duì)象域內(nèi)部和相交的對(duì)象SelectFence:選擇與選擇柵格相交的所有對(duì)象。柵格選擇與選擇與選
30、擇柵格相交的所有對(duì)象。柵格選擇與多邊形相交選擇是相似的,不同的是柵格不能封閉,而且柵格可多邊形相交選擇是相似的,不同的是柵格不能封閉,而且柵格可以與自己相交以與自己相交42國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)4.2、在圖形區(qū)域中選擇對(duì)象在圖形區(qū)域中選擇對(duì)象SelectLast:選擇當(dāng)前空間中最后創(chuàng)建的對(duì)象:選擇當(dāng)前空間中最后創(chuàng)建的對(duì)象 SelectPrevious:選擇在前一個(gè)選擇對(duì)象提示時(shí)選擇的所:選擇在前一個(gè)選擇對(duì)象提示時(shí)選擇的所有對(duì)象有對(duì)象 SelectWindow:選擇完全包含在通過(guò)兩個(gè)點(diǎn)定義的矩形內(nèi):選擇完全包含在通過(guò)兩個(gè)點(diǎn)定義的矩形內(nèi)部的所有對(duì)象部的所有對(duì)象 Sel
31、ectWindowPolygon:選擇完全包含在通過(guò)點(diǎn)定義的多:選擇完全包含在通過(guò)點(diǎn)定義的多邊形里面的對(duì)象。多邊形可以是任何形狀但不能與它自己邊形里面的對(duì)象。多邊形可以是任何形狀但不能與它自己相交或接觸相交或接觸 SelectAtPoint:選擇經(jīng)過(guò)給定點(diǎn)的對(duì)象并將它們放到活動(dòng):選擇經(jīng)過(guò)給定點(diǎn)的對(duì)象并將它們放到活動(dòng)選擇集中去選擇集中去 SelectByPolygon:選擇柵格內(nèi)部的對(duì)象并將它們放到活:選擇柵格內(nèi)部的對(duì)象并將它們放到活動(dòng)選擇集中去動(dòng)選擇集中去 43國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)44國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)4.3、添加或合并多個(gè)選擇
32、集、添加或合并多個(gè)選擇集 n用戶(hù)可以合并多個(gè)選擇集,需要?jiǎng)?chuàng)建一個(gè)用戶(hù)可以合并多個(gè)選擇集,需要?jiǎng)?chuàng)建一個(gè) ObjectIdCollection 對(duì)象,然后向其中添加多個(gè)選擇集的對(duì)對(duì)象,然后向其中添加多個(gè)選擇集的對(duì)象的象的 ObjectID 45國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)4.4、定義選擇集過(guò)濾規(guī)則、定義選擇集過(guò)濾規(guī)則 n選擇集過(guò)濾規(guī)則類(lèi)型:選擇集過(guò)濾規(guī)則類(lèi)型:使用選擇集過(guò)濾器定義選擇集規(guī)則使用選擇集過(guò)濾器定義選擇集規(guī)則 在選擇集過(guò)濾器中指定多個(gè)條件在選擇集過(guò)濾器中指定多個(gè)條件 添加復(fù)雜的過(guò)濾器列表?xiàng)l件添加復(fù)雜的過(guò)濾器列表?xiàng)l件 在選擇器過(guò)濾器條件中使用通配符在選擇器過(guò)濾器條件
33、中使用通配符 過(guò)濾擴(kuò)展數(shù)據(jù)過(guò)濾擴(kuò)展數(shù)據(jù) 46國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)4.4.1、使用選擇集過(guò)濾器定義選擇集規(guī)使用選擇集過(guò)濾器定義選擇集規(guī)則則 n常用過(guò)濾器的常用過(guò)濾器的 DXF 組碼組碼 47國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)4.4.1、使用選擇集過(guò)濾器定義選擇集規(guī)使用選擇集過(guò)濾器定義選擇集規(guī)則則n過(guò)濾器類(lèi)過(guò)濾器類(lèi)SelectionFilter48國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)4.4.1、使用選擇集過(guò)濾器定義選擇集規(guī)使用選擇集過(guò)濾器定義選擇集規(guī)則則n實(shí)例:使用過(guò)濾器選擇圓圖形實(shí)體實(shí)例:使用過(guò)濾器選擇圓圖形實(shí)體49國(guó)家制造業(yè)信息
34、化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)4.4.2、在選擇集過(guò)濾器中指定多個(gè)條件在選擇集過(guò)濾器中指定多個(gè)條件 n示例,給定兩個(gè)選擇對(duì)象的過(guò)濾條件:示例,給定兩個(gè)選擇對(duì)象的過(guò)濾條件:對(duì)象必須是圓,并且對(duì)象必須是圓,并且必須在圖層必須在圖層 0 上上50國(guó)家制造業(yè)信息化工程重大項(xiàng)目-CAD二次開(kāi)發(fā)二次開(kāi)發(fā)4.4.3、添加復(fù)雜的過(guò)濾器列表?xiàng)l件添加復(fù)雜的過(guò)濾器列表?xiàng)l件 n指定多個(gè)選擇條件的方式:指定多個(gè)選擇條件的方式:對(duì)于數(shù)字項(xiàng),用戶(hù)可以指定關(guān)系運(yùn)算(例如,圓的半對(duì)于數(shù)字項(xiàng),用戶(hù)可以指定關(guān)系運(yùn)算(例如,圓的半徑必須大于或等于徑必須大于或等于 5.0)對(duì)于所有項(xiàng),用戶(hù)可以指定邏輯運(yùn)算(例如對(duì)于所有項(xiàng),用戶(hù)可以指定邏輯運(yùn)算(
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 多元化社會(huì)參與機(jī)制對(duì)社區(qū)治理的促進(jìn)
- 數(shù)字貿(mào)易背景下高職院校商貿(mào)類(lèi)專(zhuān)業(yè)教學(xué)方法的革新
- 智能制造如何促進(jìn)企業(yè)綠色創(chuàng)新與協(xié)同發(fā)展
- 公司發(fā)展階段管理制度
- 推進(jìn)教育科技人才事業(yè)發(fā)展的策略及實(shí)施路徑
- 公司員工全勤獎(jiǎng)管理制度
- 公司大型垃圾箱管理制度
- 公司工程機(jī)械設(shè)備管理制度
- 公司用空調(diào)時(shí)間管理制度
- 公司研發(fā)部文件管理制度
- 承包商資質(zhì)審查表
- 機(jī)械原理課程設(shè)計(jì)汽車(chē)風(fēng)窗刮水器
- 寧波大學(xué)《通信原理》期末考試試題
- 生命體征監(jiān)測(cè)技術(shù)操作考核評(píng)分標(biāo)準(zhǔn)
- 第三章混合策略納什均衡ppt課件
- 粉塵濃度和分散度測(cè)定
- 壓力管道氬電聯(lián)焊作業(yè)指導(dǎo)書(shū)
- 一年級(jí)成長(zhǎng)檔案
- 儲(chǔ)罐電動(dòng)葫蘆倒裝提升方案
- 屋面防水質(zhì)量控制培訓(xùn)課件(共63頁(yè)).ppt
- 報(bào)聯(lián)商企業(yè)的溝通方法課件
評(píng)論
0/150
提交評(píng)論