新增工程cadproject

This commit is contained in:
gjm committed 2026-09-28 21:19:38 +08:00
commit 9c41e1d91c
20 files changed
+1871

No files matched your search

+566
View File
@@ -0,0 +1,566 @@
#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 <AcExtensionModule.h>
#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 <memory>
// 为 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