FRX SDK Documentation 2025 SP0
Loading...
Searching...
No Matches
addmacro.h
Go to the documentation of this file.
1#pragma once
2
3//
4// (C) Copyright 2005-2024 by Graebert GmbH.
5//
6// Permission to use, copy, modify, and distribute this software in
7// object code form for any purpose and without fee is hereby granted,
8// provided that the above copyright notice appears in all copies and
9// that both that copyright notice and the limited warranty and
10// restricted rights notice below appear in all supporting
11// documentation.
12//
13// GRAEBERT PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
14// GRAEBERT SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
15// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. GRAEBERT GMBH
16// DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
17// UNINTERRUPTED OR ERROR FREE.
18
19#include "FxARXAPI.h"
21
22#ifdef RSERR
23#undef RSERR
24#endif
25
26#ifdef DLGSTATUS
27#undef DLGSTATUS
28#endif
29
30#define ACRX_CMD_TRANSPARENT 0x00000001 // real value is Unknown
31#define ACRX_CMD_USEPICKSET 0x00000002 // real value is Unknown
32#define ACRX_CMD_REDRAW 0x00000004 // real value is Unknown
33#define ACRX_CMD_NOPERSPECTIVE 0x00000008 // real value is Unknown
34#define ACRX_CMD_NOMULTIPLE 0x00000010 // real value is Unknown
35#define ACRX_CMD_NOTILEMODE 0x00000020 // real value is Unknown
36#define ACRX_CMD_NOPAPERSPACE 0x00000040 // real value is Unknown
37#define ACRX_CMD_PLOTONLY 0x00000080 // real value is Unknown
38#define ACRX_CMD_NOOEM 0x00000100 // real value is Unknown
39#define ACRX_CMD_UNDEFINED 0x00000200 // real value is Unknown
40#define ACRX_CMD_INPROGRESS 0x00000400 // real value is Unknown
41#define ACRX_CMD_DEFUN 0x00000800 // real value is Unknown
42#define ACRX_CMD_NONEWSTACK 0x00001000 // real value is Unknown
43#define ACRX_CMD_NOINTERNALLOCK 0x00002000 // real value is Unknown
44#define ACRX_CMD_DOCREADLOCK 0x00004000 // real value is Unknown
45#define ACRX_CMD_DOCEXCLUSIVELOCK 0x00008000 // real value is Unknown
46#define ACRX_CMD_SESSION 0x00010000 // real value is Unknown
47#define ACRX_CMD_INTERRUPTIBLE 0x00400000 // real value is Unknown
48#define ACRX_CMD_NOHISTORY 0x00800000 // real value is Unknown
49#define ACRX_CMD_NO_UNDO_MARKER 0x01000000 // real value is Unknown
50#define ACRX_CMD_NOBEDIT 0x02000000 // real value is Unknown
51
52#define ADUI_DOCK_CS_STDMOUSECLICKS 0x00000001 // real value is Unknown
53#define ADUI_DOCK_CS_DESTROY_ON_CLOSE 0x00000002 // real value is Unknown
54#define ADUI_DOCK_NF_SIZECHANGED 0x00000001
55#define ADUI_DOCK_NF_STATECHANGED 0x00000002
56#define ADUI_DOCK_NF_FRAMECHANGED 0x00000002
57#define ID_ADUI_ALLOWDOCK 0x00001001 // real value is Unknown
58#define ID_ADUI_HIDEBAR 0x00001002 // real value is Unknown
59#define RSERR 0
60#define RSRSLT 1
61#define AC_ES_STRING 0x00000001 // real value is Unknown
62#define AC_ES_ANGLE 0x00000002 // real value is Unknown
63#define AC_ES_VAL_ONKILLFOCUS 0x00000004 // real value is Unknown
64#define AC_ES_CONV_ONKILLFOCUS 0x00000008 // real value is Unknown
65#define AC_ES_NUMERIC 0x00000010 // real value is Unknown
66#define AC_ES_SYMBOL 0x00000020 // real value is Unknown
67#define AC_ES_SHOW_ERRMSG 0x00000040 // real value is Unknown
68#define AC_ES_NOBLANK 0x00000080 // real value is Unknown
69#define AC_ES_NOZERO 0x00000100 // real value is Unknown
70#define AC_ES_NONEGATIVE 0x00000400
71#define AC_ES_INRANGE 0x00000800
72
73//#define RTNORM 0
74//#define RTERROR -1
75#define RTNONE 5000
76#define RTREAL 5001
77#define RTPOINT 5002
78#define RTSHORT 5003
79#define RTANG 5004
80#define RTSTR 5005
81#define RTENAME 5006
82#define RTPICKS 5007
83#define RTORINT 5008
84#define RT3DPOINT 5009
85#define RTLONG 5010
86#define RTCOLOR 5011
87#define RTVOID 5014
88#define RTLB 5016
89#define RTLE 5017
90#define RTDOTE 5018
91#define RTNIL 5019
92#define RTDXF0 5020
93#define RTT 5021
94#define RTRESBUF 5023
95#define RTMODELESS 5027
96
97#define RTLONG_PTR 5030
98#define RTINT64 5031
99
100#define WM_ACAD_MFC_BASE (1000)
101#define WM_ACAD_KEEPFOCUS (WM_ACAD_MFC_BASE + 1)
102
103
104#define RTNORM 5100 /* Normal termination */
105
106#define RTMEMERR (-5000) /* Global memory error */
107#define RTERROR (-5001) // Some other error
108#define RTCAN (-5002) // User cancelled request -- Ctl-C
109#define RTREJ (-5003) // Rejected request -- invalid
110#define RTFAIL (-5004) // Link failure -- Lisp probably died
111#define RTKWORD (-5005) // Keyword returned from getxxx() routine
112#define RTINPUTTRUNCATED (-5008) // Input didn't all fit in the buffer
113
114#define DLG_OK 1
115#define DLG_CANCEL 0
116#define DLG_ALLDONE -1
117
118#define DLG_M_ENABLE ((short) 0)
119#define DLG_M_DISABLE ((short) 1)
120#define DLG_M_SETFOCUS ((short) 2)
121#define DLG_M_SETSEL ((short) 3)
122#define DLG_M_FLIP ((short) 4)
123
124#define MODE_ENABLE DLG_M_ENABLE
125#define MODE_DISABLE DLG_M_DISABLE
126#define MODE_SETFOCUS DLG_M_SETFOCUS
127#define MODE_SETSEL DLG_M_SETSEL
128#define MODE_FLIP DLG_M_FLIP
129
130#define DLGOK DLG_OK
131#define DLGCANCEL DLG_CANCEL
132#define DLGALLDONE DLG_ALLDONE
133#define DLGSTATUS 2
134
135#define NULLCB ((CLIENTFUNC) 0)
136#define PAUSE _T("\\")
137#define ACDB_LAYOUT_DICTIONARY _T("ACAD_LAYOUT")
138
139#define TILE_STR_LIMIT 2035
140
141#define CTRL_SELECT 1
142#define CTRL_LOST_FOCUS 2
143#define CTRL_DRAG 3
144#define CTRL_DOUBLE_CLICK 4
145
146#define CBR_SELECT CTRL_SELECT
147#define CBR_DOUBLE_CLICK CTRL_DOUBLE_CLICK
148#define CBR_DRAG CTRL_DRAG
149#define CBR_LOST_FOCUS CTRL_LOST_FOCUS
150
151#define ACSB_NOBORDERS 0x0001
152#define ACSB_INACTIVE 0x0002
153#define ACSB_STRETCH 0x0004
154#define ACSB_ACTIVE 0x0008
155#define ACSB_COMMAND 0x0010
156#define ACSB_POPUP 0x0020
157#define ACSB_DIVIDER 0x0040
158#define ACSB_SUBDIVIDER 0x0080
159
160#define ACSB_POPOUT ACSB_INACTIVE
161#define ACSB_NORMAL ACSB_ACTIVE
162
163/*
164#define AC_IMPLEMENT_EXTENSION_MODULE( module ) \
165 class CFxARXExtensionModule \
166 { \
167 public: \
168 CFxARXExtensionModule() \
169 { \
170 m_hInstance = 0; \
171 m_hResourceInstance = 0; \
172 } \
173 void AttachInstance( HINSTANCE hInstance ) \
174 { \
175 if ( 0 != m_hInstance && m_hInstance != hInstance ) \
176 throw; \
177 m_hInstance = hInstance; \
178 } \
179 void DetachInstance() \
180 { \
181 } \
182 HINSTANCE& GetDllInstance() \
183 { \
184 return( m_hInstance ); \
185 } \
186 HINSTANCE ModuleResourceInstance() \
187 { \
188 return( m_hInstance ); \
189 } \
190 protected: \
191 HINSTANCE m_hInstance; \
192 HINSTANCE m_hResourceInstance; \
193 }; \
194 CFxARXExtensionModule module; \
195 HINSTANCE& dllInstance() \
196 { \
197 return( module.GetDllInstance() ); \
198 }
199
200//#define CAcExtensionModule CFxARXExtensionModule
201*/
202
203
204ARX_API void acrx_abort(const ACHAR * format, ...);
205#define FRX_STATIC_CHECK(CLASS_NAME) \
206 if (CLASS_NAME::gpDesc) { \
207 AcRxClass *pClass = \
208 (AcRxClass*)((AcRxDictionary*)acrxSysRegistry() \
209 ->at(ACRX_CLASS_DICTIONARY))->at(ACRX_T(#CLASS_NAME)); \
210 if (pClass) { \
211 if (CLASS_NAME::gpDesc == pClass) \
212 return; \
213 else \
214 acrx_abort(ACRX_T("Class mismatch")); \
215 } \
216 }
217
218#ifndef ACRX_STATIC_CHECK
219#define ACRX_STATIC_CHECK FRX_STATIC_CHECK
220#endif //#ifndef ACRX_STATIC_CHECK
221
222
223#define AC_IMPLEMENT_EXTENSION_MODULE( module ) \
224 CAcExtensionModule module;\
225 CAcExtensionModule& CAcModuleResourceOverride::m_Module = module;
226
227
228#define ads_printf acutPrintf
229#define ads_sslength acedSSLength
230#define ads_ssname acedSSName
231#define ads_regapp acdbRegApp
232#define ads_command acedCommand
233#define ads_entget acdbEntGet
234#define ads_buildlist acutBuildList
235#define ads_getvar acedGetVar
236#define ads_trans acedTrans
237#define ads_entlast acdbEntLast
238#define ads_ssadd acedSSAdd
239#define ads_ssfree acedSSFree
240#define ads_draggen acedDragGen
241#define ads_relrb acutRelRb
242#define acrxServiceDictionary acrxServiceDictionaryImp()
243#define acdbGetCurViewportObjectId acedGetCurViewportObjectId
244#define ACRX_CMD_MODAL 0
245#define ads_defun acedDefun
246#define ads_regfunc acedRegFunc
247#define ads_initget acedInitGet
248#define ads_getpoint acedGetPoint
249#define ads_setvar acedSetVar
250#define ads_polar acutPolar
251#define ads_getappname acedGetAppName
252#define ads_retnil acedRetNil
253#define ads_retint acedRetInt
254#define ads_retlist acedRetList
255#define ads_getsym acedGetSym
256#define ads_alert acedAlert
257#define ads_findfile acedFindFile
258#define ads_angle acutAngle
259#define ads_newrb acutNewRb
260#define ads_redraw acedRedraw
261#define ads_usrbrk acedUsrBrk
262#define ads_grdraw acedGrDraw
263#define ads_invoke acedInvoke
264#define ads_rtos acdbRToS
265#define ads_entdel acdbEntDel
266#define ads_ssget acedSSGet
267#define ads_tblsearch acdbTblSearch
268#define ads_tblnext acdbTblNext
269#define ads_getangle acedGetAngle
270#define ads_menucmd acedMenuCmd
271#define ads_getinput acedGetInput
272#define ads_grtext acedGrText
273#define ads_getstring acedGetString
274#define ads_getreal acedGetReal
275#define ads_getint acedGetInt
276#define ads_entsel acedEntSel
277#define ads_entupd acdbEntUpd
278#define ads_arxload acedArxLoad
279#define ads_fail acdbFail
280#define ads_grread acedGrRead
281#define ads_getfiled acedGetFileD
282#define ads_retvoid acedRetVoid
283#define ads_getfuncode acedGetFunCode
284#define ads_undef acedUndef
285#define ads_angtos acdbAngToS
286#define ads_handent acdbHandEnt
287#define ads_arxunload acedArxUnload
288#define ads_entgetx acdbEntGetX
289#define ads_entnext acdbEntNext
290#define ads_textbox acedTextBox
291#define ads_getcorner acedGetCorner
292#define ads_entmake acdbEntMake
293#define ads_entmod acdbEntMod
294#define ads_arxloaded acedArxLoaded
295#define ads_getdist acedGetDist
296#define ads__msize acad__msize
297#define ads_agetcfg acedGetCfg
298#define ads_agetenv acedGetEnv
299#define ads_angtof acdbAngToF
300#define ads_asetcfg acedSetCfg
301#define ads_asetenv acedSetEnv
302#define ads_calloc acad_calloc
303#define ads_cmd acedCmd
304#define ads_cvunit acutCvUnit
305#define ads_dictadd acdbDictAdd
306#define ads_dictnext acdbDictNext
307#define ads_dictremove acdbDictRemove
308#define ads_dictrename acdbDictRename
309#define ads_dictsearch acdbDictSearch
310#define ads_distance acutDistance
311#define ads_distof acdbDisToF
312#define ads_entmakex acdbEntMakeX
313#define ads_findtrustedfile acedFindTrustedFile
314#define ads_fnsplit acedFNSplit
315#define ads_free acad_free
316#define ads_getargs acedGetArgs
317#define ads_getcfg acedGetCfg
318#define ads_getcname acedGetCName
319#define ads_getdist acedGetDist
320#define ads_getenv acedGetEnv
321#define ads_getkword acedGetKword
322#define ads_getorient acedGetOrient
323#define ads_graphscr acedGraphScr
324#define ads_grvecs acedGrVecs
325#define ads_help acedHelp
326#define ads_inters acdbInters
327#define ads_isalnum acutIsAlNum
328#define ads_isalpha acutIsAlpha
329#define ads_iscntrl acutIsCntrl
330#define ads_isdigit acutIsDigit
331#define ads_isgraph acutIsGraph
332#define ads_islower acutIsLower
333#define ads_isprint acutIsPrint
334#define ads_ispunct acutIsPunct
335#define ads_isspace acutIsSpace
336#define ads_isupper acutIsUpper
337#define ads_isxdigit acutIsXDigit
338#define ads_malloc acad_malloc
339#define ads_name_clear(name) name[0]=name[1]=0
340#define ads_name_equal(name1,name2) (name1[0]==name2[0]&&name1[1]==name2[1])
341#define ads_name_nil(name) (name[0]==0&&name[1]==0)
342#define ads_namedobjdict acdbNamedObjDict
343#define ads_nentsel acedNEntSel
344#define ads_nentselp acedNEntSelP
345#define ads_nentselpex acedNEntSelPEx
346#define ads_osnap acedOsnap
347#define ads_prompt acedPrompt
348#define ads_putsym acedPutSym
349#define ads_rangtof acdbRawAngToF
350#define ads_rangtos acdbRawAngToS
351#define ads_realloc acad_realloc
352#define ads_regappx acdbRegApp
353#define ads_retname acedRetName
354#define ads_retpoint acedRetPoint
355#define ads_retreal acedRetReal
356#define ads_retstr acedRetStr
357#define ads_rett acedRetT
358#define ads_retval acedRetVal
359#define ads_setcfg acedSetCfg
360#define ads_setenv acedSetEnv
361#define ads_setfunhelp acedSetFunHelp
362#define ads_setview acedSetView
363#define ads_snvalid acdbSNValid
364#define ads_ssdel acedSSDel
365#define ads_ssgetfirst acedSSGetFirst
366#define ads_ssGetKwordCallbackPtr acedSSGetKwordCallbackPtr
367#define ads_ssGetOtherCallbackPtr acedSSGetOtherCallbackPtr
368#define ads_ssmemb acedSSMemb
369#define ads_ssnamex acedSSNameX
370#define ads_sssetfirst acedSSSetFirst
371#define ads_ssSetKwordCallbackPtr acedSSSetKwordCallbackPtr
372#define ads_ssSetOtherCallbackPtr acedSSSetOtherCallbackPtr
373#define ads_strdup acad__strdup
374#define ads_tablet acedTablet
375#define ads_tblobjname acdbTblObjName
376#define ads_textpage acedTextPage
377#define ads_textscr acedTextScr
378#define ads_tolower acutToLower
379#define ads_toupper acutToUpper
380#define ads_update acedUpdate
381#define ads_vports acedVports
382#define ads_wcmatch acutWcMatch
383#define ads_xdroom acdbXdRoom
384#define ads_xdsize acdbXdSize
385#define ads_xformss acedXformSS
386#define ads_xstrcase acdbXStrCase
387#define ads_xstrsave acdbXStrSave
388#ifndef adsw_hwndAcad
389#define adsw_hwndAcad adsw_acadMainWnd()
390#endif
391
392#define RSG_NONULL 0x001
393#define RSG_NOZERO 0x002
394#define RSG_NONEG 0x004
395#define RSG_NOLIM 0x008
396#define RSG_GETZ 0x010
397#define RSG_DASH 0x020
398#define RSG_2D 0x040
399#define RSG_OTHER 0x080
400#define RSG_BUTTON 0x10000000
401#define RSG_NOBUTTON 0x20000000
402#define RSG_DDISTFIRST 0x100
403#define RSG_TRACKUCS 0x200
404#define RSG_NOORTHOZ 0x400
405#define RSG_NOOSNAP 0x800
406
407#define eOkTest(x) ((x) == Acad::eOk)
408//---------------------------------------------------------------------------------------------------------------------
409
410#ifndef ACED_ARXCOMMAND_ENTRY_PRAGMA
411
412#if defined(_M_IX86)
413#define ACED_ARXCOMMAND_ENTRY_PRAGMA( group, globCmd ) __pragma( comment( linker, "/include:___pFXARXCommand_" #group #globCmd ) );
414#elif defined(_M_IA64)
415#define ACED_ARXCOMMAND_ENTRY_PRAGMA( group, globCmd ) __pragma( comment( linker, "/include:__pFXARXCommand_" #group #globCmd ) );
416#elif defined(_M_AMD64)
417#define ACED_ARXCOMMAND_ENTRY_PRAGMA( group, globCmd ) __pragma( comment( linker, "/include:__pFXARXCommand_" #group #globCmd ) );
418#else
419#error Unknown Platform. define ACED_ARXCOMMAND_ENTRY_PRAGMA
420#endif
421
422#endif //ACED_ARXCOMMAND_ENTRY_PRAGMA
423
424#define ACED_ARXCOMMAND_ENTRY_AUTO( classname, group, globCmd, locCmd, cmdFlags, UIContext ) \
425 __declspec(selectany) _FXARX_COMMAND_ENTRY __FXARXCommand_##group##globCmd = { _T(#group), _T(#globCmd), _T(#locCmd), cmdFlags, classname::##group ##globCmd, UIContext }; \
426 extern "C" __declspec(allocate("FXARX_COMMAND$__m")) __declspec(selectany) _FXARX_COMMAND_ENTRY* const __pFXARXCommand_##group##globCmd = &__FXARXCommand_##group##globCmd; \
427 ACED_ARXCOMMAND_ENTRY_PRAGMA( group, globCmd )
428
429//---------------------------------------------------------------------------------------------------------------------
430#ifndef ACED_ADSSYMBOL_ENTRY_PRAGMA
431#if defined(_M_IX86)
432#define ACED_ADSSYMBOL_ENTRY_PRAGMA(name) __pragma(comment(linker, "/include:__pFXARXADSSymbols_" #name)) ;
433#elif defined(_M_IA64)
434#define ACED_ADSSYMBOL_ENTRY_PRAGMA(name) __pragma(comment(linker, "/include:__pFXARXADSSymbols_" #name)) ;
435#elif defined(_M_AMD64)
436#define ACED_ADSSYMBOL_ENTRY_PRAGMA(name) __pragma(comment(linker, "/include:__pFXARXADSSymbols_" #name)) ;
437#else
438#error Unknown Platform. define ACED_ADSSYMBOL_ENTRY_PRAGMA
439#endif
440#endif
441
442#define ACED_ADSSYMBOL_ENTRY_AUTO(classname, name, regFunc) \
443 __declspec(selectany) _FXARXADSSYMBOL_ENTRY __FXARXADSSymbols_##name = { _RXST(#name), classname::ads_ ##name, regFunc, -1 } ; \
444 extern "C" __declspec(allocate("FXARX_ADSSYMBOLS$__m")) __declspec(selectany) _FXARXADSSYMBOL_ENTRY* const __pFXARXADSSymbols_##name = &__FXARXADSSymbols_##name ; \
445 ACED_ADSSYMBOL_ENTRY_PRAGMA(name)
446
447#define ACED_ADSCOMMAND_ENTRY_AUTO(classname, name, regFunc) \
448 __declspec(selectany) _FXARXADSSYMBOL_ENTRY __FXARXADSSymbols_##name = { _RXST("c:") _RXST(#name), classname::ads_ ##name, regFunc, -1 } ; \
449 extern "C" __declspec(allocate("FXARX_ADSSYMBOLS$__m")) __declspec(selectany) _FXARXADSSYMBOL_ENTRY* const __pFXARXADSSymbols_##name = &__FXARXADSSymbols_##name ; \
450 ACED_ADSSYMBOL_ENTRY_PRAGMA(name)
451
452
453//---------------------------------------------------------------------------------------------------------------------
454#define IMPLEMENT_FRX_APIVERSION( ) \
455extern "C" __declspec(dllexport) void frxGetAPIVersion(int& nMajorVersion, int& nMinorVersion) \
456{ \
457 nMajorVersion = FRX_MAJOR_VERSION; \
458 nMinorVersion = FRX_MINOR_VERSION; \
459};
460
461
462#define RSG_DDISTFIRST 0x100
463
464#define ACRX_T(param_1) _T(param_1)
465#define _RXST(param_1) _T(param_1)
466
467#define ACRX_MAX_CMDNAME_LEN 254
468
469#define EOS _T('\0')
470
471#define DBCURVE_METHODS \
472 virtual int isClosed(void)const ; \
473 virtual int isPeriodic(void)const ; \
474 virtual int isPlanar(void)const ; \
475 virtual Acad::ErrorStatus getPlane( AcGePlane &, AcDb::Planarity &)const ; \
476 virtual Acad::ErrorStatus getStartParam(double &)const ; \
477 virtual Acad::ErrorStatus getEndParam(double &)const ; \
478 virtual Acad::ErrorStatus getStartPoint( AcGePoint3d &)const ; \
479 virtual Acad::ErrorStatus getEndPoint( AcGePoint3d &)const ; \
480 virtual Acad::ErrorStatus getPointAtParam(double, AcGePoint3d &)const ; \
481 virtual Acad::ErrorStatus getParamAtPoint( AcGePoint3d const &,double &)const ; \
482 virtual Acad::ErrorStatus getDistAtParam(double,double &)const ; \
483 virtual Acad::ErrorStatus getParamAtDist(double,double &)const ; \
484 virtual Acad::ErrorStatus getDistAtPoint( AcGePoint3d const &,double &)const; \
485 virtual Acad::ErrorStatus getPointAtDist(double, AcGePoint3d &)const ; \
486 virtual Acad::ErrorStatus getFirstDeriv( AcGePoint3d const &, AcGeVector3d &)const ; \
487 virtual Acad::ErrorStatus getFirstDeriv(double, AcGeVector3d &)const ; \
488 virtual Acad::ErrorStatus getSecondDeriv( AcGePoint3d const &, AcGeVector3d &)const ; \
489 virtual Acad::ErrorStatus getSecondDeriv(double, AcGeVector3d &)const ; \
490 virtual Acad::ErrorStatus getClosestPointTo( AcGePoint3d const &, AcGePoint3d &,int = 0 )const ; \
491 virtual Acad::ErrorStatus getClosestPointTo( AcGePoint3d const &, AcGeVector3d const &, AcGePoint3d &,int = 0 )const ; \
492 virtual Acad::ErrorStatus getOrthoProjectedCurve( AcGePlane const &, AcDbCurve * &)const ; \
493 virtual Acad::ErrorStatus getOffsetCurves(double, AcDbVoidPtrArray &)const ; \
494 virtual Acad::ErrorStatus getSpline( AcDbSpline * &)const ; \
495 virtual Acad::ErrorStatus getSplitCurves( AcArray< AcGePoint3d, AcArrayMemCopyReallocator< AcGePoint3d> > const &, AcDbVoidPtrArray &)const ; \
496 virtual Acad::ErrorStatus getSplitCurves( AcGeDoubleArray const &, AcDbVoidPtrArray &)const ; \
497 virtual Acad::ErrorStatus extend(double); \
498 virtual Acad::ErrorStatus extend(int, AcGePoint3d const &); \
499 virtual Acad::ErrorStatus getArea(double &)const ; \
500 virtual Acad::ErrorStatus getProjectedCurve( AcGePlane const &, AcGeVector3d const &, AcDbCurve * &)const ;
501
502#define acdbTransactionManager acdbTransactionManagerPtr()
503#define acrxKernel acrxKernelPtr()
504#define acrxClassDictionary acrxClassDictionaryPtr()
505#define acapLongTransactionManager acapLongTransactionManagerPtr()
506#define acrxEvent acrxEventPtr()
507#define acDocManager acDocManagerPtr()
508#define acedRegCmds acedRegCmdsPtr()
509#define acedEditor acedEditorPtr()
510#define acrxDynamicLinker acrxDynamicLinkerPtr()
511#define actrTransactionManager actrTransactionManagerPtr()
512
513#define ACDB_PAPER_SPACE _T("*Paper_Space" )
514#define ACDB_MODEL_SPACE _T("*Model_Space" )
515
516#define ACDB_NULL_HANDLE _T("ACDB_NULL_HANDLE")
517
518#define ACRX_CLASS_DICTIONARY _T("ClassDictionary")
519#define ACRX_DYNAMIC_LINKER _T("DynamicLinker")
520#define ACRX_SERVICE_DICTIONARY _T("ServiceDictionary")
521#define ACRX_KERNEL_SERVICES _T("KernelServices")
522#define ACRX_PROTOCOL_REACTOR_MANAGER _T("ProtocolReactorManager")
523#define ACRX_COMMAND_DOCK _T("ACAD_REGISTERED_COMMANDS")
524#define ACED_SERVICES _T("AcEdServices")
525#define ACED_EDITOR_OBJ _T("AcEditor")
526#define ACRX_EVENT_OBJ _T("AcRxEvent")
527
528#define OL_GOOD 0 /* Everything is OK */
529#define OL_ESNVALID 1 /* Invalid table name */
530#define OL_ENAMEVALID 2 /* Invalid name of entity or selection set */
531#define OL_ESSMAX 3 /* Unused. Max number of selection sets excedeed*/
532#define OL_ESSVALID 4 /* Invalid selection set */
533#define OL_EBDEVALID 5 /* Unused. Incorrect use of blockdefinition entity */
534#define OL_EXDEVALID 6 /* Unused. Incorrect use of xref entity */
535#define OL_ENTSELPICK 7 /* No entity selected (failed pick) */
536#define OL_EEOEF 8 /* End of entity definition */
537#define OL_EEOBD 9 /* End of blockdefinition */
538#define OL_EEMPDB 10 /* entlast failed */
539#define OL_EDELVPORT 11 /* Unused. Invalid entdel of viewport */
540#define OL_EACQPLINE 12 /* Unused. Operation not allowed during POLYLINE command */
541#define OL_EHANDLE 13 /* Invalid handle */
542#define OL_ENOHAND 14 /* Unused. Handles not enabled */
543#define OL_ETRANS 15 /* Unused. Invalid transformation request */
544#define OL_EXSPACE 16 /* Unused. Invalid space transformation request */
545#define OL_EDELENT 17 /* Invalid use of deleted entity */
546#define OL_ETBLNAME 18 /* Invalid table name */
547#define OL_ETBLARG 19 /* Invalid argument in table function */
548#define OL_ERDONLY 20 /* Attempt to set read only variable */
549#define OL_ENONZERO 21 /* Invalid value (zero) */
550#define OL_ERANGE 22 /* Value out of range */
551#define OL_ERGBUSY 23 /* Unused. Complex regen in progress */
552#define OL_EMMTYPE 24 /* Attempt to change entity type */
553#define OL_EMMLAY 25 /* Invalid layer name */
554#define OL_EMMLT 26 /* Invalid linetype name */
555#define OL_EMMCOLOR 27 /* Invalid color name */
556#define OL_EMMSTYLE 28 /* Invalid text style name */
557#define OL_EMMSHAPE 29 /* Unused. Invalid shape name */
558#define OL_EMMFTYPE 30 /* Unused. Invalid field for entity type */
559#define OL_EMODDEL 31 /* Attempted entmod of deleted entity */
560#define OL_EMODSEQ 32 /* Attempt to entmod SEQEND */
561#define OL_EMODHAND 33 /* Attempt to change handle */
562#define OL_EMODVPVIS 34 /* Unused. Invalid modification of viewport vis. */
563#define OL_EMMLL 35 /* Entity on locked layer */
564#define OL_EMKTYPE 36 /* Invalid entity type */
565#define OL_EMKPLINE 37 /* Invalid POLYLINE entity */
566#define OL_EMKCMPLX 38 /* Unused. Incomplete complex entity in block */
567#define OL_EMKBNAME 39 /* Invalid block name field */
568#define OL_EMKBFLAG 40 /* Unused. Duplicate block flag fields */
569#define OL_EMKDBNAME 41 /* Duplicate block name fields */
570#define OL_EMKNORM 42 /* Unused. Invalid normal vector */
571#define OL_EMKNOBNM 43 /* Missing block name */
572#define OL_EMKNOBFLG 44 /* Missing block flags */
573#define OL_EMKANON 45 /* Invalid anonymous block */
574#define OL_EMKBLOCK 46 /* Invalid block definition entity */
575#define OL_EMKMANDF 47 /* Mandatory field missing */
576#define OL_EMMXDTYPE 48 /* Unrecognized extended data type */
577#define OL_EMMXDNEST 49 /* Invalid nesting of list in xdata */
578#define OL_EMMXDAPPID 50 /* Invalid location of APPID field */
579#define OL_EMMXDSIZE 51 /* Unused. Max xdata size exceeded */
580#define OL_ENTSELNULL 52 /* Entity selection (null response) */
581#define OL_EMXDAPPID 53 /* entmod/entmake with duplicate appid */
582#define OL_EMMVPORT 54 /* Unused. entmod/entmake of VIEWPORT failed */
583#define OL_INVEXT 55 /* Unused. XDEF/XREF/XDEP Entmake */
584#define OL_EFLTR1 56 /* Invalid fdt_ssget filter: premature end */
585#define OL_EFLTR2 57 /* " missing test operand */
586#define OL_EFLTR3 58 /* " invalid opcode string */
587#define OL_EFLTR4 59 /* " void clause/bad nesting */
588#define OL_EFLTR5 60 /* " beg/end clause mismatch */
589#define OL_EFLTR6 61 /* " wrong # of XOR/NOT args */
590#define OL_EFLTR7 62 /* " max nesting exceeded */
591#define OL_EFLTR8 63 /* " invalid group code */
592#define OL_EFLTR9 64 /* " invalid string test */
593#define OL_EFLTR10 65 /* " invalid vector test */
594#define OL_EFLTR11 66 /* " invliad real test */
595#define OL_EFLTR12 67 /* " invalid integer test */
596#define OL_TABNOT 68 /* Unused. Digitizer is not a tablet */
597#define OL_TABNOCAL 69 /* Unused. Tablet not calibrated. */
598#define OL_TABERR 70 /* Unused. Invalid tablet arguments */
599#define OL_ENEWRB 71 /* Unused.Unable to allocate resbuf */
600#define OL_ENULLPTR 72 /* Unused.NULL Pointer found */
601#define OL_EOPEN 73 /* Open file failed */
602#define OL_ELOADED 74 /* Application is already loaded */
603#define OL_EMAXAPP 75 /* Unused. Exceeded the number of loaded applications */
604#define OL_EEXEC 76 /* Unable to execute the application */
605#define OL_EVERSION 77 /* Unused. Incompatible version number */
606#define OL_EDENIED 78 /* Unused. Unable to unload nested ADS application */
607#define OL_EREFUSE 79 /* Unused. The application refused to XUNLOAD */
608#define OL_ENOTLOADED 80 /* Application is not loaded */
609#define OL_ENOMEM 81 /* Out of memory */
610#define OL_EXFMVALID 82 /* Invalid transformation matrix */
611#define OL_ESYMNAM 83 /* Invalid symbol name */
612#define OL_ESYMVAL 84 /* Invalid symbol value */
613#define OL_NONDIALOG 85 /* Not allowed when dialog open */
614#define OL_ECMDINP 92 /* Unused. Invalid while command in progress */
615#define OL_EBADTYPE 93 /* Unused. Invalid value type */
616#define OL_EBADVPID 94 /* Unused. Invalid viewport id */
617#define OL_EBADVIEW 95 /* Unused. Invalid view definition */
618#define OL_EGCODE 96 /* Unused. Unexpected group code */
619#define OL_EGDUP 97 /* Unused. Duplicated group code */
620#define OL_EBADSSMOD 98 /* Unused. Invalid ssget mode string */
621#define OL_EARGMATCH 99 /* Unused. Arguments does not match */
622#define OL_SVRECURSE 100 /* Unused. Do not call setvar recursively */
623#define OL_MODOPEN 101 /* Unused. Attempt to modify an open entity */
624#define OL_NOTENTITY 102 /* Unused. ENTNEXT on a non-entity */
625#define OL_BADPLMOD 103 /* Unused. Invalid modification of a polyline */
626#define OL_BADCTLSTR 104 /* Unused. Badly nested control string */
627#define OL_EXDICT_PR 105 /* Unused. Failure to modify extension dictionary or Persistent reactor on r12 entity */
628#define OL_FNOTFOUND 106 /* File not found */
629#define OL_NOFREEDB 107 /* No free database */
630#define OL_CREAWIN 108 /* Error creating window */
631#define OL_INVNAME 109 /* Invalid name */
632#define OL_FALOPEN 110 /* File already open */
633#define OL_CMD 111 /* Error in fdt_command(), fdt_cmd() */
634#define OL_FLOCKED 112 /* File locked */
635#define OL_READFLX 113 /* Error reading FLX file */
636#define OL_SAVEFLX 114 /* Error saving FLX file */
637#define OL_FNOOPEN 115 /* No file open */
638#define OL_FRO 116 /* File opened is Read-Only */
639#define OL_CRBAK 117 /* Error creating BAK file */
640#define OL_DBNR 118 /* Invalid db-number */
641#define OL_FLXEXIST 119 /* File exists */
642#define OL_NOFLXNAME 120 /* Drawing exists without name (created with fdt_flxnew()) */
643#define OL_INVMODE 121 /* Invalid mode in fdt_ssget()/fdt_osnap() */
644#define OL_INTERROR 122 /* Internal error */
645#define OL_DBNOPEN 123 /* No database opened */
646#define OL_BLCODE 124 /* Invalid result type code in fdt_buildlist() */
647#define OL_ENTCREATE 125 /* Error during insert an entity into database */
648#define OL_TBLEXIST 126 /* Table entry already exists (fdt_tblmake()) */
649#define OL_ENTNOTEX 127 /* Entry does not exist */
650#define OL_DASHLEN 128 /* Incorrect dash length */
651#define OL_MAX1004 129 /* Chunk lenght graeter then 127 */
652#define OL_VPORTID 130 /* Missing vport-ID (fdt_tblmod(),fdt_tblmake()) */
653#define OL_AMODVID 131 /* Attempt to modify vport-ID */
654#define OL_AMODC70 132 /* Attempt to modify dxf-code 70 */
655#define OL_AFRICLAY 133 /* Attempt to freeze active layer */
656#define OL_INVDIR 134 /* Incorrect direction in VPORT_TBL */
657#define OL_DBEMPTY 135 /* Database contains no entity */
658#define OL_ARENEBAS 136 /* Attempt to modify current table entry */
659#define OL_EINDEX 137 /* Invalid index in fdt_ssname() */
660#define OL_FILEOPEN 138 /* Error during file open */
661#define OL_TBLEMPTY 140 /* Table contains no entry */
662#define OL_TBLREF 141 /* Table entry is referenced */
663#define OL_DRAGEXIST 142 /* Dragfunktion always installed */
664#define OL_OUTSIDE 143 /* structur to complex or point outside entities (fdt_pcontur) */
665#define OL_HOOK 144 /* Entity was rejected by hook-function (fdt_ssadd()) */
666#define OL_RECURSIV 145 /* Recursive call of a hook-function */
667#define OL_SPACE 146 /* paperspace is active */
668#define OL_PARAM 147 /* invalid parameter */
669#define OL_XREF 148 /* locked by xref */
670#define OL_STRINGLEN 149 /* allokated string to small */
671#define OL_ACTMODEL 150 /* Operation not allowed because of active parametric model */
672#define OL_OLELENGTH 151 /* bindate of ole2frame bindata larger then defines */
673
674/* If you add a new error code, be sure to increment this number */
675
676#define MAX_OL_ERRNO 151
677
678
679#ifndef kLoadADSMsg
680#define kLoadADSMsg kLoadDwgMsg
681#endif
682
683#ifndef kUnloadADSMsg
684#define kUnloadADSMsg kUnloadDwgMsg
685#endif
686
687#define acdbNameEqual(name1, name2) (name1[0]==name2[0] && name1[1]==name2[1])
688#define acdbNameClear(name) name[0] = name[1] = 0
689
690
691#ifdef __STDC__
692#define ads_name_set(from, to) (memcpy(to, from, sizeof(ads_name)))
693#define ads_point_set(from,to) (memcpy(to, from, sizeof(ads_point)))
694#else
695#define ads_name_set(from, to) (*(to)= *(from), (to)[1]=(from)[1])
696#define ads_point_set(from, to) (*(to)= *(from), (to)[1]=(from)[1], (to)[2]=(from)[2])
697#endif /* !__STDC__ */
698
699#define acdbNameSet ads_name_set
700#define acdbPointSet ads_point_set
701
702
703#define ACRX_PE_PTR(Param1,Param2) Param2::cast(Param1->queryX(Param2::desc()))
704#define ACRX_X_CALL(Param1,Param2) Param2::cast(Param1->x(Param2::desc()))
705
706#define ACDB_ANNOTATIONSCALES_COLLECTION acdbAnnotationScaleCollectionName()
707
708#define eOkCheck(param) (param)
709#define eOkVerify(param) ((param) == Acad::eOk)
710
711class AcRxClass;
712class AcRxObject;
713template <class Class, class Parent>
715{
716 AcRxObject* pObj = 0;
717 if (pClass == Class::desc())
718 {
719 pObj = (AcRxObject*)pThis;
720 }
721 else
722 {
723 pObj = Class::desc()->getX(pClass);
724 if (!pObj)
725 pObj = pThis->Parent::queryX(pClass);
726 }
727 return pObj;
728}
729
730template <class Class>
732{
733 AcRxObject* pObj = 0;
734 if (pClass == Class::desc())
735 {
736 pObj = (AcRxObject*)pThis;
737 }
738 else
739 {
740 pObj = Class::desc()->getX(pClass);
741 }
742 return pObj;
743}
744
745
747
748#define ACDB_DECLARE_MEMBERS( classname ) \
749private: \
750 friend class AcDbSystemInternals; \
751protected: \
752 classname (AcDbSystemInternals*); \
753public: \
754 ACRX_DECLARE_MEMBERS( classname )
755
756#define ACRX_DECLARE_MEMBERS( classname ) \
757 virtual AcRxClass * isA( void )const; \
758 static AcRxClass * gpDesc; \
759 static AcRxClass * __cdecl desc( void );\
760 static classname* cast( AcRxObject const * pObject ) \
761 { \
762 if ( 0 != pObject && pObject->isKindOf( classname::desc() ) ) \
763 return( const_cast<classname*>( static_cast<const classname*>(pObject) ) ); \
764 else \
765 return( 0 ); \
766 }\
767 static void __cdecl rxInit( void ); \
768 static void __cdecl rxInit( FxARXAppNameChangeFuncPtr );\
769 static void __cdecl rxUninit( void );\
770 virtual AcRxObject* queryX(const AcRxClass* protocolClass) const;
771
772
773//---------------------------------------------------------------------------------------------------------------------
774
775#define AUTO_INIT_INVOKE(classname) AutoInitializer::Add(static_cast< void( * )( ) >( &classname::rxInit ), &classname::rxUninit)
776
777#ifdef ACRX_AUTO_INIT
778#define AUTO_INIT_DEFAULT(classname) AUTO_INIT_INVOKE(classname)
779#else
780#define AUTO_INIT_DEFAULT(classname) nullptr
781#endif //ACRX_AUTO_INIT
782
783#define ACRX_DEFINE_MEMBERS_BASE( autoinit, classname ) \
784 AcRxClass* classname::gpDesc = autoinit(classname); \
785 AcRxClass* classname::isA() const \
786 { \
787 return( desc() ); \
788 } \
789 AcRxClass* classname::desc(void) \
790 { \
791 if ( 0 == gpDesc ) \
792 { \
793 AcRxDictionary* pDict = (AcRxDictionary*) acrxSysRegistry()->at( ACRX_CLASS_DICTIONARY ); \
794 gpDesc = (AcRxClass*) pDict->at( _T(#classname) ); \
795 } \
796 return gpDesc; \
797 } \
798 void classname::rxUninit() \
799 { \
800 deleteAcRxClassImp( classname::desc() ); \
801 gpDesc = nullptr; \
802 }
803
804#define ACRX_DEFINE_MEMBERS_IMPL( autoinit, classname ) \
805 ACRX_DEFINE_MEMBERS_BASE( autoinit, classname ) \
806 AcRxObject* classname::queryX(const AcRxClass* pClass) const \
807 { \
808 return acQueryXImpl<classname>(this, pClass); \
809 }
810
811#define ACRX_DEFINE_MEMBERS( classname ) \
812ACRX_DEFINE_MEMBERS_IMPL( AUTO_INIT_DEFAULT, classname )
813
814#define ACRX_DEFINE_MEMBERS_AUTO( classname ) \
815ACRX_DEFINE_MEMBERS_IMPL( AUTO_INIT_INVOKE, classname )
816
817#define FXARX_CHECK( classname ) \
818 if ( gpDesc ) \
819 { \
820 AcRxDictionary* pDict = (AcRxDictionary*) acrxSysRegistry()->at( ACRX_CLASS_DICTIONARY ); \
821 AcRxClass *pClass = (AcRxClass*) pDict->at( _T(#classname) ); \
822 if ( pClass ) \
823 { \
824 if ( gpDesc == pClass ) \
825 return; \
826 else \
827 throw Acad::eNotApplicable; \
828 } \
829 }
830
831
832#define ACRX_NO_CONS_DEFINE_MEMBERS_IMPL( autoinit, classname, parentclass ) \
833 ACRX_DEFINE_MEMBERS_BASE( autoinit, classname ); \
834 void classname::rxInit() \
835 { \
836 FXARX_CHECK( classname ); \
837 gpDesc = newAcRxClass( _T(#classname), _T(#parentclass) ); \
838 }\
839 AcRxObject* classname::queryX(const AcRxClass* pClass) const \
840 { \
841 return acQueryXImpl<classname, parentclass>(this, pClass); \
842 }
843
844#define ACRX_NO_CONS_DEFINE_MEMBERS( classname, parentclass ) \
845ACRX_NO_CONS_DEFINE_MEMBERS_IMPL(AUTO_INIT_DEFAULT, classname, parentclass)
846
847#define ACRX_NO_CONS_DEFINE_MEMBERS_AUTO( classname, parentclass ) \
848ACRX_NO_CONS_DEFINE_MEMBERS_IMPL(AUTO_INIT_INVOKE, classname, parentclass)
849
850#define ACRX_CONS_DEFINE_MEMBERS_IMPL( autoinit, classname, parentclass, dwgver ) \
851 ACRX_DEFINE_MEMBERS_BASE(autoinit, classname); \
852 static AcRxObject * make##classname() \
853 { \
854 return new classname(); \
855 } \
856 void classname::rxInit() \
857 { \
858 FXARX_CHECK( classname ); \
859 gpDesc = newAcRxClass( _T(#classname), _T(#parentclass), dwgver, &make##classname ); \
860 } \
861 AcRxObject* classname::queryX(const AcRxClass* pClass) const \
862 { \
863 return acQueryXImpl<classname, parentclass>(this, pClass); \
864 }
865
866#define ACRX_CONS_DEFINE_MEMBERS( classname, parentclass, dwgver ) \
867ACRX_CONS_DEFINE_MEMBERS_IMPL(AUTO_INIT_DEFAULT, classname, parentclass, dwgver)
868
869#define ACRX_CONS_DEFINE_MEMBERS_AUTO( classname, parentclass, dwgver ) \
870ACRX_CONS_DEFINE_MEMBERS_IMPL(AUTO_INIT_INVOKE, classname, parentclass, dwgver)
871
872#define ACRX_DXF_DEFINE_MEMBERS_IMPL( autoinit, classname, parentclass, dwgver, maintver, proxyflags, dxfname, appname ) \
873 ACRX_DEFINE_MEMBERS_BASE( autoinit, classname ); \
874 static AcRxObject * make##classname() \
875 { \
876 return new classname(); \
877 } \
878 void classname::rxInit() \
879 { \
880 FXARX_CHECK( classname ); \
881 gpDesc = newAcRxClass( _T(#classname), _T(#parentclass), dwgver, maintver, proxyflags, &make##classname, _T(#dxfname), _T(#appname) ); \
882 } \
883 void classname::rxInit( FxARXAppNameChangeFuncPtr pfn ) \
884 { \
885 FXARX_CHECK( classname ); \
886 gpDesc = newAcRxClass( _T(#classname), _T(#parentclass), dwgver, maintver, proxyflags, &make##classname, _T(#dxfname), _T(#appname), pfn ); \
887 } \
888 AcRxObject* classname::queryX(const AcRxClass* pClass) const \
889 { \
890 return acQueryXImpl<classname, parentclass>(this, pClass); \
891 }
892
893#define ACRX_DXF_DEFINE_MEMBERS( classname, parentclass, dwgver, maintver, proxyflags, dxfname, appname ) \
894ACRX_DXF_DEFINE_MEMBERS_IMPL(AUTO_INIT_DEFAULT, classname, parentclass, dwgver, maintver, proxyflags, dxfname, appname)
895
896#define ACRX_DXF_DEFINE_MEMBERS_AUTO( classname, parentclass, dwgver, maintver, proxyflags, dxfname, appname ) \
897ACRX_DXF_DEFINE_MEMBERS_IMPL(AUTO_INIT_INVOKE, classname, parentclass, dwgver, maintver, proxyflags, dxfname, appname)
898
899//---------------------------------------------------------------------------------------------------------------------
900
901// TODO Split: find a better place for this function declarations
902class AcRxDictionary;
903
906ARX_API class AcRxClass* newAcRxClass( wchar_t const*, wchar_t const*, int = 0, class AcRxObject* ( __cdecl* )( void ) = 0, wchar_t const* = 0, wchar_t const* = 0 );
TCHAR ACHAR
ARX_API class AcRxClass * newAcRxClass(wchar_t const *, wchar_t const *, int=0, class AcRxObject *(__cdecl *)(void)=0, wchar_t const *=0, wchar_t const *=0)
ARX_API AcRxDictionary * acrxSysRegistry()
ARX_API void deleteAcRxClassImp(class AcRxClass *)
void(* FxARXAppNameChangeFuncPtr)(const AcRxClass *param_1, ACHAR *&param_2, int param_3)
Definition addmacro.h:746
ARX_API void acrx_abort(const ACHAR *format,...)
AcRxObject * acQueryXImpl(const Class *pThis, const AcRxClass *pClass)
Definition addmacro.h:714