20#ifndef RDIMENSIONDATA_H
21#define RDIMENSIONDATA_H
53 const RVector& textPositionCenter,
57 double lineSpacingFactor,
59 const QString& fontName,
122 textPositionCenter = p;
125 textPositionSide = p;
145 virtual QList<QSharedPointer<RShape> >
getShapes(
const RBox& queryBox =
RDEFAULT_RBOX,
bool ignoreComplex =
false,
bool segment =
false, QList<RObject::Id>* entityIds =
NULL)
const {
147 Q_UNUSED(ignoreComplex)
159 virtual bool isSane()
const;
167 return definitionPoint;
185 return upperTolerance;
194 return lowerTolerance;
199 textPositionCenter = p;
208 if (textPositionSide.isValid()) {
209 return textPositionSide;
212 return textPositionCenter;
244 return overrides.isValid();
248 return overrides.hasOverride(key);
306 return arrow1Flipped;
312 return arrow2Flipped;
326 return extLineFixLength;
329 extLineFixLength = v;
332 void adjustExtensionLineFixLength(
RLine& extLine1,
RLine& extLine2,
bool addDimExe =
true)
const;
334 bool hasSpaceForArrows()
const;
336 virtual double getDistanceTo(
const RVector& point,
bool limited =
true,
double range = 0.0,
bool draft =
false,
double strictRange =
RMAXDOUBLE)
const;
351 return getDimXDouble(
RS::DIMEXO) * getDimscale();
357 return getDimXDouble(
RS::DIMEXE) * getDimscale();
363 return getDimXDouble(
RS::DIMASZ) * getDimscale();
369 return getDimXDouble(
RS::DIMDLI) * getDimscale();
375 return getDimXDouble(
RS::DIMGAP) * getDimscale();
381 return getDimXDouble(
RS::DIMTXT) * getDimscale();
421 return getDimXDouble(
RS::DIMTSZ) * getDimscale();
477 QString getDimblkName()
const;
539 bool hasCustomTextPosition()
const;
540 void setCustomTextPosition(
bool on);
543 return lineSpacingStyle;
547 return lineSpacingFactor;
563 RTextData& getTextData(
bool noRender =
false)
const;
566 virtual QString getMeasurement(
bool resolveAutoMeasurement =
true)
const;
569 QString formatLabel(
double distance)
const;
570 QString formatAngleLabel(
double textAngle)
const;
573 virtual void update()
const;
575 QSharedPointer<RBlockReferenceEntity> getDimensionBlockReference()
const;
576 bool hasDimensionBlockReference()
const;
644 mutable QList<QSharedPointer<RShape> >
shapes;
#define RDEFAULT_RBOX
Definition RBox.h:35
Q_DECLARE_METATYPE(RMath *)
#define RMAXDOUBLE
Definition RMath.h:66
Block reference entity.
Definition RBlockReferenceEntity.h:38
Represents a box e.g.
Definition RBox.h:46
Color.
Definition RColor.h:43
Copyright (c) 2011-2021 by Andrew Mustun.
Definition RDimStyleData.h:38
Base class for dimension entity data classes.
Definition RDimensionData.h:44
void updateBoundingBox(const RBox &box) const
Definition RDimensionData.h:118
RVector textPositionSide
Middle point of dimension text when automatically moved to the side for lack of space.
Definition RDimensionData.h:589
void updateShapes(const QList< QSharedPointer< RShape > > &s) const
Definition RDimensionData.h:130
void setArrow2Flipped(bool on)
Definition RDimensionData.h:314
double getLinearFactor() const
Definition RDimensionData.h:290
void setUpperTolerance(const QString &t)
Definition RDimensionData.h:179
RDimStyleData getOverrides() const
Definition RDimensionData.h:251
void setLowerTolerance(const QString &t)
Definition RDimensionData.h:188
void setLinearFactor(double f)
Definition RDimensionData.h:293
void setDimscale(double f)
Definition RDimensionData.h:301
RVector textPositionCenter
Middle point of dimension text.
Definition RDimensionData.h:584
RTextData textData
Definition RDimensionData.h:634
RBox boundingBox
Definition RDimensionData.h:635
bool arrow1Flipped
Definition RDimensionData.h:627
RDimStyleData overrides
Definition RDimensionData.h:620
double getDimlfac() const
Definition RDimensionData.h:282
void setDimtxt(double t)
Definition RDimensionData.h:383
void setDimaunit(int v)
Definition RDimensionData.h:435
double getDimtxt() const
Definition RDimensionData.h:380
void setDimBlockName(const QString &bn)
Definition RDimensionData.h:234
void setDimazin(int v)
Definition RDimensionData.h:453
RVector definitionPoint
Definition point.
Definition RDimensionData.h:582
bool extLineFix
Definition RDimensionData.h:630
void setDimdli(double v)
Definition RDimensionData.h:371
void setDimdec(int v)
Definition RDimensionData.h:447
virtual RVector getTextPosition() const
Definition RDimensionData.h:207
void setDimtsz(double t)
Definition RDimensionData.h:423
QString getUpperTolerance() const
Definition RDimensionData.h:184
virtual QString getAutoLabel() const
Definition RDimensionData.h:568
QString getLowerTolerance() const
Definition RDimensionData.h:193
void setDimadec(int v)
Definition RDimensionData.h:441
void setDimtih(bool v)
Definition RDimensionData.h:417
void updateTextData(const RTextData &d) const
Definition RDimensionData.h:127
virtual QList< QSharedPointer< RShape > > getShapes(const RBox &queryBox=RDEFAULT_RBOX, bool ignoreComplex=false, bool segment=false, QList< RObject::Id > *entityIds=NULL) const
Definition RDimensionData.h:145
bool isArrow1Flipped() const
Definition RDimensionData.h:305
void setExtLineFix(bool on)
Definition RDimensionData.h:321
void updateTextPositionCenter(const RVector &p) const
Definition RDimensionData.h:121
QList< QSharedPointer< RShape > > shapes
Definition RDimensionData.h:644
void setDimlunit(int l)
Definition RDimensionData.h:389
void setArrow1Flipped(bool on)
Definition RDimensionData.h:308
bool isExtLineFix() const
Definition RDimensionData.h:318
void clearStyleOverrides()
Definition RDimensionData.h:140
void setDimtad(int v)
Definition RDimensionData.h:408
void setDimexe(double v)
Definition RDimensionData.h:359
double getDimasz() const
Definition RDimensionData.h:362
void setFontName(const QString &fn)
Definition RDimensionData.h:216
double getTextRotation() const
Definition RDimensionData.h:550
int getDimblk() const
Definition RDimensionData.h:473
int getDimdsep() const
Definition RDimensionData.h:456
bool arrow2Flipped
Definition RDimensionData.h:628
double extLineFixLength
Definition RDimensionData.h:631
RS::VAlign valign
Vertical alignment.
Definition RDimensionData.h:591
QString upperTolerance
Upper tolerance limit.
Definition RDimensionData.h:605
bool isArrow2Flipped() const
Definition RDimensionData.h:311
void setDimclrt(const RColor &v)
Definition RDimensionData.h:465
RS::TextLineSpacingStyle getLineSpacingStyle() const
Definition RDimensionData.h:542
void setDimexo(double v)
Definition RDimensionData.h:353
void setTextRotation(double r)
Definition RDimensionData.h:554
double getDimscale() const
Definition RDimensionData.h:297
QString getText() const
Definition RDimensionData.h:175
int getDimdec() const
Definition RDimensionData.h:444
double getDimexe() const
Definition RDimensionData.h:356
int getDimzin() const
Definition RDimensionData.h:426
int getDimaunit() const
Definition RDimensionData.h:432
void setTextPosition(const RVector &p)
Definition RDimensionData.h:197
int getDimazin() const
Definition RDimensionData.h:450
int getDimadec() const
Definition RDimensionData.h:438
virtual void setDefinitionPoint(const RVector &p)
Definition RDimensionData.h:161
bool autoTextPos
True if the textPosition should be automatically calculated.
Definition RDimensionData.h:642
double lineSpacingFactor
Line spacing factor.
Definition RDimensionData.h:597
double dimLineLength
Definition RDimensionData.h:637
double getDimtsz() const
Definition RDimensionData.h:420
QString text
Text string entered explicitly by user or null or "<>" for the actual measurement or " " (one blank s...
Definition RDimensionData.h:603
int getDimtad() const
Definition RDimensionData.h:405
void updateArrowPos1(const RVector &p) const
Definition RDimensionData.h:133
virtual double getMeasuredValue() const
Definition RDimensionData.h:567
bool useArchTick() const
Definition RDimensionData.h:469
int getDimjust() const
Definition RDimensionData.h:399
RVector arrow2Pos
Definition RDimensionData.h:639
RS::TextLineSpacingStyle lineSpacingStyle
Line spacing style.
Definition RDimensionData.h:595
double getExtLineFixLength() const
Definition RDimensionData.h:325
void setExtLineFixLength(double v)
Definition RDimensionData.h:328
QString dimBlockName
Dimension text color.
Definition RDimensionData.h:613
double getDimexo() const
Definition RDimensionData.h:350
virtual RS::EntityType getType() const
Definition RDimensionData.h:111
RVector arrow1Pos
Definition RDimensionData.h:638
void setDimgap(double v)
Definition RDimensionData.h:377
RColor getDimclrt() const
Definition RDimensionData.h:462
double textRotation
Rotation angle of dimension text away from default orientation.
Definition RDimensionData.h:617
void updateArrowPos2(const RVector &p) const
Definition RDimensionData.h:136
QString getDimBlockName() const
Definition RDimensionData.h:239
bool getDimtih() const
Definition RDimensionData.h:414
int getDimlunit() const
Definition RDimensionData.h:386
void setDimasz(double v)
Definition RDimensionData.h:365
bool hasOverride(RS::KnownVariable key) const
Definition RDimensionData.h:247
bool hasOverrides() const
Definition RDimensionData.h:243
bool dirty
Definition RDimensionData.h:633
void setDimzin(int v)
Definition RDimensionData.h:429
RS::HAlign halign
Horizontal alignment.
Definition RDimensionData.h:593
void updateTextPositionSide(const RVector &p) const
Definition RDimensionData.h:124
QString fontName
Dimension font name.
Definition RDimensionData.h:609
QString getFontName() const
Definition RDimensionData.h:221
double defaultAngle
Definition RDimensionData.h:615
double getDimdli() const
Definition RDimensionData.h:368
double getDimgap() const
Definition RDimensionData.h:374
void setDimlfac(double f)
Definition RDimensionData.h:286
void setDimdsep(int v)
Definition RDimensionData.h:459
bool isDimXScaled(RS::KnownVariable var) const
Definition RDimensionData.h:531
QString lowerTolerance
Lower tolerance limit.
Definition RDimensionData.h:607
double getLineSpacingFactor() const
Definition RDimensionData.h:546
void setText(const QString &t)
Definition RDimensionData.h:170
RVector getDefinitionPoint() const
Definition RDimensionData.h:166
Base class for dimension entity classes.
Definition RDimensionEntity.h:38
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
virtual void to2D()
Definition REntityData.cpp:342
virtual bool isSane() const
Definition REntityData.h:100
virtual bool move(const RVector &offset)
Moves this entity by the given offset.
Definition REntityData.cpp:675
virtual RVector getPointOnEntity() const
Definition REntityData.cpp:372
virtual double getDistanceTo(const RVector &point, bool limited=true, double range=0.0, bool draft=false, double strictRange=RMAXDOUBLE) const
Definition REntityData.cpp:299
virtual bool moveReferencePoint(const RVector &referencePoint, const RVector &targetPoint, Qt::KeyboardModifiers modifiers=Qt::NoModifier)=0
Moves the given reference point to the given target point or does nothing if this entity has no refer...
virtual bool intersectsWith(const RShape &shape) const
Definition REntityData.cpp:582
virtual void scaleVisualProperties(double scaleFactor)
Definition REntityData.cpp:709
virtual bool isValid() const
Definition REntityData.h:97
virtual bool mirror(const RLine &axis)
Definition REntityData.cpp:715
virtual bool rotate(double rotation, const RVector ¢er=RDEFAULT_RVECTOR)
Definition REntityData.cpp:685
virtual QList< RRefPoint > getReferencePoints(RS::ProjectionRenderingHint hint=RS::RenderTop) const =0
virtual bool clickReferencePoint(const RVector &referencePoint)
Called when user clicks a reference point.
Definition REntityData.h:386
virtual RBox getBoundingBox(bool ignoreEmpty=false) const
Definition REntityData.cpp:313
virtual void update() const
Entities can reimplement this function to invalidate any internal cache (mark the entity as dirty).
Definition REntityData.h:415
virtual bool scale(const RVector &scaleFactors, const RVector ¢er=RDEFAULT_RVECTOR)
Definition REntityData.cpp:695
Low-level mathematical representation of a line.
Definition RLine.h:41
Represents a reference point of an entity.
Definition RRefPoint.h:18
VAlign
Vertical alignments.
Definition RS.h:332
EntityType
Entity types used for property handling / filtering.
Definition RS.h:227
@ EntityDimension
Any Dimension.
Definition RS.h:262
TextLineSpacingStyle
Line spacing style for texts.
Definition RS.h:363
HAlign
Horizontal alignments.
Definition RS.h:342
ProjectionRenderingHint
Sets the current rendering hint for exports.
Definition RS.h:293
@ RenderTop
Definition RS.h:294
KnownVariable
Well established document variables.
Definition RS.h:501
@ DIMEXE
Definition RS.h:546
@ DIMSCALE
Definition RS.h:563
@ DIMZIN
Controls display of leading / trailing zeros for linear dimensions.
Definition RS.h:590
@ DIMCLRT
Definition RS.h:539
@ DIMGAP
Distance between dimension text and dimension lines, negative for box.
Definition RS.h:550
@ DIMEXO
Definition RS.h:547
@ DIMAUNIT
Formatting of angular dimensions.
Definition RS.h:530
@ DIMDSEP
Decimal separator in dimensions.
Definition RS.h:545
@ DIMTIH
Definition RS.h:573
@ DIMTSZ
Archtick size or 0 for arrows.
Definition RS.h:582
@ DIMLFAC
Definition RS.h:554
@ DIMTAD
Vertical position of dimension label.
Definition RS.h:570
@ DIMADEC
Decimal places in angular dimensions.
Definition RS.h:517
@ DIMJUST
Vertical position of dimension label.
Definition RS.h:552
@ DIMAZIN
Controls display of leading / trailing zeros for angular dimensions.
Definition RS.h:532
@ DIMLUNIT
Formatting of linear dimensions.
Definition RS.h:557
@ DIMBLK
Definition RS.h:533
@ DIMTXT
Dimension text size.
Definition RS.h:586
@ DIMDEC
Decimal places in linear dimensions.
Definition RS.h:541
@ DIMDLI
Definition RS.h:543
@ DIMASZ
Definition RS.h:527
Interface for geometrical shape classes.
Definition RShape.h:72
Text entity data class.
Definition RTextData.h:38
Represents a 3d vector (x/y/z).
Definition RVector.h:47
static const RVector invalid
invalid vector
Definition RVector.h:335
bool isSane() const
Definition RVector.cpp:72
#define QCADENTITY_EXPORT
Definition entity_global.h:10
char s
Definition opennurbs_string.cpp:32
#define NULL
Definition opennurbs_system.h:256