Skip to content

Commit cc98390

Browse files
committed
[#165] PyAcadApplicationImpl
1 parent b57216e commit cc98390

37 files changed

+289
-216
lines changed

PyRxCore/PyAcadApplication.cpp

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#include "stdafx.h"
2+
#include "PyAcadApplication.h"
3+
#include "PyAcadApplicationImpl.h"
4+
5+
bool PyAcadApplication::runTest()
6+
{
7+
return PyAcadApplicationImpl::runTest();
8+
}

PyRxCore/PyAcadApplication.h

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#pragma once
2+
3+
#ifdef PYRXDEBUG
4+
class PyAcadApplication
5+
{
6+
public:
7+
static bool runTest();
8+
};
9+
10+
#endif

PyRxCore/PyAcadApplicationImpl.cpp

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
#include "stdafx.h"
2+
#include "PyAcadApplicationImpl.h"
3+
4+
5+
#ifdef PYRXDEBUG
6+
#include "propvarutil.h"
7+
8+
PyAcadApplicationImpl::PyAcadApplicationImpl()
9+
: m_pimpl(acedGetIDispatch(FALSE))
10+
{
11+
}
12+
13+
void PyAcadApplicationImpl::Eval(const CString& csVal) const
14+
{
15+
_bstr_t bstrVal{ csVal };
16+
PyThrowBadHr(impObj()->Eval(bstrVal));
17+
}
18+
19+
std::vector<std::wstring> PyAcadApplicationImpl::ListArx()
20+
{
21+
VARIANT rtVal;
22+
VariantInit(&rtVal);
23+
#if defined(_ZRXTARGET)
24+
PyThrowBadHr(impObj()->ListZrx(&rtVal));
25+
#elif defined(_GRXTARGET)
26+
PyThrowBadHr(impObj()->ListGrx(&rtVal));
27+
#else
28+
PyThrowBadHr(impObj()->ListArx(&rtVal));
29+
#endif
30+
ULONG pcElem = 0;
31+
PWSTR* prgsz = nullptr;
32+
std::vector<std::wstring> vec;
33+
if (VariantToStringArrayAlloc(rtVal, &prgsz, &pcElem) == S_OK)
34+
{
35+
vec = std::vector<std::wstring>(prgsz, prgsz + pcElem);
36+
CoTaskMemFree(prgsz);
37+
}
38+
return vec;
39+
}
40+
41+
bool PyAcadApplicationImpl::runTest()
42+
{
43+
PyAcadApplicationImpl app;
44+
for (const auto& item : app.ListArx())
45+
acutPrintf(_T("\n%ls"), item.c_str());
46+
return true;
47+
}
48+
49+
IAcadApplication* PyAcadApplicationImpl::impObj(const std::source_location& src /*= std::source_location::current()*/) const
50+
{
51+
if (m_pimpl == nullptr) [[unlikely]] {
52+
throw PyNullObject(src);
53+
}
54+
return static_cast<IAcadApplication*>(m_pimpl.GetInterfacePtr());
55+
}
56+
57+
#endif

PyRxCore/PyAxApplicationImpl.h PyRxCore/PyAcadApplicationImpl.h

+27-4
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
#ifdef PYRXDEBUG
44

5+
#pragma comment( lib , "propsys.lib" )
6+
57
#if defined(_BRXTARGET) && (_BRXTARGET <= 250)
68
#import "axbricscaddb1.tlb" raw_interfaces_only, raw_native_types, no_namespace, named_guids
79
#import "axbricscadapp1.tlb" raw_interfaces_only, raw_native_types, no_namespace, named_guids
@@ -33,16 +35,37 @@
3335

3436
#if defined(_ZRXTARGET)
3537
#define IAcadApplicationPtr IZcadApplicationPtr
38+
#define IAcadApplication IZcadApplication
39+
40+
#define IAcadDocumentPtr IZcadDocumentPtr
41+
#define IAcadDocument IZcadDocument
42+
#endif
43+
44+
#if defined(_GRXTARGET)
45+
#define IAcadApplicationPtr IGcadApplicationPtr
46+
#define IAcadApplication IGcadApplication
47+
48+
#define IAcadDocumentPtr IGcadDocumentPtr
49+
#define IAcadDocument IGcadDocument
3650
#endif
3751

38-
class PyAxApplicationImpl
52+
class PyAcadApplicationImpl
3953
{
4054
public:
41-
PyAxApplicationImpl();
42-
~PyAxApplicationImpl() = default;
55+
PyAcadApplicationImpl();
56+
~PyAcadApplicationImpl() = default;
57+
void Eval(const CString& csVal) const;
58+
//AcadState GetAcadState();
59+
std::vector<std::wstring> ListArx();
60+
4361

62+
static bool runTest();
4463
public:
45-
IAcadApplicationPtr m_pyimp;
64+
IAcadApplication* impObj(const std::source_location& src = std::source_location::current()) const;
65+
protected:
66+
IAcadApplicationPtr m_pimpl;
4667
};
4768

69+
70+
4871
#endif

PyRxCore/PyAcadDatabase.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#include "stdafx.h"
2+
#include "PyAcadDatabase.h"

PyRxCore/PyAxDatabase.h PyRxCore/PyAcadDatabase.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
#ifdef PYRXDEBUG
44

5-
class PyAxDatabase
5+
class PyAcadDatabase
66
{
77
};
88

PyRxCore/PyAcadDatabaseImpl.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#include "stdafx.h"
2+
#include "PyAcadDatabaseImpl.h"
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#pragma once
22

33
#ifdef PYRXDEBUG
4-
class PyAxDatabaseImpl
4+
class PyAcadDatabaseImpl
55
{
66
};
77
#endif

PyRxCore/PyAxApplication.cpp

-2
This file was deleted.

PyRxCore/PyAxApplication.h

-8
This file was deleted.

PyRxCore/PyAxApplicationImpl.cpp

-17
This file was deleted.

PyRxCore/PyAxDatabase.cpp

-2
This file was deleted.

PyRxCore/PyAxDatabaseImpl.cpp

-2
This file was deleted.

PyRxCore/PyRx24.0.vcxproj

+8-8
Original file line numberDiff line numberDiff line change
@@ -141,10 +141,10 @@
141141
<ClCompile Include="PlCore.cpp" />
142142
<ClCompile Include="PyAcAx.cpp" />
143143
<ClCompile Include="PyAcBr.cpp" />
144-
<ClCompile Include="PyAxApplication.cpp" />
145-
<ClCompile Include="PyAxApplicationImpl.cpp" />
146-
<ClCompile Include="PyAxDatabase.cpp" />
147-
<ClCompile Include="PyAxDatabaseImpl.cpp" />
144+
<ClCompile Include="PyAcadApplication.cpp" />
145+
<ClCompile Include="PyAcadApplicationImpl.cpp" />
146+
<ClCompile Include="PyAcadDatabase.cpp" />
147+
<ClCompile Include="PyAcadDatabaseImpl.cpp" />
148148
<ClCompile Include="PyBrEntity.cpp" />
149149
<ClCompile Include="PyBrTraverser.cpp" />
150150
<ClCompile Include="PyDbDbLayerStateManager.cpp" />
@@ -277,10 +277,10 @@
277277
<ClInclude Include="PlCore.h" />
278278
<ClInclude Include="PyAcAx.h" />
279279
<ClInclude Include="PyAcBr.h" />
280-
<ClInclude Include="PyAxApplication.h" />
281-
<ClInclude Include="PyAxApplicationImpl.h" />
282-
<ClInclude Include="PyAxDatabase.h" />
283-
<ClInclude Include="PyAxDatabaseImpl.h" />
280+
<ClInclude Include="PyAcadApplication.h" />
281+
<ClInclude Include="PyAcadApplicationImpl.h" />
282+
<ClInclude Include="PyAcadDatabase.h" />
283+
<ClInclude Include="PyAcadDatabaseImpl.h" />
284284
<ClInclude Include="PyBrEntity.h" />
285285
<ClInclude Include="PyBrTraverser.h" />
286286
<ClInclude Include="PyDbDbLayerStateManager.h" />

PyRxCore/PyRx24.0.vcxproj.filters

+8-8
Original file line numberDiff line numberDiff line change
@@ -388,16 +388,16 @@
388388
<ClCompile Include="PyAcAx.cpp">
389389
<Filter>Source Files\PyAx</Filter>
390390
</ClCompile>
391-
<ClCompile Include="PyAxApplication.cpp">
391+
<ClCompile Include="PyAcadApplication.cpp">
392392
<Filter>Source Files\PyAx</Filter>
393393
</ClCompile>
394-
<ClCompile Include="PyAxDatabase.cpp">
394+
<ClCompile Include="PyAcadDatabase.cpp">
395395
<Filter>Source Files\PyAx</Filter>
396396
</ClCompile>
397-
<ClCompile Include="PyAxApplicationImpl.cpp">
397+
<ClCompile Include="PyAcadApplicationImpl.cpp">
398398
<Filter>Source Files\PyAx</Filter>
399399
</ClCompile>
400-
<ClCompile Include="PyAxDatabaseImpl.cpp">
400+
<ClCompile Include="PyAcadDatabaseImpl.cpp">
401401
<Filter>Source Files\PyAx</Filter>
402402
</ClCompile>
403403
</ItemGroup>
@@ -789,16 +789,16 @@
789789
<ClInclude Include="PyAcAx.h">
790790
<Filter>Header Files\PyAx</Filter>
791791
</ClInclude>
792-
<ClInclude Include="PyAxApplication.h">
792+
<ClInclude Include="PyAcadApplication.h">
793793
<Filter>Header Files\PyAx</Filter>
794794
</ClInclude>
795-
<ClInclude Include="PyAxDatabase.h">
795+
<ClInclude Include="PyAcadDatabase.h">
796796
<Filter>Header Files\PyAx</Filter>
797797
</ClInclude>
798-
<ClInclude Include="PyAxApplicationImpl.h">
798+
<ClInclude Include="PyAcadApplicationImpl.h">
799799
<Filter>Header Files\PyAx</Filter>
800800
</ClInclude>
801-
<ClInclude Include="PyAxDatabaseImpl.h">
801+
<ClInclude Include="PyAcadDatabaseImpl.h">
802802
<Filter>Header Files\PyAx</Filter>
803803
</ClInclude>
804804
</ItemGroup>

PyRxCore/PyRx24.1.vcxproj

+8-8
Original file line numberDiff line numberDiff line change
@@ -141,10 +141,10 @@
141141
<ClCompile Include="PlCore.cpp" />
142142
<ClCompile Include="PyAcAx.cpp" />
143143
<ClCompile Include="PyAcBr.cpp" />
144-
<ClCompile Include="PyAxApplication.cpp" />
145-
<ClCompile Include="PyAxApplicationImpl.cpp" />
146-
<ClCompile Include="PyAxDatabase.cpp" />
147-
<ClCompile Include="PyAxDatabaseImpl.cpp" />
144+
<ClCompile Include="PyAcadApplication.cpp" />
145+
<ClCompile Include="PyAcadApplicationImpl.cpp" />
146+
<ClCompile Include="PyAcadDatabase.cpp" />
147+
<ClCompile Include="PyAcadDatabaseImpl.cpp" />
148148
<ClCompile Include="PyBrEntity.cpp" />
149149
<ClCompile Include="PyBrTraverser.cpp" />
150150
<ClCompile Include="PyDb3dProfile.cpp" />
@@ -277,10 +277,10 @@
277277
<ClInclude Include="PlCore.h" />
278278
<ClInclude Include="PyAcAx.h" />
279279
<ClInclude Include="PyAcBr.h" />
280-
<ClInclude Include="PyAxApplication.h" />
281-
<ClInclude Include="PyAxApplicationImpl.h" />
282-
<ClInclude Include="PyAxDatabase.h" />
283-
<ClInclude Include="PyAxDatabaseImpl.h" />
280+
<ClInclude Include="PyAcadApplication.h" />
281+
<ClInclude Include="PyAcadApplicationImpl.h" />
282+
<ClInclude Include="PyAcadDatabase.h" />
283+
<ClInclude Include="PyAcadDatabaseImpl.h" />
284284
<ClInclude Include="PyBrEntity.h" />
285285
<ClInclude Include="PyBrTraverser.h" />
286286
<ClInclude Include="PyDb3dProfile.h" />

PyRxCore/PyRx24.1.vcxproj.filters

+8-8
Original file line numberDiff line numberDiff line change
@@ -388,16 +388,16 @@
388388
<ClCompile Include="PyAcAx.cpp">
389389
<Filter>Source Files\PyAx</Filter>
390390
</ClCompile>
391-
<ClCompile Include="PyAxApplication.cpp">
391+
<ClCompile Include="PyAcadApplication.cpp">
392392
<Filter>Source Files\PyAx</Filter>
393393
</ClCompile>
394-
<ClCompile Include="PyAxDatabase.cpp">
394+
<ClCompile Include="PyAcadDatabase.cpp">
395395
<Filter>Source Files\PyAx</Filter>
396396
</ClCompile>
397-
<ClCompile Include="PyAxApplicationImpl.cpp">
397+
<ClCompile Include="PyAcadApplicationImpl.cpp">
398398
<Filter>Source Files\PyAx</Filter>
399399
</ClCompile>
400-
<ClCompile Include="PyAxDatabaseImpl.cpp">
400+
<ClCompile Include="PyAcadDatabaseImpl.cpp">
401401
<Filter>Source Files\PyAx</Filter>
402402
</ClCompile>
403403
</ItemGroup>
@@ -789,16 +789,16 @@
789789
<ClInclude Include="PyAcAx.h">
790790
<Filter>Header Files\PyAx</Filter>
791791
</ClInclude>
792-
<ClInclude Include="PyAxApplication.h">
792+
<ClInclude Include="PyAcadApplication.h">
793793
<Filter>Header Files\PyAx</Filter>
794794
</ClInclude>
795-
<ClInclude Include="PyAxDatabase.h">
795+
<ClInclude Include="PyAcadDatabase.h">
796796
<Filter>Header Files\PyAx</Filter>
797797
</ClInclude>
798-
<ClInclude Include="PyAxApplicationImpl.h">
798+
<ClInclude Include="PyAcadApplicationImpl.h">
799799
<Filter>Header Files\PyAx</Filter>
800800
</ClInclude>
801-
<ClInclude Include="PyAxDatabaseImpl.h">
801+
<ClInclude Include="PyAcadDatabaseImpl.h">
802802
<Filter>Header Files\PyAx</Filter>
803803
</ClInclude>
804804
</ItemGroup>

PyRxCore/PyRx24.2.vcxproj

+8-8
Original file line numberDiff line numberDiff line change
@@ -141,10 +141,10 @@
141141
<ClCompile Include="PlCore.cpp" />
142142
<ClCompile Include="PyAcAx.cpp" />
143143
<ClCompile Include="PyAcBr.cpp" />
144-
<ClCompile Include="PyAxApplication.cpp" />
145-
<ClCompile Include="PyAxApplicationImpl.cpp" />
146-
<ClCompile Include="PyAxDatabase.cpp" />
147-
<ClCompile Include="PyAxDatabaseImpl.cpp" />
144+
<ClCompile Include="PyAcadApplication.cpp" />
145+
<ClCompile Include="PyAcadApplicationImpl.cpp" />
146+
<ClCompile Include="PyAcadDatabase.cpp" />
147+
<ClCompile Include="PyAcadDatabaseImpl.cpp" />
148148
<ClCompile Include="PyBrEntity.cpp" />
149149
<ClCompile Include="PyBrTraverser.cpp" />
150150
<ClCompile Include="PyDb3dProfile.cpp" />
@@ -277,10 +277,10 @@
277277
<ClInclude Include="PlCore.h" />
278278
<ClInclude Include="PyAcAx.h" />
279279
<ClInclude Include="PyAcBr.h" />
280-
<ClInclude Include="PyAxApplication.h" />
281-
<ClInclude Include="PyAxApplicationImpl.h" />
282-
<ClInclude Include="PyAxDatabase.h" />
283-
<ClInclude Include="PyAxDatabaseImpl.h" />
280+
<ClInclude Include="PyAcadApplication.h" />
281+
<ClInclude Include="PyAcadApplicationImpl.h" />
282+
<ClInclude Include="PyAcadDatabase.h" />
283+
<ClInclude Include="PyAcadDatabaseImpl.h" />
284284
<ClInclude Include="PyBrEntity.h" />
285285
<ClInclude Include="PyBrTraverser.h" />
286286
<ClInclude Include="PyDb3dProfile.h" />

0 commit comments

Comments
 (0)