Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
c5721c306This file is pinned to the selected release. Download the original to open it in your design tool.
// Edge.h
// Copyright (c) 2009, Dan Heeks
// This program is released under the BSD license. See the file COPYING for details.
#pragma once
#include "HeeksObj.h"
class CFace;
class HVertex;
class CShape;
class CEdge:public HeeksObj{
private:
CBox m_box;
TopoDS_Edge m_topods_edge;
double m_start_x;
double m_start_y;
double m_start_z;
double m_end_x;
double m_end_y;
double m_end_z;
double m_start_u;
double m_end_u;
double m_start_tangent_x;
double m_start_tangent_y;
double m_start_tangent_z;
int m_isClosed;
int m_isPeriodic;
bool m_orientation;
HVertex* m_vertex0;
HVertex* m_vertex1;
void FindVertices();
public:
// int m_temp_attr; // not saved with the model
std::list<CFace*>::iterator m_faceIt;
std::list<CFace*> m_faces;
std::list<bool> m_face_senses;
double m_midpoint[3];
bool m_midpoint_calculated;
static int m_type;
CEdge();
CEdge(const TopoDS_Edge &edge);
~CEdge();
int m_temp_attr; // not saved with the model
int GetType()const{return m_type;}
// long GetMarkingMask()const{return MARKING_FILTER_EDGE;}
void glCommands(bool select, bool marked, bool no_color);
void GetBox(CBox &box);
void GetGripperPositions(std::list<GripData> *list, bool just_for_endof);
HeeksObj *MakeACopy(void)const{ return new CEdge(*this);}
const wchar_t* GetIconFilePath();
const wchar_t* GetTypeString(void)const{return L"Edge";}
void WriteXML(TiXmlNode *root);
void GetProperties(std::list<Property *> *list);
bool UsesID(){return true;}
bool GetMidPoint(double* pos);
bool GetStartPoint(double* pos);
bool GetEndPoint(double* pos);
int PickPriority(){ return 2; } // lines
const TopoDS_Edge &Edge(){return m_topods_edge;}
//void Blend(double radius);
void Blend(double radius,bool chamfer_not_fillet);
CFace* GetFirstFace();
CFace* GetNextFace();
int GetCurveType();
void GetCurveParams(double* start, double* end, double* uStart, double* uEnd, int* Reversed);
void GetCurveParams2(double *uStart, double *uEnd, int *isClosed, int *isPeriodic);
bool InFaceSense(CFace* face);
void Evaluate(double u, double *p, double *tangent);
bool GetClosestPoint(const gp_Pnt &pos, gp_Pnt &closest_pnt, double &u)const;
bool GetLineParams(double *d6);
bool GetCircleParams(double *d7);
bool GetEllipseParams(double *d11);
bool Orientation();
double Length();
double Length2(double uStart, double uEnd);
HVertex* GetVertex0();
HVertex* GetVertex1();
CShape* GetParentBody();
};