|
|
Ho provato ad implementare un po' di codice inerente al topic, traducendo parte del codice di afazio in PowerShell; l'unico effettivo vantaggio è che crea un file bitmap (anche se un po' troppo piccolo). Se lo volete provare (fatti salvi i dubbi che ho messo nel commento) mi raccomando aggiustate la cartella dove salverà il file. (nota: ho già scritto nel codice presente qui, come abilitare l'esecuzione di script powershell in windows).
(nota2: ho corretto il codice postato perché avevo messo quello col bug, su cui sono impazzito da sabato...
CODICE <# Ho preso il codice di afazio da https://bar-ingegneria.forumfree.it/?t=79336104&st=15#entry660882152
ho modificato leggermente il codice perché non mi tornava il risultato...
ci sono alcuni problemi: 1) funziona solo per carichi rettangolari... 2) il risultato è validato solo ad occhio confrontandolo con https://bar-ingegneria.forumfree.it/?t=79336104&st=15#entry660878737 3) non ho ancora ben capito come fare funzioni in PowerShell che ritornino un valore, quindi ho usato un trucchetto letto su internet per cui a funzione non dà un return e uso una variabile globale per memorizzare il valore di return.
Quindi, per quanto esposto sopra, il codice deve essere sottoposto a revisione critica per la verifica effettiva del funzionamento.
#>
cls [System.Double]$script:dReturn = 0; #variabile globale dello script function sigmaZ_q_trap { # definisco parametri param( [Double]$x, [Double]$z, [Double]$xi, [Double]$xf, [Double]$qi, [Double]$qf, [Double]$zo ) # inizio funzione [System.Double] $alFa; [System.Double] $bEta1; [System.Double] $betA2; #[Math]::PI if($z -gt $zo) { $bEta1 = [Math]::Atan(($x-$xf)/($z-$zo)); $betA2 = [Math]::Atan(($x-$xi)/($z-$zo)); $alFa = $betA2 - $bEta1; #parte rettangolare $script:dReturn = ($qi * ($alFa + [Math]::Sin($alFa) * [Math]::Cos($alFa + 2 * $bEta1)) / [Math]::PI) Return $null #parte triangolare #$script:dReturn = (($qf - $qi) * (($x - $xi) * $alFa / ($xf - $xi) - 0.5 * [Math]::Sin(2 * $bEta1)) / [Math]::PI) #Return $null } else { #vedere meglio cosa accade quando siamo in scavo $script:dReturn = (0) Return $null } } [System.Double] $xiCoord = 10; [System.Double] $xfCoord = 20; [System.Double] $qIni = 200; [System.Double] $qFin = 200; [System.Double] $zetao = 0; [System.Double] $dCalc = 0;
#sigmaZ_q_trap -x (0) -z (1/4) -xi $xiCoord -xf $xfCoord -qi $qIni -qf $qFin -zo $zetao > $null #$script:dReturn
#<# [System.String] $ImageFilePath = "C:\Users\Administrator\Pictures\"; $null=[System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") $bmp = New-Object System.Drawing.Bitmap(120, 120)
for ([System.Double]$i = 1; $i -le (120); $i++) { for ([System.Double]$j = 1; $j -le 120; $j++) { sigmaZ_q_trap -x ($i/4) -z ($j/4) -xi $xiCoord -xf $xfCoord -qi $qIni -qf $qFin -zo $zetao > $null #$script:dReturn #[System.Int16]($script:dReturn/(($qIni,$qFin| Measure -Max).Maximum)*255) # normalizzo in $bmp.SetPixel($i-1, $j-1, [System.Drawing.Color]::FromArgb(255, [System.Int16](255-($script:dReturn/($qIni,$qFin| Measure -Max).Maximum)*255),0)) #$bmp.SetPixel($i+($xiCoord*4)-1, $j-1, [System.Drawing.Color]::FromArgb(255, [System.Int16]($script:dReturn),0)) } } $bmp.Save($ImageFilePath + "carico.bmp") #$bmp.Save($ImageFilePath + "bmp.jpeg", [System.Drawing.Imaging.ImageFormat]::Jpeg);#posso convertire in JPEG $bmp.Dispose(); #Rilascia tutte le risorse usate da questa classe Image. ii ($ImageFilePath + "carico.bmp") #>
Edited by TDoes - 16/10/2022, 16:15Attached Image
|
|