No edit summary |
Hans Karlsen (talk | contribs) No edit summary |
||
Line 24: | Line 24: | ||
===== Procentberäkning för infill ===== | ===== Procentberäkning för infill ===== | ||
(1.0+(self.InFillPercent/100)) -> omvandlar t ex 90% till faktor 1.9 | (1.0+(self.InFillPercent/100)) -> omvandlar t ex 90% till faktor 1.9 | ||
Decimal vs Double | |||
Efter att prisuppgifter tvingats till Decimal kan man behöva typ-kasta mellan de två: (((self.Volume*12)/1000).Round(2).Max(80))+self.Color.PriceAddOn.'''todouble''' |
Revision as of 15:52, 28 March 2022
Hjälp med formler
När du skriver prisberäkningsformler så är du i en Model3DMeta. Denna är "self". Du kan då använda alla egenskaper ; t ex self.DimensionsX eller self.Vertices. Du kan också navigare till t ex av kunden vald teknologi ; "self.Technology.BasePriceFactor".
Du kan använda alla räknesätt + - * /
Exempel på ett Minipris : (((self.Volume*12)/1000).Round(2)).Max(20) - här betyder x.Max(y) att vi tar det som är störst av x och y - så resultatet kan minst bli 20. Du kan även använda x.Min(y).
Så här når du price add on för finish: self.Finish.PriceAddOn, och för Color self.Color.PriceAddOn: prova self.Finish.PriceAddOn+self.Color.PriceAddOn
Infill kommer vara ett värde mellan 0-100; prova t ex (self.Finish.PriceAddOn+self.Color.PriceAddOn)*(self.InfillPercent/100)
(self.Finish.PriceAddOn+self.Color.PriceAddOn)*(self.InfillPercent/100) -> (100+23)*.77 = 94.71
Villkorad beräkning
Om formeln måste kunna hantera "brist"-på värde - dvs null - så kanske det blir villkor:
(self.Volume->isnull)->casetruefalse(1.0, self.Volume ) : ta värdet av self.Volume bara om det inte är null - annars ta 1.0 (noga med att flyttal och inte bara 1 )
Det blir då 2 olika formler beroende på invärde (boolean) till casetruefalse :
(self.Volume>12)->casetruefalse(self.Volume*2.0,self.Volume*3.0) * self.Area
Procentberäkning för infill
(1.0+(self.InFillPercent/100)) -> omvandlar t ex 90% till faktor 1.9
Decimal vs Double
Efter att prisuppgifter tvingats till Decimal kan man behöva typ-kasta mellan de två: (((self.Volume*12)/1000).Round(2).Max(80))+self.Color.PriceAddOn.todouble