Skip to content

RObject

Class in Core Module
Header: #include <src/core/RObject.h>
Inherited by: RBlock, RDimStyle, RDocumentVariables, REntity, RLayer, RLayerState, RLayout, RLinetype, RUcs, RView

Abstract base class for all objects.

Objects have an unique ID. Object types may register property types. Objects manage their own set of properties. Example objects are entities, layers, user coordinate systems.

See also: RPropertyTypeId

Scriptable: This class is available in script environments.

Shared Pointer Support: Objects can be used in QSharedPointer.

typedef int Handle
typedef int Id
enum ObjectFlag { NoFlags, Undone, Protect, Selected, Invisible, WorkingSet }
enum XYZ { X, Y, Z }
RObject(const RObject &other)
RObject(RDocument *document=NULL)
virtual ~RObject()
virtual QSharedPointer< RObject > clone() const =0 = 0
void copyCustomPropertiesFrom(const RObject *other, const QString &title=RDEFAULT_QSTRING, bool overwrite=false, const QStringList &ignoreList=RDEFAULT_QSTRINGLIST, const QString &mapKeyFrom=RDEFAULT_QSTRING, const QString &mapKeyTo=RDEFAULT_QSTRING)
Copies all custom properties from the given object.
void dump() const
virtual void forceAutoUpdate()
virtual int getComplexity() const
virtual bool getCustomBoolProperty(const QString &title, const QString &key, bool defaultValue) const
virtual double getCustomDoubleProperty(const QString &title, const QString &key, double defaultValue) const
virtual int getCustomIntProperty(const QString &title, const QString &key, int defaultValue) const
QMap< QString, QVariantMap > getCustomProperties() const
virtual QVariant getCustomProperty(const QString &title, const QString &key, const QVariant &defaultValue=RDEFAULT_QVARIANT) const
QStringList getCustomPropertyKeys(const QString &title) const
QStringList getCustomPropertyTitles() const
virtual QSet< RPropertyTypeId > getCustomPropertyTypeIds() const
RDocument * getDocument()
const RDocument * getDocument() const
bool getFlag(int flag) const
RObject::Handle getHandle() const
RObject::Id getId() const
virtual QPair< QVariant, RPropertyAttributes > getProperty(RPropertyTypeId &propertyTypeId, bool humanReadable=false, bool noAttributes=false, bool showOnRequest=false)
virtual QSet< RPropertyTypeId > getPropertyTypeIds(RPropertyAttributes::Option option=RPropertyAttributes::NoOptions) const
virtual RS::EntityType getType() const
bool hasCustomProperties() const
bool hasCustomProperty(const QString &title, const QRegularExpression &key) const
bool hasCustomProperty(const QString &title, const QString &key) const
virtual bool hasPropertyType(RPropertyTypeId propertyTypeId)
bool isInvisible() const
virtual bool isOfType(RS::EntityType t) const
Override to indicate that this entity is of a certain type, e.g.
bool isProtected() const
virtual bool isSelected() const
bool isUndone() const
virtual bool isWorkingSet() const
virtual bool mustAlwaysClone() const
virtual void removeCustomProperty(const QString &title, const QString &key)
Removes the custom property with the given name.
virtual void setAutoUpdatesBlocked(bool on)
virtual void setCustomProperties(const RQMapQStringQString &properties)
virtual void setCustomProperty(const QString &title, const QString &key, const QVariant &value)
Sets a custom property with the given name.
void setDocument(RDocument *document)
void setFlag(int flag, bool on=true)
void setInvisible(bool on)
virtual bool setProperty(RPropertyTypeId propertyTypeId, const QVariant &value, RTransaction *transaction=NULL)
Sets the given property to the given value.
void setProtected(bool on)
virtual void setSelected(bool on)
virtual void setWorkingSet(bool on)
virtual bool validate()
static RPropertyAttributes getCustomPropertyAttributes(const QString &title, const QString &key)
static RS::EntityType getRtti()
static void init()
static void setCustomPropertyAttributes(const QString &title, const QString &key, const RPropertyAttributes &att)
Set attributes (read-only, invisible, …) for the given custom property.
static bool setMember(T &variable, const QVariant &value, bool condition=true)
static const Handle INVALID_HANDLE
static const Id INVALID_ID
static RPropertyTypeId PropertyCustom
static RPropertyTypeId PropertyHandle
static RPropertyTypeId PropertyInvisible
static RPropertyTypeId PropertyProtected
static RPropertyTypeId PropertySelected
static RPropertyTypeId PropertyType
static RPropertyTypeId PropertyWorkingSet
static const Handle UNKNOWN_HANDLE
virtual void print(QDebug dbg) const
Stream operator for QDebug.
void setHandle(RObject::Handle h)
void setId(RObject::Id id)
bool setMemberFlag(int flag, const QVariant &value, bool condition=true)
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
void setUndone(bool on)
static bool setMember(bool &variable, const QVariant &value, bool condition=true)
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
static bool setMember(double &variable, const QVariant &value, bool condition=true)
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
static bool setMember(int &variable, const QVariant &value, bool condition=true)
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
static bool setMember(QList< double > &variable, const QVariant &value, bool condition)
static bool setMember(QList< int > &variable, const QVariant &value, bool condition)
static bool setMember(QString &variable, const QVariant &value, bool condition=true)
Sets the given property.
static bool setMemberVector(QList< RVector > &variable, const QVariant &value, RObject::XYZ xyz)
static bool setMemberX(QList< RVector > &variable, const QVariant &value, bool condition=true)
static bool setMemberY(QList< RVector > &variable, const QVariant &value, bool condition=true)
static bool setMemberZ(QList< RVector > &variable, const QVariant &value, bool condition=true)
QMap< QString, QVariantMap > customProperties
AppID -> key -> value e.g.
RDocument * document
Flags flags
Object flags (undone, protected, …).
Handle handle
Handle of this object (from DXF / DWG).
Id objectId
Unique ID of this object.
static QMap< QString, QMap< QString, RPropertyAttributes > > customPropertyAttributes
Attributes of custom properties (read-only, invisible, …).
QDebug operator<<(QDebug dbg, const RObject &o)
class RStorage

