mirror of
https://github.com/mcneel/opennurbs.git
synced 2026-03-01 03:26:09 +08:00
2666 lines
76 KiB
C++
2666 lines
76 KiB
C++
//
|
|
// Copyright (c) 1993-2022 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>.
|
|
//
|
|
////////////////////////////////////////////////////////////////
|
|
|
|
#include "opennurbs.h"
|
|
|
|
#if !defined(ON_COMPILING_OPENNURBS)
|
|
// This check is included in all opennurbs source .c and .cpp files to insure
|
|
// ON_COMPILING_OPENNURBS is defined when opennurbs source is compiled.
|
|
// When opennurbs source is being compiled, ON_COMPILING_OPENNURBS is defined
|
|
// and the opennurbs .h files alter what is declared and how it is declared.
|
|
#error ON_COMPILING_OPENNURBS must be defined when compiling opennurbs
|
|
#endif
|
|
|
|
// obsolete V5 dimension style
|
|
#include "opennurbs_internal_V5_dimstyle.h"
|
|
|
|
#pragma region DimstyleExtra
|
|
|
|
/*
|
|
Changes and additions 5/01/07 LW
|
|
Adding several fields to ON_Dimstyle
|
|
Adding the concept of Parent and Child dimstyles so that individual dimension objects
|
|
can have their own copy of a dimension style to override some settings
|
|
|
|
Adding the concept of Parent and Child dimstyles to support per object overrides of
|
|
dimstyle based properties. Individual dimensions will be able to have one or more
|
|
properties that differ from the dimension style for that dimension, but the rest of
|
|
their properties will be controlled by the parent dimstyle. In this implementation
|
|
(Rhino 5), dimstyles will only inherit one level deep.
|
|
|
|
The first time an individual dimension has a dimstyle value overridden, a new child
|
|
dimstyle is made that is a copy of the dimension's dimstyle. If there is already a
|
|
child dimstyle for that dimension, it is used and no new dimstyle is made.
|
|
The value being overridden is changed in the child dimstyle and a flag is set that
|
|
the field is being overridden.
|
|
|
|
When a value is changed in a parent dimstyle, it should look through the other
|
|
dimstyles in the dimstyle table (or your application's equivalent) and change any
|
|
of its children appropriately. Name and Index fields aren't propogated this way.
|
|
If the parent's field being changed is not set in the child's m_valid_fields array,
|
|
the child's copy of that field should be changed to match the parent's new value.
|
|
Changing values in child dimstyles doesn't change values in their parents.
|
|
|
|
When a value that has previously been overridden by an individual dimension
|
|
is set to ByStyle, the corresponding field flag is unset in the valid field array.
|
|
If all of the flags in a child dimstyle become unset, the dimension is set to
|
|
reference the parent dimstyle directly.
|
|
|
|
*/
|
|
|
|
|
|
// Added for v5 - 5/01/07 LW
|
|
// Userdata class being used to extend ON_V5x_DimStyle so the v4 sdk still works
|
|
// Presumably, this will be moved into ON_V5x_DimStyle when the SDK is changed again
|
|
// Don't put this extension class in a header file or export it.
|
|
|
|
// April 11, 2014 - Lowell
|
|
// Moving these fields into ON_Dimstyle
|
|
// ON_DimStyleExtra class is still here for writing V5 files
|
|
class ON_DimStyleExtra : public ON_UserData
|
|
{
|
|
ON_OBJECT_DECLARE(ON_DimStyleExtra);
|
|
public:
|
|
// static ON_DimStyleExtra* DimStyleExtensionGet( ON_V5x_DimStyle* pDimStyle, bool bCreateIfNoneExists );
|
|
// static const ON_DimStyleExtra* DimStyleExtensionGet( const ON_V5x_DimStyle* pDimStyle);
|
|
|
|
ON_DimStyleExtra();
|
|
~ON_DimStyleExtra();
|
|
|
|
void SetDefaults();
|
|
|
|
/*
|
|
Returns:
|
|
True if this ON_DimStyleExtra has default settings.
|
|
*/
|
|
bool IsDefault() const;
|
|
|
|
// override virtual ON_Object::Dump function
|
|
void Dump( ON_TextLog& text_log ) const override;
|
|
|
|
// override virtual ON_Object::SizeOf function
|
|
unsigned int SizeOf() const override;
|
|
|
|
// override virtual ON_Object::Write function
|
|
bool Write(ON_BinaryArchive& binary_archive) const override;
|
|
|
|
// override virtual ON_Object::Read function
|
|
bool Read(ON_BinaryArchive& binary_archive) override;
|
|
|
|
// override virtual ON_UserData::GetDescription function
|
|
bool GetDescription( ON_wString& description ) override;
|
|
|
|
// override virtual ON_UserData::Archive function
|
|
bool Archive() const override;
|
|
|
|
bool DeleteAfterRead(
|
|
const class ON_BinaryArchive& archive,
|
|
class ON_Object* parent_object
|
|
) const override;
|
|
|
|
bool DeleteAfterWrite(
|
|
const class ON_BinaryArchive& archive,
|
|
const class ON_Object* parent_object
|
|
) const override;
|
|
|
|
|
|
//void SetFieldOverride( int field_id, bool bOverride);
|
|
//bool IsFieldOverride( int field_id) const;
|
|
|
|
// Data access
|
|
// Scale all of the length values
|
|
void Scale( double scale);
|
|
|
|
// Tolerances
|
|
// Tolerance style
|
|
// 0: None
|
|
// 1: Symmetrical
|
|
// 2: Deviation
|
|
// 3: Limits
|
|
// 4: Basic
|
|
void SetToleranceStyle( int style);
|
|
int ToleranceStyle() const;
|
|
|
|
void SetToleranceResolution( int resolution);
|
|
int ToleranceResolution() const;
|
|
|
|
void SetToleranceUpperValue( double upper_value);
|
|
double ToleranceUpperValue() const;
|
|
|
|
void SetToleranceLowerValue( double lower_value);
|
|
double ToleranceLowerValue() const;
|
|
|
|
void SetToleranceHeightScale( double scale);
|
|
double ToleranceHeightScale() const;
|
|
|
|
void SetBaselineSpacing( double);
|
|
double BaselineSpacing() const;
|
|
|
|
// 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);
|
|
|
|
void SetDimScale(double scale);
|
|
double DimScale() const;
|
|
void SetDimScaleSource(int source);
|
|
int DimScaleSource() const;
|
|
|
|
void SetSourceDimstyle(ON_UUID source_uuid);
|
|
ON_UUID SourceDimstyle() const;
|
|
|
|
bool CompareFields(const ON_DimStyleExtra* pOther) const;
|
|
|
|
// Data storage
|
|
|
|
ON_UUID m_parent_dimstyle; // ON_nil_uuid if there is no parent dimstyle
|
|
ON_SimpleArray<bool> m_valid_fields;
|
|
enum { eFieldCount = 66 };
|
|
|
|
int m_tolerance_style;
|
|
int m_tolerance_resolution;
|
|
double m_tolerance_upper_value; // or both upper and lower in symmetrical style
|
|
double m_tolerance_lower_value;
|
|
double m_tolerance_height_scale; // relative to the main dimension text
|
|
|
|
double m_baseline_spacing;
|
|
|
|
// Text mask - added Dec 12 2009
|
|
bool m_bDrawMask;
|
|
int m_mask_color_source;
|
|
ON_Color m_mask_color;
|
|
|
|
// Per dimstyle DimScale added Dec 16, 2009
|
|
double m_dimscale;
|
|
int m_dimscale_source;
|
|
|
|
// 19 Oct 2010 - Added uuid of source dimstyle to restore defaults
|
|
ON_UUID m_source_dimstyle;
|
|
};
|
|
|
|
|
|
|
|
// Added for v5 - 5/01/07 LW
|
|
ON_OBJECT_IMPLEMENT(ON_DimStyleExtra,ON_UserData,"513FDE53-7284-4065-8601-06CEA8B28D6F");
|
|
|
|
//ON_DimStyleExtra* ON_DimStyleExtra::DimStyleExtensionGet( ON_V5x_DimStyle* pDimStyle, bool bCreateIfNoneExists )
|
|
//{
|
|
// ON_DimStyleExtra* pExtra = 0;
|
|
// if( pDimStyle)
|
|
// {
|
|
// pExtra = ON_DimStyleExtra::Cast( pDimStyle->GetUserData( ON_CLASS_ID(ON_DimStyleExtra)));
|
|
// // 2 November 2011 Dale Lear
|
|
// // I added the bCreateIfNoneExists parameter and I'm using
|
|
// // is sparingly. It is critical that we do not add
|
|
// // ON_DimStyleExtra unless it is actually being used
|
|
// // to override a default setting. Otherwise, we
|
|
// // end up leaking vast amounts of memory when
|
|
// // the default dimstyle in the Rhino dimstyle
|
|
// // table is used due to the way annotation
|
|
// // is currently drawn.
|
|
// // If you have questions, please ask Dale Lear for details
|
|
// // but please do not revert to constantly adding user
|
|
// // data to dimstyles.
|
|
// if( pExtra == 0 && bCreateIfNoneExists )
|
|
// {
|
|
// pExtra = new ON_DimStyleExtra;
|
|
// if( pExtra)
|
|
// {
|
|
// if( !pDimStyle->AttachUserData( pExtra))
|
|
// {
|
|
// delete pExtra;
|
|
// pExtra = 0;
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
// return pExtra;
|
|
//}
|
|
//
|
|
//const
|
|
//ON_DimStyleExtra* ON_DimStyleExtra::DimStyleExtensionGet( const ON_V5x_DimStyle* pDimStyle)
|
|
//{
|
|
// // Please do not changes the "false" to a "true" in the second argument.
|
|
// return ON_DimStyleExtra::DimStyleExtensionGet( (ON_V5x_DimStyle*)pDimStyle, false );
|
|
//}
|
|
|
|
ON_DimStyleExtra::ON_DimStyleExtra()
|
|
{
|
|
m_userdata_uuid = ON_CLASS_ID(ON_DimStyleExtra);
|
|
m_application_uuid = ON_opennurbs5_id; // opennurbs.dll reads/writes this userdata
|
|
// The id must be the version 5 id because
|
|
// V6 SaveAs V5 needs to work, but SaveAs
|
|
// V4 should not write this userdata.
|
|
m_userdata_copycount = 1;
|
|
m_valid_fields.Reserve( ON_DimStyleExtra::eFieldCount);
|
|
m_valid_fields.SetCount( ON_DimStyleExtra::eFieldCount);
|
|
m_parent_dimstyle = ON_nil_uuid;
|
|
m_source_dimstyle = ON_nil_uuid;
|
|
SetDefaults();
|
|
}
|
|
|
|
ON_DimStyleExtra::~ON_DimStyleExtra()
|
|
{
|
|
}
|
|
|
|
void ON_DimStyleExtra::SetDefaults()
|
|
{
|
|
m_tolerance_style = ON_V5x_DimStyle::DefaultToleranceStyle();
|
|
m_tolerance_resolution = ON_V5x_DimStyle::DefaultToleranceResolution();
|
|
m_tolerance_upper_value = ON_V5x_DimStyle::DefaultToleranceUpperValue();
|
|
m_tolerance_lower_value = ON_V5x_DimStyle::DefaultToleranceLowerValue();
|
|
m_tolerance_height_scale = ON_V5x_DimStyle::DefaultToleranceHeightScale();
|
|
m_baseline_spacing = ON_V5x_DimStyle::DefaultBaselineSpacing();
|
|
m_bDrawMask = ON_V5x_DimStyle::DefaultDrawTextMask(); // false;
|
|
m_mask_color_source = ON_V5x_DimStyle::DefaultMaskColorSource(); // 0;
|
|
m_mask_color = ON_V5x_DimStyle::DefaultMaskColor(); // .SetRGB(255,255,255);
|
|
m_dimscale = ON_V5x_DimStyle::DefaultDimScale(); // 1.0;
|
|
m_dimscale_source = ON_V5x_DimStyle::DefaultDimScaleSource(); // 0;
|
|
|
|
for( int i = 0; i < m_valid_fields.Count(); i++)
|
|
m_valid_fields[i] = false;
|
|
}
|
|
|
|
bool ON_DimStyleExtra::IsDefault() const
|
|
{
|
|
if ( m_tolerance_style != ON_V5x_DimStyle::DefaultToleranceStyle() ) return false;
|
|
if ( m_tolerance_resolution != ON_V5x_DimStyle::DefaultToleranceResolution() ) return false;
|
|
if ( m_tolerance_upper_value != ON_V5x_DimStyle::DefaultToleranceUpperValue() ) return false;
|
|
if ( m_tolerance_lower_value != ON_V5x_DimStyle::DefaultToleranceLowerValue() ) return false;
|
|
if ( m_tolerance_height_scale != ON_V5x_DimStyle::DefaultToleranceHeightScale() ) return false;
|
|
if ( m_baseline_spacing != ON_V5x_DimStyle::DefaultBaselineSpacing() ) return false;
|
|
if ( m_bDrawMask != ON_V5x_DimStyle::DefaultDrawTextMask() ) return false;
|
|
if ( m_mask_color_source != ON_V5x_DimStyle::DefaultMaskColorSource() ) return false;
|
|
if ( m_mask_color != ON_V5x_DimStyle::DefaultMaskColor() ) return false;
|
|
if ( m_dimscale != ON_V5x_DimStyle::DefaultDimScale() ) return false;
|
|
if ( m_dimscale_source != ON_V5x_DimStyle::DefaultDimScaleSource() ) return false;
|
|
|
|
// The m_valid_fields[] settings only matter when
|
|
// m_parent_dimstyle is not zero.
|
|
if ( !(m_parent_dimstyle == ON_nil_uuid) )
|
|
{
|
|
for( int i = 0; i < m_valid_fields.Count() && i < ON_DimStyleExtra::eFieldCount; i++)
|
|
{
|
|
if ( !m_valid_fields[i] )
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
void ON_DimStyleExtra::Dump( ON_TextLog& text_log ) const
|
|
{
|
|
// do nothing
|
|
}
|
|
|
|
unsigned int ON_DimStyleExtra::SizeOf() const
|
|
{
|
|
unsigned int sz = ON_UserData::SizeOf();
|
|
sz += sizeof(*this) - sizeof(ON_UserData);
|
|
return sz;
|
|
}
|
|
|
|
bool ON_DimStyleExtra::Write(ON_BinaryArchive& archive) const
|
|
{
|
|
// bool rc = archive.BeginWrite3dmChunk(TCODE_ANONYMOUS_CHUNK,1,0); Changed to 1,1 for mask settings 12/12/09
|
|
// bool rc = archive.BeginWrite3dmChunk(TCODE_ANONYMOUS_CHUNK,1,1); Changed to 1,2 for dimscale 12/17/09
|
|
// bool rc = archive.BeginWrite3dmChunk(TCODE_ANONYMOUS_CHUNK,1,2); Changed to 1,3 for source_dimstyle 10/19/10
|
|
bool rc = archive.BeginWrite3dmChunk(TCODE_ANONYMOUS_CHUNK,1,3);
|
|
|
|
if(rc) rc = archive.WriteUuid( m_parent_dimstyle);
|
|
if(rc) rc = archive.WriteArray( m_valid_fields);
|
|
|
|
if(rc) rc = archive.WriteInt(m_tolerance_style);
|
|
if(rc) rc = archive.WriteInt(m_tolerance_resolution);
|
|
|
|
if(rc) rc = archive.WriteDouble(m_tolerance_upper_value);
|
|
if(rc) rc = archive.WriteDouble(m_tolerance_lower_value);
|
|
if(rc) rc = archive.WriteDouble(m_tolerance_height_scale);
|
|
|
|
// March 22, 2010 - Global DimStyle was obsoleted and moved into DimStyles
|
|
// So now for writing older version files, its multiplied into all distance values
|
|
if(archive.Archive3dmVersion() < 5)
|
|
{
|
|
if(rc) rc = archive.WriteDouble(m_baseline_spacing * m_dimscale);
|
|
}
|
|
else
|
|
{
|
|
if(rc) rc = archive.WriteDouble(m_baseline_spacing);
|
|
}
|
|
|
|
if(rc) rc = archive.WriteBool(m_bDrawMask);
|
|
if(rc) rc = archive.WriteInt(m_mask_color_source);
|
|
if(rc) rc = archive.WriteColor(m_mask_color);
|
|
|
|
if(archive.Archive3dmVersion() < 5)
|
|
{
|
|
if(rc) rc = archive.WriteDouble(1.0);
|
|
}
|
|
else
|
|
{
|
|
if(rc) rc = archive.WriteDouble(m_dimscale);
|
|
}
|
|
if(rc) rc = archive.WriteInt(m_dimscale_source); // Obsolete field
|
|
|
|
if(rc) rc = archive.WriteUuid(m_source_dimstyle); // Added 19 Oct 2010
|
|
|
|
if(!archive.EndWrite3dmChunk())
|
|
rc = false;
|
|
|
|
return rc;
|
|
}
|
|
|
|
bool ON_DimStyleExtra::Read(ON_BinaryArchive& archive)
|
|
{
|
|
// Changed to 1,0 for mask settings 12/12/09
|
|
int major_version = 0;
|
|
int minor_version = 0;
|
|
bool rc = archive.BeginRead3dmChunk(TCODE_ANONYMOUS_CHUNK,&major_version,&minor_version);
|
|
if(major_version != 1)
|
|
rc = false;
|
|
|
|
if(rc) rc = archive.ReadUuid(m_parent_dimstyle);
|
|
if(rc) rc = archive.ReadArray(m_valid_fields);
|
|
|
|
if(rc) rc = archive.ReadInt(&m_tolerance_style);
|
|
if(rc) rc = archive.ReadInt(&m_tolerance_resolution);
|
|
|
|
if(rc) rc = archive.ReadDouble(&m_tolerance_upper_value);
|
|
if(rc) rc = archive.ReadDouble(&m_tolerance_lower_value);
|
|
if(rc) rc = archive.ReadDouble(&m_tolerance_height_scale);
|
|
|
|
if(rc) rc = archive.ReadDouble(&m_baseline_spacing);
|
|
|
|
if(minor_version >= 1)
|
|
{
|
|
if(rc) rc = archive.ReadBool(&m_bDrawMask);
|
|
if(rc) rc = archive.ReadInt(&m_mask_color_source);
|
|
if(rc) rc = archive.ReadColor(m_mask_color);
|
|
}
|
|
|
|
if(minor_version >= 2)
|
|
{
|
|
if(rc) rc = archive.ReadDouble(&m_dimscale);
|
|
if(rc) rc = archive.ReadInt(&m_dimscale_source);
|
|
}
|
|
|
|
if(minor_version >= 3)
|
|
{
|
|
if(rc) rc = archive.ReadUuid(m_source_dimstyle);
|
|
}
|
|
|
|
if ( !archive.EndRead3dmChunk() )
|
|
rc = false;
|
|
|
|
return rc;
|
|
}
|
|
|
|
bool ON_DimStyleExtra::DeleteAfterWrite(
|
|
const class ON_BinaryArchive& archive,
|
|
const class ON_Object* parent_object
|
|
) const
|
|
{
|
|
return true;
|
|
}
|
|
|
|
bool ON_DimStyleExtra::DeleteAfterRead(
|
|
const class ON_BinaryArchive& archive,
|
|
class ON_Object* parent_object
|
|
) const
|
|
{
|
|
// Move settings to ON_V5x_DimStyle
|
|
for (;;)
|
|
{
|
|
ON_V5x_DimStyle* dimstyle = ON_V5x_DimStyle::Cast(parent_object);
|
|
if (nullptr == dimstyle)
|
|
break;
|
|
|
|
if (ON_nil_uuid == dimstyle->ParentId())
|
|
dimstyle->SetParentId(this->m_parent_dimstyle);
|
|
|
|
if (0 == dimstyle->m_field_override_count)
|
|
{
|
|
const unsigned int capacity = sizeof(dimstyle->m_field_override) / sizeof(dimstyle->m_field_override[0]);
|
|
unsigned int count = m_valid_fields.Count();
|
|
if ( count > static_cast<unsigned int>(ON_V5x_DimStyle::Field::FieldCount) )
|
|
count = static_cast<unsigned int>(ON_V5x_DimStyle::Field::FieldCount);
|
|
for (unsigned int i = 0; i < count && i < capacity; i++)
|
|
{
|
|
bool bOverrideParentSetting
|
|
= (i > static_cast<unsigned int>(ON_V5x_DimStyle::Field::fn_index) && i <= static_cast<unsigned int>(ON_V5x_DimStyle::Field::fn_dim_arrow_blockname2) && this->m_valid_fields[i])
|
|
? true
|
|
: false;
|
|
dimstyle->m_field_override[i] = bOverrideParentSetting;
|
|
if (bOverrideParentSetting)
|
|
dimstyle->m_field_override_count++;
|
|
}
|
|
for (unsigned int i = count; i < capacity; i++)
|
|
dimstyle->m_field_override[i] = false;
|
|
}
|
|
dimstyle->m_tolerance_style = this->m_tolerance_style;
|
|
dimstyle->m_tolerance_resolution = this->m_tolerance_resolution;
|
|
dimstyle->m_tolerance_upper_value = this->m_tolerance_upper_value;
|
|
dimstyle->m_tolerance_lower_value = this->m_tolerance_lower_value;
|
|
dimstyle->m_tolerance_height_scale = this->m_tolerance_height_scale;
|
|
dimstyle->m_bDrawMask = this->m_bDrawMask;
|
|
dimstyle->m_mask_color_source = this->m_mask_color_source;
|
|
dimstyle->m_mask_color = this->m_mask_color;
|
|
dimstyle->m_dimscale = this->m_dimscale;
|
|
dimstyle->m_dimscale_source = this->m_dimscale_source;
|
|
dimstyle->m_source_dimstyle = this->m_source_dimstyle;
|
|
|
|
break;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
bool ON_DimStyleExtra::GetDescription( ON_wString& description)
|
|
{
|
|
description = L"Userdata extension of ON_V5x_DimStyle";
|
|
return true;
|
|
}
|
|
|
|
bool ON_DimStyleExtra::Archive() const
|
|
{
|
|
// true to write to file
|
|
return true;
|
|
}
|
|
|
|
void ON_DimStyleExtra::Scale( double scale)
|
|
{
|
|
if( ON_IsValid( scale) && scale > ON_SQRT_EPSILON)
|
|
m_baseline_spacing *= scale;
|
|
}
|
|
|
|
// Tolerance style
|
|
void ON_DimStyleExtra::SetToleranceStyle( int style)
|
|
{
|
|
if( style >= 0 && style <= 4)
|
|
m_tolerance_style = style;
|
|
}
|
|
|
|
int ON_DimStyleExtra::ToleranceStyle() const
|
|
{
|
|
return m_tolerance_style;
|
|
}
|
|
|
|
void ON_DimStyleExtra::SetToleranceResolution( int resolution)
|
|
{
|
|
if( resolution >= 0 && resolution < 16)
|
|
m_tolerance_resolution = resolution;
|
|
}
|
|
|
|
int ON_DimStyleExtra::ToleranceResolution() const
|
|
{
|
|
return m_tolerance_resolution;
|
|
}
|
|
|
|
void ON_DimStyleExtra::SetToleranceUpperValue( double upper_value)
|
|
{
|
|
if( ON_IsValid(upper_value))
|
|
m_tolerance_upper_value = upper_value;
|
|
}
|
|
|
|
double ON_DimStyleExtra::ToleranceUpperValue() const
|
|
{
|
|
return m_tolerance_upper_value;
|
|
}
|
|
|
|
void ON_DimStyleExtra::SetToleranceLowerValue( double lower_value)
|
|
{
|
|
if( ON_IsValid(lower_value))
|
|
m_tolerance_lower_value = lower_value;
|
|
}
|
|
|
|
double ON_DimStyleExtra::ToleranceLowerValue() const
|
|
{
|
|
return m_tolerance_lower_value;
|
|
}
|
|
|
|
void ON_DimStyleExtra::SetToleranceHeightScale( double scale)
|
|
{
|
|
if( ON_IsValid( scale) && scale > ON_SQRT_EPSILON)
|
|
m_tolerance_height_scale = scale;
|
|
}
|
|
|
|
double ON_DimStyleExtra::ToleranceHeightScale() const
|
|
{
|
|
return m_tolerance_height_scale;
|
|
}
|
|
|
|
void ON_DimStyleExtra::SetBaselineSpacing( double spacing)
|
|
{
|
|
if( ON_IsValid( spacing) && spacing > ON_SQRT_EPSILON)
|
|
m_baseline_spacing = spacing;
|
|
}
|
|
|
|
double ON_DimStyleExtra::BaselineSpacing() const
|
|
{
|
|
return m_baseline_spacing;
|
|
}
|
|
|
|
bool ON_DimStyleExtra::DrawTextMask() const
|
|
{
|
|
return m_bDrawMask;
|
|
}
|
|
|
|
void ON_DimStyleExtra::SetDrawTextMask(bool bDraw)
|
|
{
|
|
m_bDrawMask = bDraw ? true : false;
|
|
}
|
|
|
|
int ON_DimStyleExtra::MaskColorSource() const
|
|
{
|
|
return m_mask_color_source;
|
|
}
|
|
|
|
void ON_DimStyleExtra::SetMaskColorSource(int source)
|
|
{
|
|
if(source == 1)
|
|
m_mask_color_source = 1;
|
|
else
|
|
m_mask_color_source = 0;
|
|
}
|
|
|
|
ON_Color ON_DimStyleExtra::MaskColor() const
|
|
{
|
|
return m_mask_color;
|
|
}
|
|
|
|
void ON_DimStyleExtra::SetMaskColor(ON_Color color)
|
|
{
|
|
m_mask_color = color;
|
|
}
|
|
|
|
void ON_DimStyleExtra::SetDimScale(double scale)
|
|
{
|
|
m_dimscale = scale;
|
|
}
|
|
|
|
double ON_DimStyleExtra::DimScale() const
|
|
{
|
|
return m_dimscale;
|
|
}
|
|
|
|
void ON_DimStyleExtra::SetDimScaleSource(int source)
|
|
{
|
|
m_dimscale_source = source;
|
|
}
|
|
|
|
int ON_DimStyleExtra::DimScaleSource() const
|
|
{
|
|
return m_dimscale_source;
|
|
}
|
|
|
|
void ON_DimStyleExtra::SetSourceDimstyle(ON_UUID source_uuid)
|
|
{
|
|
m_source_dimstyle = source_uuid;
|
|
}
|
|
|
|
ON_UUID ON_DimStyleExtra::SourceDimstyle() const
|
|
{
|
|
return m_source_dimstyle;
|
|
}
|
|
|
|
// returns true if they are the same
|
|
bool ON_DimStyleExtra::CompareFields(const ON_DimStyleExtra* pOther) const
|
|
{
|
|
if(pOther == 0)
|
|
return false;
|
|
|
|
if((m_parent_dimstyle != pOther->m_parent_dimstyle) ||
|
|
(m_tolerance_style != pOther->m_tolerance_style) ||
|
|
(m_tolerance_resolution != pOther->m_tolerance_resolution) ||
|
|
(m_tolerance_upper_value != pOther->m_tolerance_upper_value) ||
|
|
(m_tolerance_lower_value != pOther->m_tolerance_lower_value) ||
|
|
(m_tolerance_height_scale != pOther->m_tolerance_height_scale) ||
|
|
(m_baseline_spacing != pOther->m_baseline_spacing) ||
|
|
(m_bDrawMask != pOther->m_bDrawMask) ||
|
|
(m_mask_color_source != pOther->m_mask_color_source) ||
|
|
(m_mask_color != pOther->m_mask_color) ||
|
|
(m_dimscale != pOther->m_dimscale) ||
|
|
(m_dimscale_source != pOther->m_dimscale_source)
|
|
)
|
|
return false;
|
|
|
|
for(int i = 0; i < m_valid_fields.Count(); i++)
|
|
{
|
|
if(m_valid_fields[i] != pOther->m_valid_fields[i])
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
#pragma endregion DimstyleExtra
|
|
|
|
|
|
ON_OBJECT_IMPLEMENT( ON_V5x_DimStyle, ON_Object, "81BD83D5-7120-41c4-9A57-C449336FF12C" );
|
|
|
|
ON_V5x_DimStyle::ON_V5x_DimStyle()
|
|
: ON_ModelComponent(ON_ModelComponent::Type::DimStyle)
|
|
{}
|
|
|
|
ON_V5x_DimStyle::~ON_V5x_DimStyle()
|
|
{}
|
|
|
|
|
|
// copy from ON_3dmAnnotationSettings and add a couple of fields
|
|
ON_V5x_DimStyle::ON_V5x_DimStyle( const ON_3dmAnnotationSettings& src)
|
|
: ON_ModelComponent(ON_ModelComponent::Type::DimStyle)
|
|
{
|
|
m_extextension = src.m_dimexe;
|
|
m_extoffset = src.m_dimexo;
|
|
m_arrowsize = src.m_arrowlength;
|
|
m_dimstyle_textalign = ON_INTERNAL_OBSOLETE::V5_TextDisplayMode::kAboveLine;
|
|
m_centermark = src.m_centermark;
|
|
m_textgap = src.m_dimexo / 2.0;
|
|
m_textheight = src.m_textheight;
|
|
m_arrowtype = src.m_arrowtype;
|
|
m_angularunits = src.m_angularunits;
|
|
m_lengthformat = src.m_lengthformat;
|
|
m_angleformat = src.m_angleformat;
|
|
m_lengthresolution = src.m_resolution;
|
|
m_angleresolution = src.m_resolution;
|
|
}
|
|
|
|
bool ON_V5x_DimStyle::CompareValidFields(const ON_V5x_DimStyle& style) const
|
|
{
|
|
if ( 0 == m_field_override_count && 0 == style.m_field_override_count )
|
|
return true;
|
|
|
|
if ( m_field_override_count != style.m_field_override_count )
|
|
return false;
|
|
|
|
const unsigned int count = (unsigned int)(sizeof(m_field_override) / sizeof(m_field_override[0]));
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
if ((m_field_override_count > 0 ? m_field_override[i] : false) != (style.m_field_override_count > 0 ? style.m_field_override[i] : false) )
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
|
|
bool ON_V5x_DimStyle::CompareDimstyle(const ON_V5x_DimStyle& style) const
|
|
{
|
|
if (
|
|
0 == ON_ModelComponent::CompareNameExact(*this,style) &&
|
|
m_extextension == style.m_extextension &&
|
|
m_extoffset == style.m_extoffset &&
|
|
m_arrowsize == style.m_arrowsize &&
|
|
m_centermark == style.m_centermark &&
|
|
m_textgap == style.m_textgap &&
|
|
m_textheight == style.m_textheight &&
|
|
m_dimstyle_textalign == style.m_dimstyle_textalign &&
|
|
m_arrowtype == style.m_arrowtype &&
|
|
m_angularunits == style.m_angularunits &&
|
|
m_lengthformat == style.m_lengthformat &&
|
|
m_angleformat == style.m_angleformat &&
|
|
m_lengthresolution == style.m_lengthresolution &&
|
|
m_angleresolution == style.m_angleresolution &&
|
|
m_v5_text_style.Font().ManagedFontSerialNumber() == style.m_v5_text_style.Font().ManagedFontSerialNumber() &&
|
|
//ON_TextStyle::EqualTextStyleFontAndName(m_text_style, style.m_text_style) &&
|
|
m_lengthfactor == style.m_lengthfactor &&
|
|
m_bAlternate == style.m_bAlternate &&
|
|
m_alternate_lengthfactor == style.m_alternate_lengthfactor &&
|
|
m_alternate_lengthformat == style.m_alternate_lengthformat &&
|
|
m_alternate_lengthresolution == style.m_alternate_lengthresolution &&
|
|
m_alternate_angleformat == style.m_alternate_angleformat &&
|
|
m_alternate_angleresolution == style.m_alternate_angleresolution &&
|
|
|
|
m_prefix == style.m_prefix &&
|
|
m_suffix == style.m_suffix &&
|
|
m_alternate_prefix == style.m_alternate_prefix &&
|
|
m_alternate_suffix == style.m_alternate_suffix &&
|
|
|
|
m_dimextension == style.m_dimextension &&
|
|
|
|
m_leaderarrowsize == style.m_leaderarrowsize &&
|
|
m_leaderarrowtype == style.m_leaderarrowtype &&
|
|
m_bSuppressExtension1 == style.m_bSuppressExtension1 &&
|
|
m_bSuppressExtension2 == style.m_bSuppressExtension2 &&
|
|
|
|
ParentId() == style.ParentId() &&
|
|
m_source_dimstyle == style.m_source_dimstyle &&
|
|
|
|
m_tolerance_style == style.m_tolerance_style &&
|
|
m_tolerance_resolution == style.m_tolerance_resolution &&
|
|
m_tolerance_upper_value == style.m_tolerance_upper_value &&
|
|
m_tolerance_lower_value == style.m_tolerance_lower_value &&
|
|
m_tolerance_height_scale == style.m_tolerance_height_scale &&
|
|
m_baseline_spacing == style.m_baseline_spacing &&
|
|
m_bDrawMask == style.m_bDrawMask &&
|
|
m_mask_color_source == style.m_mask_color_source &&
|
|
m_mask_color == style.m_mask_color &&
|
|
m_dimscale == style.m_dimscale &&
|
|
m_dimscale_source == style.m_dimscale_source &&
|
|
|
|
m_ext_line_color_source == style.m_ext_line_color_source &&
|
|
m_dim_line_color_source == style.m_dim_line_color_source &&
|
|
m_arrow_color_source == style.m_arrow_color_source &&
|
|
m_text_color_source == style.m_text_color_source &&
|
|
m_ext_line_color == style.m_ext_line_color &&
|
|
m_dim_line_color == style.m_dim_line_color &&
|
|
m_arrow_color == style.m_arrow_color &&
|
|
m_text_color == style.m_text_color &&
|
|
m_ext_line_plot_color_source == style.m_ext_line_plot_color_source &&
|
|
m_dim_line_plot_color_source == style.m_dim_line_plot_color_source &&
|
|
m_arrow_plot_color_source == style.m_arrow_plot_color_source &&
|
|
m_text_plot_color_source == style.m_text_plot_color_source &&
|
|
m_ext_line_plot_color == style.m_ext_line_plot_color &&
|
|
m_dim_line_plot_color == style.m_dim_line_plot_color &&
|
|
m_arrow_plot_color == style.m_arrow_plot_color &&
|
|
m_text_plot_color == style.m_text_plot_color &&
|
|
m_ext_line_plot_weight_source == style.m_ext_line_plot_weight_source &&
|
|
m_dim_line_plot_weight_source == style.m_dim_line_plot_weight_source &&
|
|
m_ext_line_plot_weight_mm == style.m_ext_line_plot_weight_mm &&
|
|
m_dim_line_plot_weight_mm == style.m_dim_line_plot_weight_mm &&
|
|
|
|
m_fixed_extension_len == style.m_fixed_extension_len &&
|
|
m_fixed_extension_len_on == style.m_fixed_extension_len_on &&
|
|
m_text_rotation == style.m_text_rotation &&
|
|
m_alt_tol_resolution == style.m_alt_tol_resolution &&
|
|
m_suppress_arrow1 == style.m_suppress_arrow1 &&
|
|
m_suppress_arrow2 == style.m_suppress_arrow2 &&
|
|
m_textmove_leader == style.m_textmove_leader &&
|
|
m_arclength_sym == style.m_arclength_sym &&
|
|
m_stack_textheight_fraction == style.m_stack_textheight_fraction &&
|
|
m_stack_format == style.m_stack_format &&
|
|
m_alt_round == style.m_alt_round &&
|
|
m_round == style.m_round &&
|
|
m_alt_zero_suppress == style.m_alt_zero_suppress &&
|
|
m_tol_zero_suppress == style.m_tol_zero_suppress &&
|
|
m_zero_suppress == style.m_zero_suppress &&
|
|
m_ang_zero_suppress == style.m_ang_zero_suppress &&
|
|
|
|
//m_arrow_type_1 == style.m_arrow_type_1 &&
|
|
//m_arrow_type_2 == style.m_arrow_type_2 &&
|
|
//m_dim_arrow_block1 == style.m_dim_arrow_block1 &&
|
|
//m_dim_arrow_block2 == style.m_dim_arrow_block2 &&
|
|
|
|
m_arrow_1 == style.m_arrow_1 &&
|
|
m_arrow_2 == style.m_arrow_2 &&
|
|
|
|
|
|
CompareValidFields(style)
|
|
)
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
//
|
|
// ON_Object overrides
|
|
|
|
bool ON_V5x_DimStyle::IsValid( ON_TextLog* text_log ) const
|
|
{
|
|
return ( Name().Length() > 0 && Index() >= 0);
|
|
}
|
|
|
|
void ON_V5x_DimStyle::Dump( ON_TextLog& dump ) const
|
|
{
|
|
ON_ModelComponent::Dump(dump);
|
|
}
|
|
|
|
|
|
// Called to attach userdata to a dimstyle in a V6 model
|
|
// to write it to a V5 file (SaveAs V5)
|
|
bool ON_V5x_DimStyle::AttachDimstyleExtra()
|
|
{
|
|
ON_DimStyleExtra* pExtra = 0;
|
|
// Get or make userdata
|
|
// Look first so it only gets put on once.
|
|
pExtra = ON_DimStyleExtra::Cast(GetUserData(ON_CLASS_ID(ON_DimStyleExtra)));
|
|
if (pExtra == 0)
|
|
{
|
|
pExtra = new ON_DimStyleExtra;
|
|
if (pExtra)
|
|
{
|
|
if (!AttachUserData(pExtra))
|
|
{
|
|
delete pExtra;
|
|
pExtra = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (0 != pExtra)
|
|
{
|
|
// Update all of the values even if the userdata was already there
|
|
pExtra->m_userdata_copycount = 0;
|
|
pExtra->m_tolerance_style = m_tolerance_style;
|
|
pExtra->m_tolerance_resolution = m_tolerance_resolution;
|
|
pExtra->m_tolerance_upper_value = m_tolerance_upper_value;
|
|
pExtra->m_tolerance_lower_value = m_tolerance_lower_value;
|
|
pExtra->m_tolerance_height_scale = m_tolerance_height_scale;
|
|
pExtra->m_baseline_spacing = m_baseline_spacing;
|
|
pExtra->m_bDrawMask = m_bDrawMask;
|
|
pExtra->m_mask_color_source = m_mask_color_source;
|
|
pExtra->m_mask_color = m_mask_color;
|
|
pExtra->m_dimscale = m_dimscale;
|
|
pExtra->m_dimscale_source = m_dimscale_source;
|
|
pExtra->m_parent_dimstyle = ParentId();
|
|
pExtra->m_source_dimstyle = m_source_dimstyle;
|
|
|
|
const unsigned int count = (unsigned int)(sizeof(m_field_override) / sizeof(m_field_override[0]));
|
|
if ( 0 == m_field_override_count )
|
|
ClearAllFieldOverrides(); // insure m_field_override[] is initialized.
|
|
|
|
pExtra->m_valid_fields.Reserve(ON_DimStyleExtra::eFieldCount);
|
|
pExtra->m_valid_fields.SetCount(ON_DimStyleExtra::eFieldCount);
|
|
pExtra->m_valid_fields.Zero();
|
|
for (int i = 0; i < ON_DimStyleExtra::eFieldCount; i++)
|
|
{
|
|
pExtra->m_valid_fields[i] = (i < count) ? m_field_override[i] : false;
|
|
}
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
//void ON_V5x_DimStyle::ConsolidateDimstyleExtra()
|
|
//{
|
|
// ON_DimStyleExtra* extra = ON_DimStyleExtra::Cast(this->GetUserData(ON_CLASS_ID(ON_DimStyleExtra)));
|
|
// if (extra)
|
|
// {
|
|
// m_tolerance_style = extra->m_tolerance_style;
|
|
// m_tolerance_resolution = extra->m_tolerance_resolution;
|
|
// m_tolerance_upper_value = extra->m_tolerance_upper_value;
|
|
// m_tolerance_lower_value = extra->m_tolerance_lower_value;
|
|
// m_tolerance_height_scale = extra->m_tolerance_height_scale;
|
|
// m_baseline_spacing = extra->m_baseline_spacing;
|
|
// m_bDrawMask = extra->m_bDrawMask;
|
|
// m_mask_color_source = extra->m_mask_color_source;
|
|
// m_mask_color = extra->m_mask_color;
|
|
// m_dimscale = extra->m_dimscale;
|
|
// m_dimscale_source = extra->m_dimscale_source;
|
|
// m_parent_dimstyle = extra->m_parent_dimstyle;
|
|
// m_source_dimstyle = extra->m_source_dimstyle;
|
|
//
|
|
// if ( 0 == m_field_override_count )
|
|
// ClearAllFieldOverrides(); // insure m_field_override[] is initialized
|
|
// int count = (int)(sizeof(m_field_override)/sizeof(m_field_override[0]));
|
|
// if (count > extra->m_valid_fields.Count())
|
|
// count = extra->m_valid_fields.Count();
|
|
// for (int i = 0; i < count; i++)
|
|
// m_field_override[i] = extra->m_valid_fields[i];
|
|
//
|
|
// DetachUserData(extra);
|
|
// delete extra;
|
|
// }
|
|
//}
|
|
|
|
bool ON_V5x_DimStyle::Write(
|
|
ON_BinaryArchive& file // serialize definition to binary archive
|
|
) const
|
|
{
|
|
if (file.Archive3dmVersion() >= 60)
|
|
{
|
|
ON_ERROR("Never save V5 dimstyles in a V6 file.");
|
|
//// Write v6 and beyond
|
|
//return Write_v6(file);
|
|
return false;
|
|
}
|
|
|
|
if (file.Archive3dmVersion() == 5 || file.Archive3dmVersion() == 50)
|
|
{
|
|
// See if we need to write some user data for the v5 file
|
|
const_cast<ON_V5x_DimStyle*>(this)->AttachDimstyleExtra();
|
|
}
|
|
|
|
const bool rc = Write_v5(file) ? true : false;
|
|
|
|
return rc;
|
|
}
|
|
|
|
|
|
bool ON_V5x_DimStyle::Read(
|
|
ON_BinaryArchive& file // restore definition from binary archive
|
|
)
|
|
{
|
|
// ON_V5x_DimStyle::Default cannot be a static member
|
|
// because we cannot control order of static initialization on Mac / Clang
|
|
// and all public statics in opennurbs_statics.cpp need to be initialized
|
|
// before the obsolete ON_V5x_DimStyle can be initialzed.
|
|
// The ON_V5x_DimStyle::Default() function is called only when files are
|
|
// read and by that time ON_DimStyle::Default exists.
|
|
const ON_V5x_DimStyle unset_dimstyle(ON::LengthUnitSystem::None, ON_DimStyle::Unset);
|
|
*this = unset_dimstyle;
|
|
|
|
if (file.Archive3dmVersion() < 60)
|
|
return Internal_Read_v5(file);
|
|
else
|
|
{
|
|
// Read v6 and beyond
|
|
// This is a file saved by a very early version of Rhino 6 WIP
|
|
return Internal_Read_v6(file);
|
|
}
|
|
}
|
|
|
|
bool ON_V5x_DimStyle::Internal_Read_v6(
|
|
ON_BinaryArchive& file // restore definition from binary archive
|
|
)
|
|
{
|
|
ClearModelComponentAttributes(ON_ModelComponent::Attributes::AllAttributes);
|
|
|
|
int major_version = 0;
|
|
int minor_version = 0;
|
|
bool rc = file.Read3dmChunkVersion(&major_version, &minor_version);
|
|
|
|
if (major_version >= 1)
|
|
{
|
|
int dimstyle_index = Index();
|
|
if (rc) rc = file.ReadInt(&dimstyle_index);
|
|
if (rc)
|
|
SetIndex(dimstyle_index);
|
|
ON_wString dimstyle_name;
|
|
if (rc) rc = file.ReadString(dimstyle_name);
|
|
if (rc) SetName(dimstyle_name);
|
|
|
|
if (rc) rc = file.ReadDouble(&m_extextension);
|
|
if (rc) rc = file.ReadDouble(&m_extoffset);
|
|
if (rc) rc = file.ReadDouble(&m_arrowsize);
|
|
if (rc) rc = file.ReadDouble(&m_centermark);
|
|
if (rc) rc = file.ReadDouble(&m_textgap);
|
|
|
|
unsigned int ui = 0;
|
|
if (rc) rc = file.ReadInt(&ui);
|
|
if (rc) m_dimstyle_textalign = (ON_INTERNAL_OBSOLETE::V5_TextDisplayMode)ui;
|
|
if (rc) rc = file.ReadInt(&m_arrowtype);
|
|
if (rc) rc = file.ReadInt(&m_angularunits);
|
|
if (rc) rc = file.ReadInt(&m_lengthformat);
|
|
if (rc) rc = file.ReadInt(&m_angleformat);
|
|
if (rc) rc = file.ReadInt(&m_lengthresolution);
|
|
if (rc) rc = file.ReadInt(&m_angleresolution);
|
|
int text_style_index = ON_UNSET_INT_INDEX;
|
|
if (rc) rc = file.ReadInt(&text_style_index);
|
|
if (rc)
|
|
{
|
|
const ON_TextStyle* text_style = file.ArchiveTextStyleFromArchiveTextStyleIndex(text_style_index);
|
|
if (nullptr != text_style)
|
|
SetV5TextStyle(*text_style);
|
|
}
|
|
|
|
if (rc && minor_version < 3 )
|
|
SetId(); // non nil id is required
|
|
|
|
if (minor_version >= 1)
|
|
if (rc) rc = file.ReadDouble(&m_textheight);
|
|
|
|
// added 1/13/05
|
|
if (minor_version >= 2)
|
|
{
|
|
if (rc) rc = file.ReadDouble(&m_lengthfactor);
|
|
// assume length factor value was junk from buggy .NET user inteface
|
|
m_lengthfactor = 1.0;
|
|
|
|
if (rc) rc = file.ReadString(m_prefix);
|
|
if (rc) rc = file.ReadString(m_suffix);
|
|
|
|
if (rc) rc = file.ReadBool(&m_bAlternate);
|
|
if (rc) rc = file.ReadDouble(&m_alternate_lengthfactor);
|
|
if (rc) rc = file.ReadInt(&m_alternate_lengthformat);
|
|
if (rc) rc = file.ReadInt(&m_alternate_lengthresolution);
|
|
if (rc) rc = file.ReadInt(&m_alternate_angleformat);
|
|
if (rc) rc = file.ReadInt(&m_alternate_angleresolution);
|
|
if (rc) rc = file.ReadString(m_alternate_prefix);
|
|
if (rc) rc = file.ReadString(m_alternate_suffix);
|
|
unsigned int not_used = 0;
|
|
if (rc) rc = file.ReadInt(¬_used); // Obsolete - no longer used
|
|
|
|
if (minor_version >= 3)
|
|
{
|
|
ON_UUID dimstyle_id = Id();
|
|
if (rc) rc = file.ReadUuid(dimstyle_id);
|
|
if (rc)
|
|
{
|
|
if (ON_nil_uuid == dimstyle_id)
|
|
dimstyle_id = ON_CreateId(); // non nil id is required
|
|
SetId(dimstyle_id);
|
|
}
|
|
}
|
|
}
|
|
// Added Dec 28, 05 ver 1.4
|
|
if (minor_version >= 4)
|
|
if (rc) rc = file.ReadDouble(&m_dimextension);
|
|
|
|
// Added Mar 23 06 ver 1.5
|
|
if (minor_version >= 5)
|
|
{
|
|
if (rc) rc = file.ReadDouble(&m_leaderarrowsize);
|
|
if (rc) rc = file.ReadInt(&m_leaderarrowtype);
|
|
if (rc) rc = file.ReadBool(&m_bSuppressExtension1);
|
|
if (rc) rc = file.ReadBool(&m_bSuppressExtension2);
|
|
}
|
|
|
|
// Apr 10, 2014 - V6 - ver 1.6
|
|
// Moved DimstyleExtra userdata fields into main class
|
|
if (minor_version >= 6)
|
|
{
|
|
ON_UUID parent_dimstyle_id = ParentId();
|
|
if (rc) rc = file.ReadUuid(parent_dimstyle_id);
|
|
SetParentId(parent_dimstyle_id);
|
|
|
|
ClearAllFieldOverrides();
|
|
ON_SimpleArray<bool> valid_fields;
|
|
if (rc) rc = file.ReadArray(valid_fields);
|
|
unsigned int count = (unsigned int)(sizeof(m_field_override)/sizeof(m_field_override[0]));
|
|
if ( count > valid_fields.UnsignedCount())
|
|
count = valid_fields.UnsignedCount();
|
|
for (unsigned int i = 0; i < count; i++)
|
|
{
|
|
m_field_override[i] = valid_fields[i];
|
|
if ( m_field_override[i] )
|
|
m_field_override_count++;
|
|
}
|
|
|
|
if (rc) rc = file.ReadInt(&m_tolerance_style);
|
|
if (rc) rc = file.ReadInt(&m_tolerance_resolution);
|
|
|
|
if (rc) rc = file.ReadDouble(&m_tolerance_upper_value);
|
|
if (rc) rc = file.ReadDouble(&m_tolerance_lower_value);
|
|
if (rc) rc = file.ReadDouble(&m_tolerance_height_scale);
|
|
|
|
if (rc) rc = file.ReadDouble(&m_baseline_spacing);
|
|
|
|
if (rc) rc = file.ReadBool(&m_bDrawMask);
|
|
if (rc) rc = file.ReadInt(&m_mask_color_source);
|
|
if (rc) rc = file.ReadColor(m_mask_color);
|
|
|
|
if (rc) rc = file.ReadDouble(&m_dimscale);
|
|
if (rc) rc = file.ReadInt(&m_dimscale_source);
|
|
m_source_dimstyle = ON_nil_uuid;
|
|
if (rc)
|
|
{
|
|
// The m_source_dimstyle uuid got to the V6 3dm file when it still used V5 dimstyles.
|
|
// But, it was not added correctly.
|
|
// Checking for enough room prevents attempting to read beyond the end of the chunk
|
|
ON_3DM_BIG_CHUNK c;
|
|
if (file.GetCurrentChunk(c) > 0)
|
|
{
|
|
ON__UINT64 len = c.LengthRemaining(file.CurrentPosition());
|
|
if ( 16 == len )
|
|
rc = file.ReadUuid(m_source_dimstyle);
|
|
else
|
|
{
|
|
char buffer[8];
|
|
while (rc && len >= 8)
|
|
{
|
|
rc = file.ReadByte(8, buffer);
|
|
len -= 8;
|
|
}
|
|
while (rc && len > 0)
|
|
{
|
|
rc = file.ReadByte(1, buffer);
|
|
len--;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
rc = false;
|
|
|
|
if (rc)
|
|
IfIdIsNilSetId();
|
|
|
|
|
|
return rc;
|
|
}
|
|
|
|
|
|
bool ON_V5x_DimStyle::Write_v5(
|
|
ON_BinaryArchive& file // serialize definition to binary archive
|
|
) const
|
|
{
|
|
// March 22, 2010 - Global DimStyle was obsoleted and moved into DimStyles
|
|
// So now for writing older version files, its multiplied into all distance values
|
|
double ds = 1.0;
|
|
if (file.Archive3dmVersion() < 5)
|
|
ds = DimScale();
|
|
|
|
// changed to version 1.4 Dec 28, 05
|
|
// changed to version 1.5 Mar 23, 06
|
|
bool rc = file.Write3dmChunkVersion(1,5);
|
|
|
|
if (rc) rc = file.Write3dmReferencedComponentIndex(*this);
|
|
if (rc) rc = file.WriteString(Name());
|
|
|
|
if (rc) rc = file.WriteDouble(m_extextension * ds);
|
|
if (rc) rc = file.WriteDouble(m_extoffset * ds);
|
|
if (rc) rc = file.WriteDouble(m_arrowsize * ds);
|
|
if (rc) rc = file.WriteDouble(m_centermark * ds);
|
|
if (rc) rc = file.WriteDouble(m_textgap * ds);
|
|
|
|
if (rc) rc = file.WriteInt((unsigned int)m_dimstyle_textalign);
|
|
if (rc) rc = file.WriteInt(m_arrowtype);
|
|
if (rc) rc = file.WriteInt(m_angularunits);
|
|
if (rc) rc = file.WriteInt(m_lengthformat);
|
|
if (rc) rc = file.WriteInt(m_angleformat);
|
|
if (rc) rc = file.WriteInt(m_lengthresolution);
|
|
if (rc) rc = file.WriteInt(m_angleresolution);
|
|
|
|
// legacy text style index
|
|
// for V5 archives, the text style index = dim style index.
|
|
if (rc) rc = file.Write3dmReferencedComponentIndex(*this);
|
|
|
|
if (rc) rc = file.WriteDouble(m_textheight * ds);
|
|
|
|
// added 1/13/05 ver 1.2
|
|
if (rc) rc = file.WriteDouble(m_lengthfactor);
|
|
if (rc) rc = file.WriteString(m_prefix);
|
|
if (rc) rc = file.WriteString(m_suffix);
|
|
|
|
if (rc) rc = file.WriteBool(m_bAlternate);
|
|
if (rc) rc = file.WriteDouble(m_alternate_lengthfactor);
|
|
if (rc) rc = file.WriteInt(m_alternate_lengthformat);
|
|
if (rc) rc = file.WriteInt(m_alternate_lengthresolution);
|
|
if (rc) rc = file.WriteInt(m_alternate_angleformat);
|
|
if (rc) rc = file.WriteInt(m_alternate_angleresolution);
|
|
if (rc) rc = file.WriteString(m_alternate_prefix);
|
|
if (rc) rc = file.WriteString(m_alternate_suffix);
|
|
|
|
unsigned int not_used = 0;
|
|
if (rc) rc = file.WriteInt(not_used);
|
|
|
|
// Added 24 October 2005 ver 1.3
|
|
if (rc) rc = file.WriteUuid(Id());
|
|
|
|
// Added Dec 28, 05 ver 1.4
|
|
if (rc) rc = file.WriteDouble(m_dimextension * ds);
|
|
|
|
// Added Mar 23 06 ver 1.5
|
|
if (rc) rc = file.WriteDouble(m_leaderarrowsize * ds);
|
|
if (rc) rc = file.WriteInt(m_leaderarrowtype);
|
|
if (rc) rc = file.WriteBool(m_bSuppressExtension1);
|
|
if (rc) rc = file.WriteBool(m_bSuppressExtension2);
|
|
|
|
return rc;
|
|
}
|
|
|
|
void ON_Internal_FixBogusDimStyleLengthFactor(
|
|
const ON_BinaryArchive& file,
|
|
double& dimstyle_length_factor
|
|
)
|
|
{
|
|
if (1.0 == dimstyle_length_factor)
|
|
return;
|
|
if (false == ON_IsValid(dimstyle_length_factor))
|
|
{
|
|
dimstyle_length_factor = 1.0;
|
|
return;
|
|
}
|
|
|
|
// The .NET Dimstyle interface from Jan - Jun 16 2017, was incorrectly
|
|
// setting m_lengthfactor and making a real mess of things.
|
|
// When correctly used, it is extremely rare for m_lengthfactor to be any value except 1.0
|
|
const unsigned int opennurbs_version = file.ArchiveOpenNURBSVersion();
|
|
unsigned int version_year = 0;
|
|
unsigned int version_month = 0;
|
|
unsigned int version_day_of_month = 0;
|
|
if (ON_VersionNumberParse(opennurbs_version,nullptr,nullptr,&version_year,&version_month,&version_day_of_month,nullptr))
|
|
{
|
|
if (version_year >= 2000 && version_year < 2017)
|
|
return; // before 2017
|
|
if (version_year >= 2018)
|
|
return; // after 2017
|
|
if (version_month >= 8 && version_month <= 12)
|
|
return; // August through December 2017
|
|
if (version_day_of_month >= 6)
|
|
return; // July 6, 2017 through July 31, 2017
|
|
}
|
|
dimstyle_length_factor = 1.0; // fix junky value written from Jan 1, 2017 throught July 5, 2017
|
|
}
|
|
|
|
bool ON_V5x_DimStyle::Internal_Read_v5(
|
|
ON_BinaryArchive& file // restore definition from binary archive
|
|
)
|
|
{
|
|
ClearModelComponentAttributes(ON_ModelComponent::Attributes::AllAttributes);
|
|
|
|
int major_version = 0;
|
|
int minor_version = 0;
|
|
bool rc = file.Read3dmChunkVersion(&major_version,&minor_version);
|
|
|
|
|
|
if ( major_version >= 1 )
|
|
{
|
|
int dimstyle_index = Index();
|
|
if ( rc) rc = file.ReadInt( &dimstyle_index);
|
|
if ( rc )
|
|
SetIndex(dimstyle_index);
|
|
|
|
ON_wString dimstyle_name;
|
|
if ( rc) rc = file.ReadString( dimstyle_name);
|
|
if (rc)
|
|
SetName(dimstyle_name);
|
|
|
|
if ( rc) rc = file.ReadDouble( &m_extextension);
|
|
if ( rc) rc = file.ReadDouble( &m_extoffset);
|
|
if ( rc) rc = file.ReadDouble( &m_arrowsize);
|
|
if ( rc) rc = file.ReadDouble( &m_centermark);
|
|
if ( rc) rc = file.ReadDouble( &m_textgap);
|
|
|
|
unsigned int ui = 0;
|
|
if (rc) rc = file.ReadInt(&ui);
|
|
if (rc) m_dimstyle_textalign = (ON_INTERNAL_OBSOLETE::V5_TextDisplayMode)ui;
|
|
if ( rc) rc = file.ReadInt( &m_arrowtype);
|
|
if ( rc) rc = file.ReadInt( &m_angularunits);
|
|
if ( rc) rc = file.ReadInt( &m_lengthformat);
|
|
if ( rc) rc = file.ReadInt( &m_angleformat);
|
|
if ( rc) rc = file.ReadInt( &m_lengthresolution);
|
|
if ( rc) rc = file.ReadInt( &m_angleresolution);
|
|
int text_style_index = ON_UNSET_INT_INDEX;
|
|
if ( rc) rc = file.ReadInt( &text_style_index);
|
|
if (rc)
|
|
{
|
|
const ON_TextStyle* text_style = file.ArchiveTextStyleFromArchiveTextStyleIndex(text_style_index);
|
|
if (text_style)
|
|
m_v5_text_style = *text_style;
|
|
}
|
|
|
|
if ( rc && minor_version < 3 )
|
|
SetId(); // older versions did not have an id.
|
|
|
|
if( minor_version >= 1)
|
|
if ( rc) rc = file.ReadDouble( &m_textheight);
|
|
|
|
// added 1/13/05
|
|
if( minor_version >= 2)
|
|
{
|
|
if (rc)
|
|
{
|
|
rc = file.ReadDouble(&m_lengthfactor);
|
|
if (rc)
|
|
ON_Internal_FixBogusDimStyleLengthFactor(file, m_lengthfactor);
|
|
}
|
|
|
|
if (rc) rc = file.ReadString( m_prefix);
|
|
if (rc) rc = file.ReadString( m_suffix);
|
|
|
|
if (rc) rc = file.ReadBool( &m_bAlternate);
|
|
if (rc) rc = file.ReadDouble(&m_alternate_lengthfactor);
|
|
if (rc)
|
|
ON_Internal_FixBogusDimStyleLengthFactor(file, m_alternate_lengthfactor);
|
|
|
|
if (rc) rc = file.ReadInt( &m_alternate_lengthformat);
|
|
if (rc) rc = file.ReadInt( &m_alternate_lengthresolution);
|
|
if (rc) rc = file.ReadInt( &m_alternate_angleformat);
|
|
if (rc) rc = file.ReadInt( &m_alternate_angleresolution);
|
|
if (rc) rc = file.ReadString( m_alternate_prefix);
|
|
if (rc) rc = file.ReadString( m_alternate_suffix);
|
|
|
|
unsigned int not_used = 0;
|
|
if (rc) rc = file.ReadInt( ¬_used);
|
|
|
|
if ( minor_version >= 3 )
|
|
{
|
|
ON_UUID dimstyle_id = Id();
|
|
if (rc) rc = file.ReadUuid(dimstyle_id);
|
|
if (rc)
|
|
{
|
|
if (ON_nil_uuid == dimstyle_id)
|
|
dimstyle_id = ON_CreateId(); // non-nil id is required
|
|
SetId(dimstyle_id);
|
|
}
|
|
}
|
|
}
|
|
// Added Dec 28, 05 ver 1.4
|
|
if( minor_version >= 4)
|
|
if( rc) rc = file.ReadDouble( &m_dimextension);
|
|
|
|
// Added Mar 23 06 ver 1.5
|
|
if( minor_version >= 5)
|
|
{
|
|
if (rc) rc = file.ReadDouble( &m_leaderarrowsize);
|
|
if (rc) rc = file.ReadInt( &m_leaderarrowtype);
|
|
if (rc) rc = file.ReadBool( &m_bSuppressExtension1);
|
|
if (rc) rc = file.ReadBool( &m_bSuppressExtension2);
|
|
}
|
|
}
|
|
else
|
|
rc = false;
|
|
|
|
if (rc)
|
|
IfIdIsNilSetId();
|
|
|
|
return rc;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::EmergencyDestroy()
|
|
{
|
|
m_prefix.EmergencyDestroy();
|
|
m_suffix.EmergencyDestroy();
|
|
m_alternate_prefix.EmergencyDestroy();
|
|
m_alternate_suffix.EmergencyDestroy();
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Interface
|
|
|
|
double ON_V5x_DimStyle::ExtExtension() const
|
|
{
|
|
return m_extextension;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetExtExtension( const double e)
|
|
{
|
|
// Allow negative?
|
|
m_extextension = e;
|
|
}
|
|
|
|
double ON_V5x_DimStyle::ExtOffset() const
|
|
{
|
|
return m_extoffset;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetExtOffset( const double e)
|
|
{
|
|
m_extoffset = e;
|
|
}
|
|
|
|
double ON_V5x_DimStyle::ArrowSize() const
|
|
{
|
|
return m_arrowsize;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetArrowSize( const double e)
|
|
{
|
|
m_arrowsize = e;
|
|
}
|
|
|
|
double ON_V5x_DimStyle::LeaderArrowSize() const
|
|
{
|
|
return m_leaderarrowsize;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetLeaderArrowSize( const double e)
|
|
{
|
|
m_leaderarrowsize = e;
|
|
}
|
|
|
|
double ON_V5x_DimStyle::CenterMark() const
|
|
{
|
|
return m_centermark;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetCenterMark( const double e)
|
|
{
|
|
m_centermark = e;
|
|
}
|
|
|
|
ON_INTERNAL_OBSOLETE::V5_TextDisplayMode ON_V5x_DimStyle::TextAlignment() const
|
|
{
|
|
return m_dimstyle_textalign;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetTextAlignment( ON_INTERNAL_OBSOLETE::V5_TextDisplayMode a)
|
|
{
|
|
m_dimstyle_textalign = a;
|
|
}
|
|
|
|
int ON_V5x_DimStyle::ArrowType() const
|
|
{
|
|
return m_arrowtype;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetArrowType( eArrowType a)
|
|
{
|
|
m_arrowtype = a;
|
|
}
|
|
|
|
int ON_V5x_DimStyle::LeaderArrowType() const
|
|
{
|
|
return m_leaderarrowtype;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetLeaderArrowType( eArrowType a)
|
|
{
|
|
m_leaderarrowtype = a;
|
|
}
|
|
|
|
int ON_V5x_DimStyle::AngularUnits() const
|
|
{
|
|
return m_angularunits;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetAngularUnits( int u)
|
|
{
|
|
m_angularunits = u;
|
|
}
|
|
|
|
int ON_V5x_DimStyle::LengthFormat() const
|
|
{
|
|
return m_lengthformat;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetLengthFormat( int f)
|
|
{
|
|
m_lengthformat = f;
|
|
}
|
|
|
|
int ON_V5x_DimStyle::AngleFormat() const
|
|
{
|
|
return m_angleformat;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetAngleFormat( int f)
|
|
{
|
|
m_angleformat = f;
|
|
}
|
|
|
|
int ON_V5x_DimStyle::LengthResolution() const
|
|
{
|
|
return m_lengthresolution;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetLengthResolution( int r)
|
|
{
|
|
if( r >= 0 && r < 16)
|
|
{
|
|
m_lengthresolution = r;
|
|
}
|
|
}
|
|
|
|
int ON_V5x_DimStyle::AngleResolution() const
|
|
{
|
|
return m_angleresolution;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetAngleResolution( int r)
|
|
{
|
|
if( r >= 0 && r < 16)
|
|
{
|
|
m_angleresolution = r;
|
|
}
|
|
}
|
|
|
|
const ON_TextStyle& ON_V5x_DimStyle::V5TextStyle() const
|
|
{
|
|
return m_v5_text_style;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetV5TextStyle(
|
|
const ON_TextStyle& text_style
|
|
)
|
|
{
|
|
m_v5_text_style = text_style;
|
|
}
|
|
|
|
double ON_V5x_DimStyle::TextGap() const
|
|
{
|
|
return m_textgap;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetTextGap( double gap)
|
|
{
|
|
if( gap >= 0.0)
|
|
{
|
|
m_textgap = gap;
|
|
}
|
|
}
|
|
|
|
double ON_V5x_DimStyle::TextHeight() const
|
|
{
|
|
return m_textheight;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetTextHeight( double height)
|
|
{
|
|
if( ON_IsValid( height) && height > ON_SQRT_EPSILON)
|
|
{
|
|
m_textheight = height;
|
|
}
|
|
}
|
|
|
|
double ON_V5x_DimStyle::LengthFactor() const
|
|
{
|
|
return m_lengthfactor;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetLengthFactor( double factor)
|
|
{
|
|
m_lengthfactor = factor;
|
|
}
|
|
|
|
bool ON_V5x_DimStyle::Alternate() const
|
|
{
|
|
return m_bAlternate;
|
|
}
|
|
void ON_V5x_DimStyle::SetAlternate( bool bAlternate)
|
|
{
|
|
m_bAlternate = bAlternate;
|
|
}
|
|
|
|
double ON_V5x_DimStyle::AlternateLengthFactor() const
|
|
{
|
|
return m_alternate_lengthfactor;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetAlternateLengthFactor( double factor)
|
|
{
|
|
m_alternate_lengthfactor = factor;
|
|
}
|
|
|
|
int ON_V5x_DimStyle::AlternateLengthFormat() const
|
|
{
|
|
return m_alternate_lengthformat;
|
|
}
|
|
void ON_V5x_DimStyle::SetAlternateLengthFormat( int format)
|
|
{
|
|
m_alternate_lengthformat = format;
|
|
}
|
|
|
|
int ON_V5x_DimStyle::AlternateLengthResolution() const
|
|
{
|
|
return m_alternate_lengthresolution;
|
|
}
|
|
void ON_V5x_DimStyle::SetAlternateLengthResolution( int resolution)
|
|
{
|
|
m_alternate_lengthresolution = resolution;
|
|
}
|
|
|
|
int ON_V5x_DimStyle::AlternateAngleFormat() const
|
|
{
|
|
return m_alternate_angleformat;
|
|
}
|
|
void ON_V5x_DimStyle::SetAlternateAngleFormat( int format)
|
|
{
|
|
m_alternate_angleformat = format;
|
|
}
|
|
|
|
int ON_V5x_DimStyle::AlternateAngleResolution() const
|
|
{
|
|
return m_alternate_angleresolution;
|
|
}
|
|
void ON_V5x_DimStyle::SetAlternateAngleResolution( int resolution)
|
|
{
|
|
m_alternate_angleresolution = resolution;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::GetPrefix( ON_wString& prefix) const
|
|
{
|
|
prefix = m_prefix;
|
|
}
|
|
const wchar_t* ON_V5x_DimStyle::Prefix() const
|
|
{
|
|
return static_cast< const wchar_t* >(m_prefix);
|
|
}
|
|
void ON_V5x_DimStyle::SetPrefix( wchar_t* prefix)
|
|
{
|
|
m_prefix = prefix;
|
|
}
|
|
void ON_V5x_DimStyle::SetPrefix( const wchar_t* prefix)
|
|
{
|
|
m_prefix = prefix;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::GetSuffix( ON_wString& suffix) const
|
|
{
|
|
suffix = m_suffix;
|
|
}
|
|
const wchar_t* ON_V5x_DimStyle::Suffix() const
|
|
{
|
|
return static_cast< const wchar_t* >(m_suffix);
|
|
}
|
|
void ON_V5x_DimStyle::SetSuffix( wchar_t* suffix)
|
|
{
|
|
m_suffix = suffix;
|
|
}
|
|
void ON_V5x_DimStyle::SetSuffix( const wchar_t* suffix)
|
|
{
|
|
m_suffix = suffix;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::GetAlternatePrefix( ON_wString& prefix) const
|
|
{
|
|
prefix = m_alternate_prefix;
|
|
}
|
|
const wchar_t* ON_V5x_DimStyle::AlternatePrefix() const
|
|
{
|
|
return static_cast< const wchar_t* >(m_alternate_prefix);
|
|
}
|
|
void ON_V5x_DimStyle::SetAlternatePrefix( wchar_t* prefix)
|
|
{
|
|
m_alternate_prefix = prefix;
|
|
}
|
|
void ON_V5x_DimStyle::SetAlternatePrefix( const wchar_t* prefix)
|
|
{
|
|
m_alternate_prefix = prefix;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::GetAlternateSuffix( ON_wString& suffix) const
|
|
{
|
|
suffix = m_alternate_suffix;
|
|
}
|
|
const wchar_t* ON_V5x_DimStyle::AlternateSuffix() const
|
|
{
|
|
return static_cast< const wchar_t* >(m_alternate_suffix);
|
|
}
|
|
void ON_V5x_DimStyle::SetAlternateSuffix( wchar_t* suffix)
|
|
{
|
|
m_alternate_suffix = suffix;
|
|
}
|
|
void ON_V5x_DimStyle::SetAlternateSuffix( const wchar_t* suffix)
|
|
{
|
|
m_alternate_suffix = suffix;
|
|
}
|
|
|
|
bool ON_V5x_DimStyle::SuppressExtension1() const
|
|
{
|
|
return m_bSuppressExtension1;
|
|
}
|
|
void ON_V5x_DimStyle::SetSuppressExtension1( bool suppress)
|
|
{
|
|
m_bSuppressExtension1 = suppress;
|
|
}
|
|
bool ON_V5x_DimStyle::SuppressExtension2() const
|
|
{
|
|
return m_bSuppressExtension2;
|
|
}
|
|
void ON_V5x_DimStyle::SetSuppressExtension2( bool suppress)
|
|
{
|
|
m_bSuppressExtension2 = suppress;
|
|
}
|
|
|
|
// ver 1.4, Dec 28, 05
|
|
double ON_V5x_DimStyle::DimExtension() const
|
|
{
|
|
return m_dimextension;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetDimExtension( const double e)
|
|
{
|
|
// Allow negative?
|
|
m_dimextension = e;
|
|
}
|
|
|
|
// ver 2.0 v6
|
|
|
|
void ON_V5x_DimStyle::SetExtensionLineColorSource(const ON::object_color_source src)
|
|
{
|
|
m_ext_line_color_source = (unsigned char)src;
|
|
}
|
|
ON::object_color_source ON_V5x_DimStyle::ExtensionLineColorSource() const
|
|
{
|
|
return (ON::object_color_source)m_ext_line_color_source;
|
|
}
|
|
void ON_V5x_DimStyle::SetDimensionLineColorSource(const ON::object_color_source src)
|
|
{
|
|
m_dim_line_color_source = (unsigned char)src;
|
|
}
|
|
ON::object_color_source ON_V5x_DimStyle::DimensionLineColorSource() const
|
|
{
|
|
return (ON::object_color_source)m_dim_line_color_source;
|
|
}
|
|
void ON_V5x_DimStyle::SetArrowColorSource(const ON::object_color_source src)
|
|
{
|
|
m_arrow_color_source = (unsigned char)src;
|
|
}
|
|
ON::object_color_source ON_V5x_DimStyle::ArrowColorSource() const
|
|
{
|
|
return (ON::object_color_source)m_arrow_color_source;
|
|
}
|
|
void ON_V5x_DimStyle::SetExtensionLineColor(ON_Color c)
|
|
{
|
|
m_ext_line_color = c;
|
|
}
|
|
ON_Color ON_V5x_DimStyle::ExtensionLineColor() const
|
|
{
|
|
return m_ext_line_color;
|
|
}
|
|
void ON_V5x_DimStyle::SetDimensionLineColor(ON_Color c)
|
|
{
|
|
m_dim_line_color = c;
|
|
}
|
|
ON_Color ON_V5x_DimStyle::DimensionLineColor() const
|
|
{
|
|
return m_dim_line_color;
|
|
}
|
|
void ON_V5x_DimStyle::SetArrowColor(ON_Color c)
|
|
{
|
|
m_arrow_color = c;
|
|
}
|
|
ON_Color ON_V5x_DimStyle::ArrowColor() const
|
|
{
|
|
return m_arrow_color;
|
|
}
|
|
void ON_V5x_DimStyle::SetTextColor(ON_Color c)
|
|
{
|
|
m_text_color = c;
|
|
}
|
|
ON_Color ON_V5x_DimStyle::TextColor() const
|
|
{
|
|
return m_text_color;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetExtensionLinePlotColorSource(const ON::plot_color_source src)
|
|
{
|
|
m_ext_line_plot_color_source = (unsigned char)src;
|
|
}
|
|
ON::plot_color_source ON_V5x_DimStyle::ExtensionLinePlotColorSource() const
|
|
{
|
|
return (ON::plot_color_source)m_ext_line_plot_color_source;
|
|
}
|
|
void ON_V5x_DimStyle::SetDimensionLinePlotColorSource(const ON::plot_color_source src)
|
|
{
|
|
m_dim_line_plot_color_source = (unsigned char)src;
|
|
}
|
|
ON::plot_color_source ON_V5x_DimStyle::DimensionLinePlotColorSource() const
|
|
{
|
|
return (ON::plot_color_source)m_dim_line_plot_color_source;
|
|
}
|
|
void ON_V5x_DimStyle::SetArrowPlotColorSource(const ON::plot_color_source src)
|
|
{
|
|
m_arrow_plot_color_source = (unsigned char)src;
|
|
}
|
|
ON::plot_color_source ON_V5x_DimStyle::ArrowPlotColorSource() const
|
|
{
|
|
return (ON::plot_color_source)m_arrow_plot_color_source;
|
|
}
|
|
void ON_V5x_DimStyle::SetExtensionLinePlotColor(ON_Color c)
|
|
{
|
|
m_ext_line_plot_color = c;
|
|
}
|
|
ON_Color ON_V5x_DimStyle::ExtensionLinePlotColor() const
|
|
{
|
|
return m_ext_line_plot_color;
|
|
}
|
|
void ON_V5x_DimStyle::SetDimensionLinePlotColor(ON_Color c)
|
|
{
|
|
m_dim_line_plot_color = c;
|
|
}
|
|
ON_Color ON_V5x_DimStyle::DimensionLinePlotColor() const
|
|
{
|
|
return m_dim_line_plot_color;
|
|
}
|
|
void ON_V5x_DimStyle::SetArrowPlotColor(ON_Color c)
|
|
{
|
|
m_arrow_plot_color = c;
|
|
}
|
|
ON_Color ON_V5x_DimStyle::ArrowPlotColor() const
|
|
{
|
|
return m_arrow_plot_color;
|
|
}
|
|
void ON_V5x_DimStyle::SetTextPlotColor(ON_Color c)
|
|
{
|
|
m_text_plot_color = c;
|
|
}
|
|
ON_Color ON_V5x_DimStyle::TextPlotColor() const
|
|
{
|
|
return m_text_plot_color;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetExtensionLinePlotWeightSource(const ON::plot_weight_source src)
|
|
{
|
|
m_ext_line_plot_weight_source = (unsigned char)src;
|
|
}
|
|
ON::plot_weight_source ON_V5x_DimStyle::ExtensionLinePlotWeightSource() const
|
|
{
|
|
return (ON::plot_weight_source)m_ext_line_plot_weight_source;
|
|
}
|
|
void ON_V5x_DimStyle::SetDimensionLinePlotWeightSource(const ON::plot_weight_source src)
|
|
{
|
|
m_dim_line_plot_weight_source = (unsigned char)src;
|
|
}
|
|
ON::plot_weight_source ON_V5x_DimStyle::DimensionLinePlotWeightSource() const
|
|
{
|
|
return (ON::plot_weight_source)m_dim_line_plot_weight_source;
|
|
}
|
|
void ON_V5x_DimStyle::SetExtensionLinePlotWeight(double w)
|
|
{
|
|
m_ext_line_plot_weight_mm = w;
|
|
}
|
|
double ON_V5x_DimStyle::ExtensionLinePlotWeight() const
|
|
{
|
|
return m_ext_line_plot_weight_mm;
|
|
}
|
|
void ON_V5x_DimStyle::SetDimensionLinePlotWeight(double w)
|
|
{
|
|
m_dim_line_plot_weight_mm = w;
|
|
}
|
|
double ON_V5x_DimStyle::DimensionLinePlotWeight() const
|
|
{
|
|
return m_dim_line_plot_weight_mm;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetFixedExtensionLen(double l)
|
|
{
|
|
m_fixed_extension_len = l;
|
|
}
|
|
|
|
double ON_V5x_DimStyle::FixedExtensionLen() const
|
|
{
|
|
return m_fixed_extension_len;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetFixedExtensionLenOn(bool on)
|
|
{
|
|
m_fixed_extension_len_on = on;
|
|
}
|
|
|
|
bool ON_V5x_DimStyle::FixedExtensionLenOn() const
|
|
{
|
|
return m_fixed_extension_len_on;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetTextRotation(double r)
|
|
{
|
|
m_text_rotation = r;
|
|
}
|
|
double ON_V5x_DimStyle::TextRotation() const
|
|
{
|
|
return m_text_rotation;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetAlternateToleranceResolution(int r)
|
|
{
|
|
m_alt_tol_resolution = r;
|
|
}
|
|
int ON_V5x_DimStyle::AlternateToleranceResolution() const
|
|
{
|
|
return m_alt_tol_resolution;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetSuppressArrow1(bool s)
|
|
{
|
|
m_suppress_arrow1 = s;
|
|
}
|
|
bool ON_V5x_DimStyle::SuppressArrow1() const
|
|
{
|
|
return m_suppress_arrow1;
|
|
}
|
|
void ON_V5x_DimStyle::SetSuppressArrow2(bool s)
|
|
{
|
|
m_suppress_arrow2 = s;
|
|
}
|
|
bool ON_V5x_DimStyle::SuppressArrow2() const
|
|
{
|
|
return m_suppress_arrow2;
|
|
}
|
|
void ON_V5x_DimStyle::SetTextMoveLeader(int m)
|
|
{
|
|
m_textmove_leader = m;
|
|
}
|
|
int ON_V5x_DimStyle::TextMoveLeader() const
|
|
{
|
|
return m_textmove_leader;
|
|
}
|
|
void ON_V5x_DimStyle::SetArcLengthSymbol(int m)
|
|
{
|
|
m_arclength_sym = m;
|
|
}
|
|
int ON_V5x_DimStyle::ArcLengthSymbol() const
|
|
{
|
|
return m_arclength_sym;
|
|
}
|
|
void ON_V5x_DimStyle::SetStackFractionFormat(int f)
|
|
{
|
|
if (0 <= f && 2 >= f)
|
|
m_stack_format = f;
|
|
}
|
|
int ON_V5x_DimStyle::StackFractionFormat() const
|
|
{
|
|
return m_stack_format;
|
|
}
|
|
void ON_V5x_DimStyle::SetStackHeightFraction(double f)
|
|
{
|
|
m_stack_textheight_fraction = f;
|
|
}
|
|
double ON_V5x_DimStyle::StackHeightFraction() const
|
|
{
|
|
return m_stack_textheight_fraction;
|
|
}
|
|
void ON_V5x_DimStyle::SetRoundOff(double r)
|
|
{
|
|
m_round = r;
|
|
}
|
|
double ON_V5x_DimStyle::RoundOff() const
|
|
{
|
|
return m_round;
|
|
}
|
|
void ON_V5x_DimStyle::SetAlternateRoundOff(double r)
|
|
{
|
|
m_alt_round = r;
|
|
}
|
|
double ON_V5x_DimStyle::AlternateRoundOff() const
|
|
{
|
|
return m_alt_round;
|
|
}
|
|
void ON_V5x_DimStyle::SetZeroSuppress(int s)
|
|
{
|
|
m_zero_suppress = s;
|
|
}
|
|
int ON_V5x_DimStyle::ZeroSuppress() const
|
|
{
|
|
return m_zero_suppress;
|
|
}
|
|
void ON_V5x_DimStyle::SetAlternateZeroSuppress(int s)
|
|
{
|
|
m_alt_zero_suppress = s;
|
|
}
|
|
int ON_V5x_DimStyle::AlternateZeroSuppress() const
|
|
{
|
|
return m_alt_zero_suppress;
|
|
}
|
|
void ON_V5x_DimStyle::SetToleranceZeroSuppress(int s)
|
|
{
|
|
m_tol_zero_suppress = s;
|
|
}
|
|
int ON_V5x_DimStyle::ToleranceZeroSuppress() const
|
|
{
|
|
return m_tol_zero_suppress;
|
|
}
|
|
void ON_V5x_DimStyle::SetAngleZeroSuppress(int s)
|
|
{
|
|
m_ang_zero_suppress = s;
|
|
}
|
|
int ON_V5x_DimStyle::AngleZeroSuppress() const
|
|
{
|
|
return m_ang_zero_suppress;
|
|
}
|
|
void ON_V5x_DimStyle::SetAlternateBelow(bool below)
|
|
{
|
|
m_alt_below = below;
|
|
}
|
|
bool ON_V5x_DimStyle::AlternateBelow() const
|
|
{
|
|
return m_alt_below;
|
|
}
|
|
void ON_V5x_DimStyle::SetArrowType1(ON_Arrowhead::arrow_type type)
|
|
{
|
|
m_arrow_1.SetArrowheadType(type);
|
|
}
|
|
ON_Arrowhead::arrow_type ON_V5x_DimStyle::ArrowType1() const
|
|
{
|
|
return m_arrow_1.ArrowheadType();
|
|
}
|
|
void ON_V5x_DimStyle::SetArrowType2(ON_Arrowhead::arrow_type type)
|
|
{
|
|
m_arrow_2.SetArrowheadType(type);
|
|
}
|
|
ON_Arrowhead::arrow_type ON_V5x_DimStyle::ArrowType2() const
|
|
{
|
|
return m_arrow_2.ArrowheadType();
|
|
}
|
|
void ON_V5x_DimStyle::SetArrowBlockId1(ON_UUID id)
|
|
{
|
|
m_arrow_1.SetArrowBlockId(id);
|
|
}
|
|
ON_UUID ON_V5x_DimStyle::ArrowBlockId1() const
|
|
{
|
|
return m_arrow_1.ArrowBlockId();
|
|
}
|
|
void ON_V5x_DimStyle::SetArrowBlockId2(ON_UUID id)
|
|
{
|
|
m_arrow_2.SetArrowBlockId(id);
|
|
}
|
|
ON_UUID ON_V5x_DimStyle::ArrowBlockId2() const
|
|
{
|
|
return m_arrow_2.ArrowBlockId();
|
|
}
|
|
const ON_Arrowhead& ON_V5x_DimStyle::Arrowhead1() const
|
|
{
|
|
return m_arrow_1;
|
|
}
|
|
const ON_Arrowhead& ON_V5x_DimStyle::Arrowhead2() const
|
|
{
|
|
return m_arrow_2;
|
|
}
|
|
|
|
//--------------------------------------
|
|
// ON_DimStyleExtra access functions
|
|
// Added for v5 5/01/07 LW
|
|
|
|
|
|
bool ON_V5x_DimStyle::IsFieldOverride(ON_V5x_DimStyle::Field field_id) const
|
|
{
|
|
const unsigned int field_index = static_cast<unsigned int>(field_id);
|
|
if (m_field_override_count > 0 &&
|
|
field_index < (unsigned int)(static_cast<unsigned int>(sizeof(m_field_override) / sizeof(m_field_override[0])))
|
|
)
|
|
{
|
|
return m_field_override[field_index];
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetFieldOverride(ON_V5x_DimStyle::Field field_id, bool bOverride)
|
|
{
|
|
bOverride = bOverride ? true : false;
|
|
if (m_field_override_count > 0 || bOverride)
|
|
{
|
|
if (bOverride && 0 == m_field_override_count)
|
|
{
|
|
// Insure m_field_override[] is initialized.
|
|
ClearAllFieldOverrides();
|
|
}
|
|
if (static_cast<unsigned int>(field_id) < static_cast<unsigned int>(sizeof(m_field_override) / sizeof(m_field_override[0])))
|
|
{
|
|
if (m_field_override[(int)field_id] != bOverride)
|
|
{
|
|
if (bOverride)
|
|
m_field_override_count++;
|
|
else
|
|
m_field_override_count--;
|
|
m_field_override[(int)field_id] = bOverride;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
void ON_V5x_DimStyle::ClearAllFieldOverrides()
|
|
{
|
|
m_field_override_count = 0;
|
|
memset(m_field_override, 0, sizeof(m_field_override));
|
|
}
|
|
|
|
|
|
bool ON_V5x_DimStyle::HasOverrides() const
|
|
{
|
|
return (m_field_override_count > 0);
|
|
}
|
|
|
|
bool ON_V5x_DimStyle::OverrideFields(const ON_V5x_DimStyle& src, const ON_V5x_DimStyle& parent)
|
|
{
|
|
// NOTE WELL:
|
|
// "this" could be src or parent, so do not modify member values until they are not longer needed.
|
|
|
|
const unsigned int count = (unsigned int)(sizeof(m_field_override)/sizeof(m_field_override[0]));
|
|
|
|
unsigned int field_override_count = 0;
|
|
|
|
for(unsigned int i = 0; i < count; i++)
|
|
{
|
|
const bool bFromSrc = (src.m_field_override_count > 0 && src.m_field_override[i]);
|
|
m_field_override[i] = bFromSrc;
|
|
if ( bFromSrc )
|
|
field_override_count++;
|
|
const ON_V5x_DimStyle* copyfrom = bFromSrc ? (&src) : (&parent);
|
|
|
|
if ( this == copyfrom )
|
|
continue;
|
|
|
|
switch((Field)i)
|
|
{
|
|
case Field::fn_extextension:
|
|
SetExtExtension(copyfrom->ExtExtension());
|
|
break;
|
|
case Field::fn_extoffset:
|
|
SetExtOffset(copyfrom->ExtOffset());
|
|
break;
|
|
case Field::fn_arrowsize:
|
|
SetArrowSize(copyfrom->ArrowSize());
|
|
break;
|
|
case Field::fn_centermark:
|
|
SetCenterMark(copyfrom->CenterMark());
|
|
break;
|
|
case Field::fn_textgap:
|
|
SetTextGap(copyfrom->TextGap());
|
|
break;
|
|
case Field::fn_textheight:
|
|
SetTextHeight(copyfrom->TextHeight());
|
|
break;
|
|
case Field::fn_textalign:
|
|
SetTextAlignment(copyfrom->TextAlignment());
|
|
break;
|
|
case Field::fn_arrowtype:
|
|
SetArrowType((eArrowType)copyfrom->ArrowType());
|
|
break;
|
|
case Field::fn_angularunits:
|
|
SetAngularUnits((eArrowType)copyfrom->AngularUnits());
|
|
break;
|
|
case Field::fn_lengthformat:
|
|
SetLengthFormat(copyfrom->LengthFormat());
|
|
break;
|
|
case Field::fn_angleformat:
|
|
SetAngleFormat(copyfrom->AngleFormat());
|
|
break;
|
|
case Field::fn_angleresolution:
|
|
SetAngleResolution(copyfrom->AngleResolution());
|
|
break;
|
|
case Field::fn_lengthresolution:
|
|
SetLengthResolution(copyfrom->LengthResolution());
|
|
break;
|
|
case Field::fn_fontindex:
|
|
SetV5TextStyle(copyfrom->V5TextStyle());
|
|
break;
|
|
case Field::fn_lengthfactor:
|
|
SetLengthFactor(copyfrom->LengthFactor());
|
|
break;
|
|
case Field::fn_bAlternate:
|
|
SetAlternate(copyfrom->Alternate());
|
|
break;
|
|
case Field::fn_alternate_lengthfactor:
|
|
SetAlternateLengthFactor(copyfrom->AlternateLengthFactor());
|
|
break;
|
|
case Field::fn_alternate_lengthformat:
|
|
SetAlternateLengthFormat(copyfrom->AlternateLengthFormat());
|
|
break;
|
|
case Field::fn_alternate_lengthresolution:
|
|
SetAlternateLengthResolution(copyfrom->AlternateLengthResolution());
|
|
break;
|
|
case Field::fn_alternate_angleformat:
|
|
SetAlternateAngleFormat(copyfrom->AlternateAngleFormat());
|
|
break;
|
|
case Field::fn_alternate_angleresolution:
|
|
SetAlternateAngleResolution(copyfrom->AlternateAngleResolution());
|
|
break;
|
|
case Field::fn_prefix:
|
|
SetPrefix(copyfrom->Prefix());
|
|
break;
|
|
case Field::fn_suffix:
|
|
SetSuffix(copyfrom->Suffix());
|
|
break;
|
|
case Field::fn_alternate_prefix:
|
|
SetAlternatePrefix(copyfrom->AlternatePrefix());
|
|
break;
|
|
case Field::fn_alternate_suffix:
|
|
SetAlternateSuffix(copyfrom->AlternateSuffix());
|
|
break;
|
|
case Field::fn_dimextension:
|
|
SetDimExtension(copyfrom->DimExtension());
|
|
break;
|
|
case Field::fn_leaderarrowsize:
|
|
SetLeaderArrowSize(copyfrom->LeaderArrowSize());
|
|
break;
|
|
case Field::fn_leaderarrowtype:
|
|
SetLeaderArrowType((eArrowType)copyfrom->LeaderArrowType());
|
|
break;
|
|
case Field::fn_suppressextension1:
|
|
SetSuppressExtension1(copyfrom->SuppressExtension1());
|
|
break;
|
|
case Field::fn_suppressextension2:
|
|
SetSuppressExtension2(copyfrom->SuppressExtension2());
|
|
break;
|
|
case Field::fn_tolerance_style:
|
|
SetToleranceStyle(copyfrom->ToleranceStyle());
|
|
break;
|
|
case Field::fn_tolerance_resolution:
|
|
SetToleranceResolution(copyfrom->ToleranceResolution());
|
|
break;
|
|
case Field::fn_tolerance_upper_value:
|
|
SetToleranceUpperValue(copyfrom->ToleranceUpperValue());
|
|
break;
|
|
case Field::fn_tolerance_lower_value:
|
|
SetToleranceLowerValue(copyfrom->ToleranceLowerValue());
|
|
break;
|
|
case Field::fn_tolerance_height_scale:
|
|
SetToleranceHeightScale(copyfrom->ToleranceHeightScale());
|
|
break;
|
|
case Field::fn_baseline_spacing:
|
|
SetBaselineSpacing(copyfrom->BaselineSpacing());
|
|
break;
|
|
case Field::fn_draw_mask:
|
|
SetDrawTextMask(copyfrom->DrawTextMask());
|
|
break;
|
|
case Field::fn_mask_color_source:
|
|
SetMaskColorSource(copyfrom->MaskColorSource());
|
|
break;
|
|
case Field::fn_mask_color:
|
|
SetMaskColor(copyfrom->MaskColor());
|
|
break;
|
|
case Field::fn_dimscale:
|
|
SetDimScale(copyfrom->DimScale());
|
|
break;
|
|
case Field::fn_dimscale_source:
|
|
SetDimScaleSource(copyfrom->DimScaleSource());
|
|
break;
|
|
|
|
case Field::fn_fixed_extension_len:
|
|
SetFixedExtensionLen(copyfrom->FixedExtensionLen());
|
|
break;
|
|
case Field::fn_fixed_extension_on:
|
|
SetFixedExtensionLenOn(copyfrom->FixedExtensionLenOn());
|
|
break;
|
|
case Field::fn_text_rotation:
|
|
SetTextRotation(copyfrom->TextRotation());
|
|
break;
|
|
case Field::fn_tolerance_alt_resolution:
|
|
SetAlternateToleranceResolution(copyfrom->AlternateToleranceResolution());
|
|
break;
|
|
case Field::fn_tolerance_textheight_fraction:
|
|
SetToleranceHeightScale(copyfrom->ToleranceHeightScale());
|
|
break;
|
|
case Field::fn_suppress_arrow1:
|
|
SetSuppressArrow1(copyfrom->SuppressArrow1());
|
|
break;
|
|
case Field::fn_suppress_arrow2:
|
|
SetSuppressArrow2(copyfrom->SuppressArrow2());
|
|
break;
|
|
case Field::fn_textmove_leader:
|
|
SetTextMoveLeader(copyfrom->TextMoveLeader());
|
|
break;
|
|
case Field::fn_arclength_sym:
|
|
SetArcLengthSymbol(copyfrom->ArcLengthSymbol());
|
|
break;
|
|
case Field::fn_stack_textheight_fraction:
|
|
SetStackHeightFraction(copyfrom->StackHeightFraction());
|
|
break;
|
|
case Field::fn_stack_format:
|
|
SetStackFractionFormat(copyfrom->StackFractionFormat());
|
|
break;
|
|
case Field::fn_alt_round:
|
|
SetAlternateRoundOff(copyfrom->AlternateRoundOff());
|
|
break;
|
|
case Field::fn_round:
|
|
SetRoundOff(copyfrom->RoundOff());
|
|
break;
|
|
case Field::fn_alt_zero_suppress:
|
|
SetAlternateZeroSuppress(copyfrom->AlternateZeroSuppress());
|
|
break;
|
|
case Field::fn_tol_zero_suppress:
|
|
SetToleranceZeroSuppress(copyfrom->ToleranceZeroSuppress());
|
|
break;
|
|
case Field::fn_ang_zero_suppress:
|
|
SetAngleZeroSuppress(copyfrom->AngleZeroSuppress());
|
|
break;
|
|
case Field::fn_zero_suppress:
|
|
SetZeroSuppress(copyfrom->ZeroSuppress());
|
|
break;
|
|
case Field::fn_alt_below:
|
|
SetAlternateBelow(copyfrom->AlternateBelow());
|
|
break;
|
|
case Field::fn_dim_arrow_type1:
|
|
SetArrowType1(copyfrom->ArrowType1());
|
|
break;
|
|
case Field::fn_dim_arrow_type2:
|
|
SetArrowType2(copyfrom->ArrowType2());
|
|
break;
|
|
case Field::fn_dim_arrow_blockname1:
|
|
SetArrowBlockId1(copyfrom->ArrowBlockId1());
|
|
break;
|
|
case Field::fn_dim_arrow_blockname2:
|
|
SetArrowBlockId2(copyfrom->ArrowBlockId2());
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
m_field_override_count = field_override_count;
|
|
|
|
return true;
|
|
}
|
|
|
|
bool ON_V5x_DimStyle::InheritFields(const ON_V5x_DimStyle& parent)
|
|
{
|
|
OverrideFields(*this,parent);
|
|
return (m_field_override_count < ON_DimStyle::FieldCount);
|
|
}
|
|
|
|
bool ON_V5x_DimStyle::IsChildDimstyle() const
|
|
{
|
|
if(ParentId() != ON_nil_uuid)
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
bool ON_V5x_DimStyle::IsChildOf(const ON_UUID& parent_uuid) const
|
|
{
|
|
if(parent_uuid != ON_nil_uuid && ParentId() == parent_uuid)
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
//void ON_V5x_DimStyle::SetParentId(ON_UUID parent_id)
|
|
//{
|
|
// m_parent_dimstyle = parent_id;
|
|
//}
|
|
//
|
|
//ON_UUID ON_V5x_DimStyle::ParentId() const
|
|
//{
|
|
// return m_parent_dimstyle;
|
|
//}
|
|
|
|
// Tolerances
|
|
// Tolerance style
|
|
// 0: None
|
|
// 1: Symmetrical
|
|
// 2: Deviation
|
|
// 3: Limits
|
|
// 4: Basic
|
|
int ON_V5x_DimStyle::ToleranceStyle() const
|
|
{
|
|
return m_tolerance_style;
|
|
}
|
|
|
|
int ON_V5x_DimStyle::ToleranceResolution() const
|
|
{
|
|
return m_tolerance_resolution;
|
|
}
|
|
|
|
double ON_V5x_DimStyle::ToleranceUpperValue() const
|
|
{
|
|
return m_tolerance_upper_value;
|
|
}
|
|
|
|
double ON_V5x_DimStyle::ToleranceLowerValue() const
|
|
{
|
|
return m_tolerance_lower_value;
|
|
}
|
|
|
|
double ON_V5x_DimStyle::ToleranceHeightScale() const
|
|
{
|
|
return m_tolerance_height_scale;
|
|
}
|
|
|
|
double ON_V5x_DimStyle::BaselineSpacing() const
|
|
{
|
|
return m_baseline_spacing;
|
|
}
|
|
|
|
//static
|
|
int ON_V5x_DimStyle::DefaultToleranceStyle()
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
//static
|
|
int ON_V5x_DimStyle::DefaultToleranceResolution()
|
|
{
|
|
return 4;
|
|
}
|
|
|
|
//static
|
|
double ON_V5x_DimStyle::DefaultToleranceUpperValue()
|
|
{
|
|
return 0.0;
|
|
}
|
|
|
|
//static
|
|
double ON_V5x_DimStyle::DefaultToleranceLowerValue()
|
|
{
|
|
return 0.0;
|
|
}
|
|
|
|
//static
|
|
double ON_V5x_DimStyle::DefaultToleranceHeightScale()
|
|
{
|
|
return 1.0;
|
|
}
|
|
|
|
//static
|
|
double ON_V5x_DimStyle::DefaultBaselineSpacing()
|
|
{
|
|
return 1.0;
|
|
}
|
|
|
|
// static
|
|
bool ON_V5x_DimStyle::DefaultDrawTextMask()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
// static
|
|
int ON_V5x_DimStyle::DefaultMaskColorSource()
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
// static
|
|
ON_Color ON_V5x_DimStyle::DefaultMaskColor()
|
|
{
|
|
return ON_Color(255, 255, 255);
|
|
}
|
|
|
|
// static
|
|
double ON_V5x_DimStyle::DefaultDimScale()
|
|
{
|
|
return 1.0;
|
|
}
|
|
|
|
// static
|
|
int ON_V5x_DimStyle::DefaultDimScaleSource()
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
|
|
//-------------------
|
|
void ON_V5x_DimStyle::Scale(double scale)
|
|
{
|
|
if (ON_IsValid(scale) && scale > ON_SQRT_EPSILON && 1.0 != scale)
|
|
{
|
|
m_extextension *= scale;
|
|
m_extoffset *= scale;
|
|
m_arrowsize *= scale;
|
|
m_centermark *= scale;
|
|
m_textgap *= scale;
|
|
m_textheight *= scale;
|
|
m_dimextension *= scale;
|
|
m_leaderarrowsize *= scale;
|
|
m_baseline_spacing *= scale;
|
|
}
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetToleranceStyle(int style)
|
|
{
|
|
if (style >= tsMin && style <= tsMax)
|
|
m_tolerance_style = style;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetToleranceResolution(int resolution)
|
|
{
|
|
if (resolution >= 0 && resolution < 16)
|
|
m_tolerance_resolution = resolution;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetToleranceUpperValue(double upper_value)
|
|
{
|
|
if (ON_IsValid(upper_value))
|
|
m_tolerance_upper_value = upper_value;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetToleranceLowerValue(double lower_value)
|
|
{
|
|
if (ON_IsValid(lower_value))
|
|
m_tolerance_lower_value = lower_value;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetToleranceHeightScale(double scale)
|
|
{
|
|
if (ON_IsValid(scale) && scale > ON_SQRT_EPSILON)
|
|
m_tolerance_height_scale = scale;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetBaselineSpacing(double spacing)
|
|
{
|
|
if (ON_IsValid(spacing) && spacing > ON_SQRT_EPSILON)
|
|
m_baseline_spacing = spacing;
|
|
}
|
|
|
|
bool ON_V5x_DimStyle::DrawTextMask() const
|
|
{
|
|
return m_bDrawMask;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetDrawTextMask(bool bDraw)
|
|
{
|
|
m_bDrawMask = bDraw ? true : false;
|
|
}
|
|
|
|
int ON_V5x_DimStyle::MaskColorSource() const
|
|
{
|
|
return m_mask_color_source;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetMaskColorSource(int source)
|
|
{
|
|
if (source == 1)
|
|
m_mask_color_source = 1;
|
|
else
|
|
m_mask_color_source = 0;
|
|
}
|
|
|
|
ON_Color ON_V5x_DimStyle::MaskColor() const
|
|
{
|
|
return m_mask_color;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetMaskColor(ON_Color color)
|
|
{
|
|
m_mask_color = color;
|
|
}
|
|
|
|
double ON_V5x_DimStyle::MaskOffsetFactor() const
|
|
{
|
|
if (m_textheight != 0.0)
|
|
return 0.5 * m_textgap / m_textheight;
|
|
else
|
|
return 0.0;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetDimScale(double scale)
|
|
{
|
|
if (ON_IsValid(scale))
|
|
m_dimscale = scale;
|
|
}
|
|
|
|
double ON_V5x_DimStyle::DimScale() const
|
|
{
|
|
return m_dimscale;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetDimScaleSource(int source)
|
|
{
|
|
m_dimscale_source = source;
|
|
}
|
|
|
|
int ON_V5x_DimStyle::DimScaleSource() const
|
|
{
|
|
return m_dimscale_source;
|
|
}
|
|
|
|
void ON_V5x_DimStyle::SetSourceDimstyle(ON_UUID source_uuid)
|
|
{
|
|
// Can be ON_nil_uuid
|
|
m_source_dimstyle = source_uuid;
|
|
}
|
|
|
|
ON_UUID ON_V5x_DimStyle::SourceDimstyle() const
|
|
{
|
|
return m_source_dimstyle;
|
|
}
|
|
|
|
// returns true if they are the same
|
|
bool ON_V5x_DimStyle::CompareFields(const ON_V5x_DimStyle& other) const
|
|
{
|
|
if(
|
|
(m_extextension != other.m_extextension) ||
|
|
(m_extoffset != other.m_extoffset) ||
|
|
(m_arrowsize != other.m_arrowsize) ||
|
|
(m_centermark != other.m_centermark) ||
|
|
(m_textgap != other.m_textgap) ||
|
|
(m_textheight != other.m_textheight) ||
|
|
(m_dimstyle_textalign != other.m_dimstyle_textalign) ||
|
|
(m_arrowtype != other.m_arrowtype) ||
|
|
(m_angularunits != other.m_angularunits) ||
|
|
(m_lengthformat != other.m_lengthformat) ||
|
|
(m_angleformat != other.m_angleformat) ||
|
|
(m_angleresolution != other.m_angleresolution) ||
|
|
(m_lengthresolution != other.m_lengthresolution) ||
|
|
(m_v5_text_style.Font().ManagedFontSerialNumber() != other.m_v5_text_style.Font().ManagedFontSerialNumber()) ||
|
|
(m_lengthfactor != other.m_lengthfactor) ||
|
|
(m_bAlternate != other.m_bAlternate) ||
|
|
(m_alternate_lengthfactor != other.m_alternate_lengthfactor) ||
|
|
(m_alternate_lengthformat != other.m_alternate_lengthformat) ||
|
|
(m_alternate_lengthresolution != other.m_alternate_lengthresolution) ||
|
|
(m_alternate_angleformat != other.m_alternate_angleformat) ||
|
|
(m_alternate_angleresolution != other.m_alternate_angleresolution) ||
|
|
(m_prefix != other.m_prefix) ||
|
|
(m_suffix != other.m_suffix) ||
|
|
(m_alternate_prefix != other.m_alternate_prefix) ||
|
|
(m_alternate_suffix != other.m_alternate_suffix) ||
|
|
(m_dimextension != other.m_dimextension) ||
|
|
(m_leaderarrowsize != other.m_leaderarrowsize) ||
|
|
(m_leaderarrowtype != other.m_leaderarrowtype) ||
|
|
(m_bSuppressExtension1 != other.m_bSuppressExtension1) ||
|
|
(m_bSuppressExtension2 != other.m_bSuppressExtension2) ||
|
|
(ParentId() != other.ParentId()) ||
|
|
(m_tolerance_style != other.m_tolerance_style) ||
|
|
(m_tolerance_resolution != other.m_tolerance_resolution) ||
|
|
(m_tolerance_upper_value != other.m_tolerance_upper_value) ||
|
|
(m_tolerance_lower_value != other.m_tolerance_lower_value) ||
|
|
(m_tolerance_height_scale != other.m_tolerance_height_scale) ||
|
|
(m_baseline_spacing != other.m_baseline_spacing) ||
|
|
(m_bDrawMask != other.m_bDrawMask) ||
|
|
(m_mask_color_source != other.m_mask_color_source) ||
|
|
(m_mask_color != other.m_mask_color) ||
|
|
(m_dimscale != other.m_dimscale) ||
|
|
(m_dimscale_source != other.m_dimscale_source)
|
|
|
|
||
|
|
(m_ext_line_color_source != other.m_ext_line_color_source) ||
|
|
(m_dim_line_color_source != other.m_dim_line_color_source) ||
|
|
(m_arrow_color_source != other.m_arrow_color_source) ||
|
|
(m_text_color_source != other.m_text_color_source) ||
|
|
(m_ext_line_color != other.m_ext_line_color) ||
|
|
(m_dim_line_color != other.m_dim_line_color) ||
|
|
(m_arrow_color != other.m_arrow_color) ||
|
|
(m_text_color != other.m_text_color) ||
|
|
(m_ext_line_plot_color_source != other.m_ext_line_plot_color_source) ||
|
|
(m_dim_line_plot_color_source != other.m_dim_line_plot_color_source) ||
|
|
(m_arrow_plot_color_source != other.m_arrow_plot_color_source) ||
|
|
(m_text_plot_color_source != other.m_text_plot_color_source) ||
|
|
(m_ext_line_plot_color != other.m_ext_line_plot_color) ||
|
|
(m_dim_line_plot_color != other.m_dim_line_plot_color) ||
|
|
(m_arrow_plot_color != other.m_arrow_plot_color) ||
|
|
(m_text_plot_color != other.m_text_plot_color) ||
|
|
(m_ext_line_plot_weight_source != other.m_ext_line_plot_weight_source) ||
|
|
(m_dim_line_plot_weight_source != other.m_dim_line_plot_weight_source) ||
|
|
(m_ext_line_plot_weight_mm != other.m_ext_line_plot_weight_mm) ||
|
|
(m_dim_line_plot_weight_mm != other.m_dim_line_plot_weight_mm) ||
|
|
(m_fixed_extension_len != other.m_fixed_extension_len) ||
|
|
(m_fixed_extension_len_on != other.m_fixed_extension_len_on) ||
|
|
(m_text_rotation != other.m_text_rotation) ||
|
|
(m_alt_tol_resolution != other.m_alt_tol_resolution) ||
|
|
(m_suppress_arrow1 != other.m_suppress_arrow1) ||
|
|
(m_suppress_arrow2 != other.m_suppress_arrow2) ||
|
|
(m_textmove_leader != other.m_textmove_leader) ||
|
|
(m_arclength_sym != other.m_arclength_sym) ||
|
|
(m_stack_textheight_fraction != other.m_stack_textheight_fraction) ||
|
|
(m_stack_format != other.m_stack_format) ||
|
|
(m_alt_round != other.m_alt_round) ||
|
|
(m_round != other.m_round) ||
|
|
(m_alt_zero_suppress != other.m_alt_zero_suppress) ||
|
|
(m_tol_zero_suppress != other.m_tol_zero_suppress) ||
|
|
(m_zero_suppress != other.m_zero_suppress) ||
|
|
(m_ang_zero_suppress != other.m_ang_zero_suppress) ||
|
|
(m_arrow_1 != other.m_arrow_1) ||
|
|
(m_arrow_2 != other.m_arrow_2)
|
|
|
|
)
|
|
return false;
|
|
|
|
return true;
|
|
}
|