Stap 3: Python Script - deel 1
In deze stap schrijven we een python script dat trekt van waarden uit de onlinedatabase en de juiste wanddikte op basis van deze waarden bepaalt. In de volgende stap zullen we dit script om te bouwen van een 3D-model van de broeikasgassen uit te breiden. (het script is bijgevoegd in deze stap).
Eerst, open Fusion 360 en ' Scripts en Add-Ins ' in de knoppenbalk te klikken. Zorg ervoor dat u scripts tabblad, en klik vervolgens op maken. Een nieuwe dialoog doos zal opduiken. Selecteer script en vervolgens python en geef uw script een naam, beschrijving en auteur. Klik op maken om het dialoogvenster te sluiten. Selecteer het nieuwe script en klik vervolgens op bewerken, dit zal prompt Spyder te openen. Spyder is een python interface die wordt ingebouwd in Fusion, zodat u alle voor de programmering zal doen bewerken hier.
Bij de bovenkant van het dossier, voeg deze lijnen van code:
importeren van adsk.core, adsk.fusion import urllib.request #from html.parser invoer HTMLParser invoer xml.etree.ElementTree als ET
De volgende stap is om te doen enkele variabele definities. Hier definiëren we de grootte van de kas, en hoe warm willen we de binnenkant te zijn. In de toekomst, het script kan de gebruiker wordt gevraagd wat ze willen in de serre groeien, en dan kan het trekken in de juiste temperatuur vanuit een andere database. Voor nu zal de temperatuur wel gebruiker gedefinieerde. Hier hebben we het ingesteld op 100 graden F.
### VARIABELE DEFINITIES
### Prefered binnen temperatuur [F]
insideTemp = 100
### De grootte van de serre [ft]
wallHeight = 6
roofHeight = 9
breedte = 10
lengte = 10
### standaard dikte van de isolatie, in cm
isolatie = 10
### Zonne-flux-efficiëntie
efficiëntie = 0,1
Deze volgende regels doen het parsen van XML. Aan het eind van dit blok code, zal de variabelen outsideTemp en flux hebben de waarden die u hebt ingevoerd in de XML-database.
### PULL INGANGEN UIT XML-DATABASE
reactie = urllib.request.urlopen ('uw XML URL')
pageContentsBytes = response.read()
pageContents = pageContentsBytes.decode("utf-8")
# byte object converteren naar tekenreeks
boom = ET.fromstring(pageContents)
outsideTemp = int(tree.find('temp').text)
Flux = int(tree.find('flux').text)
# Sommige nuttig print verklaringen voor foutopsporing
afdrukken (' buiten Temp: ', outsideTemp, 'F')
afdrukken ('Solar warmtestroom: ', flux, ' Btu/hr/ft ^ 2')
Als we eenmaal de temperatuur en flux-waarden, wordt de volgende stap is voor hen tampon te vergelijking 8 en voor de wanddikte oplossen. Te doen, moeten we weten een paar verschillende gebieden (zoals en op) dus zullen wij die eerste berekenen. Merk ook op dat alle lengte variabelen uiteindelijk in cm, dat is omgezet worden omdat we de Fusion-API gebruiken in de volgende stap, en het maakt gebruik van cm als standaardeenheid.
### BEREKENEN WANDDIKTE
# berekenen de gebieden, in ft ^ 2
floorArea = (breedte * lengte)
sideArea = 2*(length*wallHeight)
frontBackArea = 2*(width*wallHeight) + ((roofHeight-wallHeight) * breedte) roofArea = 2 * (((roofHeight-wallHeight) ** 2 + (breedte/2) ** 2) ** 0,5) * lengte
totalArea = floorArea + sideArea + frontBackArea + roofArea
sunArea = roofArea ### gebied in de zon wordt benaderd om het dak-gebied!
# Sommige nuttig print verklaringen voor foutopsporing
afdrukken (' vloeroppervlakte: ', floorArea, ' ft ^ 2')
afdrukken (' totale oppervlakte: ', totalArea, ' ft ^ 2')
afdrukken ('Sun gebied: ', sunArea, ' ft ^ 2')
# converteren ft tot cm
wallHeight = wallHeight * 30.48
roofHeight = roofHeight * 30.48
breedte = breedte * 30.48
lengte = lengte * 30.48
# flux wordt gemeten in Btu/hr/ft ^ 2
isolatie = (totalArea * (insideTemp - outsideTemp)) / (sunArea * efficiëntie * flux * 6.5)
afdrukken (' isolatie dikte: ', isolatie, 'duim')
# converteren inch naar cm
isolatie = isolatie * 2,54
Bij dit punt, alle van de broeikasgassen dimensies moeten worden gedefinieerd, en de volgende stap is het daadwerkelijk het genereren van het model van de broeikasgassen.