typedef int RObject::Handle

typedef int RObject::Id

enum ObjectFlag
Value Description
NoFlags = 0x000
Undone = 0x001 object is undone
Protect = 0x002 object is protected
Selected = 0x004 object is selected
Invisible = 0x008 object is invisible
WorkingSet = 0x010 object is part of the current working set

enum XYZ
Value Description
X
Y
Z

RObject::RObject(const RObject &other)

RObject::RObject(RDocument *document=NULL)

virtual RObject::~RObject()

virtual

virtual QSharedPointer< RObject > RObject::clone() const =0 = 0

pure virtual const

Reimplemented in clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone, clone.

void RObject::copyCustomPropertiesFrom(const RObject *other, const QString &title=RDEFAULT_QSTRING, bool overwrite=false, const QStringList &ignoreList=RDEFAULT_QSTRINGLIST, const QString &mapKeyFrom=RDEFAULT_QSTRING, const QString &mapKeyTo=RDEFAULT_QSTRING)

Copies all custom properties from the given object.

Existing properties can be overwritten.

void RObject::dump() const

inline const

virtual void RObject::forceAutoUpdate()

virtual inline

Reimplemented in forceAutoUpdate.

virtual int RObject::getComplexity() const

virtual inline const

Reimplemented in getComplexity, getComplexity, getComplexity, getComplexity.

virtual bool RObject::getCustomBoolProperty(const QString &title, const QString &key, bool defaultValue) const

virtual const

virtual double RObject::getCustomDoubleProperty(const QString &title, const QString &key, double defaultValue) const

virtual const

virtual int RObject::getCustomIntProperty(const QString &title, const QString &key, int defaultValue) const

virtual const

QMap< QString, QVariantMap > RObject::getCustomProperties() const

const

Non-Scriptable: This function is not available in script environments.

Returns: Map of custom properties assigned to this object.

virtual QVariant RObject::getCustomProperty(const QString &title, const QString &key, const QVariant &defaultValue=RDEFAULT_QVARIANT) const

virtual const

Returns: Value of given custom property or the given default value if no such property exists.

QStringList RObject::getCustomPropertyKeys(const QString &title) const

const

Returns: List of custom property keys for the given title (application).

QStringList RObject::getCustomPropertyTitles() const

const

Returns: List of custom property titles. These are typically names of applications which have assigned custom properties to this object.

virtual QSet< RPropertyTypeId > RObject::getCustomPropertyTypeIds() const

virtual const

Returns: A set of all custom property IDs of properties that are available for this object.

Reimplemented in getCustomPropertyTypeIds.

RDocument * RObject::getDocument()

inline

const RDocument * RObject::getDocument() const

inline const

bool RObject::getFlag(int flag) const

