#if !defined(__geometry_h) // Sentry, use file only if it's not already included. #define __geometry_h /* Project pg University of Ljubljana Copyright © 1995 LECAD. All Rights Reserved. SUBSYSTEM: pg.apx Application FILE: geometry.h AUTHOR: CAD lab OVERVIEW ======== Class definition for Geometry (TDialog). */ #include <owl\owlpch.h> #pragma hdrstop #include <owl\combobox.h> #include <owl\edit.h> #include "pgapp.rh" // Definition of all resources. //{{TDialog = Geometry}} struct GeometryXfer { //{{GeometryXFER_DATA}} char BasicRack[ 255 ]; char ClearCoeff[ 255 ]; char FaceWidth[ 255 ]; TComboBoxData GearQuality; char HelixAngle[ 255 ]; TComboBoxData NormalAngle; TComboBoxData NormalModul; //{{GeometryXFER_DATA_END}} }; struct GeomData { double dNorModul ; double dHelAng ; double dNorAng ; double dBasicRack ; double dCoeff ; double dFaceWidth ; double dGearQuality ; }; class Geometry : public TDialog { public: Geometry (TWindow* parent, TResId resId = IDD_GEOMETRY, TModule* module = 0); void GetValues( GeomData *data ) ; void SetValues( GeomData data ) ; virtual ~Geometry (); //{{GeometryXFER_DEF}} protected: TEdit *BasicRack; TEdit *ClearCoeff; TEdit *FaceWidth; TComboBox *GearQuality; TEdit *HelixAngle; TComboBox *NormalAngle; TComboBox *NormalModul; //{{GeometryXFER_DEF_END}} //{{GeometryVIRTUAL_BEGIN}} public: virtual void SetupWindow (); //{{GeometryVIRTUAL_END}} }; //{{Geometry}} #endif // __geometry_h sentry. /* Project pg University of Ljubljana Copyright © 1995 LECAD. All Rights Reserved. SUBSYSTEM: pg.apx Application FILE: geometry.cpp AUTHOR: CAD lab OVERVIEW ======== Source file for implementation of Geometry (TDialog). */ #include <owl\owlpch.h> #include <stdio.h> #pragma hdrstop #include "geometry.h" //{{Geometry Implementation}} static GeometryXfer GeometryData; static int iInitDone = 0 ; static double StandardModules[] = { 1, 1.125, 1.25, 1.375, 1.5, 1.75, 2, 2.25, 2.5, 2.75, 3, 3.25, 3.5, 3.75, 4, 4.25, 4.5, 4.75, 5, 5.25, 5.5, 5.75, 6, 6.5, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 25, 27, 28, 30, 32, 36, 39, 40, 42, 45, 50}; Geometry::Geometry (TWindow* parent, TResId resId, TModule* module): TDialog(parent, resId, module) { //{{GeometryXFER_USE}} BasicRack = new TEdit(this, IDC_ADD_BASIC, 255); ClearCoeff = new TEdit(this, IDC_CLEAR_COEFF, 255); FaceWidth = new TEdit(this, IDC_FACE_WIDTH, 255); GearQuality = new TComboBox(this, IDC_GEAR_QUALITY, 1); HelixAngle = new TEdit(this, IDC_HELIX_ANG, 255); NormalAngle = new TComboBox(this, IDC_NORM_ANG, 1); NormalModul = new TComboBox(this, IDC_NORM_MODUL, 1); SetTransferBuffer(&GeometryData); //{{GeometryXFER_USE_END}} // INSERT>> Your constructor code here. } Geometry::~Geometry () { Destroy(); // INSERT>> Your destructor code here. } void Geometry::GetValues( GeomData *data ) { data->dHelAng = atof(GeometryData.HelixAngle) ; data->dBasicRack = atof(GeometryData.BasicRack) ; data->dCoeff = atof(GeometryData.ClearCoeff) ; data->dFaceWidth = atof(GeometryData.FaceWidth) ; data->dNorModul = atof( GeometryData.NormalModul.GetSelection().c_str()) ; data->dNorAng = atof( GeometryData.NormalAngle.GetSelection().c_str() ) ; data->dGearQuality = atof( GeometryData.GearQuality.GetSelection().c_str() ) ; } void Geometry::SetValues( GeomData data ) { char buf[255] ; // set values for input fields sprintf( GeometryData.HelixAngle, "%lg", data.dHelAng ) ; sprintf( GeometryData.BasicRack, "%lg", data.dBasicRack ) ; sprintf( GeometryData.ClearCoeff, "%lg", data.dCoeff ) ; sprintf( GeometryData.FaceWidth, "%lg", data.dFaceWidth ) ; // set selected string for combo boxes sprintf( buf, "%lg", data.dNorModul ); GeometryData.NormalModul.SelectString( buf ) ; sprintf( buf, "%lg", data.dNorAng ); GeometryData.NormalAngle.SelectString( buf ) ; sprintf( buf, "%lg", data.dGearQuality ); GeometryData.GearQuality.SelectString( buf ) ; } void Geometry::SetupWindow () { TDialog::SetupWindow(); char buf[20]; NormalModul->Clear() ; NormalModul->ClearList() ; for (int i = 0; i < (sizeof(StandardModules)/sizeof(double)); i++) { sprintf(buf, "%lg", StandardModules[i]); NormalModul->AddString( buf ) ; } NormalAngle->Clear() ; NormalAngle->ClearList() ; NormalAngle->AddString( "20" ) ; GearQuality->Clear() ; GearQuality->ClearList() ; GearQuality->AddString( "5" ) ; GearQuality->AddString( "6" ) ; GearQuality->AddString( "7" ) ; GearQuality->AddString( "8" ) ; GearQuality->AddString( "9" ) ; GearQuality->AddString( "10" ) ; if ( !iInitDone ) { // do the initialization NormalModul->SetSelIndex( 5 ) ; NormalAngle->SetSelIndex( 0 ) ; HelixAngle->SetText( "0.0" ) ; BasicRack->SetText( "1.0" ); ClearCoeff->SetText( "0.25" ); FaceWidth->SetText( "38.0" ); GearQuality->SetSelIndex( 1 ) ; iInitDone = 1 ; // initialization was done } else { NormalModul->SetText( GeometryData.NormalModul.GetSelection().c_str() ) ; NormalAngle->SetText( GeometryData.NormalAngle.GetSelection().c_str() ) ; GearQuality->SetText( GeometryData.GearQuality.GetSelection().c_str() ) ; } }