CFx SDK Documentation  2020SP3
FMBulgeSeg2D.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2015, Open Design Alliance (the "Alliance").
3 // All rights reserved.
4 //
5 // This software and its documentation and related materials are owned by
6 // the Alliance. The software may only be incorporated into application
7 // programs owned by members of the Alliance, subject to a signed
8 // Membership Agreement and Supplemental Software License Agreement with the
9 // Alliance. The structure and organization of this software are the valuable
10 // trade secrets of the Alliance and its suppliers. The software is also
11 // protected by copyright law and international treaty provisions. Application
12 // programs incorporating this software must include the following statement
13 // with their copyright notices:
14 //
15 // This application incorporates Teigha(R) software pursuant to a license
16 // agreement with Open Design Alliance.
17 // Teigha(R) Copyright (C) 2002-2015 by Open Design Alliance.
18 // All rights reserved.
19 //
20 // By use of this software, its documentation or related materials, you
21 // acknowledge and accept the above terms.
23 #ifndef __FM_BULGESEG2D_H__
24 #define __FM_BULGESEG2D_H__
25 
27 
28 namespace FacetModeler
29 {
30 
32 //
33 // BulgeSeg2D is a convex 2-D curve given by 2 points and a bulge value
34 // If the 2 points coincide, the segment has estCoincident type
35 // Otherwise, if bulge==0, the segment is a straight line segment
36 // otherwise it is a circular arc, and bulge=tan(Angle/4)
37 //
38 
39 class FMGEOMETRY_API BulgeSeg2D : public CommonSeg2DImpl
40 {
41 public:
43  // Constructors ...
44 
45  // default constructor
46  BulgeSeg2D() : m_dBulge(0) { };
47 
48  // constructor: 2 endpoints and a bulge value ( tan(a/4) )
49  BulgeSeg2D( const OdGePoint2d & ptA, const OdGePoint2d & ptB, double dBulge=0.0 )
50  : m_ptStart(ptA)
51  , m_ptEnd(ptB)
52  , m_dBulge(dBulge)
53  { };
54 
55  BulgeSeg2D( const OdGePoint2d & ptA, const OdGePoint2d & ptB, double dBulge, const Attributes2D& rAttr )
56  : m_ptStart(ptA)
57  , m_ptEnd(ptB)
58  , m_dBulge(dBulge)
59  , m_Attr(rAttr)
60  { };
61 
62  // constructor: 2 endpoints and an intermediate point
63  BulgeSeg2D( const OdGePoint2d & ptA, const OdGePoint2d & ptB, const OdGePoint2d & ptIntermediate );
64 
65  // fast copy constructor
66  BulgeSeg2D( const BulgeSeg2D & rSeg )
67  : m_ptStart( rSeg.m_ptStart )
68  , m_ptEnd( rSeg.m_ptEnd )
69  , m_dBulge( rSeg.m_dBulge )
70  , m_Attr( rSeg.m_Attr )
71  { };
72 
73  // slower copy constructor
74  BulgeSeg2D( const IBulgeSeg2D & rAnySeg );
75 
76 
77  // type info: returns esicBulgeSeg2D
78  virtual SegmentImplClass implClass( ) const;
79 
81  // Implementation of data getters, not implemented in CommonSeg2DImpl
82 
83  // returns reference to the starting point
84  virtual const OdGePoint2d & startPt() const;
85 
86  // returns reference to the ending point
87  virtual const OdGePoint2d & endPt () const;
88 
89  // returns bulge value
90  virtual double bulge () const;
91 
92 
94  // Implementation of non-const methods, not implemented in CommonSeg2DImpl
95 
97 
98  // Update ends and bulge
99  virtual Result set( const OdGePoint2d & ptA, const OdGePoint2d & ptB, double dBulge, const Attributes2D& rAttr );
100 
101  // VC6 compatibility
102  virtual Result set( const OdGePoint2d & ptA, const OdGePoint2d & ptB, double dBulge=0.0 )
103  {
104  return CommonSeg2DImpl::set( ptA, ptB, dBulge );
105  }
106 
107  virtual Result set( const OdGePoint2d & ptA, const OdGePoint2d & ptB, const OdGePoint2d & ptIntermediate )
108  {
109  return CommonSeg2DImpl::set( ptA, ptB, ptIntermediate );
110  }
111 
112  virtual Result set( const IBulgeSeg2D& rSeg )
113  {
114  return CommonSeg2DImpl::set( rSeg );
115  }
116 
117  virtual Result set( const OdGeLineSeg2d& geLine )
118  {
119  return CommonSeg2DImpl::set( geLine );
120  }
121 
122  virtual Result set( const OdGeCircArc2d& geArc )
123  {
124  return CommonSeg2DImpl::set( geArc );
125  }
126 
127  // Get attributes (including metadata)
128  virtual const Attributes2D& attributes() const;
129 
130  // Get attributes (including metadata) for update
132 
134  // overrides ( a faster implementation of some methods )
135 
136 
137  // returns the type of this segment
138  virtual SegmentType type() const;
139 
140 
141 
142  // To Do ...
143 
144 
145 protected:
146 
148  // necessary data members
149 
150  OdGePoint2d m_ptStart; // Starting point
151 
152  OdGePoint2d m_ptEnd; // Ending point
153 
154  double m_dBulge; // Bulge value = tan(angle/4)
155 
157 };
158 
159 
160 
161 }; // namespace AECContours
162 
163 
164 #endif //__FM_BULGESEG2D_H__
FacetModeler::BulgeSeg2D::startPt
virtual const OdGePoint2d & startPt() const
FacetModeler::BulgeSeg2D::set
virtual Result set(const OdGePoint2d &ptA, const OdGePoint2d &ptB, double dBulge, const Attributes2D &rAttr)
FacetModeler::BulgeSeg2D::BulgeSeg2D
BulgeSeg2D()
Definition: FMBulgeSeg2D.h:46
FacetModeler::BulgeSeg2D::BulgeSeg2D
BulgeSeg2D(const BulgeSeg2D &rSeg)
Definition: FMBulgeSeg2D.h:66
FacetModeler::CommonSeg2DImpl
Definition: FMImpCommonSeg2D.h:43
FacetModeler::BulgeSeg2D::set
virtual Result set(const OdGePoint2d &ptA, const OdGePoint2d &ptB, double dBulge=0.0)
Definition: FMBulgeSeg2D.h:102
FacetModeler::BulgeSeg2D::BulgeSeg2D
BulgeSeg2D(const OdGePoint2d &ptA, const OdGePoint2d &ptB, double dBulge=0.0)
Definition: FMBulgeSeg2D.h:49
FacetModeler::CommonSeg2DImpl::set
virtual Result set(const OdGePoint2d &ptA, const OdGePoint2d &ptB, double dBulge, const Attributes2D &rAttr)=0
FacetModeler
Definition: FMContour2D.h:35
FacetModeler::BulgeSeg2D::type
virtual SegmentType type() const
FacetModeler::BulgeSeg2D
Definition: FMBulgeSeg2D.h:40
FacetModeler::BulgeSeg2D::m_dBulge
double m_dBulge
Definition: FMBulgeSeg2D.h:154
FacetModeler::BulgeSeg2D::implClass
virtual SegmentImplClass implClass() const
OdGeLineSeg2d
Definition: GeLineSeg2d.h:42
FacetModeler::IBulgeSeg2D
Definition: FM_IBulgeSeg2D.h:50
OdGeCircArc2d
Definition: GeCircArc2d.h:47
FacetModeler::BulgeSeg2D::set
virtual Result set(const OdGePoint2d &ptA, const OdGePoint2d &ptB, const OdGePoint2d &ptIntermediate)
Definition: FMBulgeSeg2D.h:107
FacetModeler::BulgeSeg2D::set
virtual Result set(const OdGeLineSeg2d &geLine)
Definition: FMBulgeSeg2D.h:117
FacetModeler::BulgeSeg2D::set
virtual Result set(const OdGeCircArc2d &geArc)
Definition: FMBulgeSeg2D.h:122
FacetModeler::SegmentImplClass
SegmentImplClass
DOM.
Definition: FMContoursBase.h:228
FacetModeler::BulgeSeg2D::attributes4U
virtual Attributes2D & attributes4U()
FacetModeler::Result
Result
Definition: FMContoursBase.h:44
FacetModeler::Attributes2D
Definition: FMContoursBaseImp.h:48
FacetModeler::BulgeSeg2D::set
virtual Result set(const IBulgeSeg2D &rSeg)
Definition: FMBulgeSeg2D.h:112
FacetModeler::SegmentType
SegmentType
Definition: FMContoursBase.h:158
FacetModeler::BulgeSeg2D::BulgeSeg2D
BulgeSeg2D(const OdGePoint2d &ptA, const OdGePoint2d &ptB, double dBulge, const Attributes2D &rAttr)
Definition: FMBulgeSeg2D.h:55
FacetModeler::BulgeSeg2D::BulgeSeg2D
BulgeSeg2D(const OdGePoint2d &ptA, const OdGePoint2d &ptB, const OdGePoint2d &ptIntermediate)
FacetModeler::BulgeSeg2D::m_Attr
Attributes2D m_Attr
Definition: FMBulgeSeg2D.h:156
FacetModeler::BulgeSeg2D::m_ptStart
OdGePoint2d m_ptStart
Definition: FMBulgeSeg2D.h:150
FacetModeler::BulgeSeg2D::attributes
virtual const Attributes2D & attributes() const
FacetModeler::BulgeSeg2D::bulge
virtual double bulge() const
FacetModeler::BulgeSeg2D::m_ptEnd
OdGePoint2d m_ptEnd
Definition: FMBulgeSeg2D.h:152
FMImpCommonSeg2D.h
FacetModeler::BulgeSeg2D::BulgeSeg2D
BulgeSeg2D(const IBulgeSeg2D &rAnySeg)
FacetModeler::BulgeSeg2D::endPt
virtual const OdGePoint2d & endPt() const
OdGePoint2d
Definition: GePoint2d.h:60