inline const

RObject::Handle RObject::getHandle() const

inline const

RObject::Id RObject::getId() const

inline const

Returns: The ID of the object or -1 if the object has no ID. An object without ID is not stored in the DB and not part of a document.

virtual QPair< QVariant, RPropertyAttributes > RObject::getProperty(RPropertyTypeId &propertyTypeId, bool humanReadable=false, bool noAttributes=false, bool showOnRequest=false)

virtual

Returns: The value and attributes of the given property or an invalid property if this property owner has no property with the given ID.

Reimplemented in getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty.

virtual QSet< RPropertyTypeId > RObject::getPropertyTypeIds(RPropertyAttributes::Option option=RPropertyAttributes::NoOptions) const

virtual const

Returns: A set of all property IDs of properties that are available for this object. The IDs that are returned can be translated into a group title and a property title using getPropertyGroupTitle and getPropertyTitle.

Reimplemented in getPropertyTypeIds.

virtual RS::EntityType RObject::getType() const

virtual inline const

Returns: The unique entity type, usually the same as RTTI, different for custom entities.

Reimplemented in getType, getType, getType, getType, getType, getType, getType, getType, getType, getType.

bool RObject::hasCustomProperties() const

const

bool RObject::hasCustomProperty(const QString &title, const QRegularExpression &key) const

const

Non-Scriptable: This function is not available in script environments.

bool RObject::hasCustomProperty(const QString &title, const QString &key) const

const

virtual bool RObject::hasPropertyType(RPropertyTypeId propertyTypeId)

virtual inline

Returns: True if this property owner has a property with the given ID, false otherwise.

bool RObject::isInvisible() const

inline const

virtual bool RObject::isOfType(RS::EntityType t) const

virtual inline const

Override to indicate that this entity is of a certain type, e.g.

a block reference even if type ID is different.

bool RObject::isProtected() const

inline const

virtual bool RObject::isSelected() const

virtual inline const

Reimplemented in isSelected.

bool RObject::isUndone() const

inline const

virtual bool RObject::isWorkingSet() const

virtual inline const

virtual bool RObject::mustAlwaysClone() const

virtual inline const

Returns: True to always clone object instead of saving diff when object changes. This can be used for complex object types which cannot be modified using properties.

Reimplemented in mustAlwaysClone.

virtual void RObject::removeCustomProperty(const QString &title, const QString &key)

virtual

Removes the custom property with the given name.

virtual void RObject::setAutoUpdatesBlocked(bool on)

virtual inline

Reimplemented in setAutoUpdatesBlocked.

virtual void RObject::setCustomProperties(const RQMapQStringQString &properties)

virtual

Non-Scriptable: This function is not available in script environments.

virtual void RObject::setCustomProperty(const QString &title, const QString &key, const QVariant &value)

virtual

Sets a custom property with the given name.

Reimplemented in setCustomProperty.

void RObject::setDocument(RDocument *document)

void RObject::setFlag(int flag, bool on=true)

inline

void RObject::setInvisible(bool on)

inline

virtual bool RObject::setProperty(RPropertyTypeId propertyTypeId, const QVariant &value, RTransaction *transaction=NULL)

virtual

Sets the given property to the given value.

If this property owner does not know a property with that ID, it is up to the property owner what happens. The property might be added into a list of dynamic properties or dropped.

Returns: True if the property owner was modified in any way, false otherwise.

Reimplemented in setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty.

void RObject::setProtected(bool on)

inline

virtual void RObject::setSelected(bool on)

virtual inline

Reimplemented in setSelected.

virtual void RObject::setWorkingSet(bool on)

virtual inline

virtual bool RObject::validate()

virtual inline

Reimplemented in validate.

static RPropertyAttributes RObject::getCustomPropertyAttributes(const QString &title, const QString &key)

static

Returns: attributes (read-only, invisible, …) for the given custom property.

static RS::EntityType RObject::getRtti()

static inline

static void RObject::init()

static

static void RObject::setCustomPropertyAttributes(const QString &title, const QString &key, const RPropertyAttributes &att)

static

Set attributes (read-only, invisible, …) for the given custom property.

template <class T>
static bool RObject::setMember(T &variable, const QVariant &value, bool condition=true)

static inline

Non-Scriptable: This function is not available in script environments.

static const RObject::Handle RObject::INVALID_HANDLE = -1

static

static const RObject::Id RObject::INVALID_ID = -1

static

All rights reserved.

