dbentityoverrule.h 48 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027
  1. //
  2. //////////////////////////////////////////////////////////////////////////////
  3. //
  4. // Copyright 2015 Autodesk, Inc. All rights reserved.
  5. //
  6. // Use of this software is subject to the terms of the Autodesk license
  7. // agreement provided at the time of installation or download, or which
  8. // otherwise accompanies this software in either electronic or hard copy form.
  9. //
  10. //////////////////////////////////////////////////////////////////////////////
  11. #pragma once
  12. #include "rxoverrule.h"
  13. #pragma pack (push, 8)
  14. /// <property name="versionspecific" value="=18.0.0.0" />
  15. ///
  16. /// <description>
  17. /// AcDbPropertiesOverrule overrules a subset of property related operations
  18. /// that AcDbEntity and AcDbObject class specifies. It is intended as a base
  19. /// class for clients who want to alter some or all behavior of a given
  20. /// AcDbEntity-derived or AcDbObject-derived class. At the base level, each
  21. /// default implementation simply calls the corresponding method in the target
  22. /// class.
  23. /// </description>
  24. class AcDbPropertiesOverrule : public AcRxOverrule
  25. {
  26. public:
  27. ACRX_DECLARE_MEMBERS(AcDbPropertiesOverrule);
  28. /// <property name="versionspecific" value="=18.0.0.0" />
  29. ///
  30. /// <description>
  31. /// Default Constructor.
  32. /// </description>
  33. ACDB_PORT AcDbPropertiesOverrule();
  34. /// <property name="versionspecific" value="=18.0.0.0" />
  35. ///
  36. /// <description>
  37. /// Overrules AcDbEntity::subList.
  38. /// </description>
  39. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  40. /// applied against.</param>
  41. /// <remarks>
  42. /// The default implementation of AcDbPropertiesOverrule::list calls the
  43. /// protected virtual AcDbEntity::subList method.
  44. /// </remarks>
  45. ACDB_PORT virtual void list(const AcDbEntity* pSubject);
  46. /// <property name="versionspecific" value="=18.0.0.0" />
  47. ///
  48. /// <description>
  49. /// Overrules AcDbObject::subGetClassID.
  50. /// </description>
  51. /// <param name="pSubject">Pointer to an AcDbObject that this overrule is
  52. /// applied against.</param>
  53. /// <param name="pClsid">Output corresponding COM wrapper class ID.</param>
  54. /// <returns> Returns Acad::eOk if successful. </returns>
  55. /// <remarks>
  56. /// The default implementation of AcDbPropertiesOverrule::getClassID calls
  57. /// the protected virtual AcDbObject::subGetClassID method.
  58. /// </remarks>
  59. ACDB_PORT virtual Acad::ErrorStatus getClassID(const AcDbObject* pSubject, CLSID* pClsid);
  60. };
  61. /// <property name="versionspecific" value="=18.0.0.0" />
  62. ///
  63. /// <description>
  64. /// AcDbOsnapOverrule overrules a subset of osnap related operations that
  65. /// AcDbEntity class specifies. It is intended as a base class for clients who
  66. /// want to alter some or all behavior of a given AcDbEntity-derived class. At
  67. /// the base level, each default implementation simply calls the corresponding
  68. /// method in the target class.
  69. /// </description>
  70. class AcDbOsnapOverrule : public AcRxOverrule
  71. {
  72. public:
  73. ACRX_DECLARE_MEMBERS(AcDbOsnapOverrule);
  74. /// <property name="versionspecific" value="=18.0.0.0" />
  75. ///
  76. /// <description>
  77. /// Default Constructor.
  78. /// </description>
  79. ACDB_PORT AcDbOsnapOverrule();
  80. /// <property name="versionspecific" value="=18.0.0.0" />
  81. ///
  82. /// <description>
  83. /// Overrules AcDbEntity::subGetOsnapPoints.
  84. /// </description>
  85. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  86. /// applied against.</param>
  87. /// <param name="osnapMode">Input osnap mode being requested.</param>
  88. /// <param name="gsSelectionMark">Input GS marker of the subentity involved
  89. /// in the object snap operation.</param>
  90. /// <param name="pickPoint">Input point (in WCS coordinates) picked during
  91. /// the object snap operation.</param>
  92. /// <param name="lastPoint">Input point (in WCS coordinates) selected just
  93. /// before pickPoint.</param>
  94. /// <param name="viewXform">Input transformation matrix to transform from
  95. /// WCS to DCS.</param>
  96. /// <param name="snapPoints">Input pre-existing array to append osnap points
  97. /// to (may already contain points); output with object snap points appended.
  98. /// </param>
  99. /// <param name="geomIds">Not in use.</param>
  100. /// <returns> Returns Acad::eOk if successful. </returns>
  101. /// <remarks>
  102. /// The default implementation of AcDbOsnapOverrule::getOsnapPoints calls
  103. /// the protected virtual AcDbEntity::subGetOsnapPoints method.
  104. /// </remarks>
  105. ACDB_PORT virtual Acad::ErrorStatus getOsnapPoints(
  106. const AcDbEntity* pSubject,
  107. AcDb::OsnapMode osnapMode,
  108. Adesk::GsMarker gsSelectionMark,
  109. const AcGePoint3d& pickPoint,
  110. const AcGePoint3d& lastPoint,
  111. const AcGeMatrix3d& viewXform,
  112. AcGePoint3dArray& snapPoints,
  113. AcDbIntArray & geomIds);
  114. /// <property name="versionspecific" value="=18.0.0.0" />
  115. ///
  116. /// <description>
  117. /// Overrules AcDbEntity::subGetOsnapPoints.
  118. /// </description>
  119. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  120. /// applied against.</param>
  121. /// <param name="osnapMode">Input osnap mode being requested.</param>
  122. /// <param name="gsSelectionMark">Input GS marker of the subentity involved
  123. /// in the object snap operation.</param>
  124. /// <param name="pickPoint">Input point (in WCS coordinates) picked during
  125. /// the object snap operation.</param>
  126. /// <param name="lastPoint">Input point (in WCS coordinates) selected just
  127. /// before pickPoint.</param>
  128. /// <param name="viewXform">Input transformation matrix to transform from
  129. /// WCS to DCS.</param>
  130. /// <param name="snapPoints">Input pre-existing array to append osnap points
  131. /// to (may already contain points); output with object snap points appended.
  132. /// </param>
  133. /// <param name="geomIds">Not in use.</param>
  134. /// <param name="insertionMat">Input block transformation.</param>
  135. /// <returns> Returns Acad::eOk if successful. </returns>
  136. /// <remarks>
  137. /// The default implementation of AcDbOsnapOverrule::getOsnapPoints calls
  138. /// the protected virtual AcDbEntity::subGetOsnapPoints method.
  139. /// </remarks>
  140. ACDB_PORT virtual Acad::ErrorStatus getOsnapPoints(
  141. const AcDbEntity* pSubject,
  142. AcDb::OsnapMode osnapMode,
  143. Adesk::GsMarker gsSelectionMark,
  144. const AcGePoint3d& pickPoint,
  145. const AcGePoint3d& lastPoint,
  146. const AcGeMatrix3d& viewXform,
  147. AcGePoint3dArray& snapPoints,
  148. AcDbIntArray & geomIds,
  149. const AcGeMatrix3d& insertionMat);
  150. ACDB_PORT virtual bool isContentSnappable(const AcDbEntity* pSubject);
  151. };
  152. /// <property name="versionspecific" value="=18.0.0.0" />
  153. ///
  154. /// <description>
  155. /// AcDbTransformOverrule overrules a subset of transform related operations that
  156. /// AcDbEntity class specifies. It is intended as a base class for clients who
  157. /// want to alter some or all behavior of a given AcDbEntity-derived class. At
  158. /// the base level, each default implementation simply calls the corresponding
  159. /// method in the target class.
  160. /// </description>
  161. class AcDbTransformOverrule : public AcRxOverrule
  162. {
  163. public:
  164. ACRX_DECLARE_MEMBERS(AcDbTransformOverrule);
  165. /// <property name="versionspecific" value="=18.0.0.0" />
  166. ///
  167. /// <description>
  168. /// Default Constructor.
  169. /// </description>
  170. ACDB_PORT AcDbTransformOverrule();
  171. /// <property name="versionspecific" value="=18.0.0.0" />
  172. ///
  173. /// <description>
  174. /// Overrules AcDbEntity::subTransformBy.
  175. /// </description>
  176. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  177. /// applied against.</param>
  178. /// <param name="xform">For future use.</param>
  179. /// <returns> Returns Acad::eOk if successful. </returns>
  180. /// <remarks>
  181. /// The default implementation of AcDbTransformOverrule::transformBy calls
  182. /// the protected virtual AcDbEntity::subTransformBy method.
  183. /// </remarks>
  184. ACDB_PORT virtual Acad::ErrorStatus transformBy(AcDbEntity* pSubject, const AcGeMatrix3d& xform);
  185. /// <property name="versionspecific" value="=18.0.0.0" />
  186. ///
  187. /// <description>
  188. /// Overrules AcDbEntity::subGetTransformedCopy.
  189. /// </description>
  190. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  191. /// applied against.</param>
  192. /// <param name="xform">Input matrix by which to transform the copy of the
  193. /// entity.</param>
  194. /// <param name="pEnt">Input reference to an "empty" pointer; output pointing
  195. /// to the transformed copy of the entity.</param>
  196. /// <returns> Returns Acad::eOk if successful. </returns>
  197. /// <remarks>
  198. /// The default implementation of AcDbTransformOverrule::getTransformedCopy
  199. /// calls the protected virtual AcDbEntity::subGetTransformedCopy method.
  200. /// </remarks>
  201. ACDB_PORT virtual Acad::ErrorStatus getTransformedCopy(const AcDbEntity* pSubject, const AcGeMatrix3d& xform,
  202. AcDbEntity*& pEnt);
  203. /// <property name="versionspecific" value="=18.0.0.0" />
  204. ///
  205. /// <description>
  206. /// Overrules AcDbEntity::subExplode.
  207. /// </description>
  208. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  209. /// applied against.</param>
  210. /// <param name="entitySet">Input array to contain pointers to new entities;
  211. /// this array may already contain pointers from other entities' explode()
  212. /// methods; output with all entities that result from exploding this entity,
  213. /// appended to the array.</param>
  214. /// <returns> Returns Acad::eOk if successful. </returns>
  215. /// <remarks>
  216. /// The default implementation of AcDbTransformOverrule::explode calls
  217. /// the protected virtual AcDbEntity::subExplode method.
  218. /// </remarks>
  219. ACDB_PORT virtual Acad::ErrorStatus explode(const AcDbEntity* pSubject, AcDbVoidPtrArray& entitySet);
  220. /// <property name="versionspecific" value="=18.0.0.0" />
  221. ///
  222. /// <description>
  223. /// Overrules AcDbEntity::subCloneMeForDragging.
  224. /// </description>
  225. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  226. /// applied against.</param>
  227. /// <returns> Returns Adesk::kTrue indicating that a clone will be created
  228. /// for the dragging operation.</returns>
  229. /// <remarks>
  230. /// The default implementation of AcDbTransformOverrule::cloneMeForDragging
  231. /// calls the protected virtual AcDbEntity::subCloneMeForDragging method.
  232. /// </remarks>
  233. ACDB_PORT virtual Adesk::Boolean cloneMeForDragging(AcDbEntity* pSubject);
  234. /// <property name="versionspecific" value="=18.0.0.0" />
  235. ///
  236. /// <description>
  237. /// Overrules AcDbEntity::subHideMeForDragging.
  238. /// </description>
  239. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  240. /// applied against.</param>
  241. /// <returns> Returns true if the original object should be hidden while a
  242. /// clone is being dragged.</returns>
  243. /// <remarks>
  244. /// The default implementation of AcDbTransformOverrule::hideMeForDragging calls
  245. /// the protected virtual AcDbEntity::subHideMeForDragging method.
  246. /// </remarks>
  247. ACDB_PORT virtual bool hideMeForDragging(const AcDbEntity* pSubject);
  248. };
  249. /// <property name="versionspecific" value="=18.0.0.0" />
  250. ///
  251. /// <description>
  252. /// AcDbGripOverrule overrules a subset of grip related operations that
  253. /// AcDbEntity class specifies. It is intended as a base class for clients who
  254. /// want to alter some or all behavior of a given AcDbEntity-derived class. At
  255. /// the base level, each default implementation simply calls the corresponding
  256. /// method in the target class.
  257. /// </description>
  258. class AcDbGripOverrule : public AcRxOverrule
  259. {
  260. public:
  261. ACRX_DECLARE_MEMBERS(AcDbGripOverrule);
  262. /// <property name="versionspecific" value="=18.0.0.0" />
  263. ///
  264. /// <description>
  265. /// Default Constructor.
  266. /// </description>
  267. ACDB_PORT AcDbGripOverrule();
  268. /// <property name="versionspecific" value="=18.0.0.0" />
  269. ///
  270. /// <description>
  271. /// Overrules AcDbEntity::subGetGripPoints.
  272. /// </description>
  273. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  274. /// applied against.</param>
  275. /// <param name="gripPoints">Input pre-existing array to append the grip
  276. /// points to; output with the entity's grip points appended.</param>
  277. /// <param name="osnapModes">not currently in use.</param>
  278. /// <param name="geomIds">not currently in use.</param>
  279. /// <returns> Returns Acad::eOk if successful. </returns>
  280. /// <remarks>
  281. /// The default implementation of AcDbGripOverrule::getGripPoints calls the
  282. /// protected virtual AcDbEntity::subGetGripPoints method.
  283. /// </remarks>
  284. ACDB_PORT virtual Acad::ErrorStatus getGripPoints(const AcDbEntity* pSubject,
  285. AcGePoint3dArray& gripPoints,
  286. AcDbIntArray & osnapModes,
  287. AcDbIntArray & geomIds);
  288. /// <property name="versionspecific" value="=18.0.0.0" />
  289. ///
  290. /// <description>
  291. /// Overrules AcDbEntity::subMoveGripPointsAt.
  292. /// </description>
  293. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  294. /// applied against.</param>
  295. /// <param name="indices">Input array containing index values (which correspond
  296. /// to grip points reported by the getGripPoints() method) that indicate which
  297. /// grip points are currently "hot".</param>
  298. /// <param name="offset">Input vector (in WCS coordinates) indicating the
  299. /// direction and magnitude that the grip points have been translated.</param>
  300. /// <returns> Returns Acad::eOk if successful. </returns>
  301. /// <remarks>
  302. /// The default implementation of AcDbGripOverrule::moveGripPointsAt calls the
  303. /// protected virtual AcDbEntity::subMoveGripPointsAt method.
  304. /// </remarks>
  305. ACDB_PORT virtual Acad::ErrorStatus moveGripPointsAt(AcDbEntity* pSubject,
  306. const AcDbIntArray & indices,
  307. const AcGeVector3d& offset);
  308. /// <property name="versionspecific" value="=18.0.0.0" />
  309. ///
  310. /// <description>
  311. /// Overrules AcDbEntity::subGetGripPoints.
  312. /// </description>
  313. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  314. /// applied against.</param>
  315. /// <param name="grips">Array of pointers to dynamically allocated AcDbGripData
  316. /// objects, one for each grip point in the entity.</param>
  317. /// <param name="curViewUnitSize">Size, in pixels, of one drawing unit in the
  318. /// current viewport.</param>
  319. /// <param name="gripSize">Current grip size, in pixels.</param>
  320. /// <param name="curViewDir">Vector describing the view direction in the
  321. /// current viewport.</param>
  322. /// <param name="bitflags">Bitmap of one or more flags specified by the
  323. /// GetGripPointsFlags enumeration.</param>
  324. /// <returns> Returns Acad::eOk if successful. </returns>
  325. /// <remarks>
  326. /// The default implementation of AcDbGripOverrule::getGripPoints calls the
  327. /// protected virtual AcDbEntity::subGetGripPoints method.
  328. /// </remarks>
  329. ACDB_PORT virtual Acad::ErrorStatus getGripPoints(const AcDbEntity* pSubject,
  330. AcDbGripDataPtrArray& grips,
  331. const double curViewUnitSize,
  332. const int gripSize,
  333. const AcGeVector3d& curViewDir,
  334. const int bitflags);
  335. /// <property name="versionspecific" value="=18.0.0.0" />
  336. ///
  337. /// <description>
  338. /// Overrules AcDbEntity::subMoveGripPointsAt.
  339. /// </description>
  340. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  341. /// applied against.</param>
  342. /// <param name="gripAppData">Input array of pointers, one for each grip point
  343. /// to be moved; these are the appData pointers from the AcDbGripData objects
  344. /// for the grip points to be moved.</param>
  345. /// <param name="offset">Vector, in WCS coordinates, indicating the direction
  346. /// and magnitude of the translation to be applied to the grips.</param>
  347. /// <param name="bitflags">Reserved for future use, currently zero.</param>
  348. /// <returns> Returns Acad::eOk if successful. </returns>
  349. /// <remarks>
  350. /// The default implementation of AcDbGripOverrule::moveGripPointsAt calls the
  351. /// protected virtual AcDbEntity::subMoveGripPointsAt method.
  352. /// </remarks>
  353. ACDB_PORT virtual Acad::ErrorStatus moveGripPointsAt(AcDbEntity* pSubject,
  354. const AcDbVoidPtrArray& gripAppData,
  355. const AcGeVector3d& offset,
  356. const int bitflags);
  357. /// <property name="versionspecific" value="=18.0.0.0" />
  358. ///
  359. /// <description>
  360. /// Overrules AcDbEntity::subGetStretchPoints.
  361. /// </description>
  362. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  363. /// applied against.</param>
  364. /// <param name="stretchPoints">Input pre-existing array to append the stretch
  365. /// points to; output with the entity's stretch points appended.</param>
  366. /// <returns>Returns Acad::eOk if successful.</returns>
  367. /// <remarks>
  368. /// The default implementation of AcDbGripOverrule::getStretchPoints calls the
  369. /// protected virtual AcDbEntity::subGetStretchPoints method.
  370. /// </remarks>
  371. ACDB_PORT virtual Acad::ErrorStatus getStretchPoints(const AcDbEntity* pSubject,
  372. AcGePoint3dArray& stretchPoints);
  373. /// <property name="versionspecific" value="=18.0.0.0" />
  374. ///
  375. /// <description>
  376. /// Overrules AcDbEntity::subMoveStretchPointsAt.
  377. /// </description>
  378. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  379. /// applied against.</param>
  380. /// <param name="indices">Input array containing index values that indicate
  381. /// which stretch points are being translated.</param>
  382. /// <param name="offset">Input vector (in WCS coordinates) indicating the
  383. /// direction and magnitude that the stretch points have been translated.</param>
  384. /// <returns>Returns Acad::eOk if successful.</returns>
  385. /// <remarks>
  386. /// The default implementation of AcDbGripOverrule::moveStretchPointsAt calls
  387. /// the protected virtual AcDbEntity::subMoveStretchPointsAt method.
  388. /// </remarks>
  389. ACDB_PORT virtual Acad::ErrorStatus moveStretchPointsAt(AcDbEntity* pSubject,
  390. const AcDbIntArray & indices,
  391. const AcGeVector3d& offset);
  392. /// <property name="versionspecific" value="=18.0.0.0" />
  393. ///
  394. /// <description>
  395. /// Overrules AcDbEntity::subGripStatus.
  396. /// </description>
  397. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  398. /// applied against.</param>
  399. /// <param name="status">Value describing the status of the grip operation;
  400. /// one of the values from the GripStatus enumeration.</param>
  401. /// <remarks>
  402. /// The default implementation of AcDbGripOverrule::gripStatus calls the
  403. /// protected virtual AcDbEntity::subGripStatus method.
  404. /// </remarks>
  405. ACDB_PORT virtual void gripStatus(AcDbEntity* pSubject, const AcDb::GripStat status);
  406. };
  407. /// <property name="versionspecific" value="=18.0.0.0" />
  408. ///
  409. /// <description>
  410. /// AcDbSubentityOverrule overrules a subset of subentity related operations that
  411. /// AcDbEntity class specifies. It is intended as a base class for clients who
  412. /// want to alter some or all behavior of a given AcDbEntity-derived class. At
  413. /// the base level, each default implementation simply calls the corresponding
  414. /// method in the target class.
  415. /// </description>
  416. class AcDbSubentityOverrule : public AcRxOverrule
  417. {
  418. public:
  419. ACRX_DECLARE_MEMBERS(AcDbSubentityOverrule);
  420. /// <property name="versionspecific" value="=18.0.0.0" />
  421. ///
  422. /// <description>
  423. /// Default Constructor.
  424. /// </description>
  425. ACDB_PORT AcDbSubentityOverrule();
  426. /// <property name="versionspecific" value="=18.0.0.0" />
  427. ///
  428. /// <description>
  429. /// Overrules AcDbEntity::subAddSubentPaths.
  430. /// </description>
  431. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  432. /// applied against.</param>
  433. /// <param name="newPaths">Input an array of AcDbFullSubentPath identifiers
  434. /// to add to the entity.</param>
  435. /// <returns>Returns Acad::eOk if successful.</returns>
  436. /// <remarks>
  437. /// The default implementation of AcDbSubentityOverrule::addSubentPaths calls
  438. /// the protected virtual AcDbEntity::subAddSubentPaths method.
  439. /// </remarks>
  440. ACDB_PORT virtual Acad::ErrorStatus addSubentPaths(AcDbEntity* pSubject, const AcDbFullSubentPathArray& newPaths);
  441. /// <property name="versionspecific" value="=18.0.0.0" />
  442. ///
  443. /// <description>
  444. /// Overrules AcDbEntity::subDeleteSubentPaths.
  445. /// </description>
  446. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  447. /// applied against.</param>
  448. /// <param name="paths">Input an array of AcDbFullSubentPath identifiers to
  449. /// delete from the entity.</param>
  450. /// <returns>Returns Acad::eOk if successful.</returns>
  451. /// <remarks>
  452. /// The default implementation of AcDbSubentityOverrule::deleteSubentPaths calls
  453. /// the protected virtual AcDbEntity::subDeleteSubentPaths method.
  454. /// </remarks>
  455. ACDB_PORT virtual Acad::ErrorStatus deleteSubentPaths(AcDbEntity* pSubject, const AcDbFullSubentPathArray& paths);
  456. /// <property name="versionspecific" value="=18.0.0.0" />
  457. ///
  458. /// <description>
  459. /// Overrules AcDbEntity::subTransformSubentPathsBy.
  460. /// </description>
  461. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  462. /// applied against.</param>
  463. /// <param name="paths">Input an array of one or more AcDbFullSubentPath
  464. /// objects identifying the subentities to transform.</param>
  465. /// <param name="xform">Input the WCS transformation to apply to each of the
  466. /// supplied subentities.</param>
  467. /// <returns>Returns Acad::eOk if successful.</returns>
  468. /// <remarks>
  469. /// The default implementation of AcDbSubentityOverrule::transformSubentPathsBy
  470. /// calls the protected virtual AcDbEntity::subTransformSubentPathsBy method.
  471. /// </remarks>
  472. ACDB_PORT virtual Acad::ErrorStatus transformSubentPathsBy(AcDbEntity* pSubject,
  473. const AcDbFullSubentPathArray& paths,
  474. const AcGeMatrix3d& xform);
  475. /// <property name="versionspecific" value="=18.0.0.0" />
  476. ///
  477. /// <description>
  478. /// Overrules AcDbEntity::subGetGripPointsAtSubentPath.
  479. /// </description>
  480. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  481. /// applied against.</param>
  482. /// <param name="path">Input the AcDbFullSubentPath to the subentity.</param>
  483. /// <param name="grips">Output an array of pointers to dynamically allocated
  484. /// AcDbGripData objects, one for each grip point in the subentity.</param>
  485. /// <param name="curViewUnitSize">Input size, in pixels, of one drawing unit
  486. /// in the current viewport.</param>
  487. /// <param name="gripSize">Input current grip size, in pixels.</param>
  488. /// <param name="curViewDir">Input vector describing the view direction in
  489. /// the current viewport.</param>
  490. /// <param name="bitflags">Input bitmap of one or more flags specified by the
  491. /// GetGripPointsFlags enumeration.</param>
  492. /// <returns>Returns Acad::eOk if successful.</returns>
  493. /// <remarks>
  494. /// The default implementation of AcDbSubentityOverrule::getGripPointsAtSubentPath
  495. /// calls the protected virtual AcDbEntity::subGetGripPointsAtSubentPath method.
  496. /// </remarks>
  497. ACDB_PORT virtual Acad::ErrorStatus getGripPointsAtSubentPath(
  498. const AcDbEntity* pSubject,
  499. const AcDbFullSubentPath& path,
  500. AcDbGripDataPtrArray& grips,
  501. const double curViewUnitSize,
  502. const int gripSize,
  503. const AcGeVector3d& curViewDir,
  504. const int bitflags);
  505. /// <property name="versionspecific" value="=18.0.0.0" />
  506. ///
  507. /// <description>
  508. /// Overrules AcDbEntity::subMoveGripPointsAtSubentPaths.
  509. /// </description>
  510. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  511. /// applied against.</param>
  512. /// <param name="paths">Input.</param>
  513. /// <param name="gripAppData">Input an array of pointers, one for each grip
  514. /// point to be moved; these are the appData pointers from the AcDbGripData
  515. /// objects for the grip points to be moved.</param>
  516. /// <param name="offset">Input the vector, in WCS coordinates, indicating the
  517. /// direction and magnitude of the translation to be applied to the grips.</param>
  518. /// <param name="bitflags">Reserved for future use; currently zero.</param>
  519. /// <returns>Returns Acad::eOk if successful.</returns>
  520. /// <remarks>
  521. /// The default implementation of AcDbSubentityOverrule::moveGripPointsAtSubentPaths
  522. /// calls the protected virtual AcDbEntity::subMoveGripPointsAtSubentPaths method.
  523. /// </remarks>
  524. ACDB_PORT virtual Acad::ErrorStatus moveGripPointsAtSubentPaths(
  525. AcDbEntity* pSubject,
  526. const AcDbFullSubentPathArray& paths,
  527. const AcDbVoidPtrArray& gripAppData,
  528. const AcGeVector3d& offset,
  529. const int bitflags);
  530. /// <property name="versionspecific" value="=18.0.0.0" />
  531. ///
  532. /// <description>
  533. /// Overrules AcDbEntity::subGetSubentPathsAtGsMarker.
  534. /// </description>
  535. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  536. /// applied against.</param>
  537. /// <param name="type">Input subentity type desired; possible SubentTypes are
  538. /// AcDb::kFaceSubentType, AcDb::kEdgeSubentType, AcDb::kVertexSubentType,
  539. /// AcDb::kMlineSubentCache.</param>
  540. /// <param name="gsMark">Input GS marker representing a specific subentity
  541. /// (typically obtained from ads_ssnamex()).</param>
  542. /// <param name="pickPoint">Input point (in WCS coordinates) picked during
  543. /// selection of the entity (this point will be on or very near the desired
  544. /// subentity) .</param>
  545. /// <param name="viewXform">Input transformation matrix to transform from WCS
  546. /// to DCS.</param>
  547. /// <param name="numPaths">Output number of AcDbFullSubentPath objects in the
  548. /// subentPaths array.</param>
  549. /// <param name="subentPaths">Output address of a dynamically allocated array
  550. /// of one or more AcDbFullSubentPaths generated from the GS marker and other
  551. /// information passed into this function.</param>
  552. /// <param name="numInserts">Input number of object IDs for AcDbBlockReferences
  553. /// in entAndInsertStack (should be one less than the total number of entries
  554. /// in entAndInsertStack because the first entry is the entity itself, which
  555. /// is not a BlockReference). If the entity is directly owned by the model or
  556. /// paper space BlockTableRecords, then leave this argument out so its default
  557. /// of 0 will be used.</param>
  558. /// <param name="entAndInsertStack">Input array of objectIds of the objects
  559. /// that are the nested containers of the subentity. The list is in order from
  560. /// the "main" entity that the subentity is a part of, out to the outermost
  561. /// AcDbBlockReference that is in model or paper space. If the entity is
  562. /// itself directly owned by model or paper space, then leave this argument
  563. /// out so that its default of NULL will be used.</param>
  564. /// <returns>Returns Acad::eOk if successful.</returns>
  565. /// <remarks>
  566. /// The default implementation of AcDbSubentityOverrule::getSubentPathsAtGsMarker
  567. /// calls the protected virtual AcDbEntity::subGetSubentPathsAtGsMarker method.
  568. /// </remarks>
  569. ACDB_PORT virtual Acad::ErrorStatus getSubentPathsAtGsMarker(
  570. const AcDbEntity* pSubject,
  571. AcDb::SubentType type,
  572. Adesk::GsMarker gsMark,
  573. const AcGePoint3d& pickPoint,
  574. const AcGeMatrix3d& viewXform,
  575. int& numPaths,
  576. AcDbFullSubentPath*& subentPaths,
  577. int numInserts = 0,
  578. AcDbObjectId* entAndInsertStack = NULL);
  579. /// <property name="versionspecific" value="=18.0.0.0" />
  580. ///
  581. /// <description>
  582. /// Overrules AcDbEntity::subGetGsMarkersAtSubentPath.
  583. /// </description>
  584. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  585. /// applied against.</param>
  586. /// <param name="subPath">Input AcDbFullSubentPath object that contains an
  587. /// AcDbSubentId object with the information necessary to determine the
  588. /// subentity (or subentities) for which the GS Marker(s) is requested.</param>
  589. /// <param name="gsMarkers">Output array with the GSMarker(s) for the subentity
  590. /// (or subentities).</param>
  591. /// <returns>Returns Acad::eOk if successful.</returns>
  592. /// <remarks>
  593. /// The default implementation of AcDbSubentityOverrule::getGsMarkersAtSubentPath
  594. /// calls the protected virtual AcDbEntity::subGetGsMarkersAtSubentPath method.
  595. /// </remarks>
  596. ACDB_PORT virtual Acad::ErrorStatus getGsMarkersAtSubentPath(
  597. const AcDbEntity* pSubject,
  598. const AcDbFullSubentPath& subPath,
  599. AcArray<Adesk::GsMarker>& gsMarkers);
  600. /// <property name="versionspecific" value="=18.0.0.0" />
  601. ///
  602. /// <description>
  603. /// Overrules AcDbEntity::subentPtr.
  604. /// </description>
  605. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  606. /// applied against.</param>
  607. /// <param name="id">Input AcDbFullSubentPath that identifies the subentity
  608. /// to be copied.</param>
  609. /// <returns>Returns Acad::eOk if successful.</returns>
  610. /// <remarks>
  611. /// The default implementation of AcDbSubentityOverrule::subentPtr calls the
  612. /// protected virtual AcDbEntity::subentPtr method.
  613. /// </remarks>
  614. ACDB_PORT virtual AcDbEntity* subentPtr(const AcDbEntity* pSubject, const AcDbFullSubentPath& id);
  615. /// <property name="versionspecific" value="=18.0.0.0" />
  616. ///
  617. /// <description>
  618. /// Overrules AcDbEntity::subentGripStatus.
  619. /// </description>
  620. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  621. /// applied against.</param>
  622. /// <param name="status">Input the status of the grip operation.</param>
  623. /// <param name="subentity">Input the subentity on the object whose grip
  624. /// status changed.</param>
  625. /// <remarks>
  626. /// The default implementation of AcDbSubentityOverrule::subentGripStatus
  627. /// calls the protected virtual AcDbEntity::subentGripStatus method.
  628. /// </remarks>
  629. ACDB_PORT virtual void subentGripStatus(
  630. AcDbEntity* pSubject,
  631. const AcDb::GripStat status,
  632. const AcDbFullSubentPath& subentity);
  633. /// <property name="versionspecific" value="=18.0.0.0" />
  634. ///
  635. /// <description>
  636. /// Overrules AcDbEntity::subGetCompoundObjectTransform.
  637. /// </description>
  638. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  639. /// applied against.</param>
  640. /// <param name="xMat">Output filled in with transformation matrix used for
  641. /// nested objects.</param>
  642. /// <returns>Returns Acad::eOk if successful.</returns>
  643. /// <remarks>
  644. /// The default implementation of AcDbSubentityOverrule::getCompoundObjectTransform
  645. /// calls the protected virtual AcDbEntity::subGetCompoundObjectTransform method.
  646. /// </remarks>
  647. ACDB_PORT virtual Acad::ErrorStatus getCompoundObjectTransform(const AcDbEntity* pSubject, AcGeMatrix3d & xMat);
  648. /// <property name="versionspecific" value="=18.0.0.0" />
  649. ///
  650. /// <description>
  651. /// Overrules AcDbEntity::subGetSubentPathGeomExtents.
  652. /// </description>
  653. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  654. /// applied against.</param>
  655. /// <param name="path">Input the path to the subentity.</param>
  656. /// <param name="extents">Output geometric extents, expressed in world
  657. /// coordinates, of the subentity.</param>
  658. /// <returns>Returns Acad::eOk if successful.</returns>
  659. /// <remarks>
  660. /// The default implementation of AcDbSubentityOverrule::getSubentPathGeomExtents
  661. /// calls the protected virtual AcDbEntity::subGetSubentPathGeomExtents method.
  662. /// </remarks>
  663. ACDB_PORT virtual Acad::ErrorStatus getSubentPathGeomExtents(const AcDbEntity* pSubject,
  664. const AcDbFullSubentPath& path,
  665. AcDbExtents& extents);
  666. /// <property name="versionspecific" value="=18.0.0.0" />
  667. ///
  668. /// <description>
  669. /// Overrules AcDbEntity::subGetSubentClassId.
  670. /// </description>
  671. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  672. /// applied against.</param>
  673. /// <param name="path">Input the path to the subentity.</param>
  674. /// <param name="clsId">Output a pointer to a CLSID structure whose contents
  675. /// are set to the CLSID of the wrapper for the subentity.</param>
  676. /// <returns>Returns Acad::eOk if successful.</returns>
  677. /// <remarks>
  678. /// The default implementation of AcDbSubentityOverrule::getSubentClassId
  679. /// calls the protected virtual AcDbEntity::subGetSubentClassId method.
  680. /// </remarks>
  681. ACDB_PORT virtual Acad::ErrorStatus getSubentClassId(const AcDbEntity* pSubject,
  682. const AcDbFullSubentPath& path,
  683. CLSID* clsId);
  684. };
  685. /// <property name="versionspecific" value="=18.0.0.0" />
  686. ///
  687. /// <description>
  688. /// AcDbHighlightOverrule overrules a subset of highlight related operations that
  689. /// AcDbEntity class specifies. It is intended as a base class for clients who
  690. /// want to alter some or all behavior of a given AcDbEntity-derived class. At
  691. /// the base level, each default implementation simply calls the corresponding
  692. /// method in the target class.
  693. /// </description>
  694. class AcDbHighlightOverrule : public AcRxOverrule
  695. {
  696. public:
  697. ACRX_DECLARE_MEMBERS(AcDbHighlightOverrule);
  698. /// <property name="versionspecific" value="=18.0.0.0" />
  699. ///
  700. /// <description>
  701. /// Default Constructor.
  702. /// </description>
  703. ACDB_PORT AcDbHighlightOverrule();
  704. /// <property name="versionspecific" value="=18.0.0.0" />
  705. ///
  706. /// <description>
  707. /// Overrules AcDbEntity::subHighlight.
  708. /// </description>
  709. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  710. /// applied against.</param>
  711. /// <param name="subId">Input AcDbFullSubentPath that identifies the
  712. /// subentity to highlight .</param>
  713. /// <param name="highlightAll">Input Boolean indicating whether to highlight
  714. /// in all viewports.</param>
  715. /// <returns>Returns Acad::eOk if successful.</returns>
  716. /// <remarks>
  717. /// The default implementation of AcDbHighlightOverrule::highlight calls the
  718. /// protected virtual AcDbEntity::subHighlight method.
  719. /// </remarks>
  720. ACDB_PORT virtual Acad::ErrorStatus highlight(
  721. const AcDbEntity* pSubject,
  722. const AcDbFullSubentPath& subId = kNullSubent,
  723. const Adesk::Boolean highlightAll = false);
  724. /// <property name="versionspecific" value="=18.0.0.0" />
  725. ///
  726. /// <description>
  727. /// Overrules AcDbEntity::subUnhighlight.
  728. /// </description>
  729. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  730. /// applied against.</param>
  731. /// <param name="subId">Input AcDbFullSubentPath that identifies the
  732. /// subentity to highlight .</param>
  733. /// <param name="highlightAll">Input Boolean indicating whether to highlight
  734. /// in all viewports.</param>
  735. /// <returns>Returns Acad::eOk if successful.</returns>
  736. /// <remarks>
  737. /// The default implementation of AcDbHighlightOverrule::unhighlight calls the
  738. /// protected virtual AcDbEntity::subUnhighlight method.
  739. /// </remarks>
  740. ACDB_PORT virtual Acad::ErrorStatus unhighlight(
  741. const AcDbEntity* pSubject,
  742. const AcDbFullSubentPath& subId = kNullSubent,
  743. const Adesk::Boolean highlightAll = false);
  744. };
  745. /// <property name="versionspecific" value="=18.0.0.0" />
  746. ///
  747. /// <description>
  748. /// AcDbHighlightStateOverrule overrules a subset of highlight style related
  749. /// operations that AcDbEntity class specifies. It is intended as a base class
  750. /// for clients who want to alter some or all behavior of a given
  751. /// AcDbEntity-derived class. At the base level, each default implementation
  752. /// simply calls the corresponding method in the target class.
  753. /// </description>
  754. class AcDbHighlightStateOverrule : public AcRxOverrule
  755. {
  756. public:
  757. ACRX_DECLARE_MEMBERS(AcDbHighlightStateOverrule);
  758. /// <property name="versionspecific" value="=18.0.0.0" />
  759. ///
  760. /// <description>
  761. /// Default Constructor.
  762. /// </description>
  763. ACDB_PORT AcDbHighlightStateOverrule();
  764. /// <property name="versionspecific" value="=18.0.0.0" />
  765. ///
  766. /// <description>
  767. /// Overrules AcDbEntity::pushHighlight.
  768. /// </description>
  769. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  770. /// applied against.</param>
  771. /// <param name="subId">Input AcDbFullSubentPath that identifies the
  772. /// subentity to push highlight .</param>
  773. /// <param name="highlightStyle">Input AcGiHighlightStyle indicating
  774. /// highlight style.</param>
  775. /// <returns>Returns Acad::eOk if successful.</returns>
  776. /// <remarks>
  777. /// The default implementation of AcDbHighlightStateOverrule::pushHighlight calls
  778. /// the protected AcDbEntity::subPushHighlight method.
  779. /// </remarks>
  780. ACDB_PORT virtual Acad::ErrorStatus pushHighlight(
  781. AcDbEntity* pSubject,
  782. const AcDbFullSubentPath& subId,
  783. AcGiHighlightStyle highlightStyle);
  784. /// <property name="versionspecific" value="=18.0.0.0" />
  785. ///
  786. /// <description>
  787. /// Overrules AcDbEntity::popHighlight.
  788. /// </description>
  789. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  790. /// applied against.</param>
  791. /// <param name="subId">Input AcDbFullSubentPath that identifies the
  792. /// subentity to pop highlight .</param>
  793. /// <returns>Returns Acad::eOk if successful.</returns>
  794. /// <remarks>
  795. /// The default implementation of AcDbHighlightStateOverrule::popHighlight calls
  796. /// the protected AcDbEntity::subPopHighlight method.
  797. /// </remarks>
  798. ACDB_PORT virtual Acad::ErrorStatus popHighlight(
  799. AcDbEntity* pSubject,
  800. const AcDbFullSubentPath& subId);
  801. /// <property name="versionspecific" value="=18.0.0.0" />
  802. ///
  803. /// <description>
  804. /// Overrules AcDbEntity::highlightState.
  805. /// </description>
  806. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  807. /// applied against.</param>
  808. /// <param name="subId">Input AcDbFullSubentPath that identifies the
  809. /// subentity to get current highlight style.</param>
  810. /// <returns>Returns highlight style of input subent.</returns>
  811. /// <remarks>
  812. /// The default implementation of AcDbHighlightStateOverrule::highlightState calls
  813. /// the protected AcDbEntity::subHighlightState method.
  814. /// </remarks>
  815. ACDB_PORT virtual AcGiHighlightStyle highlightState(
  816. AcDbEntity* pSubject,
  817. const AcDbFullSubentPath& subId);
  818. };
  819. /// <property name="versionspecific" value="=18.1.0.0" />
  820. ///
  821. /// <description>
  822. /// AcDbVisibilityOverrule overrules a subset of visibility-related operations that
  823. /// AcDbEntity class specifies. It is intended as a base class for clients who
  824. /// want to alter some or all behavior of a given AcDbEntity-derived class. At
  825. /// the base level, each default implementation simply calls the corresponding
  826. /// method in the target class.
  827. /// </description>
  828. class AcDbVisibilityOverrule : public AcRxOverrule
  829. {
  830. public:
  831. ACRX_DECLARE_MEMBERS(AcDbVisibilityOverrule);
  832. /// <property name="versionspecific" value="=18.1.0.0" />
  833. ///
  834. /// <description>
  835. /// Default Constructor.
  836. /// </description>
  837. ACDB_PORT AcDbVisibilityOverrule();
  838. /// <property name="versionspecific" value="=18.1.0.0" />
  839. ///
  840. /// <description>
  841. /// Overrules AcDbEntity::subVisibility.
  842. /// </description>
  843. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  844. /// applied against.</param>
  845. /// <returns>Returns the visibility state of the object or overrule.</returns>
  846. /// <remarks>
  847. /// The default implementation of AcDbVisibilityOverrule::visibility calls the
  848. /// protected AcDbEntity::subVisibility method.
  849. /// </remarks>
  850. ACDB_PORT virtual AcDb::Visibility visibility(const AcDbEntity* pSubject);
  851. /// <property name="versionspecific" value="=18.1.0.0" />
  852. ///
  853. /// <description>
  854. /// Overrules AcDbEntity::subSetVisibility.
  855. /// </description>
  856. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  857. /// applied against.</param>
  858. /// <param name="newVal">The new visibility state.</param>
  859. /// <param name="doSubents">Pass in true if the new value should apply to
  860. /// subentitites.</param>
  861. /// <returns>Returns Acad::eOk if successful.</returns>
  862. /// <remarks>
  863. /// The default implementation of AcDbVisibilityOverrule::setVisibility calls the
  864. /// protected AcDbEntity::subSetVisibility method.
  865. /// </remarks>
  866. ACDB_PORT virtual Acad::ErrorStatus setVisibility(AcDbEntity* pSubject,
  867. AcDb::Visibility newVal,
  868. Adesk::Boolean doSubents = true);
  869. };
  870. /// <property name="versionspecific" value="=18.0.0.0" />
  871. ///
  872. /// <description>
  873. /// AcDbGeometryOverrule overrules a subset of geometry related operations that
  874. /// AcDbEntity class specifies. It is intended as a base class for clients who
  875. /// want to alter some or all behavior of a given AcDbEntity-derived class. At
  876. /// the base level, each default implementation simply calls the corresponding
  877. /// method in the target class.
  878. /// </description>
  879. class AcDbGeometryOverrule : public AcRxOverrule
  880. {
  881. public:
  882. ACRX_DECLARE_MEMBERS(AcDbGeometryOverrule);
  883. /// <property name="versionspecific" value="=18.0.0.0" />
  884. ///
  885. /// <description>
  886. /// Default Constructor.
  887. /// </description>
  888. ACDB_PORT AcDbGeometryOverrule();
  889. /// <property name="versionspecific" value="=18.0.0.0" />
  890. ///
  891. /// <description>
  892. /// Overrules AcDbEntity::subIntersectWith.
  893. /// </description>
  894. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  895. /// applied against.</param>
  896. /// <param name="pEnt">Input entity with which "this" entity is to intersect.
  897. /// </param>
  898. /// <param name="intType">Input type of intersection requested.</param>
  899. /// <param name="points">Output with the points of intersection appended.</param>
  900. /// <param name="thisGsMarker">Input GS marker of subentity of "this" entity
  901. /// that's involved in the intersection operation. Use the 0 default if not
  902. /// applicable.</param>
  903. /// <param name="otherGsMarker">Input GS marker of subentity of the entity
  904. /// pointed to by pEnt that's involved in the intersection operation. Use
  905. /// the 0 default if not applicable.</param>
  906. /// <returns>Returns Acad::eOk if successful.</returns>
  907. /// <remarks>
  908. /// The default implementation of AcDbGeometryOverrule::intersectWith calls
  909. /// the protected virtual AcDbEntity::subIntersectWith method.
  910. /// </remarks>
  911. ACDB_PORT virtual Acad::ErrorStatus intersectWith(
  912. const AcDbEntity* pSubject,
  913. const AcDbEntity* pEnt,
  914. AcDb::Intersect intType,
  915. AcGePoint3dArray& points,
  916. Adesk::GsMarker thisGsMarker = 0,
  917. Adesk::GsMarker otherGsMarker = 0);
  918. /// <property name="versionspecific" value="=18.0.0.0" />
  919. ///
  920. /// <description>
  921. /// Overrules AcDbEntity::subIntersectWith.
  922. /// </description>
  923. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  924. /// applied against.</param>
  925. /// <param name="pEnt">Input entity with which "this" entity is to intersect.
  926. /// </param>
  927. /// <param name="intType">Input type of intersection requested.</param>
  928. /// <param name="projPlane">Input projection plane for the apparent
  929. /// intersection of the two entities.</param>
  930. /// <param name="points">Output with the points of intersection appended.</param>
  931. /// <param name="thisGsMarker">Input GS marker of subentity of "this" entity
  932. /// that's involved in the intersection operation. Use the 0 default if not
  933. /// applicable.</param>
  934. /// <param name="otherGsMarker">Input GS marker of subentity of the entity
  935. /// pointed to by pEnt that's involved in the intersection operation. Use
  936. /// the 0 default if not applicable.</param>
  937. /// <returns>Returns Acad::eOk if successful.</returns>
  938. /// <remarks>
  939. /// The default implementation of AcDbGeometryOverrule::intersectWith calls
  940. /// the protected virtual AcDbEntity::subIntersectWith method.
  941. /// </remarks>
  942. ACDB_PORT virtual Acad::ErrorStatus intersectWith(
  943. const AcDbEntity* pSubject,
  944. const AcDbEntity* pEnt,
  945. AcDb::Intersect intType,
  946. const AcGePlane& projPlane,
  947. AcGePoint3dArray& points,
  948. Adesk::GsMarker thisGsMarker = 0,
  949. Adesk::GsMarker otherGsMarker = 0);
  950. /// <property name="versionspecific" value="=18.0.0.0" />
  951. ///
  952. /// <description>
  953. /// Overrules AcDbEntity::subGetGeomExtents.
  954. /// </description>
  955. /// <param name="pSubject">Pointer to an AcDbEntity that this overrule is
  956. /// applied against.</param>
  957. /// <param name="extents">Output entity's extents.</param>
  958. /// <returns>Returns Acad::eOk if successful.</returns>
  959. /// <remarks>
  960. /// The default implementation of AcDbGeometryOverrule::getGeomExtents calls
  961. /// the protected virtual AcDbEntity::subGetGeomExtents method.
  962. /// </remarks>
  963. ACDB_PORT virtual Acad::ErrorStatus getGeomExtents(const AcDbEntity* pSubject, AcDbExtents& extents);
  964. };
  965. #pragma pack (pop)