1 /**************************************************************************** 2 ** Copyright (C) 2001-2013 RibbonSoft, GmbH. All rights reserved. 3 ** 4 ** This file is part of the dxflib project. 5 ** 6 ** This file is free software; you can redistribute it and/or modify 7 ** it under the terms of the GNU General Public License as published by 8 ** the Free Software Foundation; either version 2 of the License, or 9 ** (at your option) any later version. 10 ** 11 ** Licensees holding valid dxflib Professional Edition licenses may use 12 ** this file in accordance with the dxflib Commercial License 13 ** Agreement provided with the Software. 14 ** 15 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 16 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 17 ** 18 ** See http://www.ribbonsoft.com for further details. 19 ** 20 ** Contact info@ribbonsoft.com if any conditions of this licensing are 21 ** not clear to you. 22 ** 23 **********************************************************************/ 24 25 #ifndef DL_EXTRUSION_H 26 #define DL_EXTRUSION_H 27 28 #include "dl_global.h" 29 30 #include <math.h> 31 32 33 /** 34 * Extrusion direction. 35 * 36 * @author Andrew Mustun 37 */ 38 class DXFLIB_EXPORT DL_Extrusion { 39 40 public: 41 42 /** 43 * Default constructor. 44 */ DL_Extrusion()45 DL_Extrusion() { 46 direction = new double[3]; 47 setDirection(0.0, 0.0, 1.0); 48 setElevation(0.0); 49 } 50 51 52 /** 53 * Destructor. 54 */ ~DL_Extrusion()55 ~DL_Extrusion() { 56 delete[] direction ; 57 } 58 59 60 /** 61 * Constructor for DXF extrusion. 62 * 63 * @param direction Vector of axis along which the entity shall be extruded 64 * this is also the Z axis of the Entity coordinate system 65 * @param elevation Distance of the entities XY plane from the origin of the 66 * world coordinate system 67 */ DL_Extrusion(double dx,double dy,double dz,double elevation)68 DL_Extrusion(double dx, double dy, double dz, double elevation) { 69 direction = new double[3]; 70 setDirection(dx, dy, dz); 71 setElevation(elevation); 72 } 73 74 75 76 /** 77 * Sets the direction vector. 78 */ setDirection(double dx,double dy,double dz)79 void setDirection(double dx, double dy, double dz) { 80 direction[0]=dx; 81 direction[1]=dy; 82 direction[2]=dz; 83 } 84 85 86 87 /** 88 * @return direction vector. 89 */ getDirection()90 double* getDirection() const { 91 return direction; 92 } 93 94 95 96 /** 97 * @return direction vector. 98 */ getDirection(double dir[])99 void getDirection(double dir[]) const { 100 dir[0]=direction[0]; 101 dir[1]=direction[1]; 102 dir[2]=direction[2]; 103 } 104 105 106 107 /** 108 * Sets the elevation. 109 */ setElevation(double elevation)110 void setElevation(double elevation) { 111 this->elevation = elevation; 112 } 113 114 115 116 /** 117 * @return Elevation. 118 */ getElevation()119 double getElevation() const { 120 return elevation; 121 } 122 123 124 125 /** 126 * Copies extrusion (deep copies) from another extrusion object. 127 */ 128 DL_Extrusion& operator = (const DL_Extrusion& extru) { 129 setDirection(extru.direction[0], extru.direction[1], extru.direction[2]); 130 setElevation(extru.elevation); 131 132 return *this; 133 } 134 135 136 137 private: 138 double *direction; 139 double elevation; 140 }; 141 142 #endif 143 144