This file is part of the QCAD project.

QCAD is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

QCAD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with QCAD.

static RPropertyTypeId RObject::PropertyCustom

static

static RPropertyTypeId RObject::PropertyHandle

static

static RPropertyTypeId RObject::PropertyInvisible

static

static RPropertyTypeId RObject::PropertyProtected

static

static RPropertyTypeId RObject::PropertySelected

static

static RPropertyTypeId RObject::PropertyType

static

static RPropertyTypeId RObject::PropertyWorkingSet

static

static const RObject::Handle RObject::UNKNOWN_HANDLE = -2

static

virtual void RObject::print(QDebug dbg) const

virtual const protected

Stream operator for QDebug.

Reimplemented in print, print, print, print, print, print, print, print, print, print, print, print, print, print, print, print, print, print, print, print, print, print, print, print, print, print, print, print, print, print, print, print, print, print, print, print, print, print, print, print.

void RObject::setHandle(RObject::Handle h)

inline protected

void RObject::setId(RObject::Id id)

inline protected

bool RObject::setMemberFlag(int flag, const QVariant &value, bool condition=true)

protected

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Non-Scriptable: This function is not available in script environments.

void RObject::setUndone(bool on)

protected

static bool RObject::setMember(bool &variable, const QVariant &value, bool condition=true)

static protected

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Non-Scriptable: This function is not available in script environments.

static bool RObject::setMember(double &variable, const QVariant &value, bool condition=true)

static protected

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Non-Scriptable: This function is not available in script environments.

static bool RObject::setMember(int &variable, const QVariant &value, bool condition=true)

static protected

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Non-Scriptable: This function is not available in script environments.

static bool RObject::setMember(QList< double > &variable, const QVariant &value, bool condition)

static protected

Non-Scriptable: This function is not available in script environments.

Parameters:

  • value: A list for int / double pairs: QList<QPair<int, double> >

static bool RObject::setMember(QList< int > &variable, const QVariant &value, bool condition)

static protected

Non-Scriptable: This function is not available in script environments.

Parameters:

  • value: A list for int / int pairs: QList<QPair<int, int> >

static bool RObject::setMember(QString &variable, const QVariant &value, bool condition=true)

static protected

Sets the given property.

Non-Scriptable: This function is not available in script environments.

Parameters:

  • variable: a reference to the (member) variable we want to set
  • value: the new value
  • condition: the variable is only set to the new value if condition is true

Return values:

  • true: if condition is true and the value was successfully converted to the same type as the variable.

static bool RObject::setMemberVector(QList< RVector > &variable, const QVariant &value, RObject::XYZ xyz)

static protected

Non-Scriptable: This function is not available in script environments.

Parameters:

  • value: A QList of QPairs of int and double where the int is the index and the double the value.

static bool RObject::setMemberX(QList< RVector > &variable, const QVariant &value, bool condition=true)

static protected

Non-Scriptable: This function is not available in script environments.

Parameters:

  • value: A list of int / double pairs: QList<QPair<int, double> > representing indexes in the list and values.

static bool RObject::setMemberY(QList< RVector > &variable, const QVariant &value, bool condition=true)

static protected

Non-Scriptable: This function is not available in script environments.

Parameters:

  • value: A list of int / double pairs: QList<QPair<int, double> > representing indexes in the list and values.

static bool RObject::setMemberZ(QList< RVector > &variable, const QVariant &value, bool condition=true)

static protected

Non-Scriptable: This function is not available in script environments.

Parameters:

  • value: A list of int / double pairs: QList<QPair<int, double> > representing indexes in the list and values.

QMap<QString, QVariantMap> RObject::customProperties

private

AppID -> key -> value e.g.

‘QCAD’ -> ‘wall thickness’ -> 12.0; or ‘SomeApplication’ -> ‘00001_1000’ -> ‘SomeString’ where ‘00001’ is the position in the list of values and 1000 is the original DXF code from the file.

RDocument* RObject::document

private

Flags RObject::flags

private

Object flags (undone, protected, …).

Handle RObject::handle

private

Handle of this object (from DXF / DWG).

Id RObject::objectId

private

Unique ID of this object.

static QMap< QString, QMap< QString, RPropertyAttributes > > RObject::customPropertyAttributes

static private

Attributes of custom properties (read-only, invisible, …).

QDebug operator<<(QDebug dbg, const RObject &o)

inline

Non-Scriptable: This function is not available in script environments.

friend class RStorage

private