mirror of
https://github.com/mcneel/opennurbs.git
synced 2026-03-14 21:15:54 +08:00
732 lines
27 KiB
C++
732 lines
27 KiB
C++
/*
|
|
//
|
|
// Copyright (c) 1993-2017 Robert McNeel & Associates. All rights reserved.
|
|
// OpenNURBS, Rhinoceros, and Rhino3D are registered trademarks of Robert
|
|
// McNeel & Associates.
|
|
//
|
|
// THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
|
|
// ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF
|
|
// MERCHANTABILITY ARE HEREBY DISCLAIMED.
|
|
//
|
|
// For complete openNURBS copyright information see <http://www.opennurbs.org>.
|
|
//
|
|
////////////////////////////////////////////////////////////////
|
|
*/
|
|
|
|
#if !defined(OPENNURBS_INTERNAL_V5_DIMSTYLE_INC_)
|
|
#define OPENNURBS_INTERNAL_V5_DIMSTYLE_INC_
|
|
|
|
#include "opennurbs_internal_defines.h"
|
|
|
|
#if defined(ON_COMPILING_OPENNURBS)
|
|
|
|
// ON_V5x_DimStyle is used to read and write version 5 and earlier archives.
|
|
// ON_DimStyle is the class for runtime dimension style.
|
|
class ON_V5x_DimStyle : public ON_ModelComponent
|
|
{
|
|
ON_OBJECT_DECLARE(ON_V5x_DimStyle);
|
|
|
|
private:
|
|
friend class ON_DimStyle;
|
|
|
|
public:
|
|
enum eArrowType
|
|
{
|
|
// eArrowType is used for V5 and earlier dimensions
|
|
// V6 dimensions (ON_Dimension) use ON_Arrowhead::arrow_type
|
|
solidtriangle = 0, // 2:1
|
|
dot = 1,
|
|
tick = 2,
|
|
shorttriangle = 3, // 1:1
|
|
arrow = 4,
|
|
rectangle = 5,
|
|
longtriangle = 6, // 4:1
|
|
longertriangle = 7, // 6:1
|
|
};
|
|
|
|
public:
|
|
ON_V5x_DimStyle();
|
|
~ON_V5x_DimStyle();
|
|
ON_V5x_DimStyle(const ON_V5x_DimStyle&) = default;
|
|
ON_V5x_DimStyle& operator=(const ON_V5x_DimStyle&) = default;
|
|
|
|
public:
|
|
ON_V5x_DimStyle( const class ON_3dmAnnotationSettings& src);
|
|
ON_V5x_DimStyle(
|
|
ON::LengthUnitSystem model_length_unit_system,
|
|
const class ON_DimStyle& src
|
|
);
|
|
|
|
public:
|
|
bool CompareDimstyle(const ON_V5x_DimStyle& src) const;
|
|
bool CompareValidFields(const ON_V5x_DimStyle& src) const;
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
//
|
|
// ON_Object overrides
|
|
|
|
bool IsValid( class ON_TextLog* text_log = nullptr ) const override;
|
|
|
|
// virtual
|
|
void Dump( ON_TextLog& ) const override; // for debugging
|
|
|
|
// virtual
|
|
bool Write(
|
|
ON_BinaryArchive& // serialize definition to binary archive
|
|
) const override;
|
|
|
|
// virtual
|
|
bool Read(
|
|
ON_BinaryArchive& // restore definition from binary archive
|
|
) override;
|
|
|
|
// When a V5 file is being read into v6
|
|
// Copy the fields that were in DimstyleExtra in v5 into the v6 dimstyle
|
|
// that now contains the fields that were in DimstyleExtra
|
|
///void ConsolidateDimstyleExtra();
|
|
|
|
bool AttachDimstyleExtra();
|
|
|
|
|
|
bool Write_v5(
|
|
ON_BinaryArchive& // serialize definition to binary archive
|
|
) const;
|
|
|
|
private:
|
|
bool Internal_Read_v5(
|
|
ON_BinaryArchive& // restore definition from binary archive
|
|
);
|
|
|
|
//bool Write_v6(
|
|
// ON_BinaryArchive& // serialize definition to binary archive
|
|
// ) const;
|
|
|
|
bool Internal_Read_v6(
|
|
ON_BinaryArchive& // restore definition from binary archive
|
|
);
|
|
|
|
public:
|
|
void EmergencyDestroy();
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Interface
|
|
|
|
void SetDefaultsNoExtension();
|
|
|
|
double ExtExtension() const;
|
|
void SetExtExtension( const double);
|
|
|
|
double ExtOffset() const;
|
|
void SetExtOffset( const double);
|
|
|
|
double ArrowSize() const;
|
|
void SetArrowSize( const double);
|
|
|
|
double LeaderArrowSize() const;
|
|
void SetLeaderArrowSize( const double);
|
|
|
|
double CenterMark() const;
|
|
void SetCenterMark( const double);
|
|
|
|
ON_INTERNAL_OBSOLETE::V5_TextDisplayMode TextAlignment() const;
|
|
void SetTextAlignment( ON_INTERNAL_OBSOLETE::V5_TextDisplayMode);
|
|
|
|
int ArrowType() const; // For ON_OBSOLETE_V2_Annotation & ON_OBSOLETE_V5_Annotation derived dimensions
|
|
void SetArrowType( eArrowType); // ON_Dimension derived dimensions use ArrowType1() and ArrowType2()
|
|
|
|
int LeaderArrowType() const;
|
|
void SetLeaderArrowType( eArrowType);
|
|
|
|
int AngularUnits() const;
|
|
void SetAngularUnits( int);
|
|
|
|
int LengthFormat() const;
|
|
void SetLengthFormat( int);
|
|
|
|
int AngleFormat() const;
|
|
void SetAngleFormat( int);
|
|
|
|
int LengthResolution() const;
|
|
void SetLengthResolution( int);
|
|
|
|
int AngleResolution() const;
|
|
void SetAngleResolution( int);
|
|
|
|
const class ON_TextStyle& V5TextStyle() const;
|
|
void SetV5TextStyle(
|
|
const class ON_TextStyle& v5_text_style
|
|
);
|
|
|
|
double TextGap() const;
|
|
void SetTextGap( double gap);
|
|
|
|
double TextHeight() const;
|
|
void SetTextHeight( double height);
|
|
|
|
double LengthFactor() const;
|
|
void SetLengthFactor( double);
|
|
|
|
bool Alternate() const;
|
|
void SetAlternate( bool);
|
|
|
|
double AlternateLengthFactor() const;
|
|
void SetAlternateLengthFactor( double);
|
|
|
|
int AlternateLengthFormat() const;
|
|
void SetAlternateLengthFormat( int);
|
|
|
|
int AlternateLengthResolution() const;
|
|
void SetAlternateLengthResolution( int);
|
|
|
|
int AlternateAngleFormat() const;
|
|
void SetAlternateAngleFormat( int);
|
|
|
|
int AlternateAngleResolution() const;
|
|
void SetAlternateAngleResolution( int);
|
|
|
|
void GetPrefix( ON_wString& ) const;
|
|
const wchar_t* Prefix() const;
|
|
void SetPrefix( const wchar_t*);
|
|
void SetPrefix( wchar_t*);
|
|
|
|
void GetSuffix( ON_wString& ) const;
|
|
const wchar_t* Suffix() const;
|
|
void SetSuffix( const wchar_t*);
|
|
void SetSuffix( wchar_t*);
|
|
|
|
void GetAlternatePrefix( ON_wString& ) const;
|
|
const wchar_t* AlternatePrefix() const;
|
|
void SetAlternatePrefix( const wchar_t*);
|
|
void SetAlternatePrefix( wchar_t*);
|
|
|
|
void GetAlternateSuffix( ON_wString& ) const;
|
|
const wchar_t* AlternateSuffix() const;
|
|
void SetAlternateSuffix( const wchar_t*);
|
|
void SetAlternateSuffix( wchar_t*);
|
|
|
|
bool SuppressExtension1() const;
|
|
void SetSuppressExtension1( bool);
|
|
|
|
bool SuppressExtension2() const;
|
|
void SetSuppressExtension2( bool);
|
|
|
|
// Don't change these enum values
|
|
// They are used in file reading & writing
|
|
enum class Field : unsigned int
|
|
{
|
|
fn_name = 0,
|
|
fn_index = 1,
|
|
fn_extextension = 2,
|
|
fn_extoffset = 3,
|
|
fn_arrowsize = 4,
|
|
fn_centermark = 5,
|
|
fn_textgap = 6,
|
|
fn_textheight = 7,
|
|
fn_textalign = 8,
|
|
fn_arrowtype = 9, // For v5 and previous ON_OBSOLETE_V2_Annotation and ON_OBSOLETE_V5_Annotation dimensions
|
|
fn_angularunits = 10,
|
|
fn_lengthformat = 11,
|
|
fn_angleformat = 12,
|
|
fn_angleresolution = 13,
|
|
fn_lengthresolution = 14,
|
|
fn_fontindex = 15,
|
|
fn_lengthfactor = 16,
|
|
fn_bAlternate = 17,
|
|
fn_alternate_lengthfactor = 18,
|
|
fn_alternate_lengthformat = 19,
|
|
fn_alternate_lengthresolution = 20,
|
|
fn_alternate_angleformat = 21,
|
|
fn_alternate_angleresolution = 22,
|
|
fn_prefix = 23,
|
|
fn_suffix = 24,
|
|
fn_alternate_prefix = 25,
|
|
fn_alternate_suffix = 26,
|
|
fn_dimextension = 27,
|
|
fn_leaderarrowsize = 28,
|
|
fn_leaderarrowtype = 29,
|
|
fn_suppressextension1 = 30,
|
|
fn_suppressextension2 = 31,
|
|
fn_last = 32, // not used - left here for sdk
|
|
|
|
// Added for v5 - 5/01/07 LW
|
|
// version 1.6
|
|
fn_overall_scale = 33,
|
|
fn_ext_line_color_source = 34,
|
|
fn_dim_line_color_source = 35,
|
|
fn_arrow_color_source = 36,
|
|
fn_text_color_source = 37,
|
|
fn_ext_line_color = 38,
|
|
fn_dim_line_color = 39,
|
|
fn_arrow_color = 40,
|
|
fn_text_color = 41,
|
|
fn_ext_line_plot_color_source = 42,
|
|
fn_dim_line_plot_color_source = 43,
|
|
fn_arrow_plot_color_source = 44,
|
|
fn_text_plot_color_source = 45,
|
|
fn_ext_line_plot_color = 46,
|
|
fn_dim_line_plot_color = 47,
|
|
fn_arrow_plot_color = 48,
|
|
fn_text_plot_color = 49,
|
|
fn_ext_line_plot_weight_source = 50,
|
|
fn_dim_line_plot_weight_source = 51,
|
|
fn_ext_line_plot_weight_mm = 52,
|
|
fn_dim_line_plot_weight_mm = 53,
|
|
fn_tolerance_style = 54,
|
|
fn_tolerance_resolution = 55,
|
|
fn_tolerance_upper_value = 56,
|
|
fn_tolerance_lower_value = 57,
|
|
fn_tolerance_height_scale = 58,
|
|
fn_baseline_spacing = 59,
|
|
|
|
// Added for v5 - 12/15/09 LW
|
|
// version 1.7
|
|
fn_draw_mask = 60,
|
|
fn_mask_color_source = 61,
|
|
fn_mask_color = 62,
|
|
fn_mask_border = 63,
|
|
|
|
// Added for v5 - 12/17/09 LW
|
|
// version 1.8
|
|
fn_dimscale = 64,
|
|
fn_dimscale_source = 65,
|
|
|
|
// Added for V6 -
|
|
// version 2.0
|
|
fn_fixed_extension_len = 66,
|
|
fn_fixed_extension_on = 67,
|
|
fn_text_rotation = 68,
|
|
fn_tolerance_alt_resolution = 69,
|
|
fn_tolerance_textheight_fraction = 70,
|
|
fn_suppress_arrow1 = 71,
|
|
fn_suppress_arrow2 = 72,
|
|
fn_textmove_leader = 73,
|
|
fn_arclength_sym = 74,
|
|
fn_stack_textheight_fraction = 75,
|
|
fn_stack_format = 76,
|
|
fn_alt_round = 77,
|
|
fn_round = 78,
|
|
fn_alt_zero_suppress = 79,
|
|
fn_tol_zero_suppress = 80,
|
|
fn_ang_zero_suppress = 81,
|
|
fn_zero_suppress = 82,
|
|
fn_alt_below = 83,
|
|
|
|
fn_dim_arrow_type1 = 84, // For ON_Dimension derived dimensions
|
|
fn_dim_arrow_type2 = 85,
|
|
fn_dim_arrow_blockname1 = 86,
|
|
fn_dim_arrow_blockname2 = 87,
|
|
|
|
FieldCount,
|
|
fn_unset = 0xFFFE,
|
|
fn_really_last = 0xFFFF
|
|
};
|
|
|
|
enum : unsigned int
|
|
{
|
|
// must be 1 + the maximum value of an ON_V5x_DimStyle::Field enum value.
|
|
FieldCount = 88
|
|
};
|
|
|
|
|
|
// Combines a field id and a field value
|
|
// Dimensions will have an array of DimstyleField's to record
|
|
// dimension style overrides for individual dimensions
|
|
class DimstyleField
|
|
{
|
|
public:
|
|
DimstyleField()
|
|
: m_next(nullptr)
|
|
, m_field_id(ON_V5x_DimStyle::Field::fn_unset)
|
|
{
|
|
m_val.s_val = nullptr;
|
|
}
|
|
~DimstyleField()
|
|
{
|
|
if (nullptr != m_next)
|
|
{
|
|
delete m_next;
|
|
m_next = nullptr;
|
|
}
|
|
if (nullptr != m_val.s_val)
|
|
{
|
|
delete m_val.s_val;
|
|
m_val.s_val = nullptr;
|
|
}
|
|
}
|
|
|
|
DimstyleField* m_next;
|
|
ON_V5x_DimStyle::Field m_field_id;
|
|
union
|
|
{
|
|
bool b_val;
|
|
int i_val;
|
|
unsigned char uc_val;
|
|
double d_val;
|
|
unsigned int c_val;
|
|
const ON_wString* s_val;
|
|
} m_val;
|
|
};
|
|
|
|
// added version 1.3
|
|
double DimExtension() const;
|
|
void SetDimExtension( const double);
|
|
|
|
// This section Added for v5 - 4-24-07 LW
|
|
// version 1.6
|
|
|
|
// Test if a specific field has been set in this dimstyle
|
|
// and not inherited from its parent.
|
|
bool IsFieldOverride(ON_V5x_DimStyle::Field field_id) const;
|
|
// Set a field to be overridden or not
|
|
// Fields that aren't overrides inherit from their parent dimstyle
|
|
void SetFieldOverride(ON_V5x_DimStyle::Field field_id, bool bOverride);
|
|
|
|
|
|
/*
|
|
Clear all field overrides
|
|
*/
|
|
void ClearAllFieldOverrides();
|
|
|
|
// Test if the dimstyle has any field override flags set
|
|
bool HasOverrides() const;
|
|
|
|
// Change the fields in this dimstyle to match the fields of the
|
|
// source dimstyle for all of the fields that are marked overridden in the source
|
|
// and to match the parent for all of the fields not marked overriden.
|
|
// Returns true if any overrides were set.
|
|
bool OverrideFields( const ON_V5x_DimStyle& source, const ON_V5x_DimStyle& parent);
|
|
|
|
//
|
|
// Change the fields in this dimstyle to match the fields of the
|
|
// parent dimstyle for all of the fields that are not marked overridden in the
|
|
// target dimstyle.
|
|
// This is the complement of OverrideFields()
|
|
bool InheritFields( const ON_V5x_DimStyle& parent);
|
|
|
|
// Test if this dimstyle is the child of any other dimstyle
|
|
bool IsChildDimstyle() const;
|
|
|
|
// Test if this dimstyle is the child of a given dimstyle
|
|
// A dimstyle may have several child dimstyles, but only one parent
|
|
bool IsChildOf(const ON_UUID& parent_uuid) const;
|
|
|
|
// use ON_ModelComponent parent id - // ON_UUID ParentId() const;
|
|
|
|
// Set the parent of this dimstyle
|
|
// use ON_ModelComponent parent id - //void SetParentId(ON_UUID parent_uuid);
|
|
|
|
// Tolerances
|
|
// Tolerance style
|
|
// 0: None
|
|
// 1: Symmetrical
|
|
// 2: Deviation
|
|
// 3: Limits
|
|
// 4: Basic
|
|
enum eToleranceStyle
|
|
{
|
|
tsMin = 0,
|
|
tsNone = 0,
|
|
tsSymmetrical = 1,
|
|
tsDeviation = 2,
|
|
tsLimits = 3,
|
|
tsBasic = 4,
|
|
tsMax = 4
|
|
};
|
|
int ToleranceStyle() const;
|
|
int ToleranceResolution() const;
|
|
double ToleranceUpperValue() const;
|
|
double ToleranceLowerValue() const;
|
|
double ToleranceHeightScale() const;
|
|
|
|
double BaselineSpacing() const;
|
|
|
|
void SetToleranceStyle( int style);
|
|
void SetToleranceResolution( int resolution);
|
|
void SetToleranceUpperValue( double upper_value);
|
|
void SetToleranceLowerValue( double lower_value);
|
|
void SetToleranceHeightScale( double scale);
|
|
|
|
void SetBaselineSpacing( double spacing = false);
|
|
|
|
// Determines whether or not to draw a Text Mask
|
|
bool DrawTextMask() const;
|
|
void SetDrawTextMask(bool bDraw);
|
|
|
|
// Determines where to get the color to draw a Text Mask
|
|
// 0: Use background color of the viewport. Initially, gradient backgrounds will not be supported
|
|
// 1: Use the ON_Color returned by MaskColor()
|
|
int MaskColorSource() const;
|
|
void SetMaskColorSource(int source);
|
|
|
|
ON_Color MaskColor() const; // Only works right if MaskColorSource returns 1.
|
|
// Does not return viewport background color
|
|
void SetMaskColor(ON_Color color);
|
|
|
|
// Per DimStyle DimScale
|
|
void SetDimScaleSource(int source);
|
|
int DimScaleSource() const; // 0: Global DimScale, 1: DimStyle DimScale
|
|
void SetDimScale(double scale);
|
|
double DimScale() const;
|
|
|
|
// Offset for the border around text to the rectangle used to draw the mask
|
|
// This number * CRhinoAnnotation::TextHeight() for the text is the offset
|
|
// on each side of the tight rectangle around the text characters to the mask rectangle.
|
|
double MaskOffsetFactor() const;
|
|
|
|
void Scale( double scale);
|
|
|
|
// UUID of the dimstyle this was originally copied from
|
|
// so Restore Defaults has some place to look
|
|
void SetSourceDimstyle(ON_UUID source_uuid);
|
|
ON_UUID SourceDimstyle() const;
|
|
|
|
// ver 2.0 V6
|
|
|
|
void SetExtensionLineColorSource(const ON::object_color_source src);
|
|
ON::object_color_source ExtensionLineColorSource() const;
|
|
void SetDimensionLineColorSource(const ON::object_color_source src);
|
|
ON::object_color_source DimensionLineColorSource() const;
|
|
void SetArrowColorSource(const ON::object_color_source src);
|
|
ON::object_color_source ArrowColorSource() const;
|
|
void SetExtensionLineColor(ON_Color c);
|
|
ON_Color ExtensionLineColor() const;
|
|
void SetDimensionLineColor(ON_Color c);
|
|
ON_Color DimensionLineColor() const;
|
|
void SetArrowColor(ON_Color c);
|
|
ON_Color ArrowColor() const;
|
|
void SetTextColor(ON_Color c);
|
|
ON_Color TextColor() const;
|
|
|
|
void SetExtensionLinePlotColorSource(const ON::plot_color_source src);
|
|
ON::plot_color_source ExtensionLinePlotColorSource() const;
|
|
void SetDimensionLinePlotColorSource(const ON::plot_color_source src);
|
|
ON::plot_color_source DimensionLinePlotColorSource() const;
|
|
void SetArrowPlotColorSource(const ON::plot_color_source src);
|
|
ON::plot_color_source ArrowPlotColorSource() const;
|
|
void SetExtensionLinePlotColor(ON_Color c);
|
|
ON_Color ExtensionLinePlotColor() const;
|
|
void SetDimensionLinePlotColor(ON_Color c);
|
|
ON_Color DimensionLinePlotColor() const;
|
|
void SetArrowPlotColor(ON_Color c);
|
|
ON_Color ArrowPlotColor() const;
|
|
void SetTextPlotColor(ON_Color c);
|
|
ON_Color TextPlotColor() const;
|
|
|
|
void SetExtensionLinePlotWeightSource(const ON::plot_weight_source src);
|
|
ON::plot_weight_source ExtensionLinePlotWeightSource() const;
|
|
void SetDimensionLinePlotWeightSource(const ON::plot_weight_source src);
|
|
ON::plot_weight_source DimensionLinePlotWeightSource() const;
|
|
void SetExtensionLinePlotWeight(double w);
|
|
double ExtensionLinePlotWeight() const;
|
|
void SetDimensionLinePlotWeight(double w);
|
|
double DimensionLinePlotWeight() const;
|
|
|
|
void SetFixedExtensionLen(double l);
|
|
double FixedExtensionLen() const;
|
|
void SetFixedExtensionLenOn(bool on);
|
|
bool FixedExtensionLenOn() const;
|
|
void SetTextRotation(double r);
|
|
double TextRotation() const;
|
|
void SetAlternateToleranceResolution(int r);
|
|
int AlternateToleranceResolution() const;
|
|
//void SetAlternateTolHeightFraction(double f);
|
|
//double AltTolHeightFraction() const;
|
|
void SetSuppressArrow1(bool s);
|
|
bool SuppressArrow1() const;
|
|
void SetSuppressArrow2(bool s);
|
|
bool SuppressArrow2() const;
|
|
void SetTextMoveLeader(int m);
|
|
int TextMoveLeader() const;
|
|
void SetArcLengthSymbol(int m);
|
|
int ArcLengthSymbol() const;
|
|
void SetStackFractionFormat(int f);
|
|
int StackFractionFormat() const;
|
|
void SetStackHeightFraction(double f);
|
|
double StackHeightFraction() const;
|
|
void SetRoundOff(double r);
|
|
double RoundOff() const;
|
|
void SetAlternateRoundOff(double r);
|
|
double AlternateRoundOff() const;
|
|
void SetZeroSuppress(int s);
|
|
int ZeroSuppress() const;
|
|
void SetAlternateZeroSuppress(int s);
|
|
int AlternateZeroSuppress() const;
|
|
void SetToleranceZeroSuppress(int s);
|
|
int ToleranceZeroSuppress() const;
|
|
void SetAngleZeroSuppress(int s);
|
|
int AngleZeroSuppress() const;
|
|
void SetAlternateBelow(bool below);
|
|
bool AlternateBelow() const;
|
|
void SetArrowType1(ON_Arrowhead::arrow_type); // ON_Dimension derived dimensions
|
|
ON_Arrowhead::arrow_type ArrowType1() const;
|
|
void SetArrowBlockId1(ON_UUID id);
|
|
ON_UUID ArrowBlockId1() const;
|
|
void SetArrowType2(ON_Arrowhead::arrow_type);
|
|
ON_Arrowhead::arrow_type ArrowType2() const;
|
|
void SetArrowBlockId2(ON_UUID id);
|
|
ON_UUID ArrowBlockId2() const;
|
|
const ON_Arrowhead& Arrowhead1() const;
|
|
const ON_Arrowhead& Arrowhead2() const;
|
|
|
|
|
|
|
|
// Defaults for values stored in Userdata extension - needed to read and write pre-v6 files
|
|
static int DefaultToleranceStyle();
|
|
static int DefaultToleranceResolution();
|
|
static double DefaultToleranceUpperValue();
|
|
static double DefaultToleranceLowerValue();
|
|
static double DefaultToleranceHeightScale();
|
|
static double DefaultBaselineSpacing();
|
|
static bool DefaultDrawTextMask(); // false
|
|
static int DefaultMaskColorSource(); // 0;
|
|
static ON_Color DefaultMaskColor(); // .SetRGB(255,255,255);
|
|
static double DefaultDimScale(); // 1.0;
|
|
static int DefaultDimScaleSource(); // 0;
|
|
|
|
bool CompareFields(const ON_V5x_DimStyle& other) const;
|
|
|
|
public:
|
|
double m_extextension = 0.5; // extension line extension
|
|
double m_extoffset = 0.5; // extension line offset
|
|
double m_arrowsize = 1.0; // length of an arrow - may mean different things to different arrows
|
|
double m_centermark = 0.5; // size of the + at circle centers
|
|
double m_textgap = 0.25; // gap around the text for clipping dim line
|
|
double m_textheight = 1.0; // model unit height of dimension text before applying dimscale
|
|
ON_INTERNAL_OBSOLETE::V5_TextDisplayMode m_dimstyle_textalign = ON_INTERNAL_OBSOLETE::V5_TextDisplayMode::kAboveLine; // text alignment relative to the dimension line
|
|
int m_arrowtype = 0; // 0: filled narrow triangular arrow - For ON_OBSOLETE_V2_Annotation & ON_OBSOLETE_V5_Annotation derived dimensnions
|
|
// m_arrowtype = ((ON_Arrowhead::arrow_type enum value as int) - 2)
|
|
int m_angularunits = 0; // 0: degrees, 1: radians
|
|
int m_lengthformat = 0; // 0: decimal, 1: fractional, 2: feet & inches
|
|
int m_angleformat = 0; // 0: decimal degrees, 1:DMS, ...
|
|
int m_angleresolution = 2; // for decimal degrees, digits past decimal
|
|
int m_lengthresolution = 2; // depends on m_lengthformat
|
|
// for decimal, digits past the decimal point
|
|
private:
|
|
ON_TextStyle m_v5_text_style = ON_TextStyle::Default;
|
|
|
|
public:
|
|
// added fields version 1.2, Jan 13, 05
|
|
double m_lengthfactor = 1.0; // (dimlfac) model units multiplier for length display
|
|
|
|
bool m_bAlternate = false; // (dimalt) display alternate dimension string (or not)
|
|
// using m_alternate_xxx values
|
|
|
|
double m_alternate_lengthfactor = 1.0; // (dimaltf) model units multiplier for alternate length display
|
|
int m_alternate_lengthformat = 0; // 0: decimal, 1: feet, 2: feet & inches
|
|
int m_alternate_lengthresolution = 2; // depends on m_lengthformat
|
|
// for decimal, digits past the decimal point
|
|
|
|
int m_alternate_angleformat = 0; // 0: decimal degrees, ...
|
|
int m_alternate_angleresolution = 2; // for decimal degrees, digits past decimal
|
|
|
|
ON_wString m_prefix; // string preceding dimension value string
|
|
ON_wString m_suffix; // string following dimension value string
|
|
ON_wString m_alternate_prefix; // string preceding alternate value string
|
|
ON_wString m_alternate_suffix; // string following alternate value string
|
|
|
|
private:
|
|
///unsigned int m_valid = 0; // Obsolete deprecated field to be removed - Do not use
|
|
public:
|
|
|
|
// field added version 1.4, Dec 28, 05
|
|
double m_dimextension = 0.0; // (dimdle) dimension line extension past the "tip" location
|
|
|
|
// fields added version 1.5 Mar 23 06
|
|
double m_leaderarrowsize = 1.0; // Like dimension arrow size but applies to leaders
|
|
int m_leaderarrowtype = 0; // Like dimension arrow type but applies to leaders
|
|
bool m_bSuppressExtension1 = false; // flag to not draw extension lines
|
|
bool m_bSuppressExtension2 = false; // flag to not draw extension lines
|
|
|
|
private:
|
|
friend class ON_DimStyleExtra;
|
|
// 8 Apr, 2014 - The next few fields were transferred from ON_DimStyleExtra for V6
|
|
/// Use ON_ModelComponent.ParentId() /// ON_UUID m_parent_dimstyle = ON_nil_uuid; // ON_nil_uuid if there is no parent dimstyle
|
|
unsigned int m_field_override_count = 0; // number of
|
|
bool m_field_override[ON_V5x_DimStyle::FieldCount];
|
|
|
|
public:
|
|
int m_tolerance_style = 0;
|
|
int m_tolerance_resolution = 4;
|
|
double m_tolerance_upper_value = 0.0; // or both upper and lower in symmetrical style
|
|
double m_tolerance_lower_value = 0.0;
|
|
double m_tolerance_height_scale = 1.0; // relative to the main dimension text
|
|
|
|
double m_baseline_spacing = 1.0;
|
|
|
|
// Text mask - added Dec 12 2009
|
|
bool m_bDrawMask = false;
|
|
int m_mask_color_source = 0;
|
|
ON_Color m_mask_color = ON_Color::White;
|
|
|
|
// Per dimstyle DimScale added Dec 16, 2009
|
|
double m_dimscale = 1.0;
|
|
int m_dimscale_source = 0;
|
|
|
|
// 19 Oct 2010 - Added uuid of source dimstyle to restore defaults
|
|
ON_UUID m_source_dimstyle = ON_nil_uuid;
|
|
// End of fields that were in ON_DimStyleExtra
|
|
|
|
// Fields added for V6, ver 2.0
|
|
|
|
unsigned char m_ext_line_color_source = 0;
|
|
unsigned char m_dim_line_color_source = 0;
|
|
unsigned char m_arrow_color_source = 0;
|
|
unsigned char m_text_color_source = 0;
|
|
ON_Color m_ext_line_color = ON_Color::Black;
|
|
ON_Color m_dim_line_color = ON_Color::Black;
|
|
ON_Color m_arrow_color = ON_Color::Black;
|
|
ON_Color m_text_color = ON_Color::Black;
|
|
unsigned char m_ext_line_plot_color_source = 0;
|
|
unsigned char m_dim_line_plot_color_source = 0;
|
|
unsigned char m_arrow_plot_color_source = 0;
|
|
unsigned char m_text_plot_color_source = 0;
|
|
ON_Color m_ext_line_plot_color = ON_Color::Black;
|
|
ON_Color m_dim_line_plot_color = ON_Color::Black;
|
|
ON_Color m_arrow_plot_color = ON_Color::Black;
|
|
ON_Color m_text_plot_color = ON_Color::Black;
|
|
unsigned char m_ext_line_plot_weight_source = 0;
|
|
unsigned char m_dim_line_plot_weight_source = 0;
|
|
double m_ext_line_plot_weight_mm = 0.0;
|
|
double m_dim_line_plot_weight_mm = 0.0;
|
|
|
|
double m_fixed_extension_len = 1.0; // Fixed extension line length if m_fixed_extension_len_on is true
|
|
bool m_fixed_extension_len_on = false; // true: use fixed_extension_len, false: don't use m_fixed_extension_len
|
|
double m_text_rotation = 0.0; // Dimension text rotation around text point (radians)
|
|
int m_alt_tol_resolution = 4; // for decimal, digits past the decimal point, fractions: 1/2^n
|
|
double m_tol_textheight_fraction = 1.0; // fraction of main text height
|
|
bool m_suppress_arrow1 = false; // false: dont suppress, true: suppress
|
|
bool m_suppress_arrow2 = false; // false: dont suppress, true: suppress
|
|
int m_textmove_leader = 0; // 0: move text anywhere, 1: add leader when moving text
|
|
int m_arclength_sym = 0; // 0: symbol before dim text, 1: symbol above dim text, no symbol
|
|
double m_stack_textheight_fraction = 1.0; // fraction of main text height
|
|
int m_stack_format = 0; // 0: no stacking, 1: horizontal, 2: diagonal
|
|
double m_alt_round = 0.0; // rounds to nearest specified value
|
|
double m_round = 0.0;
|
|
int m_alt_zero_suppress = 0; // 0: no zero suppressing
|
|
int m_tol_zero_suppress = 0; // 1: suppress zero feet
|
|
int m_zero_suppress = 0; // 2: suppress zero inches
|
|
int m_ang_zero_suppress = 0; // 3: suppress both zero feet and 0 inches
|
|
// 4: suppress leading zeros
|
|
// 8: suppress trailing zeros
|
|
// 12: suppress both leading and trailing zeros
|
|
bool m_alt_below = false; // true: display alternate text below main text
|
|
// true: display alternate text after main text
|
|
//ON_Arrowhead::arrow_type m_arrow_type_1; // Arrow types for ON_Dimension derived dimensions
|
|
//ON_Arrowhead::arrow_type m_arrow_type_2;
|
|
//ON_wString m_dim_arrow_block1;
|
|
//ON_wString m_dim_arrow_block2;
|
|
|
|
ON_Arrowhead m_arrow_1;
|
|
ON_Arrowhead m_arrow_2;
|
|
};
|
|
|
|
void ON_Internal_FixBogusDimStyleLengthFactor(
|
|
const class ON_BinaryArchive& file,
|
|
double& dimstyle_length_factor
|
|
);
|
|
|
|
#endif
|
|
|
|
#endif
|