00001 #ifndef IG_OPEN_INVENTOR_IG_SO_ROT_SOLID_H
00002 # define IG_OPEN_INVENTOR_IG_SO_ROT_SOLID_H
00003
00004
00005
00006 # include "Iguana/Inventor/interface/IgSoShapeKit.h"
00007 # include <Inventor/fields/SoSFFloat.h>
00008 # include <Inventor/fields/SoSFInt32.h>
00009 # include <Inventor/fields/SoSFBool.h>
00010 # include <Inventor/fields/SoMFVec2f.h>
00011 # include <vector>
00012 # ifdef WIN32
00013 # include <SoWinLeaveScope.h>
00014 # endif
00015
00016
00017
00018
00019
00020
00021
00022
00033 class IG_OPEN_INVENTOR_API IgSoRotSolid : public IgSoShapeKit
00034 {
00035 SO_KIT_HEADER (IgSoRotSolid);
00036 SO_KIT_CATALOG_ENTRY_HEADER (hints);
00037 SO_KIT_CATALOG_ENTRY_HEADER (faces);
00038 SO_KIT_CATALOG_ENTRY_HEADER (lines);
00039
00040 public:
00041 IgSoRotSolid (void);
00042 static void initClass (void);
00043
00044 SoSFFloat phiStart;
00045 SoSFFloat phiDelta;
00046 SoSFInt32 divisions;
00047 SoMFVec2f polygon;
00048 SoSFBool smooth;
00049 SoSFBool showLines;
00050
00051
00052 void makePgon (const std::vector<float> &zvals,
00053 const std::vector<float> &rmin,
00054 const std::vector<float> &rmax,
00055 float phiStart = 0,
00056 float phiDelta = 2*M_PI,
00057 int divisions = 5);
00058
00059 void makePcon (const std::vector<float> &zvals,
00060 const std::vector<float> &rmin,
00061 const std::vector<float> &rmax,
00062 float phiStart = 0,
00063 float phiDelta = 2*M_PI,
00064 int divisions = -1);
00065
00066 void makeCons (float rmin1,
00067 float rmax1,
00068 float rmin2,
00069 float rmax2,
00070 float dz,
00071 float phiStart = 0,
00072 float phiDelta = 2*M_PI,
00073 int divisions = -1);
00074
00075 void makeTubs (float rmin,
00076 float rmax,
00077 float dz,
00078 float phiStart = 0,
00079 float phiDelta = 2*M_PI,
00080 int divisions = -1);
00081
00082 protected:
00083 virtual void refresh (void);
00084 private:
00085 void cleanParts (void);
00086 };
00087
00088
00089
00090
00091 # ifdef WIN32
00092 # include <SoWinEnterScope.h>
00093 # endif
00094 #endif // IG_OPEN_INVENTOR_IG_SO_ROT_SOLID_H