470 lines
16 KiB
C++
470 lines
16 KiB
C++
/* $NoKeywords: $ */
|
|
/*
|
|
//
|
|
// Copyright (c) 1993-2012 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_DIMSTYLE_INC_)
|
|
#define OPENNURBS_DIMSTYLE_INC_
|
|
|
|
class ON_CLASS ON_DimStyle : public ON_Object
|
|
{
|
|
ON_OBJECT_DECLARE(ON_DimStyle);
|
|
|
|
public:
|
|
enum eArrowType
|
|
{
|
|
solidtriangle = 0, // 2:1
|
|
dot = 1,
|
|
tick = 2,
|
|
shorttriangle = 3, // 1:1
|
|
arrow = 4,
|
|
rectangle = 5,
|
|
longtriangle = 6, // 4:1
|
|
longertriangle = 7, // 6:1
|
|
};
|
|
|
|
ON_DimStyle();
|
|
~ON_DimStyle();
|
|
// C++ default copy construction and operator= work fine.-
|
|
|
|
ON_DimStyle& operator=( const ON_3dmAnnotationSettings& src);
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
//
|
|
// ON_Object overrides
|
|
|
|
/*
|
|
Description:
|
|
Tests an object to see if its data members are correctly
|
|
initialized.
|
|
Parameters:
|
|
text_log - [in] if the object is not valid and text_log
|
|
is not NULL, then a brief englis description of the
|
|
reason the object is not valid is appened to the log.
|
|
The information appended to text_log is suitable for
|
|
low-level debugging purposes by programmers and is
|
|
not intended to be useful as a high level user
|
|
interface tool.
|
|
Returns:
|
|
@untitled table
|
|
true object is valid
|
|
false object is invalid, uninitialized, etc.
|
|
Remarks:
|
|
Overrides virtual ON_Object::IsValid
|
|
*/
|
|
ON_BOOL32 IsValid( ON_TextLog* text_log = NULL ) const;
|
|
|
|
// virtual
|
|
void Dump( ON_TextLog& ) const; // for debugging
|
|
|
|
// virtual
|
|
ON_BOOL32 Write(
|
|
ON_BinaryArchive& // serialize definition to binary archive
|
|
) const;
|
|
|
|
// virtual
|
|
ON_BOOL32 Read(
|
|
ON_BinaryArchive& // restore definition from binary archive
|
|
);
|
|
|
|
void EmergencyDestroy();
|
|
|
|
// virtual
|
|
ON_UUID ModelObjectId() const;
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Interface
|
|
|
|
void SetName( const wchar_t* );
|
|
void SetName( const char* );
|
|
|
|
void GetName( ON_wString& ) const;
|
|
const wchar_t* Name() const;
|
|
|
|
void SetIndex(int);
|
|
int Index() const;
|
|
|
|
void SetDefaults();
|
|
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);
|
|
|
|
int TextAlignment() const;
|
|
void SetTextAlignment( ON::eTextDisplayMode);
|
|
|
|
int ArrowType() const;
|
|
void SetArrowType( eArrowType);
|
|
|
|
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);
|
|
|
|
int FontIndex() const;
|
|
virtual void SetFontIndex( int index);
|
|
|
|
double TextGap() const;
|
|
void SetTextGap( double gap);
|
|
|
|
double TextHeight() const;
|
|
void SetTextHeight( double height);
|
|
|
|
// added at ver 1.3
|
|
double LengthFactor() const;
|
|
ON_DEPRECATED void SetLengthactor( double);
|
|
void SetLengthFactor( double); // added 6/24/07 because of typo
|
|
|
|
bool Alternate() const;
|
|
void SetAlternate( bool);
|
|
|
|
double AlternateLengthFactor() const;
|
|
ON_DEPRECATED void SetAlternateLengthactor( double);
|
|
void SetAlternateLengthFactor( double); // added 6/24/07 because of typo
|
|
|
|
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);
|
|
|
|
// obsolete
|
|
ON_DEPRECATED void Composite( const ON_DimStyle& override);
|
|
|
|
// Don't change these enum values
|
|
// They are used in file reading & writing
|
|
enum eField
|
|
{
|
|
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,
|
|
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,
|
|
|
|
//When fields are added to ON_DimStyleExtra,
|
|
// enum { eFieldCount = 64 }; in opennurbs_dimstyle.cpp
|
|
// needs to be changed.
|
|
fn_really_last = 0xFFFF
|
|
};
|
|
|
|
// These are obsolete - don't use
|
|
// 5/01/07 - LW
|
|
ON_DEPRECATED void InvalidateField( eField field);
|
|
ON_DEPRECATED void InvalidateAllFields();
|
|
ON_DEPRECATED void ValidateField( eField field);
|
|
ON_DEPRECATED bool IsFieldValid( eField) const;
|
|
|
|
// 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( eField field_id) const;
|
|
// Set a field to be overridden or not
|
|
// Fields that aren't overrides inherit from their parent dimstyle
|
|
void SetFieldOverride( ON_DimStyle::eField field_id, bool bOverride);
|
|
|
|
// 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_DimStyle& source, const ON_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_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;
|
|
bool IsChildOf( ON_UUID& parent_uuid) const; // decl error - const forgotten
|
|
|
|
ON_UUID ParentId() const;
|
|
|
|
// Set the parent of this dimstyle
|
|
void SetParentId( ON_UUID parent_uuid);
|
|
ON_DEPRECATED void SetParent( ON_UUID& parent_uuid); // use set parent id
|
|
|
|
// Tolerances
|
|
// Tolerance style
|
|
// 0: None
|
|
// 1: Symmetrical
|
|
// 2: Deviation
|
|
// 3: Limits
|
|
// 4: Basic
|
|
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;
|
|
|
|
// Defaults for values stored in Userdata extension
|
|
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_DimStyle& other) const;
|
|
|
|
public:
|
|
ON_wString m_dimstyle_name; // String name of the style
|
|
int m_dimstyle_index; // Index in the dimstyle table
|
|
ON_UUID m_dimstyle_id;
|
|
|
|
double m_extextension; // extension line extension
|
|
double m_extoffset; // extension line offset
|
|
double m_arrowsize; // length of an arrow - may mean different things to different arrows
|
|
double m_centermark; // size of the + at circle centers
|
|
double m_textgap; // gap around the text for clipping dim line
|
|
double m_textheight; // model unit height of dimension text before applying dimscale
|
|
int m_textalign; // text alignment relative to the dimension line
|
|
int m_arrowtype; // 0: filled narrow triangular arrow
|
|
int m_angularunits; // 0: degrees, 1: radians
|
|
int m_lengthformat; // 0: decimal, 1: feet, 2: feet & inches
|
|
int m_angleformat; // 0: decimal degrees, ...
|
|
int m_angleresolution; // for decimal degrees, digits past decimal
|
|
int m_lengthresolution; // depends on m_lengthformat
|
|
// for decimal, digits past the decimal point
|
|
int m_fontindex; // index of the ON_Font used by this dimstyle
|
|
|
|
// added fields version 1.2, Jan 13, 05
|
|
double m_lengthfactor; // (dimlfac) model units multiplier for length display
|
|
bool m_bAlternate; // (dimalt) display alternate dimension string (or not)
|
|
// using m_alternate_xxx values
|
|
double m_alternate_lengthfactor; // (dimaltf) model units multiplier for alternate length display
|
|
int m_alternate_lengthformat; // 0: decimal, 1: feet, 2: feet & inches
|
|
int m_alternate_lengthresolution; // depends on m_lengthformat
|
|
// for decimal, digits past the decimal point
|
|
int m_alternate_angleformat; // 0: decimal degrees, ...
|
|
int m_alternate_angleresolution; // 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; // Obsolete deprecated field to be removed - Do not use
|
|
public:
|
|
|
|
// field added version 1.4, Dec 28, 05
|
|
double m_dimextension; // (dimdle) dimension line extension past the "tip" location
|
|
|
|
// fields added version 1.5 Mar 23 06
|
|
double m_leaderarrowsize; // Like dimension arrow size but applies to leaders
|
|
int m_leaderarrowtype; // Like dimension arrow type but applies to leaders
|
|
bool m_bSuppressExtension1; // flag to not draw extension lines
|
|
bool m_bSuppressExtension2; // flag to not draw extension lines
|
|
|
|
|
|
// Added March 23, 2008 -LW
|
|
// This function is temporary and will be removed next time the SDK can be modified.
|
|
class ON_DimStyleExtra* DimStyleExtension(); // can return null
|
|
const class ON_DimStyleExtra* DimStyleExtension() const; // can return null
|
|
};
|
|
|
|
#endif
|
|
|