Ja ... danke für deine Info.
Hab auch verstanden, was du gemeint hast ... wenn ich jetzt mehr drüber nachdenke komme ich auch zu dem Schluß, das es so nicht gehen kann ...
ok ... erledigt.
Ja ... danke für deine Info.
Hab auch verstanden, was du gemeint hast ... wenn ich jetzt mehr drüber nachdenke komme ich auch zu dem Schluß, das es so nicht gehen kann ...
ok ... erledigt.
ok ... aber danke, das du dich dazu gemeldet hast ...
Hallo
Beim Umstellen meiner Programme von WinHttp.au3 auf Webdriver (ich nehme den geckodriver) ist mir aufgefallen, daß es keine Möglichkeit gibt einen POST-Request zu senden ... geht das nicht ?
Mit '_WinHTTPSimpleRequest($hConnect, "POST", <Unterseite>, <von wo wir kommen>, <Anhang>)' konnte man ein Datenpaket mitschicken ... das kann man mit dem Webdriver nicht machen, oder ?
Es würde vielen vereinfachen, wenn man dem Webdriver einen solchen POST zuschicken könnte (also mit Datenpaket).
Der Befehl '__WD_Post() ' geht damit nicht ... der ist für was anderes ... oder muss ich die Daten nur anders verpacken und dann mit __WD_Post() verschicken ?
Oder geht es einfach nicht mit einem Webdriver ... ist ein POST-Request gar nicht umsetzbar ?
Hallo,
ich suche jemanden, der mich Unterstützt beim Programmieren mit dem Webdriver (geckodriver & FF).
Ich habe mal ein Programm geschrieben, das auf WinHTTP beruht ... möchte das jetzt aber für den Webdriver umgeschrieben haben.
Ein paar Erfahrungen habe ich auch schon gemacht ... aber es gibt immer wieder Stellen in so einem HTML-Code, der nicht so einfach ist - vor allem, wenn man eigentlich gar keine Ahnung von WebSites und deren Aufbau hat ...
Also - du solltest Erfahrung im Aufbau von Webseiten haben und auch Erfahrung im Umgang mit den Webdriver ...
Alles andere per PM
Danke
Hallo
ich möchte die Hintergrundfarbe in einem GUICtrlCreateTab(...) ändern.
Standardmässig ist die Hintergrundfarbe immer weiß ... das möchte ich aber nicht.
Ich möchte die Standardhintergrundfarbe haben, die ich auch bei der Erstellung einer GUI habe - ohne vorher eine Farbe definiert zu haben.
Das müsste eigentlich die Farbe sein, mit denen ich auch die Windows-Fenster bediene, oder ?
#include <GUIConstantsEx.au3>
Example()
Func Example()
GUICreate("My Test-GUI Tab",600,150,-1,-1)
GUISetBkColor(0x00E0FFFF)
GUISetFont(9, 300)
GUICtrlCreateTab(10, 10, 500, 100)
GUICtrlCreateTabItem(" Typ HPL ")
GUICtrlCreateLabel("Label 00", 30, 80, 50, 20)
GUICtrlCreateButton("OK", 20, 50, 50, 20)
GUICtrlCreateInput("DEFAULT", 80, 50, 70, 20)
GUICtrlCreateTabItem(" Typ LP ")
GUICtrlCreateLabel("Label 41", 30, 80, 50, 20)
GUICtrlCreateCombo("", 20, 50, 90, 120)
GUICtrlSetData(-1, "LP 40/80|LP 40/120|LP 40/175|LP 40/190|LP 40/235|LP 40/275|LP 40/295|LP 40/430|LP 50/175|LP 50/425|LP 50/695|LP 50/950", "LP 40/175")
GUICtrlCreateButton(" Übernehmen ", 180, 50, 120, 20)
GUICtrlCreateTabItem(" Typ LPSA ")
GUICtrlSetState(-1, $GUI_SHOW)
GUICtrlCreateLabel("Label 22", 30, 80, 50, 20)
GUICtrlCreateButton("...", 140, 50, 50)
GUICtrlCreateTabItem("")
GUICtrlCreateLabel("Label 33", 20, 130, 50, 20)
GUISetState(@SW_SHOW)
Local $idMsg
While 1
$idMsg = GUIGetMsg()
If $idMsg = $GUI_EVENT_CLOSE Then ExitLoop
WEnd
EndFunc ;==>Example
Alles anzeigen
wow ... das is ja cool ... das sehe ich eben erst !!
Genau sowas habe ich gesucht !! ... aber ganz genau sowas !!
PERFEKT !!!
... bau ich gleich ma ein ...
RSchmidt
BugFix ... hhmmm .... sowas hat den Info-Text erzeugt.
1 Sek. stehen lassen und dann einen weiteren ToolTip erzeugt - nur kürzer.
Das das Win 7 ist macht nicht den Unterschied, oder ?
ToolTip($sText, 10, ($wAktReg * 35) + 15, $sTitle, 1)
Sleep($sSec * 1000)
aber danke, das du nochmal nachgeschaut hast ...
Mars - ich habe jetzt mal dein Beispiel mit dem routierenden Text probiert ...
Sieht gut aus ... aber leider verschwindet der Text, sobald ich eine MsgBox auf das Fenster lege.
Die MsgBox wird aufgerufen, wenn ich das Programm durch Klicken auf das Kreuz beende.
Nach dem verschieben der MsgBox ist der Text leider weg.
Hier mal nen Screenshot dazu
Danke für die Demo 'falsche Darstellung / korrekte Darstellung'. Klappt bei mir jetzt auch.
Stimmt, das ist ein Nachteil bei allen Zeichenoperationen mit _WinAPI_.... Da muss man die Message WM_Activate registrieren und erneut zeichnen lassen.
das ist nicht alles. Ein MouseOver killt mir auch den Text ...
aber sonst - sehr gut gemacht - so wollte ich das auch haben ...
BugFix ... anteilig gelöst - ja ... Danke nochmals dafür.
Leider verbleibt der Text nicht in der GUI wenn man das Fenster minimiert / maximiert oder ein anderes Fenster sich darüber legt.
Deswegen bin ich gerade dabei den Bereich mit dem gedrehten Text von der GUI in die Bitmap (GDI+) zu kopieren ... hoffe ich krieg das irgendwie hin ...
Ich schau mir mal die Lösung von Mars an und melde mich dann wieder ... aber erst heute Abend.
Danke
Schmunke
ah - da schau her ... auf Group4 wäre ich nicht gekommen ... ja, es geht !
Danke
BugFix - Danke ... ja, so hab ich mir das schon gedacht.
... schwieriger ist für mich deine Funktion in meinen Code reinzubekommen ... ich kriegs einfach nicht hin.
Mir helft der Brückenschlag von deinen benutzen _WinAPI_-Befehlen zur Bitmap in meinem Code ...
der Aufruf mit
_WriteRotateText($GUI, GUICtrlRead($In), GUICtrlRead($inX), GUICtrlRead($inY), GUICtrlRead($inDeg), _
GUICtrlRead($inSize), GUICtrlRead($inWeight), $type, $readFont, $col, $bkcol)
ist richtig gut ...
Leider nützen mir auch Erklärungen nichts, da mir die Thematik einfach zu unverständlich ist.
Letztendlich möchte die Grafik abspeichern und auch ausdrucken ... mit den gedrehten Text.
Vielleicht kann das einer mal irgendwie ... zusammenführen ?
... die Textdatei - ah ! ja ... einen Moment.
... dann nur auf 'Kennlinie berechnen' gehen.
Die Textdatei bitte im gleichen Verz. lassen
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
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
... ist ja auch 'Stand der Technik' in z.Bsp. CAD-Systemen ...
ich habe deinen Beitrag gelesen ... die Korrektur dazu steht in den letzten beiden Zeilen meines vorletzten Posts ...
Aber Danke für deine sehr sehr ausführliche Darstellung. Ich habs verstanden ...
... und ja - du hattest Recht.
Mein Fehler war, das ich tatsächlich davon ausgegangen bin, das man den Mittelpunkt des Kreises angibt ...