ich habe ein weiteres Problem ...
mit dem Befehl _GDIPlus_GraphicsDrawString kann Text auch vertikal angezeigt werden.
Ich möchte den Text aber um 90 Grad gedreht haben ... aber eben in die andere Richtung !
Die Zeile 385 führt den _GDIPlus_GraphicsDrawString und schreibt den Text "Kraft [N]".
Nur müßte der Text jetzt noch um 180° gedreht werden. Leider gibt das die Funktion nicht her.
Es gab dazu von BugFix eine Funktion : Link
Mit dieser Funktion könnte ich das ja auch machen.
Leider bekomme ich das ganze nicht in meiner GUI integriert (bin zu doof) ... irgendwo mach ich da was falsch.
Wie muss ich das anpassen ? Ich denke, es muss in die Bitmap rein ... aber wie ?
Oder kann ich das doch mit einem der _GDIPlus_Graphics... umsetzen ? ... mit welchem ?
Danke
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <WinAPISys.au3>
#include <Array.au3>
#include <Excel.au3>
#include <GuiListView.au3>
#include <File.au3>
#include <String.au3>
; Hauptfenster
Global $HF_Form1, $HF_Group2, $HF_Group3, $HF_Group4, $HF_Group5, $HF_Group6, $HF_Group7, $HF_Group8, $HF_Group9, $HF_Radio1, $HF_Radio2
Global $HF_Button1, $HF_Button2, $HF_Button3, $HF_Button4, $HF_Button5, $HF_Button6, $HF_Button7, $HF_Button8
Global $HF_Inp_DP, $HF_Inp_SS, $HF_Inp_LHR, $HF_Inp_LMR, $HF_Inp_Masse, $HF_Inp_VNENN, $HF_Inp_FAB, $HF_Inp_BEMERK, $HF_Inp_PBAR, $HF_Inp_XD
Global $HF_Inp_DD1, $HF_Inp_NG1, $HF_Inp_DD2, $HF_Inp_NG2, $HF_Inp_DD3, $HF_Inp_NG3, $HF_Inp_DD4, $HF_Inp_NG4, $HF_Inp_NS, $HF_Inp_SO, $HF_Inp_LA
Global $HF_Inp_NA, $HF_Inp_LZ, $HF_Inp_NZ
Global $HF_Label1, $HF_Label2, $HF_Label3, $HF_Label4, $HF_Label5, $HF_Label6, $HF_Label7, $HF_Label8, $HF_Label9, $HF_Label10, $HF_Label11, $HF_Label12
Global $HF_Label13, $HF_Label14, $HF_Label15, $HF_Label16, $HF_Label17, $HF_Label18, $HF_Label19, $HF_Label20, $HF_Label21, $HF_Label22, $HF_Label23
Global $HF_Label24, $HF_Label25, $HF_Label26, $HF_Label27, $HF_Label28, $HF_Label29, $HF_Label30, $HF_Label31, $HF_Label32, $HF_Label33, $HF_Label34
Global $HF_Label35, $HF_Label36, $HF_Label37, $HF_Label38, $HF_Label39, $HF_Label40, $HF_Label41, $HF_Label42, $HF_Label43, $HF_Label44, $HF_Label45
Global $HF_Label46, $HF_Label47, $HF_Label48, $HF_Label49, $HF_Label50, $HF_Label51, $HF_Label52, $HF_Label53, $HF_Label54, $HF_Label55
; Grafikfenster
Global $NF_Form1, $NF_Group1, $NF_Group2, $NF_Group3, $NF_Group4, $NF_Group5, $NF_Group6
Global $NF_ButtonSpeichern, $NF_ButtonEnde, $NF_ButtonPufferBerechnen, $NF_ButtonKennlinieBerechnen
Global $NF_Inp_SS_2, $NF_Inp_LHR_2, $NF_Inp_Masse_2, $NF_Inp_VNENN_2, $NF_Inp_PBAR_2, $NF_Inp_DD1_2, $NF_Inp_NG1_2, $NF_Inp_DD2_2, $NF_Inp_NG2_2, $NF_Inp_NS_2, $NF_Inp_SO_2
Global $NF_Inp_LA_2, $NF_Inp_NA_2, $NF_Inp_LZ_2, $NF_Inp_NZ_2
Global $NF_Label1, $NF_Label2, $NF_Label3, $NF_Label4, $NF_Label5, $NF_Label6, $NF_Label7, $NF_Label8, $NF_Label9, $NF_Label10, $NF_Label11, $NF_Label12
Global $NF_Label13, $NF_Label14, $NF_Label15, $NF_Label16, $NF_Label17, $NF_Label18, $NF_Label19, $NF_Label20, $NF_Label21, $NF_Label22, $NF_Label23
Global $NF_Label24, $NF_Label25, $NF_Label26, $NF_Label27, $NF_Label28, $NF_Label29, $NF_Label30, $NF_Label31, $NF_Label32, $NF_Label33, $NF_Label34
Global $NF_Label35, $NF_Label36, $NF_Label37, $NF_Label38, $NF_Label39, $NF_Label40, $NF_Label41, $NF_Label42, $NF_Label43, $NF_Label44, $NF_Label45
Global $NF_Label46, $NF_Label47, $NF_Label48, $NF_Label49, $NF_Label50
Global $sLeer = " "
Global $aDB, $sSelected = "", $boDEBUG = False
Const $Pi4 = 0.7853981633975
Const $G0 = 9.81 ; Erdbeschleunigung
Const $RHO = 890 ; Öldichte 890 kg/m3 (Liste mit verschiedenen Dichten ?)
Const $NPOL = 1.35 ; Polytropenexponent (wovon abhängig ?)
Const $ZETA = 1.55 ; Drosselbeiwert (woher kommt der ? was bedeutet er ?)
Const $ETA = 0.95 ; mech. Wirkungsgrad (temperaturabhängig ?)
Const $K = 1.25 ; Kurvenformfaktor (woher kommt der ? was bedeutet er ?)
Const $VFAKT = 1.15 ; Aufprallgeschwindigkeit = 115% der Nenngeschwindigkeit nach EN 81 (wird bezweifelt !)
Const $EERSATZ = 1515 ; Ersatz E-Modul in N/mm2
Const $sVersion = "Version 3.0.0 vom 19.12.2019"
Const $DATEINAME = "LP 211 - FS-Verlauf.txt"
Const $sDatenbank = "Liftpuffer Typ LP.xlsx"
Dim $hFile, $boBerechnen, $boSpeichern, $sDummy, $nMsg_HF, $nMsg_NF, $sText, $DKZ, $sBOBI
Dim $sDatum, $DP, $SS, $SM, $LHR, $LMR, $D1, $A1, $A2, $D2, $D3, $DKS, $COFF, $CHR, $V0KOPF, $HGAS
Dim $XI, $XI2, $XD, $XDNEU, $X, $SX, $SO, $SA, $SZ, $PRJN, $XPR, $DXPR, $VPXP, $VPX, $FPX1P, $FPX1, $AXIP, $AXI, $TP, $T
Dim $ADX, $ADU, $S, $DAD, $SX, $NS, $ADO, $LA, $ADA, $LZ, $ADZ, $P1X, $ZRA, $P2X, $V0, $AKS, $P0, $FRANF, $FRUECK, $AMITTLS, $AMITTLT
Dim $A1, $FC, $CON, $FPX1, $FPX2, $FVX, $B0, $B1, $B2, $DFP, $FPMAXI, $XFPMAX, $XFPMAXI, $Masse, $AMAX, $XAMAX, $EUM, $VPX2Q, $VPX2
Dim $VP, $VNENN, $FAB, $BEMERK, $EKIN, $EPOT, $EGES, $FPMAX, $PBAR, $P0, $FDYN, $EKINX1, $ANSTFL, $XSCHWING, $SCHWING, $VGAS
Dim $SYSTEM, $ADERF, $DDERF, $NGERF, $NG, $DD, $DD1, $NG1, $AD1, $DD2, $NG2, $AD2, $ADVOR, $ADPRO
Dim $NA, $NZ, $NEUXD, $FU, $FO, $NR, $NE
Dim $SS_2, $LHR_2, $Masse_2, $VNENN_2, $PBAR_2, $DD1_2, $NG1_2, $DD2_2, $NG2_2, $NS_2, $SO_2, $LA_2, $NA_2, $LZ_2, $NZ_2, $B0_2, $B1_2, $B2_2, $VP_2, $VGAS_2, $FU_2, $FO_2
Dim $ADVOR_2, $EGES_2, $FPMAX_2, $SM_2, $D1_2, $D2_2, $D3_2, $A1_2, $A2_2, $AKS_2, $DKS_2, $COFF_2, $CHR_2, $V0KOPF_2, $HGAS_2, $PRJN_2, $DXPR_2, $P2X_2, $XFPMAX_2, $XAMAX_2
Dim $CON_2, $EKIN_2, $EPOT_2, $EGES_2, $FPMAX_2, $P0_2, $FDYN_2, $XD_2, $SCHWING_2, $VFAKT_2, $AD1_2, $NG_2, $NR_2, $XI_2, $FPX2_2, $XSCHWING_2, $FPMAX_2, $AMAX_2, $FRUECK_2
Dim $Min_XI, $Max_XI, $Min_VPXP, $Max_VPXP, $Min_FPX1P, $Max_FPX1P, $Min_AXIP, $Max_AXIP, $Min_TP, $Max_TP, $DP_2, $AD2_2, $EKINX1_2
Dim $SO_2, $SZ_2, $SA_2, $XPR_2, $VPXP_2, $FPX1P_2, $AXIP_2, $TP_2, $ADU_2, $DAD_2, $ADO_2, $ADA_2, $ADZ_2
Dim $ZRA_2, $V0_2, $AMAX_2, $EUM_2, $VPX_2, $FPX1_2, $AXI_2, $T_2, $ANSTFL_2
Dim $hEnterDummy
KennlinieZeichnen()
Func FelderAnzeigen_NF()
; Daten des aktuellen Puffers
GUICtrlSetData($NF_Label19, i_ZahlKomma($FAB))
GUICtrlSetData($NF_Label49, i_ZahlKomma($SS))
GUICtrlSetData($NF_Label20, i_ZahlKomma($LHR))
GUICtrlSetData($NF_Label21, i_ZahlKomma($Masse))
GUICtrlSetData($NF_Label22, i_ZahlKomma($B0))
GUICtrlSetData($NF_Label23, i_ZahlKomma($VNENN))
GUICtrlSetData($NF_Label24, i_ZahlKomma($VP))
GUICtrlSetData($NF_Label25, i_ZahlKomma($PBAR))
GUICtrlSetData($NF_Label26, i_ZahlKomma($VGAS))
GUICtrlSetData($NF_Label27, $NG1 & " Ø " & i_ZahlKomma($DD1) & " mm")
GUICtrlSetData($NF_Label28, $NG2 & " Ø " & i_ZahlKomma($DD2) & " mm")
GUICtrlSetData($NF_Label29, i_ZahlKomma($NS))
GUICtrlSetData($NF_Label30, i_ZahlKomma($SO))
GUICtrlSetData($NF_Label31, i_ZahlKomma($FU))
GUICtrlSetData($NF_Label32, i_ZahlKomma($FO))
GUICtrlSetData($NF_Label33, i_ZahlKomma($LA))
GUICtrlSetData($NF_Label34, i_ZahlKomma($NA))
GUICtrlSetData($NF_Label35, i_ZahlKomma($LZ))
GUICtrlSetData($NF_Label36, i_ZahlKomma($NZ))
; veränderbare Daten des Puffers
GUICtrlSetData($NF_Inp_SS_2, $SS_2)
GUICtrlSetData($NF_Inp_LHR_2, $LHR_2)
GUICtrlSetData($NF_Inp_Masse_2, $Masse_2)
GUICtrlSetData($NF_Label37, i_ZahlKomma($B0_2))
GUICtrlSetData($NF_Label38, i_ZahlKomma($FU_2))
GUICtrlSetData($NF_Label39, i_ZahlKomma($VP_2))
GUICtrlSetData($NF_Inp_VNENN_2, i_ZahlKomma($VNENN_2))
GUICtrlSetData($NF_Label40, i_ZahlKomma($VGAS_2))
GUICtrlSetData($NF_Inp_PBAR_2, i_ZahlKomma($PBAR_2))
GUICtrlSetData($NF_Inp_NG1_2, $NG1_2)
GUICtrlSetData($NF_Inp_DD1_2, i_ZahlKomma($DD1_2))
GUICtrlSetData($NF_Inp_NG2_2, $NG2_2)
GUICtrlSetData($NF_Inp_DD2_2, i_ZahlKomma($DD2_2))
GUICtrlSetData($NF_Label43, i_ZahlKomma($FO_2))
GUICtrlSetData($NF_Inp_NS_2, i_ZahlKomma($NS_2))
GUICtrlSetData($NF_Inp_SO_2, i_ZahlKomma($SO_2))
GUICtrlSetData($NF_Inp_LA_2, i_ZahlKomma($LA_2))
GUICtrlSetData($NF_Inp_NA_2, i_ZahlKomma($NA_2))
GUICtrlSetData($NF_Inp_LZ_2, i_ZahlKomma($LZ_2))
GUICtrlSetData($NF_Inp_NZ_2, i_ZahlKomma($NZ_2))
EndFunc
Func KeZe_Gui()
_GDIPlus_Startup()
#Region ### START Koda GUI section ### Form=c:\program files (x86)\autoit3\scite\koda\forms\lp nebenfenster.kxf
$NF_Form1 = GUICreate("Liftpuffer - Testing", 1580, 880, -1, -1)
GUISetFont(10, 400, 0, "MS Sans Serif")
$NF_Group2 = GUICtrlCreateGroup(" aktuellen Pufferdaten ", 8, 4, 276, 482)
$NF_Label1 = GUICtrlCreateLabel("LP " & $DP & " / " & $SS & " - Fabr.-Nr.:", 16, 28, 139, 20)
$NF_Label19 = GUICtrlCreateLabel($FAB, 160, 28, 116, 20)
GUICtrlSetBkColor(-1, 0x00FFFF)
$NF_Label48= GUICtrlCreateLabel("Länge Pufferhub [mm]", 16, 52, 158, 20)
$NF_Label49 = GUICtrlCreateLabel($SS, 224, 52, 52, 20)
GUICtrlSetBkColor(-1, 0x00FFFF)
$NF_Label2 = GUICtrlCreateLabel("Länge Hydraulikrohr [mm]", 16, 76, 158, 20)
$NF_Label20 = GUICtrlCreateLabel($LHR, 224, 76, 52, 20)
GUICtrlSetBkColor(-1, 0x00FFFF)
$NF_Label3 = GUICtrlCreateLabel("aufprallende Masse M [kg]", 16, 100, 163, 20)
$NF_Label21 = GUICtrlCreateLabel($Masse, 224, 100, 52, 20)
GUICtrlSetBkColor(-1, 0x00FFFF)
$NF_Label4 = GUICtrlCreateLabel("Vortriebskraft [N]", 16, 124, 104, 20)
$NF_Label22 = GUICtrlCreateLabel($B0, 224, 124, 52, 20)
GUICtrlSetBkColor(-1, 0x00FFFF)
$NF_Label5 = GUICtrlCreateLabel("Nenngeschwindigkeit [m/s]", 16, 148, 165, 20)
$NF_Label23 = GUICtrlCreateLabel($VNENN, 224, 148, 52, 20)
GUICtrlSetBkColor(-1, 0x00FFFF)
$NF_Label6 = GUICtrlCreateLabel("Aufprallgeschwindigkeit [m/s]", 16, 172, 178, 20)
$NF_Label24 = GUICtrlCreateLabel($VP, 224, 172, 52, 20)
GUICtrlSetBkColor(-1, 0x00FFFF)
$NF_Label7 = GUICtrlCreateLabel("Gasdruck [bar]", 16, 196, 93, 20)
$NF_Label25 = GUICtrlCreateLabel($PBAR, 224, 196, 52, 20)
GUICtrlSetBkColor(-1, 0x00FFFF)
$NF_Label8 = GUICtrlCreateLabel("Gasvolumen [l]", 16, 220, 94, 20)
$NF_Label26 = GUICtrlCreateLabel($VGAS, 224, 220, 52, 20)
GUICtrlSetBkColor(-1, 0x00FFFF)
$NF_Label9 = GUICtrlCreateLabel("Drosselbohrungen", 16, 244, 115, 20)
$NF_Label27 = GUICtrlCreateLabel($NG1 & " Ø " & $DD1 & " mm", 192, 244, 84, 20)
GUICtrlSetBkColor(-1, 0x00FFFF)
$NF_Label10 = GUICtrlCreateLabel("Restbohrung", 16, 268, 81, 20)
$NF_Label28 = GUICtrlCreateLabel($NG2 & " Ø " & $DD2 & " mm", 192, 268, 84, 20)
GUICtrlSetBkColor(-1, 0x00FFFF)
$NF_Label11 = GUICtrlCreateLabel("Drosselkurvenexponent", 16, 292, 146, 20)
$NF_Label29 = GUICtrlCreateLabel($NS, 224, 292, 52, 20)
GUICtrlSetBkColor(-1, 0x00FFFF)
$NF_Label12 = GUICtrlCreateLabel("norm. Wegendpunkt", 16, 316, 124, 20)
$NF_Label30 = GUICtrlCreateLabel($SO, 224, 316, 52, 20)
GUICtrlSetBkColor(-1, 0x00FFFF)
$NF_Label13 = GUICtrlCreateLabel("unterer Funktionswert", 16, 340, 129, 20)
$NF_Label31 = GUICtrlCreateLabel($FU, 224, 340, 52, 20)
GUICtrlSetBkColor(-1, 0x00FFFF)
$NF_Label14 = GUICtrlCreateLabel("oberer Funktionswert", 16, 364, 128, 20)
$NF_Label32 = GUICtrlCreateLabel($FO, 224, 364, 52, 20)
GUICtrlSetBkColor(-1, 0x00FFFF)
$NF_Label15 = GUICtrlCreateLabel("Länge Anstiegsflanke [mm]", 16, 388, 166, 20)
$NF_Label33 = GUICtrlCreateLabel($LA, 224, 388, 52, 20)
GUICtrlSetBkColor(-1, 0x00FFFF)
$NF_Label16 = GUICtrlCreateLabel("Anz. Bohrungen in Anstiegsflanke", 16, 412, 201, 20)
$NF_Label34 = GUICtrlCreateLabel($NA, 224, 412, 52, 20)
GUICtrlSetBkColor(-1, 0x00FFFF)
$NF_Label17 = GUICtrlCreateLabel("Länge Zwischenflanke", 16, 436, 137, 20)
$NF_Label35 = GUICtrlCreateLabel($LZ, 224, 436, 52, 20)
GUICtrlSetBkColor(-1, 0x00FFFF)
$NF_Label18 = GUICtrlCreateLabel("Anz. Bohrungen in Zwischenflanke", 16, 460, 205, 20)
$NF_Label36 = GUICtrlCreateLabel($NZ, 224, 460, 52, 20)
GUICtrlSetBkColor(-1, 0x00FFFF)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$NF_Group3 = GUICtrlCreateGroup(" geänderte Pufferdaten ", 290, 4, 160, 482)
$NF_Inp_SS_2 = GUICtrlCreateInput($SS_2, 300, 50, 52, 24)
$NF_Inp_LHR_2 = GUICtrlCreateInput($LHR_2, 300, 74, 52, 24)
$NF_Inp_Masse_2 = GUICtrlCreateInput($Masse_2, 300, 98, 52, 24)
$NF_Label37 = GUICtrlCreateLabel($B0_2, 300, 124, 52, 20)
GUICtrlSetBkColor(-1, 0x00FFFF)
$NF_Label38 = GUICtrlCreateLabel($FU_2, 300, 340, 52, 20)
GUICtrlSetBkColor(-1, 0x00FFFF)
$NF_Label39 = GUICtrlCreateLabel($VP_2, 300, 172, 52, 20)
GUICtrlSetBkColor(-1, 0x00FFFF)
$NF_Inp_VNENN_2 = GUICtrlCreateInput($VNENN_2, 300, 146, 52, 24)
$NF_Label40 = GUICtrlCreateLabel($VGAS_2, 300, 220, 52, 20)
GUICtrlSetBkColor(-1, 0x00FFFF)
$NF_Inp_PBAR_2 = GUICtrlCreateInput($PBAR_2, 300, 194, 52, 24)
$NF_Inp_NG1_2 = GUICtrlCreateInput($NG1_2, 300, 242, 52, 24)
$NF_Label41 = GUICtrlCreateLabel("Ø", 358, 244, 11, 19)
$NF_Inp_DD1_2 = GUICtrlCreateInput($DD1_2, 374, 242, 52, 24)
$NF_Inp_NG2_2 = GUICtrlCreateInput($NG2_2, 300, 266, 52, 24)
$NF_Label42 = GUICtrlCreateLabel("Ø", 358, 268, 11, 19)
$NF_Inp_DD2_2 = GUICtrlCreateInput($DD2_2, 374, 266, 52, 24)
$NF_Label43 = GUICtrlCreateLabel($FO_2, 300, 364, 52, 20)
GUICtrlSetBkColor(-1, 0x00FFFF)
$NF_Inp_NS_2 = GUICtrlCreateInput($NS_2, 300, 290, 52, 24)
$NF_Inp_SO_2 = GUICtrlCreateInput($SO_2, 300, 314, 52, 24)
$NF_Inp_LA_2 = GUICtrlCreateInput($LA_2, 300, 386, 52, 24)
$NF_Inp_NA_2 = GUICtrlCreateInput($NA_2, 300, 410, 52, 24)
$NF_Inp_LZ_2 = GUICtrlCreateInput($LZ_2, 300, 434, 52, 24)
$NF_Inp_NZ_2 = GUICtrlCreateInput($NZ_2, 300, 458, 52, 24)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$NF_ButtonPufferBerechnen = GUICtrlCreateButton("Puffer berechnen", 16, 604, 120, 25)
$NF_ButtonKennlinieBerechnen = GUICtrlCreateButton("Kennlinie berechnen", 16, 636, 140, 25)
$NF_ButtonSpeichern = GUICtrlCreateButton("Speichern", 16, 668, 75, 25)
$NF_ButtonEnde = GUICtrlCreateButton("Ende", 16, 700, 75, 25)
$NF_Group4 = GUICtrlCreateGroup(" Weg-Kraft-Diagramm ", 456, 4, 1116, 285) ; 868
GUICtrlCreateGroup("", -99, -99, 1, 1)
$NF_Group5 = GUICtrlCreateGroup(" Weg-Geschwindigkeit-Diagramm ", 456, 295, 1116, 285) ; 868
GUICtrlCreateGroup("", -99, -99, 1, 1)
$NF_Group6 = GUICtrlCreateGroup(" Weg-Verzögerung-Diagramm ", 456, 586, 1116, 285) ; 868
GUICtrlCreateGroup("", -99, -99, 1, 1)
$NF_Label44 = GUICtrlCreateLabel("", 16, 520, 52, 20)
GUICtrlSetBkColor(-1, 0xFF00FF)
$NF_Label45 = GUICtrlCreateLabel("", 16, 544, 52, 20)
GUICtrlSetBkColor(-1, 0xFFFF00)
$NF_Label45 = GUICtrlCreateLabel("", 16, 568, 52, 20)
GUICtrlSetBkColor(-1, 0x00FF00)
$NF_Label46 = GUICtrlCreateLabel("Kraft-Weg-Diagramm", 88, 520, 122, 20)
$NF_Label47 = GUICtrlCreateLabel("Geschwindigkeit-Weg-Diagramm", 88, 544, 187, 20)
$NF_Label50 = GUICtrlCreateLabel("Verzögerung-Weg-Diagramm", 88, 568, 187, 20)
Global $iPicX = 454, $iPicY = 6, $iPicL = 1118, $iPicH = 866
Global $idGraphic = GUICtrlCreatePic('', $iPicX, $iPicY, $iPicL, $iPicH) ; Koordinaten beziehen sich auf die GUI (Hauptfenster) ->- X, Y, Länge, Höhe
$hEnterDummy = GUICtrlCreateDummy()
Local $aAcc[1][2] = [["{ENTER}", $hEnterDummy]]
GUISetAccelerators($aAcc, $NF_Form1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
EndFunc
Func KeZe_KennlinieZeichnen()
Local $sText_l, $aFileDatas, $aResult[5], $i, $aKW_Dia, $aGW_Dia, $aVW_Dia
; Datei einlesen und MAX / MIN für Weg, Geschwindigkeit, Kraft, Verzögerung und Zeit setzen
If Not _FileReadToArray("LP 211 - FS-Verlauf Temp.txt", $aFileDatas) Then
MsgBox(4096, "Fehler", "Fehler beim Einlesen der Datei LP 211 - FS-Verlauf Temp.txt in das Array!" & @CRLF & "Fehlercode: " & @error)
Exit
EndIf
;_ArrayDisplay($aFileDatas, "FileDatas")
Local $aDatas[UBound($aFileDatas)][5]
Local $aKW_Dia[UBound($aFileDatas)][2], $aGW_Dia[UBound($aFileDatas)][2], $aVW_Dia[UBound($aFileDatas)][2], $aPixelKoord[UBound($aFileDatas)][2]
For $i = 1 To UBound($aFileDatas) - 1
If StringInStr($aFileDatas[$i], ",") > 1 Then
$aResult = _StringExplode($aFileDatas[$i], ",", 4)
$aKW_Dia[$i][0] = $aResult[0]
$aKW_Dia[$i][1] = $aResult[1]
$aGW_Dia[$i][0] = $aResult[0]
$aGW_Dia[$i][1] = $aResult[2]
$aVW_Dia[$i][0] = $aResult[0]
$aVW_Dia[$i][1] = $aResult[3]
$aDatas[$i][0] = $aResult[0]
$aDatas[$i][1] = $aResult[1]
$aDatas[$i][2] = $aResult[2]
$aDatas[$i][3] = $aResult[3]
$aDatas[$i][4] = $aResult[4]
EndIf
Next
; grafische Oberfläche aufbauen
Local $hBitmap, $hImage, $hBMP, $hPrevImg
Local $hRedPen, $hGreenPen, $hBluePen, $hMagentaPen, $hYellowPen, $hWhitePen, $hCyanPen, $hBlackPen, $hBlackPenSmall
; Farbstifte definieren
$hRedPen = _GDIPlus_PenCreate(0xFFFF0000, 2, 2)
$hGreenPen = _GDIPlus_PenCreate(0xFF00FF00, 2, 2)
$hBluePen = _GDIPlus_PenCreate(0xFFFF0000, 2, 2)
$hYellowPen = _GDIPlus_PenCreate(0xFFFFFF00, 2, 2)
$hMagentaPen = _GDIPlus_PenCreate(0xFFFF00FF, 2, 2)
$hWhitePen = _GDIPlus_PenCreate(0xFFFFFFFF, 2, 2)
$hCyanPen = _GDIPlus_PenCreate(0xFF00FFFF, 2, 2)
$hBlackPenSmall = _GDIPlus_PenCreate(0xFF000000, 1, 2)
$hBlackPen = _GDIPlus_PenCreate(0xFF000000, 2, 2)
$hBrushWhite = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)
; Grafik als Bitmap deklarieren
$hBitmap = _GDIPlus_BitmapCreateFromScan0($iPicL, $iPicH)
$hImage = _GDIPlus_ImageGetGraphicsContext($hBitmap)
Local $PixelXKoordDia1 = 83, $PixelYKoordDia1 = 19, $PixelXBreiteDia1 = 1026, $PixelYHoeheDia1 = 236
Local $PixelXKoordDia2 = 83, $PixelYKoordDia2 = 310, $PixelXBreiteDia2 = 1026, $PixelYHoeheDia2 = 236
Local $PixelXKoordDia3 = 83, $PixelYKoordDia3 = 571, $PixelXBreiteDia3 = 1026, $PixelYHoeheDia3 = 236
Local $MinXWert = 0, $MaxXWert = 0, $MinYWert = 0, $MaxYWert = 0, $DeltaXWert = 0, $DeltaYWert = 0, $Delta1X = 0, $Delta1Y = 0
Local $yScale, $yStep, $xScale, $xStep
_GDIPlus_GraphicsFillRect($hImage, $PixelXKoordDia1-1, $PixelYKoordDia1-3, $PixelXBreiteDia1+2, $PixelYHoeheDia1+4, $hBrushWhite)
_GDIPlus_GraphicsDrawRect($hImage, $PixelXKoordDia1-1, $PixelYKoordDia1-3, $PixelXBreiteDia1+2, $PixelYHoeheDia1+4, $hBlackPenSmall)
; Max/Min Werte ermitteln
For $i = 1 To UBound($aKW_Dia) - 1
If $aKW_Dia[$i][0] <> "" Then
If Number($aKW_Dia[$i][0]) > Number($MaxXWert) Then $MaxXWert = $aKW_Dia[$i][0]
If $i = 1 Then $MinXWert = $MaxXWert
If Number($aKW_Dia[$i][0]) < Number($MinXWert) Then $MinXWert = $aKW_Dia[$i][0]
EndIf
If $aKW_Dia[$i][1] <> "" Then
If Number($aKW_Dia[$i][1]) > Number($MaxYWert) Then $MaxYWert = $aKW_Dia[$i][1]
If $i = 1 Then $MinYWert = $MaxYWert
If Number($aKW_Dia[$i][1]) < Number($MinYWert) Then $MinYWert = $aKW_Dia[$i][1]
EndIf
Next
; Größe in x und y - Richtung ermitteln
If ($MaxYWert > 0) And ($MinYWert > 0) Then $DeltaYWert = $MaxYWert - $MinYWert
If ($MaxYWert > 0) And ($MinYWert < 0) Then $DeltaYWert = $MaxYWert - $MinYWert
If ($MaxYWert < 0) And ($MinYWert < 0) Then $DeltaYWert = $MaxYWert - $MinYWert
$DeltaXWert = $MaxXWert - $MinXWert ; z. Bsp. für Y : von 0.0 bis 4.257 --> 4.257 - Aufteilen auf 236 Pixel
; z. Bsp. für X : von 0.0 bis 921.7 --> 921.7 - Aufteilen auf 1066 Pixel
; Umrechnungsfaktor für Grafikbereich
$Delta1X = $PixelXBreiteDia1 / $DeltaXWert ; 1 X-Wert in Pixels --> 1066 / 921.7 = 1.1565
$Delta1Y = $PixelYHoeheDia1 / $DeltaYWert ; 1 Y-Wert in Pixels --> 236 / 2.257 = 55.4381
; tatsächliche Länge & Höhe auf Pixelgrafik umrechnen
For $i = 1 To UBound($aKW_Dia) - 1
If StringLen($aKW_Dia[$i][0]) > 0 Then
$aPixelKoord[0][0] = $i
$aPixelKoord[$i][0] = $aKW_Dia[$i][0] * $Delta1X ; 1 Einheit in Y-Richtung auf Pixelgrafik umrechnen
$aPixelKoord[$i][1] = $aKW_Dia[$i][1] * $Delta1Y ; 1 Einheit in X-Richtung auf Pixelgrafik umrechnen
EndIf
Next
;_ArrayDisplay($aKW_Dia, "aKW_Dia")
; Koordinaten auf Basispunkt 43/19 und umgekehrten Y-Werten transponieren
For $i = 1 To UBound($aKW_Dia) - 1
If StringLen($aPixelKoord[$i][0]) > 0 Then
$aPixelKoord[$i][0] = $aPixelKoord[$i][0] + $PixelXKoordDia1
$aPixelKoord[$i][1] = $PixelYKoordDia1 + $PixelYHoeheDia1 - $aPixelKoord[$i][1]
EndIf
Next
;_ArrayDisplay($aPixelKoord, "aPixelKoord")
_GDIPlus_GraphicsDrawCurve($hImage, $aPixelKoord, $hBlackPenSmall)
$yScale = 0
Switch $Delta1Y
Case 0 To 0.00099999999 ; 0 ... 0.00099999999 --> Werte liegen bis 236000
$yStep = 1000
Case 0.001 To 0.0099999999 ; 0 ... 0.0099999999 --> Werte liegen bis 23600
$yStep = 1000
Case 0.01 To 0.099999999 ; 0 ... 0.0099999999 --> Werte liegen bis 2360
$yStep = 100
Case 0.1 To 0.999999999 ; 0 ... 0.0099999999 --> Werte liegen bis 236
$yStep = 10
Case 1 To 30
$yStep = 1
Case 31 To 60
$yStep = 0.5
Case 61 To 120
$yStep = 0.25
Case 121 To 240
$yStep = 0.1
EndSwitch
For $i = 0 To 236 Step ($Delta1Y * $yStep)
_GDIPlus_GraphicsDrawLine($hImage, 83-9, 19+236-$i, 83-1, 19+236-$i, $hBlackPenSmall)
; _GDIPlus_GraphicsDrawLine($hImage, $PixelXKoordDia1 - 9, $PixelYKoordDia1 + $PixelYHoeheDia1 - $i, $PixelXKoordDia1 - 1, $PixelYKoordDia1 + $PixelYHoeheDia1 - $i, $hBlackPenSmall)
$sText_l = StringFormat('%.3f', $yScale)
; MsgBox(0, "Info", $sText_l)
_GDIPlus_GraphicsDrawString($hImage, $sText_l, 83-36, 19+236-$i-8, "Arial Narrow", 8)
; _GDIPlus_GraphicsDrawString($hImage, $sText_l, $PixelXKoordDia1 - 36, $PixelYKoordDia1 + $PixelYHoeheDia1 - $i - 8, "Arial Narrow", 8)
$yScale = $yScale + $yStep
Next
; _WriteRotateText($hImage, "Kraft [N]", 10, 120, 90, 10, 100, 1, "Arial", -1, -1)
; _WriteRotateText($GUI, $Text, $X, $Y, $Degree, $Size, $Weight), $type, $readFont, $col, $bkcol)
_GDIPlus_GraphicsDrawString($hImage, "Kraft [N]", 83-76, 19+100, "Arial", 10, 2)
_GDIPlus_GraphicsFillRect($hImage, 82, 307, 1028, 240, $hBrushWhite) ; von 43/307 bis 1067/239 --> 1025/223 Pixel ab 43/307
_GDIPlus_GraphicsDrawRect($hImage, 82, 307, 1028, 240, $hBlackPenSmall) ; von 43/307 bis 1067/239 --> 1025/223 Pixel ab 43/307
_GDIPlus_GraphicsFillRect($hImage, 82, 598, 1028, 240, $hBrushWhite) ; von 43/598 bis 1067/239 --> 1025/223 Pixel ab 43/598
_GDIPlus_GraphicsDrawRect($hImage, 82, 598, 1028, 240, $hBlackPenSmall) ; von 43/598 bis 1067/239 --> 1025/223 Pixel ab 43/598
_GDIPlus_GraphicsSetInterpolationMode($hImage, 0)
;_GDIPlus_GraphicsSetSmoothingMode($hImage, 2)
;$hPen = _GDIPlus_PenCreate(0xFF0000FF, 1)
;_GDIPlus_GraphicsDrawCurve($hImage, $aPoints, $hPen)
$hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hBitmap)
$hPrevImg = GUICtrlSendMsg($idGraphic, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP)
MsgBox(0, "Info", "Fertig !")
EndFunc
Func KennlinieZeichnen()
; Aufbau Fenster
KeZe_Gui()
FelderAnzeigen_NF()
;_SetGraphic($idGraphic)
While 1
$nMsg_NF = GUIGetMsg()
Switch $nMsg_NF
Case $GUI_EVENT_CLOSE
ProgrammEnde_NF()
ExitLoop
Case $NF_ButtonSpeichern
; Speichern()
Case $NF_ButtonEnde
ProgrammEnde_NF()
ExitLoop
Case $NF_ButtonPufferBerechnen
; KeZe_PufferBerechnen()
Case $NF_ButtonKennlinieBerechnen
; KeZe_KennlinieBerechnen()
KeZe_KennlinieZeichnen()
Case $hEnterDummy
ControlSend($NF_Form1, "", "", "{TAB}")
EndSwitch
WEnd
; Auslegungsdaten des Puffers anzeigen
; variablen Pufferwerte ermitteln
; Kennlinie berechnen
; Grafik anzeigen
EndFunc
Func ProgrammEnde_NF()
;_GDIPlus_PenDispose($hPenBorder)
;_GDIPlus_BrushDispose($hBrushBlue)
;_GDIPlus_BitmapDispose($hGraphicsBMP)
;_GDIPlus_GraphicsDispose($hBuffer)
;_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_Shutdown()
GUISetState(@SW_ENABLE, $NF_Form1)
GUISetState(@SW_SHOW, $NF_Form1)
GUIDelete($NF_Form1)
$nMsg_HF = 0
; Hauptfenster wieder aktivieren
GUISetState(@SW_SHOW, $HF_Form1)
GUISetState(@SW_ENABLE, $HF_Form1)
EndFunc
Func i_ZahlKomma($sZahl)
Return StringReplace($sZahl, ".", ",")
EndFunc
;==================================================================================================
; Function Name: _WriteRotateText($hWnd, $sWrite, $iX, $iY, $iDeg, $iSize [, $iWeight=400 _
; [, $iType=1 [, $sFont=-1 [, $iCol=-1 [, $iBkCol=-1 [,$bRedraw=True]]]]]])
; Description: Schreibt einen Text mit bestimmtem Winkel in das angegebene Fenster
; Parameter(s): $hWnd Handle des Fensters
; $sWrite der zu schreibende Text
; $iX x-Position auf dem Fenster
; $iY y-Position auf dem Fenster
; $iDeg Rotationswinkel des Textes
; $iSize Höhe des Textes
; optional: $iWeight Fontbreite 0 - 1000 (Standard 400)
; optional: $iType Fonttyp 1=normal (Standard); 2=Italic; 4=Underline; 8=StrikeOut
; 1 oder 2 können mit 4 und 8 kombiniert werden (5;9 od. 6;10)
; optional: $sFont Fontname -1=Font der Form (Standard)
; optional: $iCol Fontfarbe -1=schwarz (Standard)
; optional: $iBkCol Hintergrundfarbe -1=Hintergrundfarbe des Fensters (Standard)
; optional: $bRedraw True=Fenster vorher neu zeichnen (vorige Beschriftung löschen - Standard)
; Requirement(s): #Include <WinAPI.au3>; #include <StructureConstants.au3>; #include <WindowsConstants.au3>
;==================================================================================================
Func _WriteRotateText($hWnd, $sWrite, $iX, $iY, $iDeg, $iSize, $iWeight=400, $iType=1, $sFont=-1, $iCol=-1, $iBkCol=-1, $bRedraw=True)
If $bRedraw Then _WinAPI_RedrawWindow($hWnd)
Local $tRect = DllStructCreate($tagRECT)
DllStructSetData($tRect, 'Left', $iX)
DllStructSetData($tRect, 'Top', $iY)
Local $rotate = $iDeg *10
If ($rotate = 900) Or ($rotate = 1800) Or ($rotate = 2700) Then $rotate += 1
Local $RotateMe = DllStructCreate($tagLOGFONT)
DllStructSetData($RotateMe, 'Escapement', $rotate)
DllStructSetData($RotateMe, 'Height', ($iSize * -20)/_WinAPI_TwipsPerPixelY())
If $iWeight <> 400 Then DllStructSetData($RotateMe, 'Weight', $iWeight)
If BitAND($iType, 2) Then DllStructSetData($RotateMe, 'Italic', True)
If BitAND($iType, 4) Then DllStructSetData($RotateMe, 'Underline', True)
If BitAND($iType, 8) Then DllStructSetData($RotateMe, 'StrikeOut', True)
If $sFont <> -1 Then DllStructSetData($RotateMe, 'FaceName', $sFont)
Local $rFont = _WinAPI_CreateFontIndirect($RotateMe)
Local $hDC = _WinAPI_GetDC($hWnd)
If $iCol <> -1 Then _WinAPI_SetTextColor($hDC, $iCol)
If $iBkCol <> -1 Then _WinAPI_SetBkColor($hDC, $iBkCol)
_WinAPI_SelectObject($hdc, $rFont)
_WinAPI_DrawText($hDC, $sWrite, $tRect, BitOR($DT_NOCLIP,$DT_NOPREFIX))
_WinAPI_ReleaseDC($hWnd, $hDC)
EndFunc ;==>_WriteRotateText
Alles anzeigen