45#ifndef RDEFAULT_QSET_INT
46#define RDEFAULT_QSET_INT QSet<int>()
49#ifndef RDEFAULT_TOLERANCE_1E_MIN4
50#define RDEFAULT_TOLERANCE_1E_MIN4 1.0e-4
98 static
RS::EntityType getRtti() {
110 getData().setDocument(document);
113 virtual QSharedPointer<RObject>
clone()
const = 0;
116 QSharedPointer<REntity> ret =
clone().dynamicCast<
REntity>();
117 Q_ASSERT(!ret.isNull());
122 return getData().getType();
126 return getData().isPointType();
144 return getData().isValid();
147 return getData().isSane();
172 return getData().isSelected();
181 return getData().isSelectedWorkingSet();
185 getData().setSelectedWorkingSet(on);
188 virtual bool isSelectable()
const;
191 return getData().isUpdatesEnabled();
195 getData().setUpdatesEnabled(on);
199 return getData().cloneOnChange();
206 getData().setDrawOrder(drawOrder);
213 return getData().getDrawOrder();
220 getData().setLayerId(layerId);
227 getData().setLayerName(n);
234 return getData().getLayerId();
241 return getData().getLayerName();
248 getData().setBlockId(blockId);
255 return getData().getBlockId();
262 return getData().getBlockName();
269 return getData().getParentId();
276 getData().setLinetypeId(linetypeId);
283 getData().setLinetypePattern(linetypePattern);
290 return getData().getLinetypeId();
293 RObject::Id getLinetypeId(
bool resolve,
const QStack<QSharedPointer<REntity> >& blockRefStack)
const;
299 return getData().getLinetypePattern();
306 getData().setLinetypeScale(linetypeScale);
313 return getData().getLinetypeScale();
320 getData().setLineweight(lineweight);
327 return getData().getLineweight();
330 RLineweight::Lineweight getLineweight(
bool resolve,
const QStack<QSharedPointer<REntity> >& blockRefStack)
const;
332 double getLineweightInUnits(
const QStack<QSharedPointer<REntity> >& blockRefStack)
const;
338 getData().setColor(color);
345 return getData().getColor();
348 RColor getColor(
const RColor& unresolvedColor,
const QStack<QSharedPointer<REntity> >& blockRefStack);
349 RColor getColor(
bool resolve,
const QStack<QSharedPointer<REntity> >& blockRefStack);
352 return getData().getDisplayColor();
355 void copyAttributesFrom(
const REntity* entity,
bool copyBlockId=
true);
356 void copyAttributesFrom(
const REntityData& entityData,
bool copyBlockId=
true);
362 return getData().getBoundingBox(ignoreEmpty);
383 return getData().getBoundingBoxes(ignoreEmpty);
390 return getData().getHull(offset);
403 virtual QList<QSharedPointer<RShape> >
getShapes(
const RBox& queryBox =
RDEFAULT_RBOX,
bool ignoreComplex =
false,
bool segment =
false, QList<RObject::Id>* entityIds =
NULL)
const {
404 return getData().getShapes(queryBox, ignoreComplex, segment, entityIds);
411 return getData().getClosestSubEntityId(pos, range, ignoreComplex);
418 return getData().getClosestShape(pos, range, ignoreComplex, subEntityId);
425 return getClosestShape(pos, range,
true);
432 return getData().isInside(box);
439 return getData().isOnEntity(point, limited, tolerance);
446 return getData().intersectsWith(shape);
453 return getData().getDistanceTo(point, limited, range, draft, strictRange);
460 return getData().getVectorTo(point, limited, strictRange);
467 return getData().getInternalReferencePoints(hint, subEntityIds);
474 return getData().getReferencePoints(hint);
481 return getData().getPointOnEntity();
488 return getData().getEndPoints(queryBox, subEntityIds);
495 return getData().getMiddlePoints(queryBox, subEntityIds);
502 return getData().getCenterPoints(queryBox, subEntityIds);
511 return getData().getClosestPointOnEntity(point, range, limited, subEntityId);
521 return getData().getPointsWithDistanceToEnd(distance, from, queryBox, subEntityIds);
545 return getData().clickReferencePoint(referencePoint);
552 return getData().moveReferencePoint(referencePoint, targetPoint, modifiers);
559 return getData().move(offset);
566 return getData().rotate(rotation, center);
573 return getData().scale(scaleFactors, center);
585 return getData().scale(scaleFactor, center);
589 getData().scaleVisualProperties(scaleFactor);
601 return getData().mirror(axis);
608 return getData().mirror(axis1, axis2);
615 return getData().flipHorizontal();
622 return getData().flipVertical();
629 return getData().stretch(area, offset);
643 return getData().castToShape();
650 return getData().castToConstShape();
661 getData().setAutoUpdatesBlocked(on);
664 virtual QPair<QVariant, RPropertyAttributes>
getProperty(
666 bool humanReadable =
false,
bool noAttributes =
false,
bool showOnRequest =
false);
672 virtual bool isEditable(
bool allowInvisible =
false)
const;
673 virtual bool isInWorkingSet()
const;
685 getData().setParentId(parentId);
688 virtual void print(QDebug dbg)
const;
#define RDEFAULT_RBOX
Definition RBox.h:35
#define RNANDOUBLE
Definition RMath.h:74
Q_DECLARE_METATYPE(RMath *)
#define RMAXDOUBLE
Definition RMath.h:66
#define RDEFAULT_TOLERANCE_1E_MIN4
Definition RShape.h:43
#define RDEFAULT_RVECTOR
Definition RVector.h:38
Represents a block definition in a drawing.
Definition RBlock.h:42
Represents a box e.g.
Definition RBox.h:46
Color.
Definition RColor.h:43
A graphics document contains and owns entities, layers, user coordinate systems, variables,...
Definition RDocument.h:78
Base class for all entity data classes.
Definition REntityData.h:65
Base class for all entity classes.
Definition REntity.h:63
virtual void setZ(double z)
Definition REntity.h:375
double getLinetypeScale() const
Definition REntity.h:312
virtual REntityData & getData()=0
virtual RS::EntityType getType() const
Definition REntity.h:121
virtual bool scale(double scaleFactor, const RVector ¢er=RDEFAULT_RVECTOR)
Definition REntity.h:584
virtual bool isValid() const
Definition REntity.h:143
virtual RBox getBoundingBox(bool ignoreEmpty=false) const
Definition REntity.h:361
virtual const REntityData & getData() const =0
virtual QList< RVector > getCenterPoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition REntity.h:501
virtual const RShape * castToConstShape() const
Definition REntity.h:649
virtual bool intersectsWith(const RShape &shape) const
Definition REntity.h:445
virtual QList< RRefPoint > getReferencePoints(RS::ProjectionRenderingHint hint=RS::RenderTop) const
Definition REntity.h:473
virtual bool cloneOnChange() const
Definition REntity.h:198
RLineweight::Lineweight getLineweight() const
Definition REntity.h:326
void setColor(const RColor &color)
Definition REntity.h:337
virtual QList< QSharedPointer< RShape > > getShapes(const RBox &queryBox=RDEFAULT_RBOX, bool ignoreComplex=false, bool segment=false, QList< RObject::Id > *entityIds=NULL) const
Definition REntity.h:403
virtual bool isInside(const RBox &box) const
Definition REntity.h:431
virtual RVector getVectorTo(const RVector &point, bool limited=true, double strictRange=RMAXDOUBLE) const
Definition REntity.h:459
void setBlockId(RObject::Id blockId)
Definition REntity.h:247
virtual void to2D()
Definition REntity.h:368
virtual RPolyline getHull(double offset) const
Definition REntity.h:389
virtual QList< RVector > getPointsWithDistanceToEnd(double distance, int from=RS::FromAny, const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition REntity.h:517
virtual QSharedPointer< RShape > getClosestSimpleShape(const RVector &pos, double range=RNANDOUBLE) const
Definition REntity.h:424
void setUpdatesEnabled(bool on)
Definition REntity.h:194
virtual bool isOnEntity(const RVector &point, bool limited=true, double tolerance=RDEFAULT_TOLERANCE_1E_MIN4) const
Definition REntity.h:438
void setLinetypePattern(const RLinetypePattern &linetypePattern)
Definition REntity.h:282
QString getLayerName() const
Definition REntity.h:240
virtual QSharedPointer< RObject > clone() const =0
virtual bool isUpdatesEnabled() const
Definition REntity.h:190
virtual int getComplexity() const
Definition REntity.h:675
QSharedPointer< REntity > cloneToEntity() const
Definition REntity.h:115
virtual QList< RBox > getBoundingBoxes(bool ignoreEmpty=false) const
Definition REntity.h:382
virtual bool mirror(const RVector &axis1, const RVector &axis2)
Definition REntity.h:607
virtual bool rotate(double rotation, const RVector ¢er=RDEFAULT_RVECTOR)
Definition REntity.h:565
virtual bool moveReferencePoint(const RVector &referencePoint, const RVector &targetPoint, Qt::KeyboardModifiers modifiers=Qt::NoModifier)
Moves the given reference point to the given target point or does nothing if this entity has no refer...
Definition REntity.h:551
void setLineweight(RLineweight::Lineweight lineweight)
Definition REntity.h:319
virtual void setAutoUpdatesBlocked(bool on)
Definition REntity.h:660
virtual QList< RVector > getIntersectionPoints(const REntity &other, bool limited=true, const RBox &queryBox=RDEFAULT_RBOX, bool ignoreComplex=true, QList< QPair< RObject::Id, RObject::Id > > *entityIds=NULL) const
void setParentId(RObject::Id parentId)
Definition REntity.h:684
void setDrawOrder(int drawOrder)
Sets the draw order of this entity.
Definition REntity.h:205
virtual bool move(const RVector &offset)
Moves this entity by the given offset.
Definition REntity.h:558
virtual bool isPointType() const
Definition REntity.h:125
static QSet< RPropertyTypeId > getStaticPropertyTypeIds()
Definition REntity.h:104
virtual bool clickReferencePoint(const RVector &referencePoint)
Called when user clicks a reference point.
Definition REntity.h:544
virtual QList< RVector > getIntersectionPointsWithShape(const RShape &shape, bool limited=true, const RBox &queryBox=RDEFAULT_RBOX) const
Make getIntersectionPoints with shape parameter accessible for script wrappers.
Definition REntity.h:537
RObject::Id getLinetypeId() const
Definition REntity.h:289
virtual bool stretch(const RPolyline &area, const RVector &offset)
Stretches the end points of this entity that are inside area by offset.
Definition REntity.h:628
virtual QList< RRefPoint > getInternalReferencePoints(RS::ProjectionRenderingHint hint=RS::RenderTop, QList< RObject::Id > *subEntityIds=NULL) const
Can be overwritten to return internal, resolved reference points.
Definition REntity.h:466
void setDocument(RDocument *document)
Definition REntity.h:108
virtual RShape * castToShape()
Definition REntity.h:642
QString getBlockName() const
Definition REntity.h:261
virtual QList< RVector > getEndPoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition REntity.h:487
virtual void update() const
Entities can reimplement this function to invalidate any internal cache (mark the entity as dirty).
Definition REntity.h:635
virtual bool isSelected() const
Reimplemented by entities that are part of a block reference but not stored as part of the block defi...
Definition REntity.h:171
virtual bool isSelectedWorkingSet() const
Definition REntity.h:180
virtual bool flipHorizontal()
Definition REntity.h:614
virtual RVector getPointOnEntity() const
Definition REntity.h:480
static RS::EntityType getRtti()
Definition REntity.h:98
void setLayerName(const QString &n)
Definition REntity.h:226
virtual QList< RVector > getMiddlePoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition REntity.h:494
RObject::Id getLayerId() const
Definition REntity.h:233
int getDrawOrder() const
Definition REntity.h:212
RObject::Id getBlockId() const
Definition REntity.h:254
virtual void scaleVisualProperties(double scaleFactor)
Definition REntity.h:588
virtual bool scale(const RVector &scaleFactors, const RVector ¢er=RDEFAULT_RVECTOR)
Definition REntity.h:572
void setLayerId(RObject::Id layerId)
Definition REntity.h:219
virtual bool flipVertical()
Definition REntity.h:621
RObject::Id getClosestSubEntityId(const RVector &pos, double range=RNANDOUBLE, bool ignoreComplex=false) const
Convenience function for scripts.
Definition REntity.h:410
virtual QSharedPointer< RShape > getClosestShape(const RVector &pos, double range=RNANDOUBLE, bool ignoreComplex=false, RObject::Id *subEntityId=NULL) const
Definition REntity.h:417
virtual void setSelectedWorkingSet(bool on)
Definition REntity.h:184
virtual void exportEntity(RExporter &e, bool preview=false, bool forceSelected=false) const =0
Exports the entity to the given exporter.
RColor getDisplayColor()
Definition REntity.h:351
RColor getColor() const
Definition REntity.h:344
virtual bool isSane() const
Definition REntity.h:146
virtual double getDistanceTo(const RVector &point, bool limited=true, double range=0.0, bool draft=false, double strictRange=RMAXDOUBLE) const
Definition REntity.h:452
RObject::Id getParentId() const
Definition REntity.h:268
virtual bool mirror(const RLine &axis)
Definition REntity.h:600
void setLinetypeId(RObject::Id linetypeId)
Sets the linetype of this entity to the given linetype ID.
Definition REntity.h:275
virtual void setViewportContext(const RViewportData &)
Definition REntity.h:592
RLinetypePattern getLinetypePattern() const
Definition REntity.h:298
virtual RVector getClosestPointOnEntity(const RVector &point, double range=RNANDOUBLE, bool limited=true, RObject::Id *subEntityId=NULL) const
Definition REntity.h:508
void setLinetypeScale(double linetypeScale)
Definition REntity.h:305
Abstract base class for exporters.
Definition RExporter.h:78
Represents a layer in a drawing.
Definition RLayer.h:45
Low-level mathematical representation of a line.
Definition RLine.h:41
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RLinetypePattern.h:42
Lineweight
Definition RLineweight.h:44
Abstract base class for all objects.
Definition RObject.h:64
static void init()
Definition RObject.cpp:68
virtual bool setProperty(RPropertyTypeId propertyTypeId, const QVariant &value, RTransaction *transaction=NULL)
Sets the given property to the given value.
Definition RObject.cpp:180
static const Id INVALID_ID
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RObject.h:70
virtual QSharedPointer< RObject > clone() const =0
void setDocument(RDocument *document)
Definition RObject.cpp:64
virtual void setSelected(bool on)
Definition RObject.h:198
virtual QPair< QVariant, RPropertyAttributes > getProperty(RPropertyTypeId &propertyTypeId, bool humanReadable=false, bool noAttributes=false, bool showOnRequest=false)
Definition RObject.cpp:136
int Id
Definition RObject.h:69
virtual void print(QDebug dbg) const
Stream operator for QDebug.
Definition RObject.cpp:719
Low-level mathematical representation of an open polyline or closed polyline (= polygon).
Definition RPolyline.h:50
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RPropertyAttributes.h:42
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RPropertyTypeId.h:54
static QSet< RPropertyTypeId > getPropertyTypeIds(RS::EntityType type, RPropertyAttributes::Option=RPropertyAttributes::NoOptions)
Gets all property type IDs that where registered for the given class.
Definition RPropertyTypeId.cpp:283
Class namespace for various global enums.
Definition RS.h:149
@ FromAny
Start or end.
Definition RS.h:374
EntityType
Entity types used for property handling / filtering.
Definition RS.h:227
@ EntityUnknown
Unknown entity.
Definition RS.h:242
ProjectionRenderingHint
Sets the current rendering hint for exports.
Definition RS.h:293
@ RenderTop
Definition RS.h:294
Interface for geometrical shape classes.
Definition RShape.h:72
This is the abstract base class for all storage implementations.
Definition RStorage.h:67
Transaction implementation.
Definition RTransaction.h:73
Represents a 3d vector (x/y/z).
Definition RVector.h:47
Stores and manages all data that defines the geometry and appearance of a viewport entity.
Definition RViewportData.h:53
#define QCADCORE_EXPORT
Definition core_global.h:10
void getIntersectionPoints(void e1, void e2, void limited)
Returns intersection points between the two given entities or shapes.
Definition simple_info.js:12
#define NULL
Definition opennurbs_system.h:256
#define const
Definition zconf.h:156