Diskuze: VB NET kreslení grafu
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
David Oczka:6.8.2016 22:16
Hmm, Tvůj kód mi funguje bez problémů... Ačkoliv je opravdu vidět, že začínáš, ale to je vedlejší...
Co Ti to píše za chybu?
Jaroslav Trojan:7.8.2016 9:09
ahoj, píše to : objekt není nastaven na instanci objektu
volám Form1 takto
'Nastavení pole grafu M-N
Dim e As System.Windows.Forms.PaintEventArgs
Dim sender As Object
Dim form1 As Form1 = New Form1()
form1.Form1_Paint(sender, e)
Jaroslav Trojan:7.8.2016 9:12
zdá se mi, že něco není v pořádku s instancí e.
David Oczka:7.8.2016 22:32
No, je již jasné, proč Ti to spadne hned na prvním řádku.
Tím, že to voláš způsobem:
Dim e As System.Windows.Forms.PaintEventArgs
Dim sender As Object
Dim form1 As Form1 = New Form1()
form1.Form1_Paint(sender, e)
pouze deklaruješ nějakou proměnnou sender a nějakou proměnnou e, ale nikde není jejich definování hodnoty. To je důvod, proč Ti řádek:
e.Graphics.Clear(BackColor)
hlásí chybu, jakou hlásí. Proměnná e bude rozhodně null.
Trochu také nechápu, odkud voláš ten formulář (viz kód níže). Respektive, má Tvá aplikace mít více než jeden (ten hlavní) formulář?
Dim form1 As Form1 = New Form1()
form1.Form1_Paint(sender, e)
V případě, že má mít Tvá aplikace pouze jeden formulář, tak Tvůj způsob volání překreslení je bohužel naprosto špatný, nicméně zde je přístup, který používám já (Používám to sice v C#, ale přístup je tu naprosto stejný).
Ten graf budeš obnovovat nějakým způsobem, třeba časovačem v pravidelných intervalech nebo jakoukoliv jinou událost (Nevím, co má být cílem tvého projektu, v mém případě jsem použil událost na kliknutí do formuláře), a v implementaci této události zavoláš z instance hlavního formuláře (pravděpodobně Me) metodu Refresh(), která vybudí událost Paint.
Příklad mého použití:
' Počítadlo zavolání události Paint
Dim counter As Integer = 0
Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles MyBase.Paint
counter += 1 ' Inkrementace
Me.Text = counter.ToString() 'Přepis textu v hlavičce formuláře
'Tvá implementace
End Sub
Private Sub Form1_Click(sender As Object, e As EventArgs) Handles MyBase.Click
Me.Refresh() ' Vybuzení události Paint
End Sub
Dále nemůžu trochu unést Tvou strukturu Ifů...
aa = 100 : cc = NU
If cc > 100 Then aa = 200
If cc > 200 Then aa = 300
If cc > 300 Then aa = 400
If cc > 400 Then aa = 500
If cc > 500 Then aa = 600
If cc > 600 Then aa = 700
If cc > 700 Then aa = 800
If cc > 800 Then aa = 900
If cc > 900 Then aa = 1000
If cc > 1000 Then aa = 2000
If cc > 2000 Then aa = 3000
If cc > 3000 Then aa = 4000
If cc > 4000 Then aa = 5000
If cc > 5000 Then aa = 7000
If cc > 7000 Then aa = 10000
If cc > 10000 Then aa = 15000
cc = Mculim : bb = 50
If cc > 50 Then bb = 100
If cc > 100 Then bb = 200
If cc > 200 Then bb = 300
If cc > 300 Then bb = 400
If cc > 500 Then bb = 750
If cc > 750 Then bb = 1000
If cc > 1000 Then bb = 1500
If cc > 1500 Then bb = 2000
If cc > 2000 Then bb = 2500
If cc > 2500 Then bb = 3000
If cc > 3000 Then bb = 4000
If cc > 4000 Then bb = 5000
If cc > 5000 Then bb = 7000
If cc > 7000 Then bb = 9000
Přemýšlel jsi nad tím, kolikrát se proměnné aa a
bb přepíší? Dejme si jednoduchý příklad: V případě,
že proměnná cc bude rovna 10001, tak proměnná
aa bude přepsána 16 krát!
Lepší přístup by bylo použít If-ElseIf-Else s tím, že
když je podmínka položena, zdali je hodnota větší než nějaké číslo,
tak v prvním Ifu bude porovnání s největším číslem a v
dalších ElseIfech budou porovnání s hodnotami sestupně
nižšími až v posledním Else vyřešíš nejnižší
hodnotu a všechny ostatní...
Jaroslav Trojan:8.8.2016 11:55
Ahoj,
moje aplikace "ZELEZOBETON" má 5 tříd a jeden Form1. Z jedné třídy
Excentrtlak jsem volal formulář
Form1, kde chci kreslit graf funkce M-N.
Není mi jasné, kam mám umístit metodu Form1_Click, dal jsem ji do třídy
Excentrtlak, ale nejde to(je to červeně podtrženo) a nefunguje.
Dále do formuláře Form1_Paint jsem dal counter +Me.Text jak máš napsáno a
pak nevím co znamená
"Tvá implementace".
Napsal jsem tam instanci form1 a její volání takto:
Dim form1 As Form1=New Form1()
form1.Form1_Paint(sender,e)
ale asi je to vše špatně, protože to nefunguje.
Michal Štěpánek:8.8.2016 12:07
Metodu Form1_Click musíš dát překvapivě do "Form1", protože v ideálním případě by ta tvá třída neměla vůbec vědět, že existuje nějaký Form1...
Z jedné třídy Excentrtlak jsem volal formulář Form1
Jak to myslíš, volal formulář ze třídy? Když máš jen jeden formulář, tak ten se přeci spouští při spuštění programu a ne ze třídy, ne? Do třídy si pak saháš pro nějaká data a výsledky výpočtů...
David Oczka:8.8.2016 13:12
Omlouvám, že to tak řeknu, nerad bych se Tě nejak dotknul, ale je očividné, že vůbec nerozumíš tomu, co děláš...
Metoda Form1_Click je vygenerovaná (případně Tebou vytvořená) metoda jako odezva formuláře na kliknutí, která musí být přiřazena k události Click v designeru formuláře (ať už v grafickém prostředí nebo v kódu) a musí být umístěna v těle třídy formuláře, aby fungovala.
Komentářem "Tvá implementace" jsem měla na mysli, že tam by byla umístěna tvá implementace toho grafu, zkrátka Tvůj kód, který jsi sem zaslal dříve... Navíc, to počítadlo (proměnná counter) bylo pouze jako ukázka funkcionality, ne, že to tam musí být...
Jestli tedy chceš pomoct s tím, co děláš, prosím, popiš nám tady, jak má Tvá aplikace vypadat a co má dělat. Nečekej, že ji uděláme za Tebe, ale rádi Tě nasměrujeme správným směrem...
Jak jsem již psal, moje aplikace ŹELEZOBETON má hlavní program Module1 a
v něm se volají
instance tříd OHYB, EXCENTRTAH, EXCENTRTLAK, SMYK a potom ještě chci vyvolat
formulář
Form1 pro nakreslení grafu. Všechny třídy pracují a navrhují
železobetonové průřezy na uvedené druhy namáhání. Z Modulu1 jsem vyvolal
instanci třídy Form1, tedy form1.Form1_Paint(). Potřebuji tam
také přenést všechna data ze třídy EXCENTRTLAK potřebná pro kreslení
grafu.
Jak tedy správně vyvolat Form1 a přenést tam ta data z EXCENTRTLAK , to je
můj problém , který zatím nevím řešit, protože jsem s formulářem Form1
ještě nikdy nepracoval.
Díky za rady, pomáhá mi to.
Nyní je potíž s počítadlem , vadí tam Dim counter As Integer=0 , tam se to
seklo.
MadaraCZech:8.8.2016 15:31
Nic proti, ale nebylo by lepší si na vytvoření té aplikaci někoho najmout ?
Jaroslav Trojan:8.8.2016 16:05
A proč někoho najímat, když už jsem skoro hotov a chybí mi jen ten graf?
David Oczka:8.8.2016 16:12
A ta třída Module1 je co? Formulář nebo konzolová aplikace?
Je to konzolová aplikace- hlavní program
vypadá takto
Module Module1
Dim beton, cykl As Integer
Dim Rbd As Single
Dim Rbtd As Single
Dim Eb As Single
Dim gamab As Single
Dim ocel As Integer
Dim Rsd As Single
Dim Rscd As Single
Dim gamas, gu, z1, vyskah0, eta, excentr, plochaf, plochaf1 As Single
Dim ret As String
Dim ksilim, sirkab, vyskah, delka, krytia, krytia1, moment, silaN1 As Single
''' <summary>
'''
''' </summary>
Sub Main()
Console.WriteLine()
Console.WriteLine(" ŽELEZOBETON - Návrh dle ČSN 731201 ")
Console.WriteLine()
Console.Write(" Zadej beton-značka: ")
Dim beton As Integer = Console.ReadLine()
Console.Write(" pevnost v tlaku Rbd[MPa] ? ")
Dim Rbd As Single = Console.ReadLine()
Console.Write(" pevnost v tahu Rbtd[MPa] ? ")
Dim Rbtd As Single = Console.ReadLine()
Console.Write(" modul pružnosti Eb[MPa] ? ")
Dim Eb As Single = Console.ReadLine()
Console.Write(" součinitel gama,b ? ")
Dim gamab As Single = Console.ReadLine()
Console.Write(" zadej ocel-značka:")
Dim ocel As Integer = Console.ReadLine()
Console.Write(" pevnost oceli v tahu Rsd[MPa] ? ")
Dim Rsd As Single = Console.ReadLine()
Console.Write(" pevnost oceli v tlaku Rscd[MPa] ? ")
Dim Rscd As Single = Console.ReadLine()
Console.Write(" součinitel gama,s ? ")
Dim gamas As Single = Console.ReadLine()
Rbd = Rbd * gamab : Rbtd = Rbtd * gamab : Rsd = Rsd * gamas : Rscd = Rscd * gamas
Dim ksilim As Single = 1 / (1.25 + Rsd / 420)
cykl = 0
vstup: cykl = cykl + 1
Console.WriteLine()
Console.Write(" Vstup PRUŘEZ: šířka B[cm], výška h[cm], délka L[m] ")
sirkab = Console.ReadLine()
vyskah = Console.ReadLine()
delka = Console.ReadLine()
Console.Write(" zadej krytí a[cm], krytí a1[cm] ")
krytia = Console.ReadLine()
krytia1 = Console.ReadLine()
Console.Write(" zadej moment Md[kNm], normál.sílu Nd[kN] ")
moment = Console.ReadLine()
silaN1 = Console.ReadLine()
'rozhodnutí o typu namáhání
If moment <> 0 And silaN1 = 0 Then
'OHYB
Dim ohyb As Ohyb = New Ohyb()
ohyb.Navrh(vyskah, krytia, krytia1, sirkab, moment, Rbd, Rsd, Rscd)
ohyb.Posudek(vyskah, krytia, krytia1, sirkab, moment, Rbd, Rsd, Rscd, delka, silaN1, ksilim, Rbtd, z1)
End If
If moment <> 0 And silaN1 > 0 Then
'EXCENTRICKÝ TAH
Dim excentrtah As Excentrtah = New Excentrtah
excentrtah.Navrh(vyskah, krytia, krytia1, sirkab, moment, Rbd, Rsd, Rscd, delka, silaN1, ksilim)
excentrtah.Posudek(vyskah, krytia, krytia1, sirkab, moment, Rbd, Rsd, Rscd, delka, silaN1, ksilim, Rbtd)
End If
If moment <> 0 And silaN1 < 0 Then
'EXCENTRICKÝ TLAK
Dim excentrtlak As Excentrtlak = New Excentrtlak
excentrtlak.Navrh(vyskah, krytia, krytia1, sirkab, moment, Rbd, Rsd, Rscd, delka, silaN1, ksilim, Rbtd, Eb)
excentrtlak.Posudek(vyskah, krytia, krytia1, sirkab, moment, Rbd, Rsd, Rscd, delka, silaN1, ksilim, Rbtd, Eb, eta, excentr, plochaf, plochaf1)
Console.Write(" Požaduješ Graf M - N ? a/n ")
ret = Console.ReadLine()
If ret = "a" Then
Dim e As EventArgs, sender As Object
Dim form1 As Form1 = New Form1()
' form1.Form1_Paint()
End If
End If
Console.Write(" SMYKOVÁ VÝZTUŽ ? a/n ")
ret = Console.ReadLine()
If ret = "n" Then GoTo konec
'NÁVRH NA SMYK-SMYKOVÁ VÝZTUŽ
Dim smyk As Smyk = New Smyk()
smyk.Navrh(gu, z1, sirkab, moment, vyskah, Rbtd, Rsd, delka)
konec: Console.WriteLine()
GoTo vstup
End Sub
Public Sub fngu(vyskah)
If vyskah >= 60 Then
gu = 1
Else
gu = 1 - 20 / (vyskah * 10 + 50) ' Console.Write("gu=" & gu)
End If
If gu < 0.85 Then
gu = 0.85
End If
End Sub
End Module
David Oczka:8.8.2016 17:04
A jsme doma...
Formulář tedy zavoláš pomocí:
Dim f As Form1 = New Form1()
f.ShowDialog()
zbytek je jiš pak řešeno uvnitř třídy formuláře...
Ta data (v případě, že nejde o kontinuální data, ale jednorázovou dávku) bych pak do formuláře předal pomocí konstruktoru...
MadaraCZech:8.8.2016 17:20
Protože až to bude chtít někdo upravit, tak to stejně asi bude muset napsat znovu.
Michal Štěpánek:9.8.2016 6:09
Je dobré, že se snažíš něco naučit, ale myslím si, že kdybys to nedělal jako konzolovku, ale jako FormAplikaci, nebo ještě lépe WPF aplikaci, ušetřil bys podle mého dost kódu na psaní, navíc by to lépe vypadalo a hlavně by se to uživateli určitě lépe ovládalo... A to nemluvím o případné potřebě z programu něco vytisknout nebo vyexportovat např. do PDFka...
Jaroslav Trojan:10.8.2016 9:39
Ahoj,
napsal jsem ten konstruktor, ale po spuštění mi to přeteklo (Overflow) v
havičce konstruktoru.
Nějaká data jsem umazal, ale nejde to stejně.
viz dole:
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
Private Sub Form1Click(sender As Object, e As EventArgs) Handles MyBase.Click
Me.Refresh() ' vybuzení Paint události
End Sub
Public excentrD, eta, momentMc, momentMe, Rbd, Rbtd, Rsd, Rscd, delka, vyskah, sirkab, silaN1, plochaf
Public plochaf1, krytia, krytia1
Dim counter As Integer = 0
Dim form1 As Form1 = New Form1(excentrD, eta, momentMc, momentMe, Rbd, Rbtd, Rsd, Rscd, delka, vyskah, sirkab, silaN1, plochaf, plochaf1, krytia, krytia1)
Public Sub New(excentrD, momentMe, Rbd, Rbtd, Rsd, Rscd, vyskah, sirkab, silaN1, plochaf, plochaf1, krytia, krytia1)
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
Me.excentrD = excentrD
' Me.eta = eta
' Me.momentMc = momentMc
Me.momentMe = momentMe
Me.Rbd = Rbd
Me.Rbtd = Rbtd
Me.Rsd = Rsd
Me.Rscd = Rscd
' Me.delka = delka
Me.vyskah = vyskah
Me.sirkab = sirkab
Me.silaN1 = silaN1
Me.plochaf = plochaf
Me.plochaf1 = plochaf1
Me.krytia = krytia
Me.krytia1 = krytia1
End Sub
Public Sub Form1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
counter += 1
Me.Text = counter.ToString() 'text v hlavičce formuláře
e.Graphics.Clear(BackColor)
' Dim excentrtlak As Excentrtlak = New Excentrtlak()
' Nastavení pole grafu M-N
Dim TH, ksilim, excentrD, vystrednost, momentMC, Nb As Single
Dim sirkab, vyskah, Rbd, NS, plochaf, plochaf1, Rscd, NU, gu, MEE, Mculim, Rsd As Single
Dim aa, bb, cc, bbb, mx, my, kk, rr, nnn, dd As Integer
Dim silaN1, MM, n5r, n4r, n3r, n2r, n1r, mu1, mu2, mu3, mu4, mu5, Ne, Nc, mu0, N As Single
Dim vyskah0, vyskaz0, Mu, Mc, krytia1, krytia, xu, y, mmu As Single
' sirkab = 25 : vyskah = 55 : Rbd = 17 : plochaf = 14 : plochaf1 = 3 : Rscd = 350
'silaN1 = 500 : Rsd = 350 : krytia1 = 3 : krytia = 3
ksilim = 1 / (1.25 + Rscd / 420)
TH = ksilim * (1 - ksilim / 2) ' excentrD = Math.Abs(eta * excentr)
vystrednost = excentrD : vyskah0 = vyskah - krytia : vyskaz0 = vyskah / 2 - krytia
Console.Write(" excentrD=" & excentrD)
If vyskah >= 60 Then
gu = 1
Else
gu = 1 - 20 / (10 * vyskah + 50)
End If
If gu < 0.85 Then gu = 0.85
Nb = sirkab * vyskah * Rbd / 10
NS = (plochaf + plochaf1) * Rscd / 10 : NU = gu * (Nb + NS)
Nc = gu * (ksilim * sirkab * vyskah0 * Rbd / 10 + plochaf1 * Rscd / 10 - plochaf * Rsd / 10)
Ne = gu * (0.8 * Nb + NS) 'unosnost Ne,u
Console.Write(" Neu=" & Ne)
Mculim = gu * (ksilim / 2 * sirkab * vyskah0 / 100 * (vyskah - ksilim * vyskah0) * Rbd / 10)
Mculim += gu * (plochaf1 * Rscd / 10 * vyskaz0 / 100 + plochaf * Rsd / 10 * vyskaz0 / 100)
'malá excentricita
Mu = gu * (plochaf1 * vyskaz0 - plochaf * vyskaz0) / 100 * Rscd / 10 'malá exc-jen betonu
Mc = Mculim : Mu = Math.Abs(Mu) ' Ncu,lim=Nc
MMu = Mu + (Mc - Mu) / (NU - Nc) * (NU - silaN1) : MM = 0
MEE = Mu + (Mc - Mu) / (NU - Nc) * (NU - Ne)
Console.Write(" Meu=" & MEE)
momentMC = Math.Abs(Mc) : MEE = Math.Abs(MEE)
If silaN1 < Nc Then
'velká excentricita
MEE = Mu + (Mc - Mu) / (NU - Nc) * (NU - Ne)
End If
'výběr měřítka pro X dle Ne,max , pro Y dle Mcu,lim
aa = 100 : cc = NU
Console.Write(" Ne,u=" & Ne)
If cc > 100 Then aa = 200
If cc > 200 Then aa = 300
If cc > 300 Then aa = 400
If cc > 400 Then aa = 500
If cc > 500 Then aa = 600
If cc > 600 Then aa = 700
If cc > 700 Then aa = 800
If cc > 800 Then aa = 900
If cc > 900 Then aa = 1000
If cc > 1000 Then aa = 2000
If cc > 2000 Then aa = 3000
If cc > 3000 Then aa = 4000
If cc > 4000 Then aa = 5000
If cc > 5000 Then aa = 7000
If cc > 7000 Then aa = 10000
If cc > 10000 Then aa = 15000
cc = Mculim : bb = 50
Console.Write(" Mcu=" & Mculim & " Ncu=" & Nc) : Console.WriteLine()
Console.Write(" Mu=" & Mu & " MM=" & MM & " Me=" & MEE)
Console.WriteLine("momentMC=" & momentMC & " Meu=" & mmu) : Console.WriteLine()
If cc > 50 Then bb = 100
If cc > 100 Then bb = 200
If cc > 200 Then bb = 300
If cc > 300 Then bb = 400
If cc > 400 Then bb = 750
If cc > 750 Then bb = 1000
If cc > 1000 Then bb = 1500
If cc > 1500 Then bb = 2000
If cc > 2000 Then bb = 2500
If cc > 2500 Then bb = 3000
If cc > 3000 Then bb = 4000
If cc > 4000 Then bb = 5000
If cc > 5000 Then bb = 7000
If cc > 7000 Then bb = 9000
bbb = bb
mx = (1350 - 60) / aa : my = (730 - 60) / bb
kk = aa / 10
Console.Write(" 0.0")
For i = 1 To 10
Console.Write(" " & kk * i)
Next
Console.WriteLine(" Normálná síla Nd[kN]")
Dim p As New Drawing.Pen(BackColor.Red, 1) : xu = -0.01 * aa * mx
e.Graphics.DrawLine(p, xu, 30, 10 * aa * mx + 60, 30) : y = -0.01 * bb * my
e.Graphics.DrawLine(p, 40, y, 40, bb * my + 60)
kk = aa / 10 * mx : dd = bb / 40 * my
For i = 1 To 10
e.Graphics.DrawLine(p, i * kk + 40, 10, i * kk + 40, 25)
Next i
dd = 8 * dd
kk = bb / 10 * my : xu = 0.5 * dd
For i = 1 To 10
e.Graphics.DrawLine(p, -xu, i * kk + 30, xu, i * kk + 30)
Next
kk = bb / 10
For i = 1 To 3
Console.Write(i * kk, " ") : Console.WriteLine()
Next
For i = 4 To 6
Console.Write(i * kk) : Console.WriteLine()
Next
For i = 7 To 9
Console.Write(i * kk) : Console.WriteLine()
Next
Console.WriteLine(bb) : Console.Write(" Mu[kNm]")
N = 4 / 5 * Nc
'gosub 3470
Moment(MM, N, gu, plochaf1, plochaf, Rscd, Rsd, Rbd, sirkab, krytia1, vyskah)
mu4 = MM : n4r = N : n5r = Nc
mu5 = Mc
Console.WriteLine(" MM=" & MM & " Mc=" & Mc & " Nc=" & Nc & " N=" & N)
e.Graphics.DrawLine(p, n4r * mx + 40, mu4 * my + 30, n5r * mx + 40, mu5 * my + 30)
N = 3 / 5 * Nc
'gosub 3470
moment(MM, N, gu, plochaf1, plochaf, Rscd, Rsd, Rbd, sirkab, krytia1, vyskah)
n3r = N : mu3 = MM
Console.WriteLine(" MM=" & MM & " N=" & N)
e.Graphics.DrawLine(p, n3r * mx + 40, mu3 * my + 30, n4r * mx + 40, mu4 * my + 30)
N = 2 / 5 * Nc
'gosub 3470
moment(MM, N, gu, plochaf1, plochaf, Rscd, Rsd, Rbd, sirkab, krytia1, vyskah)
n2r = N : mu2 = MM
Console.WriteLine(" MM=" & MM & " N=" & N)
e.Graphics.DrawLine(p, n2r * mx + 40, mu2 * my + 30, n3r * mx + 40, mu3 * my + 30)
N = 1 / 5 * Nc : n1r = N
'gosub 32470
moment(MM, N, gu, plochaf1, plochaf, Rscd, Rsd, Rbd, sirkab, krytia1, vyskah)
mu1 = MM
Console.WriteLine(" MM=" & MM & " N=" & N)
e.Graphics.DrawLine(p, n1r * mx + 40, mu1 * my + 30, n2r * mx + 40, mu2 * my + 30)
N = 0 'gosub 3470
moment(MM, N, gu, plochaf1, plochaf, Rscd, Rsd, Rbd, sirkab, krytia1, vyskah)
mu0 = MM
Console.WriteLine(" M0=" & mu0 & " N=" & N)
e.Graphics.DrawLine(p, 40, mu0 * my + 30, n1r * mx + 40, mu1 * my + 30)
Console.WriteLine(" Nc=" & Nc & " Mculim=" & Mculim & " Ne=" & Ne & " MEE=" & MEE)
e.Graphics.DrawLine(p, Nc * mx + 40, Mculim * my + 30, Ne * mx + 40, MEE * my + 30)
e.Graphics.DrawLine(p, Ne * mx + 40, MEE * my + 30, Ne * mx + 40, 30)
bbb = bbb / 20
e.Graphics.DrawLine(p, n1r * mx + 40, bbb * my + 30, n1r * mx + 40, mu1 * my + 30)
e.Graphics.DrawLine(p, n2r * mx + 40, bbb * my + 30, n2r * mx + 40, mu2 * my + 30)
e.Graphics.DrawLine(p, n3r * mx + 40, bbb * my + 30, n3r * mx + 40, mu3 * my + 30)
e.Graphics.DrawLine(p, n4r * mx + 40, bbb * my + 30, n4r * mx + 40, mu4 * my + 30)
e.Graphics.DrawLine(p, n5r * mx + 40, 30, n5r * mx + 40, 30)
rr = bb / 80 * my : nnn = silaN1 : MM = silaN1 * excentrD / 100
Console.WriteLine(" silaN1[kN]=" & nnn & " excentrD[cm]=" & excentrD & " MM[kNm]=" & MM)
e.Graphics.DrawEllipse(p, nnn * mx + 40, MM * my + 30, rr, rr)
xu = nnn * mx - rr * 1.7 + 40 : y = nnn * mx + rr * 1.7 + 40
e.Graphics.DrawLine(p, xu, MM * my + 30, y, MM * my + 30)
xu = MM * my + rr * 0.6 + 30 : y = MM * my - rr * 0.6 + 30
e.Graphics.DrawLine(p, nnn * mx + 40, xu, nnn * mx + 40, y)
Console.WriteLine(" GRAF M - N průběh:")
Console.WriteLine(" N0r=" & N & " Mu0=" & mu0)
Console.WriteLine(" N1r=" & n1r & " Mu1=" & mu1)
Console.WriteLine(" N2r=" & n2r & " Mu2=" & mu2)
Console.WriteLine(" N3r=" & n3r & " Mu3=" & mu3)
Console.WriteLine(" N4r=" & n4r & " Mu4=" & mu4)
Console.WriteLine(" Ncu,lim=" & Nc & " Mcu,lim=" & Mculim)
Console.WriteLine(" Ne,max=" & NU & " Me=" & MEE & " Meu=" & mmu)
End Sub
Public Function Moment(MM, N, gu, plochaf1, plochaf, Rscd, Rsd, Rbd, sirkab, krytia1, vyskah)
Dim xu, vyskaz0, ar As Single
xu = (N / gu - plochaf1 * Rscd / 10 + plochaf * Rsd / 10) / (sirkab * Rbd / 10)
vyskaz0 = vyskah / 2 - krytia1
If xu >= 2 * krytia1 Then GoTo mom
ar = (N / gu - 2 * krytia1 * sirkab * Rbd / 10 + plochaf * Rsd / 10) * 10 / Rscd
If ar >= 0 Then xu = 2 * krytia1 : plochaf1 = ar : GoTo mom
xu = (N / gu + plochaf * Rsd / 10) / (sirkab * Rbd / 10) : plochaf1 = 0
mom: MM = gu * (sirkab * xu * (vyskah - xu) / 2 * Rbd / 10 + plochaf1 * Rscd / 10 * vyskaz0 + plochaf * Rsd / 10 * vyskaz0) / 100
Return MM
Console.Write(" MM=" & MM)
End Function
End Class
David Oczka:10.8.2016 10:34
Dáváš to zase špatně...
Už jsem Ti i psal, že ten counter je tam jen jako ukázka. No, pokud ten graf má být vykreslen pouze jednou a je tedy statický, tak tam nemusí být ani ta medota Form1_Click, protože událost Paint je jednou vyvolána již při otevření formuláře.
Třída toho tvého formuláře tedy bude vypadat takto:
Public Class Form1
Public excentrD, eta, momentMc, momentMe, Rbd, Rbtd, Rsd, Rscd, delka, vyskah, sirkab, silaN1, plochaf
Public plochaf1, krytia, krytia1
Public Sub New(excentrD, momentMe, Rbd, Rbtd, Rsd, Rscd, vyskah, sirkab, silaN1, plochaf, plochaf1, krytia, krytia1)
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
Me.excentrD = excentrD
' Me.eta = eta
' Me.momentMc = momentMc
Me.momentMe = momentMe
Me.Rbd = Rbd
Me.Rbtd = Rbtd
Me.Rsd = Rsd
Me.Rscd = Rscd
' Me.delka = delka
Me.vyskah = vyskah
Me.sirkab = sirkab
Me.silaN1 = silaN1
Me.plochaf = plochaf
Me.plochaf1 = plochaf1
Me.krytia = krytia
Me.krytia1 = krytia1
End Sub
Public Sub Form1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
e.Graphics.Clear(BackColor)
' Dim excentrtlak As Excentrtlak = New Excentrtlak()
' Nastavení pole grafu M-N
Dim TH, ksilim, excentrD, vystrednost, momentMC, Nb As Single
Dim sirkab, vyskah, Rbd, NS, plochaf, plochaf1, Rscd, NU, gu, MEE, Mculim, Rsd As Single
Dim aa, bb, cc, bbb, mx, my, kk, rr, nnn, dd As Integer
Dim silaN1, MM, n5r, n4r, n3r, n2r, n1r, mu1, mu2, mu3, mu4, mu5, Ne, Nc, mu0, N As Single
Dim vyskah0, vyskaz0, Mu, Mc, krytia1, krytia, xu, y, mmu As Single
' sirkab = 25 : vyskah = 55 : Rbd = 17 : plochaf = 14 : plochaf1 = 3 : Rscd = 350
'silaN1 = 500 : Rsd = 350 : krytia1 = 3 : krytia = 3
ksilim = 1 / (1.25 + Rscd / 420)
TH = ksilim * (1 - ksilim / 2) ' excentrD = Math.Abs(eta * excentr)
vystrednost = excentrD : vyskah0 = vyskah - krytia : vyskaz0 = vyskah / 2 - krytia
Console.Write(" excentrD=" & excentrD)
If vyskah >= 60 Then
gu = 1
Else
gu = 1 - 20 / (10 * vyskah + 50)
End If
If gu < 0.85 Then gu = 0.85
Nb = sirkab * vyskah * Rbd / 10
NS = (plochaf + plochaf1) * Rscd / 10 : NU = gu * (Nb + NS)
Nc = gu * (ksilim * sirkab * vyskah0 * Rbd / 10 + plochaf1 * Rscd / 10 - plochaf * Rsd / 10)
Ne = gu * (0.8 * Nb + NS) 'unosnost Ne,u
Console.Write(" Neu=" & Ne)
Mculim = gu * (ksilim / 2 * sirkab * vyskah0 / 100 * (vyskah - ksilim * vyskah0) * Rbd / 10)
Mculim += gu * (plochaf1 * Rscd / 10 * vyskaz0 / 100 + plochaf * Rsd / 10 * vyskaz0 / 100)
'malá excentricita
Mu = gu * (plochaf1 * vyskaz0 - plochaf * vyskaz0) / 100 * Rscd / 10 'malá exc-jen betonu
Mc = Mculim : Mu = Math.Abs(Mu) ' Ncu,lim=Nc
mmu = Mu + (Mc - Mu) / (NU - Nc) * (NU - silaN1) : MM = 0
MEE = Mu + (Mc - Mu) / (NU - Nc) * (NU - Ne)
Console.Write(" Meu=" & MEE)
momentMC = Math.Abs(Mc) : MEE = Math.Abs(MEE)
If silaN1 < Nc Then
'velká excentricita
MEE = Mu + (Mc - Mu) / (NU - Nc) * (NU - Ne)
End If
'výběr měřítka pro X dle Ne,max , pro Y dle Mcu,lim
aa = 100 : cc = NU
Console.Write(" Ne,u=" & Ne)
If cc > 100 Then aa = 200
If cc > 200 Then aa = 300
If cc > 300 Then aa = 400
If cc > 400 Then aa = 500
If cc > 500 Then aa = 600
If cc > 600 Then aa = 700
If cc > 700 Then aa = 800
If cc > 800 Then aa = 900
If cc > 900 Then aa = 1000
If cc > 1000 Then aa = 2000
If cc > 2000 Then aa = 3000
If cc > 3000 Then aa = 4000
If cc > 4000 Then aa = 5000
If cc > 5000 Then aa = 7000
If cc > 7000 Then aa = 10000
If cc > 10000 Then aa = 15000
cc = Mculim : bb = 50
Console.Write(" Mcu=" & Mculim & " Ncu=" & Nc) : Console.WriteLine()
Console.Write(" Mu=" & Mu & " MM=" & MM & " Me=" & MEE)
Console.WriteLine("momentMC=" & momentMC & " Meu=" & mmu) : Console.WriteLine()
If cc > 50 Then bb = 100
If cc > 100 Then bb = 200
If cc > 200 Then bb = 300
If cc > 300 Then bb = 400
If cc > 400 Then bb = 750
If cc > 750 Then bb = 1000
If cc > 1000 Then bb = 1500
If cc > 1500 Then bb = 2000
If cc > 2000 Then bb = 2500
If cc > 2500 Then bb = 3000
If cc > 3000 Then bb = 4000
If cc > 4000 Then bb = 5000
If cc > 5000 Then bb = 7000
If cc > 7000 Then bb = 9000
bbb = bb
mx = (1350 - 60) / aa : my = (730 - 60) / bb
kk = aa / 10
Console.Write(" 0.0")
For i = 1 To 10
Console.Write(" " & kk * i)
Next
Console.WriteLine(" Normálná síla Nd[kN]")
Dim p As New Drawing.Pen(BackColor.Red, 1) : xu = -0.01 * aa * mx
e.Graphics.DrawLine(p, xu, 30, 10 * aa * mx + 60, 30) : y = -0.01 * bb * my
e.Graphics.DrawLine(p, 40, y, 40, bb * my + 60)
kk = aa / 10 * mx : dd = bb / 40 * my
For i = 1 To 10
e.Graphics.DrawLine(p, i * kk + 40, 10, i * kk + 40, 25)
Next i
dd = 8 * dd
kk = bb / 10 * my : xu = 0.5 * dd
For i = 1 To 10
e.Graphics.DrawLine(p, -xu, i * kk + 30, xu, i * kk + 30)
Next
kk = bb / 10
For i = 1 To 3
Console.Write(i * kk, " ") : Console.WriteLine()
Next
For i = 4 To 6
Console.Write(i * kk) : Console.WriteLine()
Next
For i = 7 To 9
Console.Write(i * kk) : Console.WriteLine()
Next
Console.WriteLine(bb) : Console.Write(" Mu[kNm]")
N = 4 / 5 * Nc
'gosub 3470
Moment(MM, N, gu, plochaf1, plochaf, Rscd, Rsd, Rbd, sirkab, krytia1, vyskah)
mu4 = MM : n4r = N : n5r = Nc
mu5 = Mc
Console.WriteLine(" MM=" & MM & " Mc=" & Mc & " Nc=" & Nc & " N=" & N)
e.Graphics.DrawLine(p, n4r * mx + 40, mu4 * my + 30, n5r * mx + 40, mu5 * my + 30)
N = 3 / 5 * Nc
'gosub 3470
Moment(MM, N, gu, plochaf1, plochaf, Rscd, Rsd, Rbd, sirkab, krytia1, vyskah)
n3r = N : mu3 = MM
Console.WriteLine(" MM=" & MM & " N=" & N)
e.Graphics.DrawLine(p, n3r * mx + 40, mu3 * my + 30, n4r * mx + 40, mu4 * my + 30)
N = 2 / 5 * Nc
'gosub 3470
Moment(MM, N, gu, plochaf1, plochaf, Rscd, Rsd, Rbd, sirkab, krytia1, vyskah)
n2r = N : mu2 = MM
Console.WriteLine(" MM=" & MM & " N=" & N)
e.Graphics.DrawLine(p, n2r * mx + 40, mu2 * my + 30, n3r * mx + 40, mu3 * my + 30)
N = 1 / 5 * Nc : n1r = N
'gosub 32470
Moment(MM, N, gu, plochaf1, plochaf, Rscd, Rsd, Rbd, sirkab, krytia1, vyskah)
mu1 = MM
Console.WriteLine(" MM=" & MM & " N=" & N)
e.Graphics.DrawLine(p, n1r * mx + 40, mu1 * my + 30, n2r * mx + 40, mu2 * my + 30)
N = 0 'gosub 3470
Moment(MM, N, gu, plochaf1, plochaf, Rscd, Rsd, Rbd, sirkab, krytia1, vyskah)
mu0 = MM
Console.WriteLine(" M0=" & mu0 & " N=" & N)
e.Graphics.DrawLine(p, 40, mu0 * my + 30, n1r * mx + 40, mu1 * my + 30)
Console.WriteLine(" Nc=" & Nc & " Mculim=" & Mculim & " Ne=" & Ne & " MEE=" & MEE)
e.Graphics.DrawLine(p, Nc * mx + 40, Mculim * my + 30, Ne * mx + 40, MEE * my + 30)
e.Graphics.DrawLine(p, Ne * mx + 40, MEE * my + 30, Ne * mx + 40, 30)
bbb = bbb / 20
e.Graphics.DrawLine(p, n1r * mx + 40, bbb * my + 30, n1r * mx + 40, mu1 * my + 30)
e.Graphics.DrawLine(p, n2r * mx + 40, bbb * my + 30, n2r * mx + 40, mu2 * my + 30)
e.Graphics.DrawLine(p, n3r * mx + 40, bbb * my + 30, n3r * mx + 40, mu3 * my + 30)
e.Graphics.DrawLine(p, n4r * mx + 40, bbb * my + 30, n4r * mx + 40, mu4 * my + 30)
e.Graphics.DrawLine(p, n5r * mx + 40, 30, n5r * mx + 40, 30)
rr = bb / 80 * my : nnn = silaN1 : MM = silaN1 * excentrD / 100
Console.WriteLine(" silaN1[kN]=" & nnn & " excentrD[cm]=" & excentrD & " MM[kNm]=" & MM)
e.Graphics.DrawEllipse(p, nnn * mx + 40, MM * my + 30, rr, rr)
xu = nnn * mx - rr * 1.7 + 40 : y = nnn * mx + rr * 1.7 + 40
e.Graphics.DrawLine(p, xu, MM * my + 30, y, MM * my + 30)
xu = MM * my + rr * 0.6 + 30 : y = MM * my - rr * 0.6 + 30
e.Graphics.DrawLine(p, nnn * mx + 40, xu, nnn * mx + 40, y)
Console.WriteLine(" GRAF M - N průběh:")
Console.WriteLine(" N0r=" & N & " Mu0=" & mu0)
Console.WriteLine(" N1r=" & n1r & " Mu1=" & mu1)
Console.WriteLine(" N2r=" & n2r & " Mu2=" & mu2)
Console.WriteLine(" N3r=" & n3r & " Mu3=" & mu3)
Console.WriteLine(" N4r=" & n4r & " Mu4=" & mu4)
Console.WriteLine(" Ncu,lim=" & Nc & " Mcu,lim=" & Mculim)
Console.WriteLine(" Ne,max=" & NU & " Me=" & MEE & " Meu=" & mmu)
End Sub
Public Function Moment(MM, N, gu, plochaf1, plochaf, Rscd, Rsd, Rbd, sirkab, krytia1, vyskah)
Dim xu, vyskaz0, ar As Single
xu = (N / gu - plochaf1 * Rscd / 10 + plochaf * Rsd / 10) / (sirkab * Rbd / 10)
vyskaz0 = vyskah / 2 - krytia1
If xu >= 2 * krytia1 Then GoTo mom
ar = (N / gu - 2 * krytia1 * sirkab * Rbd / 10 + plochaf * Rsd / 10) * 10 / Rscd
If ar >= 0 Then xu = 2 * krytia1 : plochaf1 = ar : GoTo mom
xu = (N / gu + plochaf * Rsd / 10) / (sirkab * Rbd / 10) : plochaf1 = 0
mom:
MM = gu * (sirkab * xu * (vyskah - xu) / 2 * Rbd / 10 + plochaf1 * Rscd / 10 * vyskaz0 + plochaf * Rsd / 10 * vyskaz0) / 100
Return MM
Console.Write(" MM=" & MM)
End Function
End Class
A formulář jsi přece chtěl volat z té konzolové aplikace, tak proč jsi se jej snažil volat uvnitř formuláře samotného? O_o
Takto nějak to provedeš:
Module Module1
Sub Main()
Dim f As Form1 = New Form1(Zde budou tvé proměnné)
f.ShowDialog()
End Sub
End Module
A ještě bych Ti doporučil, abys do toho konstuktoru přidal datové typy těch vstupních parametrů, protože jinak Tě čeká přetypování z datového typu object.
PS: Pokud Ti to pak bude hlásit chybu, že nemáš nadefinovanou metodu pro událost Load nebo Click, tak je z designeru odstraň. Spíše bych Ti doporučil odstranit je z designeru jako první.
PPS: Také bych Ti doporučil nějaké samostudium než budeš pokračovat dál. Protože takhle to prostě nejde...
Jaroslav Trojan:10.8.2016 14:05
Formulář vypadá přesně dle Tvého, ale nejde do konstruktoru vložit
datové typy parametrů, hlásí to, že je již deklarováno.
Volám formulář tak jak doporučuješ , včetně 15 parametrů. Spustí se ,
ale data se nepřenesou.[code
Public Class Form1
Public excentrD, eta, momentMc, momentMe, Rbd, Rbtd, Rsd, Rscd, delka, vyskah, sirkab, silaN1, plochaf
Public plochaf1, krytia, krytia1
Public Sub New(excentrD, momentMe, Rbd, Rbtd, Rsd, Rscd, vyskah, sirkab, silaN1, plochaf, plochaf1, krytia, krytia1)
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
Me.excentrD = excentrD
Me.eta = eta
Me.momentMc = momentMc
Me.momentMe = momentMe
Me.Rbd = Rbd
Me.Rbtd = Rbtd
Me.Rsd = Rsd
Me.Rscd = Rscd
Me.vyskah = vyskah
Me.sirkab = sirkab
Me.silaN1 = silaN1
Me.plochaf = plochaf
Me.plochaf1 = plochaf1
Me.krytia = krytia
Me.krytia1 = krytia1
End Sub
Public Sub Form1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
e.Graphics.Clear(BackColor)
' Dim excentrtlak As Excentrtlak = New Excentrtlak()
' Nastavení pole grafu M-N
Dim TH, ksilim, excentrD, vystrednost, momentMC, Nb As Single
Dim sirkab, vyskah, Rbd, NS, plochaf, plochaf1, Rscd, NU, gu, MEE, Mculim, Rsd As Single
Dim aa, bb, cc, bbb, mx, my, kk, rr, nnn, dd As Integer
Dim silaN1, MM, n5r, n4r, n3r, n2r, n1r, mu1, mu2, mu3, mu4, mu5, Ne, Nc, mu0, N As Single
Dim vyskah0, vyskaz0, Mu, Mc, krytia1, krytia, xu, y, mmu As Single
' sirkab = 25 : vyskah = 55 : Rbd = 17 : plochaf = 14 : plochaf1 = 3 : Rscd = 350
'silaN1 = 500 : Rsd = 350 : krytia1 = 3 : krytia = 3
ksilim = 1 / (1.25 + Rscd / 420)
TH = ksilim * (1 - ksilim / 2) ' excentrD = Math.Abs(eta * excentr)
vystrednost = excentrD : vyskah0 = vyskah - krytia : vyskaz0 = vyskah / 2 - krytia
Console.Write(" excentrD=" & excentrD)
If vyskah >= 60 Then
gu = 1
Else
gu = 1 - 20 / (10 * vyskah + 50)
End If
If gu < 0.85 Then gu = 0.85
Nb = sirkab * vyskah * Rbd / 10
NS = (plochaf + plochaf1) * Rscd / 10 : NU = gu * (Nb + NS)
Nc = gu * (ksilim * sirkab * vyskah0 * Rbd / 10 + plochaf1 * Rscd / 10 - plochaf * Rsd / 10)
Ne = gu * (0.8 * Nb + NS) 'unosnost Ne,u
Console.Write(" Neu=" & Ne)
Mculim = gu * (ksilim / 2 * sirkab * vyskah0 / 100 * (vyskah - ksilim * vyskah0) * Rbd / 10)
Mculim += gu * (plochaf1 * Rscd / 10 * vyskaz0 / 100 + plochaf * Rsd / 10 * vyskaz0 / 100)
'malá excentricita
Mu = gu * (plochaf1 * vyskaz0 - plochaf * vyskaz0) / 100 * Rscd / 10 'malá exc-jen betonu
Mc = Mculim : Mu = Math.Abs(Mu) ' Ncu,lim=Nc
mmu = Mu + (Mc - Mu) / (NU - Nc) * (NU - silaN1) : MM = 0
MEE = Mu + (Mc - Mu) / (NU - Nc) * (NU - Ne)
Console.Write(" Meu=" & MEE)
momentMC = Math.Abs(Mc) : MEE = Math.Abs(MEE)
If silaN1 < Nc Then
'velká excentricita
MEE = Mu + (Mc - Mu) / (NU - Nc) * (NU - Ne)
End If
'výběr měřítka pro X dle Ne,max , pro Y dle Mcu,lim
aa = 100 : cc = NU
Console.Write(" Ne,u=" & Ne)
If cc > 100 Then aa = 200
If cc > 200 Then aa = 300
If cc > 300 Then aa = 400
If cc > 400 Then aa = 500
If cc > 500 Then aa = 600
If cc > 600 Then aa = 700
If cc > 700 Then aa = 800
If cc > 800 Then aa = 900
If cc > 900 Then aa = 1000
If cc > 1000 Then aa = 2000
If cc > 2000 Then aa = 3000
If cc > 3000 Then aa = 4000
If cc > 4000 Then aa = 5000
If cc > 5000 Then aa = 7000
If cc > 7000 Then aa = 10000
If cc > 10000 Then aa = 15000
cc = Mculim : bb = 50
Console.Write(" Mcu=" & Mculim & " Ncu=" & Nc) : Console.WriteLine()
Console.Write(" Mu=" & Mu & " MM=" & MM & " Me=" & MEE)
Console.WriteLine("momentMC=" & momentMC & " Meu=" & mmu) : Console.WriteLine()
If cc > 50 Then bb = 100
If cc > 100 Then bb = 200
If cc > 200 Then bb = 300
If cc > 300 Then bb = 400
If cc > 400 Then bb = 750
If cc > 750 Then bb = 1000
If cc > 1000 Then bb = 1500
If cc > 1500 Then bb = 2000
If cc > 2000 Then bb = 2500
If cc > 2500 Then bb = 3000
If cc > 3000 Then bb = 4000
If cc > 4000 Then bb = 5000
If cc > 5000 Then bb = 7000
If cc > 7000 Then bb = 9000
bbb = bb
mx = (1350 - 60) / aa : my = (730 - 60) / bb
kk = aa / 10
Console.Write(" 0.0")
For i = 1 To 10
Console.Write(" " & kk * i)
Next
Console.WriteLine(" Normálná síla Nd[kN]")
Dim p As New Drawing.Pen(BackColor.Red, 1) : xu = -0.01 * aa * mx
e.Graphics.DrawLine(p, xu, 30, 10 * aa * mx + 60, 30) : y = -0.01 * bb * my
e.Graphics.DrawLine(p, 40, y, 40, bb * my + 60)
kk = aa / 10 * mx : dd = bb / 40 * my
For i = 1 To 10
e.Graphics.DrawLine(p, i * kk + 40, 10, i * kk + 40, 25)
Next i
dd = 8 * dd
kk = bb / 10 * my : xu = 0.5 * dd
For i = 1 To 10
e.Graphics.DrawLine(p, -xu, i * kk + 30, xu, i * kk + 30)
Next
kk = bb / 10
For i = 1 To 3
Console.Write(i * kk, " ") : Console.WriteLine()
Next
For i = 4 To 6
Console.Write(i * kk) : Console.WriteLine()
Next
For i = 7 To 9
Console.Write(i * kk) : Console.WriteLine()
Next
Console.WriteLine(bb) : Console.Write(" Mu[kNm]")
N = 4 / 5 * Nc
'gosub 3470
Moment(MM, N, gu, plochaf1, plochaf, Rscd, Rsd, Rbd, sirkab, krytia1, vyskah)
mu4 = MM : n4r = N : n5r = Nc
mu5 = Mc
Console.WriteLine(" MM=" & MM & " Mc=" & Mc & " Nc=" & Nc & " N=" & N)
e.Graphics.DrawLine(p, n4r * mx + 40, mu4 * my + 30, n5r * mx + 40, mu5 * my + 30)
N = 3 / 5 * Nc
'gosub 3470
Moment(MM, N, gu, plochaf1, plochaf, Rscd, Rsd, Rbd, sirkab, krytia1, vyskah)
n3r = N : mu3 = MM
Console.WriteLine(" MM=" & MM & " N=" & N)
e.Graphics.DrawLine(p, n3r * mx + 40, mu3 * my + 30, n4r * mx + 40, mu4 * my + 30)
N = 2 / 5 * Nc
'gosub 3470
Moment(MM, N, gu, plochaf1, plochaf, Rscd, Rsd, Rbd, sirkab, krytia1, vyskah)
n2r = N : mu2 = MM
Console.WriteLine(" MM=" & MM & " N=" & N)
e.Graphics.DrawLine(p, n2r * mx + 40, mu2 * my + 30, n3r * mx + 40, mu3 * my + 30)
N = 1 / 5 * Nc : n1r = N
'gosub 32470
Moment(MM, N, gu, plochaf1, plochaf, Rscd, Rsd, Rbd, sirkab, krytia1, vyskah)
mu1 = MM
Console.WriteLine(" MM=" & MM & " N=" & N)
e.Graphics.DrawLine(p, n1r * mx + 40, mu1 * my + 30, n2r * mx + 40, mu2 * my + 30)
N = 0 'gosub 3470
Moment(MM, N, gu, plochaf1, plochaf, Rscd, Rsd, Rbd, sirkab, krytia1, vyskah)
mu0 = MM
Console.WriteLine(" M0=" & mu0 & " N=" & N)
e.Graphics.DrawLine(p, 40, mu0 * my + 30, n1r * mx + 40, mu1 * my + 30)
Console.WriteLine(" Nc=" & Nc & " Mculim=" & Mculim & " Ne=" & Ne & " MEE=" & MEE)
e.Graphics.DrawLine(p, Nc * mx + 40, Mculim * my + 30, Ne * mx + 40, MEE * my + 30)
e.Graphics.DrawLine(p, Ne * mx + 40, MEE * my + 30, Ne * mx + 40, 30)
bbb = bbb / 20
e.Graphics.DrawLine(p, n1r * mx + 40, bbb * my + 30, n1r * mx + 40, mu1 * my + 30)
e.Graphics.DrawLine(p, n2r * mx + 40, bbb * my + 30, n2r * mx + 40, mu2 * my + 30)
e.Graphics.DrawLine(p, n3r * mx + 40, bbb * my + 30, n3r * mx + 40, mu3 * my + 30)
e.Graphics.DrawLine(p, n4r * mx + 40, bbb * my + 30, n4r * mx + 40, mu4 * my + 30)
e.Graphics.DrawLine(p, n5r * mx + 40, 30, n5r * mx + 40, 30)
rr = bb / 80 * my : nnn = silaN1 : MM = silaN1 * excentrD / 100
Console.WriteLine(" silaN1[kN]=" & nnn & " excentrD[cm]=" & excentrD & " MM[kNm]=" & MM)
e.Graphics.DrawEllipse(p, nnn * mx + 40, MM * my + 30, rr, rr)
xu = nnn * mx - rr * 1.7 + 40 : y = nnn * mx + rr * 1.7 + 40
e.Graphics.DrawLine(p, xu, MM * my + 30, y, MM * my + 30)
xu = MM * my + rr * 0.6 + 30 : y = MM * my - rr * 0.6 + 30
e.Graphics.DrawLine(p, nnn * mx + 40, xu, nnn * mx + 40, y)
Console.WriteLine(" GRAF M - N průběh:")
Console.WriteLine(" N0r=" & N & " Mu0=" & mu0)
Console.WriteLine(" N1r=" & n1r & " Mu1=" & mu1)
Console.WriteLine(" N2r=" & n2r & " Mu2=" & mu2)
Console.WriteLine(" N3r=" & n3r & " Mu3=" & mu3)
Console.WriteLine(" N4r=" & n4r & " Mu4=" & mu4)
Console.WriteLine(" Ncu,lim=" & Nc & " Mcu,lim=" & Mculim)
Console.WriteLine(" Ne,max=" & NU & " Me=" & MEE & " Meu=" & mmu)
End Sub
Public Function Moment(MM, N, gu, plochaf1, plochaf, Rscd, Rsd, Rbd, sirkab, krytia1, vyskah)
Dim xu, vyskaz0, ar As Single
xu = (N / gu - plochaf1 * Rscd / 10 + plochaf * Rsd / 10) / (sirkab * Rbd / 10)
vyskaz0 = vyskah / 2 - krytia1
If xu >= 2 * krytia1 Then GoTo mom
ar = (N / gu - 2 * krytia1 * sirkab * Rbd / 10 + plochaf * Rsd / 10) * 10 / Rscd
If ar >= 0 Then xu = 2 * krytia1 : plochaf1 = ar : GoTo mom
xu = (N / gu + plochaf * Rsd / 10) / (sirkab * Rbd / 10) : plochaf1 = 0
mom:
MM = gu * (sirkab * xu * (vyskah - xu) / 2 * Rbd / 10 + plochaf1 * Rscd / 10 * vyskaz0 + plochaf * Rsd / 10 * vyskaz0) / 100
Return MM
Console.Write(" MM=" & MM)
End Function
End Class
Zkoušel jsem volat Form1 i ze třídy EXCENTRTLAK , výsledek byl stejný, žádná data.
Michal Štěpánek:11.8.2016 9:08
A v tom formuláři chceš data vypisovat kam? Jak ty kontrolky plníš?
Jaroslav Trojan:11.8.2016 9:48
Chci ta data dál zpracovat, počítat s nimi další výsledky.
Nevím co myslíš " ty kontrolky plníš" , co to je?
Michal Štěpánek:11.8.2016 10:56
Původně jsem si myslel, že tam máš nějaké labely, do kterých se ta data vypisují, ale pak jsem si uvědomil, že tam chceš kreslit do grafu. Zkusil sis nějak ty hodnoty předávané do Form1 zobrazit? Zkus si tam dát pár labelů a do nich naplnit ty hodnoty, které "předáváš" tím kostruktorem, abys zjistil, jaká data se v tom formu vůbec objevují
Děkuji Davidovi a Michalovi za jejich pomoc. Velmi mi pomohli, něco jsem se
naučil.
D í k y !
Zobrazeno 25 zpráv z 25.