#pragma once // Description: // AutoCAD ObjectARX开发包KTCadKernel,提供对ObjectARX的二次封装, // 使的开发更加方便,使用时只要将本文件#include进stdafx.h文件中即可, // 并且大部分的arx的头文件都不需要在别处包含了 // Company: Kingtouch Software Corporation. Copyright 2002-2005 // Author: WangYongguang // Date: 2002.05.01 // 根据ObjectARX版本不同链接不同库文件 /* 郭建明 于 2017/04/09 修改 从2010开始,vc++ 可以用切换 PlatformToolset 的方式编译低版本的二进制代码。 所以,不再需要在工程中自己为ADS宏定义版本(例如: ADS=19), 只需要 ADS=$(PlatformToolsetVersion) 即可自动赋值。 故 ADS 由以前的 ObjectARX 版本号,改为 VC++ PlatformToolset 号。 这样一来,只需要切换相应的 PlatformToolset 就可以编译各个CAD平台所使用的二进制文件。 PS: ADS 宏 改为在 earthworm.props 文件内定义。 版本映射: | vc platformtoolset | arx | vc平台 | cad | | 80 | 17 | vc2005 | 2007-2009 | | 90 | 18 | vc2008 | 2010-2012 | | 100 | 19 | vc2010 | 2013-2014 | | 110 | 20 | vc2012 | 2015-2016 | | 140 | 21 | vc2015 | 2017 | R21 使用vc2015编译 | 140 | 22 | vc2015 | 2018 | R22 使用vc2015编译 | 141 | 23 | vc2017 | 2019-2020 | | 142 | 24 | vc2019 | 2021-2023 | R24.0-R24.2 使用vc2019编译 | 143 | 24.3| vc2022 | 2024 | R24.3使用vc2022编译 | 143 | 25 | vc2022 | 2025-2026 | | 143 | 26 | vc2022 | 2027- | */ #ifndef ZWCAD // 以前通过 toolset 来倒推 ARX,现在已经不行了. R24.3,R25,R26都使用 v143 编译 // 所以,现在打包是使用 cmake 工具, ARX 直接从外部传入 #ifdef CMAKE // ARX 从 cmake传入,不再使用toolset倒推 // 对 objectarx库文件的依赖再cmake中定义 #else #if ADS == 80 // VC++2005 #define ARX 17 #elif ADS == 90 // VC++2008 #define ARX 18 #elif ADS == 100 // VC++2010 #define ARX 19 #elif ADS == 110 // VC++2012 #define ARX 20 #elif ADS == 140 && !defined(R22) // VC++2015 #define ARX 21 #elif ADS == 140 && defined(R22) // VC++2015 #define ARX 22 #elif ADS == 141 // VC++2017 #define ARX 23 #elif ADS == 142 // VC++2019 #define ARX 24 #elif ADS == 143 // VC++2022 #define ARX 25 // 注意,以下ARX不要再用此方式编译调试了,toolset已经不能倒推ARX了,所以,如果要编译R26,请使用 cmake, // #elif ADS == 143 // VC++2022 // #define ARX 26 // #elif ADS == 143 // VC++2022 // #define ARX 27 #endif // 下面定义去要依赖的objectarx的库 #if ARX == 17 #pragma comment(lib, "acad.lib") #pragma comment(lib, "rxapi.lib") #pragma comment(lib, "acedapi.lib") #pragma comment(lib, "acgiapi.lib") #pragma comment(lib, "axdb.lib") #pragma comment(lib, "acdb17.lib") #pragma comment(lib, "acge17.lib") #pragma comment(lib, "acISMobj17.lib") #pragma comment(lib, "aecmodeler50.lib") #pragma comment(lib, "adui17.lib") #pragma comment(lib, "acui17.lib") #pragma comment(lib, "acgex17.lib") #pragma comment(lib, "acbr17.lib") #endif // arx 17 #if ARX == 18 #pragma comment(lib, "acad.lib") #pragma comment(lib, "rxapi.lib") #pragma comment(lib, "acedapi.lib") #pragma comment(lib, "acgiapi.lib") #pragma comment(lib, "axdb.lib") #pragma comment(lib, "acdb18.lib") #pragma comment(lib, "acge18.lib") #pragma comment(lib, "acISMobj18.lib") #pragma comment(lib, "aecmodeler60.lib") #pragma comment(lib, "adui18.lib") #pragma comment(lib, "acui18.lib") #pragma comment(lib, "acgex18.lib") #pragma comment(lib, "acbr18.lib") #endif // arx 18 #if ARX == 19 #pragma comment(lib, "acad.lib") #pragma comment(lib, "accore.lib") #pragma comment(lib, "rxapi.lib") #pragma comment(lib, "acgiapi.lib") #pragma comment(lib, "axdb.lib") #pragma comment(lib, "acdb19.lib") #pragma comment(lib, "acge19.lib") #pragma comment(lib, "acISMobj19.lib") #pragma comment(lib, "aecmodeler.lib") #pragma comment(lib, "adui19.lib") #pragma comment(lib, "acui19.lib") #pragma comment(lib, "ac1st19.lib") #pragma comment(lib, "acgex19.lib") #pragma comment(lib, "acbr19.lib") #endif // arx 19 #if ARX == 20 #pragma comment(lib, "acad.lib") #pragma comment(lib, "accore.lib") #pragma comment(lib, "rxapi.lib") #pragma comment(lib, "acgiapi.lib") #pragma comment(lib, "axdb.lib") #pragma comment(lib, "acdb20.lib") #pragma comment(lib, "acge20.lib") #pragma comment(lib, "acISMobj20.lib") #pragma comment(lib, "aecmodeler.lib") #pragma comment(lib, "adui20.lib") #pragma comment(lib, "acui20.lib") #pragma comment(lib, "ac1st20.lib") #pragma comment(lib, "acdrawbridge.lib") #pragma comment(lib, "acgex20.lib") #pragma comment(lib, "acbr20.lib") #endif // arx 20 #if ARX == 21 #pragma comment(lib, "acad.lib") #pragma comment(lib, "accore.lib") #pragma comment(lib, "rxapi.lib") #pragma comment(lib, "acgiapi.lib") #pragma comment(lib, "axdb.lib") #pragma comment(lib, "acdb21.lib") #pragma comment(lib, "acge21.lib") #pragma comment(lib, "aecmodeler.lib") #pragma comment(lib, "acISMobj21.lib") #pragma comment(lib, "adui21.lib") #pragma comment(lib, "acui21.lib") #pragma comment(lib, "ac1st21.lib") #pragma comment(lib, "acdrawbridge.lib") #pragma comment(lib, "acgex21.lib") #pragma comment(lib, "acbr21.lib") #endif // arx 21 #if ARX == 22 #pragma comment(lib, "acad.lib") #pragma comment(lib, "accore.lib") #pragma comment(lib, "rxapi.lib") #pragma comment(lib, "acgiapi.lib") #pragma comment(lib, "axdb.lib") #pragma comment(lib, "acdb22.lib") #pragma comment(lib, "acge22.lib") #pragma comment(lib, "aecmodeler.lib") #pragma comment(lib, "acISMobj22.lib") #pragma comment(lib, "adui22.lib") #pragma comment(lib, "acui22.lib") #pragma comment(lib, "ac1st22.lib") #pragma comment(lib, "acdrawbridge.lib") #pragma comment(lib, "acgex22.lib") #pragma comment(lib, "acbr22.lib") #endif // arx 22 #if ARX == 23 #pragma comment(lib, "acad.lib") #pragma comment(lib, "accore.lib") #pragma comment(lib, "rxapi.lib") #pragma comment(lib, "acgiapi.lib") #pragma comment(lib, "axdb.lib") #pragma comment(lib, "acdb23.lib") #pragma comment(lib, "acge23.lib") #pragma comment(lib, "aecmodeler.lib") #pragma comment(lib, "acISMobj23.lib") #pragma comment(lib, "adui23.lib") #pragma comment(lib, "acui23.lib") #pragma comment(lib, "ac1st23.lib") #pragma comment(lib, "acdrawbridge.lib") #pragma comment(lib, "acgex23.lib") #pragma comment(lib, "acbr23.lib") #endif // arx 23 #if ARX == 24 #pragma comment(lib, "acpal.lib") #pragma comment(lib, "ac1st24.lib") #pragma comment(lib, "acdb24.lib") #pragma comment(lib, "acge24.lib") #pragma comment(lib, "acgiapi.lib") #pragma comment(lib, "acISMobj24.lib") #pragma comment(lib, "rxapi.lib") #pragma comment(lib, "acad.lib") #pragma comment(lib, "accore.lib") #pragma comment(lib, "axdb.lib") #pragma comment(lib, "aecmodeler.lib") #pragma comment(lib, "adui24.lib") #pragma comment(lib, "acui24.lib") #pragma comment(lib, "acdrawbridge.lib") #pragma comment(lib, "acgex24.lib") #pragma comment(lib, "acbr24.lib") #pragma comment(lib, "acgeoment.lib") #endif // arx 24 #if ARX == 25 #pragma comment(lib, "acpal.lib") #pragma comment(lib, "ac1st25.lib") #pragma comment(lib, "acdb25.lib") #pragma comment(lib, "acge25.lib") #pragma comment(lib, "acgiapi.lib") #pragma comment(lib, "acISMobj25.lib") #pragma comment(lib, "rxapi.lib") #pragma comment(lib, "acad.lib") #pragma comment(lib, "accore.lib") #pragma comment(lib, "axdb.lib") #pragma comment(lib, "aecmodeler.lib") #pragma comment(lib, "adui25.lib") #pragma comment(lib, "acui25.lib") #pragma comment(lib, "acdrawbridge.lib") #pragma comment(lib, "acgex25.lib") #pragma comment(lib, "acbr25.lib") #pragma comment(lib, "acgeoment.lib") #endif // arx 25 #endif // !CMAKE #else // ZWCAD #if ADS == 141 // VC++2017 #if defined(R24) #define ARX 24 #pragma message("Automatically linking with ZRX 2024.") #elif defined(R25) #define ARX 25 #pragma message("Automatically linking with ZRX 2025.") #elif defined(R26) #define ARX 26 #pragma message("Automatically linking with ZRX 2026.") #endif #pragma comment(lib, "ZwBase.lib") #pragma comment(lib, "ZWCAD.lib") #pragma comment(lib, "ZwAuto.lib") #pragma comment(lib, "ZwRx.lib") #pragma comment(lib, "ZwZrx.lib") #pragma comment(lib, "ZwGeometry.lib") #pragma comment(lib, "ZwDatabase.lib") #pragma comment(lib, "ZwDatabaseMgd.lib") #pragma comment(lib, "ZwdUI.lib") #pragma comment(lib, "ZwGs.lib") #pragma comment(lib, "ZwTc.lib") #pragma comment(lib, "ZwUI.lib") #pragma comment(lib, "ZwBrep.lib") #pragma comment(lib, "ZwAECModeler.lib") #endif #endif #if ARX > 18 #include "acedads.h" #include "adsmigr.h" #endif #ifndef ZWCAD #if ARX > 19 #if defined(acedCommand) #undef acedCommand #endif #define acedCommand Old_Function_Must_Switch_To_SHacedCommand #if defined(ads_command) #undef ads_command #endif #define ads_command Old_Function_Must_Switch_To_SHads_command #if defined(acedCmd) #undef acedCmd #endif #define acedCmd Old_Function_Must_Switch_To_SHacedCmd #define SHacedCommand(rtype, ...) acedCommandS((rtype), __VA_ARGS__) #define SHacedCmd(rb) acedCmdS((rb)) #define SHads_command SHacedCommand #else #define SHacedCommand(rtype, ...) acedCommand((rtype), __VA_ARGS__) #define SHacedCmd(rb) acedCmd((rb)) #define SHads_command SHacedCommand #endif #else #if ARX > 19 #define SHacedCommand(rtype, ...) acedCommand((rtype), __VA_ARGS__) #define SHacedCmd(rb) acedCmdS((rb)) #define SHads_command SHacedCommand #else #define SHacedCommand(rtype, ...) acedCommand((rtype), __VA_ARGS__) #define SHacedCmd(rb) acedCmd((rb)) #define SHads_command SHacedCommand #endif extern void zrxPostCommand(wchar_t const *); #ifndef acrxEntryPoint #define acrxEntryPoint zcrxEntryPoint #endif #ifndef acedPostCommand #define acedPostCommand zrxPostCommand #endif #ifndef fromAcDbTextStyle #define fromAcDbTextStyle fromZcDbTextStyle #endif #ifndef ASMBodyCopy #define ASMBodyCopy ZSMBodyCopy #endif #ifndef getLockedASMBody #define getLockedASMBody getLockedZSMBody #endif #ifndef unlockASMBody #define unlockASMBody unlockZSMBody #endif #ifndef getLockedWritableASMBody #define getLockedWritableASMBody getLockedWritableZSMBody #endif #ifndef commitWritableASMBody #define commitWritableASMBody commitWritableZSMBody #endif #ifndef setASMBody #define setASMBody setZSMBody #endif #endif #if (ARX > 19) #include "acedCmdNF.h" #endif #pragma region INCLUDE #include "accmd.h" #include "acdb.h" #include "acdbabb.h" #include "aced.h" #include "acedinpt.h" #include "acestext.h" #include "acgi.h" #include "acgiutil.h" #include "AcGsManager.h" #include "acgs.h" #include "gs.h" #include "AcDbLMgr.h" #include "actrans.h" #include "adesk.h" #include "adeskabb.h" #include "ads.h" #include "adscodes.h" #include "adsdef.h" #include "adsdlg.h" #include "adslib.h" #include "adsrxdef.h" #include "appinfo.h" #include "dbacis.h" #include "dbapserv.h" #include "dbaudita.h" #include "dbbody.h" #include "dbboiler.h" #include "dbcfilrs.h" #include "dbcurve.h" #include "dbdate.h" #include "dbdict.h" #include "dbdictdflt.h" #include "dbelipse.h" #include "dbents.h" #include "dbfcf.h" #include "dbfiler.h" #include "dbfilter.h" #include "dbframe.h" #include "dbgroup.h" #include "dbhandle.h" #include "dbhatch.h" #include "dbid.h" #include "dbidar.h" #include "dbidmap.h" #if ARX < 23 #include "dbid_ops.h" #endif #include "dbimage.h" #include "dbindex.h" #include "dbintar.h" #include "dbjig.h" #include "dblayout.h" #include "dblead.h" #include "dbltrans.h" #include "dblyfilt.h" #include "dblyindx.h" #include "dbmain.h" #include "dbmline.h" #include "dbmstyle.h" #include "dbmtext.h" #include "dbole.h" #include "dbpl.h" #include "dbplhldr.h" #include "dbplotsettings.h" #include "dbproxy.h" #include "dbptrar.h" #include "dbray.h" #include "dbregion.h" #include "dbsol3d.h" #include "dbspline.h" #include "dbspfilt.h" #include "dbspindx.h" #include "dbsubeid.h" #include "dbsymtb.h" #include "dbxline.h" #include "dbxrecrd.h" #include "dbxutil.h" #include "summinfo.h" #include "geapln3d.h" #include "gearc2d.h" #include "gearc3d.h" #include "geassign.h" #include "geblok2d.h" #include "geblok3d.h" #include "gebndpln.h" #include "gecbndry.h" #include "gecint2d.h" #include "gecint3d.h" #include "gecomp2d.h" #include "gecomp3d.h" #include "gecone.h" #include "gecspl2d.h" #include "gecspl3d.h" #include "gecurv2d.h" #include "gecurv3d.h" #include "gecylndr.h" #include "gedblar.h" #include "gedll.h" #include "gedwgio.h" #include "gedxfio.h" #include "geell2d.h" #include "geell3d.h" #include "geent2d.h" #include "geent3d.h" #include "geextc2d.h" #include "geextc3d.h" #include "geextsf.h" #include "gefileio.h" #include "gefiler.h" #include "gegbl.h" #include "gegblabb.h" #include "geintarr.h" #include "geintrvl.h" #include "gekvec.h" #include "gelent2d.h" #include "gelent3d.h" #include "gelibver.h" #include "geline2d.h" #include "geline3d.h" #include "gelnsg2d.h" #include "gelnsg3d.h" #include "gemat2d.h" #include "gemat3d.h" #include "genurb2d.h" #include "genurb3d.h" #include "genurbsf.h" #include "geoffc2d.h" #include "geoffc3d.h" #include "geoffsf.h" #include "gepent2d.h" #include "gepent3d.h" #include "geplanar.h" #include "geplane.h" #include "geplin2d.h" #include "geplin3d.h" #include "gepnt2d.h" #include "gepnt3d.h" #include "geponc2d.h" #include "geponc3d.h" #include "geponsrf.h" #include "gepos2d.h" #include "gepos3d.h" #include "gept2dar.h" #include "gept3dar.h" #include "geray2d.h" #include "geray3d.h" #include "gescl2d.h" #include "gescl3d.h" #include "gesent2d.h" #include "gesent3d.h" #include "gesphere.h" #include "gesurf.h" #include "getol.h" #include "getorus.h" #include "gevc2dar.h" #include "gevc3dar.h" #include "gevec2d.h" #include "gevec3d.h" #include "gevptar.h" #include "gexbndsf.h" #include "graph.h" #include "imgdef.h" #include "imgent.h" #include "imgvars.h" #include "lngtrans.h" #include "migrtion.h" #include "oleaprot.h" #include "ol_errno.h" #include "rxboiler.h" #include "rxclass.h" #include "rxdefs.h" #include "rxdict.h" #include "rxditer.h" #include "rxdlinkr.h" #include "rxiter.h" #include "rxkernel.h" #include "rxmfcapi.h" #include "rxnames.h" #include "rxobject.h" #include "rxregsvc.h" #include "rxsrvice.h" #include "xgraph.h" #include "adui.h" #include "acui.h" #include "acuiDialog.h" #include #include "amodeler.h" #include "Point3d.h" #include "axlock.h" #include "dbsubd.h" #include "dbobjptr.h" #pragma endregion #ifndef ZWCAD extern Adesk::Boolean acedPostCommand(const TCHAR *pszCmd); #endif #include // 为 vc2008 的 std::tr1::shared_ptr 注入std空间 #if defined(_MSC_VER) && (_MSC_VER <= 1500) // VC2008 及更早版本 namespace std { using tr1::shared_ptr; using tr1::weak_ptr; } #endif #ifdef min #undef min #endif #ifdef max #undef max #endif