if (`window -exists trapwindow`) deleteUI -window trapwindow; string $window= `window -t "Steektrap" -w 400 -h 100 -mxb 0 -rtf 1 trapwindow`; columnLayout -columnAttach "left" 0; separator -height 10 -st none; floatSliderGrp -l "Hoogte Trap in meters" -field true -changeCommand "maten" -minValue 0.1 -maxValue 8.0 -fieldMinValue 0.1 -fieldMaxValue 8.0 -value 2.8 hoogte; floatSliderGrp -l "Breedte Trap in meters" -field true -changeCommand "maten" -minValue 0.8 -maxValue 10.0 -fieldMinValue -0 -fieldMaxValue 10.0 -value 1.2 breedte; intSliderGrp -l "Aantal Treden" -field true -changeCommand "maten" -minValue 1.0 -fieldMinValue -1 -fieldMaxValue 100.0 -value 16 treden; checkBoxGrp -l "Bordes" -value1 0 -changeCommand "maten" bordes; checkBoxGrp -l "Weltrede" -value1 0 -changeCommand "maten" wel; separator -height 10 -w 400 -style "in"; floatFieldGrp -l "Aantrede" -pre 3 -en1 0 -v1 0 aantrede; floatFieldGrp -l "Optrede" -pre 3 -en1 0 -v1 0 optrede; floatFieldGrp -l "Totale lengte trap" -pre 3 -en1 0 -v1 0 lengte; proc maten(){ float $tmp_hoogte = `floatSliderGrp -q -value hoogte`;// hoogte van de trap float $tmp_breedte = `floatSliderGrp -q -value breedte`;// breedte van de trap float $tmp_treden = `intSliderGrp -q -value treden`;// aantal treden van de trap int $tmp_bordes = `checkBoxGrp -q -value1 bordes`;// wel of geen bordes int $tmp_weltrede = `checkBoxGrp -q -value1 wel`;// wel of geen weltreden // berekenen van de op en aantrede float $tmp_optrede = ($tmp_hoogte / $tmp_treden); float $tmp_aantrede = (0.63 - (2*$tmp_optrede)) ; // berekenen van de lengte van de trap float $tmp_lengte; int $tmp_half; if ($tmp_bordes ==0){ if ($tmp_weltrede == 0){ $tmp_lengte = ($tmp_treden * $tmp_aantrede); } else{ $tmp_lengte = ($tmp_treden * ($tmp_aantrede - 0.04)); } } else { $tmp_half = ($tmp_treden/2); if ($tmp_weltrede == 0){ $tmp_lengte = (($tmp_half * $tmp_aantrede) + $tmp_breedte); } else { $tmp_lengte = (($tmp_half * ($tmp_aantrede - 0.04)) + $tmp_breedte); } } // aanpassen van de kleuren bij te grote of te kleine waarden float $color_op[]= { 0.0 , 1.0 , 0.0 }; float $color_aan[]= { 0.0 , 1.0 , 0.0 }; if ($tmp_optrede > 0.185){ $color_op[0] = 1.0; $color_op[1] = 0.0; }else { $color_op[0] = 0.0; $color_op[1] = 1.0; } if ($tmp_aantrede < 0.22){ $color_aan[0] = 1.0; $color_aan[1] = 0.0; }else { $color_aan[0] = 0.0; $color_aan[1] = 1.0; } // aanmaken van een bordes bij een hoogte groter dan 4 meter if ($tmp_hoogte > 4.0){ $tmp_bordes = 1; } else { if ($tmp_bordes == 0){ $tmp_bordes = 0; }else{ $tmp_bordes = 1; } } // checkwaarden teruggeven aan het window checkBoxGrp -edit -value1 $tmp_bordes bordes; floatFieldGrp -edit -bgc ($color_aan[0]) ($color_aan[1]) ($color_aan[2]) -v1 $tmp_aantrede aantrede; floatFieldGrp -edit -bgc ($color_op[0]) ($color_op[1]) ($color_op[2]) -v1 $tmp_optrede optrede; floatFieldGrp -edit -v1 $tmp_lengte lengte; } separator -height 10 -w 400 -style "in"; // buttons voor het aanmaken en updaten van de trap rowColumnLayout -numberOfRows 1 -rowHeight 1 30; button -label "Maak Trap" -w 200 -command "Stairs()"; button -label "Update Trap" -w 200 -command "if ($bordes == 1){delete $trap1 $trap2 $bordesnaam $groepnaam;} else {delete $trap1;}; Stairs()"; showWindow $window; // procedure voor het maken van een steektrap proc Stairs(){ float $hoogtetrap = `floatSliderGrp -q -value hoogte`; // hoogte van de trap in meters float $breedte = `floatSliderGrp -q -value breedte`; // breedte trap in meters float $treden = `intSliderGrp -q -value treden`; // aantal treden global int $bordes; // wel of geen brodes $bordes = `checkBoxGrp -q -value1 bordes`; // wel of geen brodes int $weltrede = `checkBoxGrp -q -value1 wel`; // wel of geen weltreden float $wel;// overstek van de wel if ($weltrede == 0) { $wel = 0.0 ; } else { $wel = 0.04 ; } global string $trap1 ; // naam van de trap global string $trap2 ; // naam van de trap float $optrede = ($hoogtetrap / $treden); // bepalen optrede float $aantrede = (0.63 - (2*$optrede)); // berekenen van de aantrede string $traplijn1; // naam van het onderste trapdeel string $traplijn2; // naam van het bovenste trapdeel float $i; int $half;// hoogte van het bordes in treden if ($bordes == 1){ $half = $treden/2; } else { $half = $treden; } $traplijn1 = `curve -d 1 -p 0 0 0` ;// start van de curve voor het onderste deel // tekenen van de outline van het onderste deel van de trap for ( $i = 1 ; $i <= $half ; $i++){ curve -a -p (($aantrede*($i-1))-($wel * $i)) ($optrede*$i) 0 $traplijn1; curve -a -p (($aantrede*$i)-($wel * $i)) ($optrede*$i) 0 $traplijn1; } // aftekenen van de curve curve -a -p (($aantrede * $half)- ($wel *$half)) ($optrede * ($half-1)) 0 $traplijn1; curve -a -p ($aantrede - $wel) 0 0 $traplijn1; closeCurve -ch 0 -ps 1 -rpo 1 $traplijn1; //tesselation settings nurbsToPolygonsPref -f 0 -pt 1 -pc 1; // creeren van de trap door middel van een planar string $naam[]; $naam = `planarSrf -ch 0 -d 1 -po 1 -n ("Trap_" + ($hoogtetrap*1000) + "_nr") $traplijn1`; $trap1 = $naam[0]; delete $traplijn1; select $trap1; // extruderen van de planar polyExtrudeFacet -ch 0 -ltz $breedte; select -cl; // maken van een trap met bordes if ( $bordes == 1 ){ // start van de curve voor het bovenste deel van de trap $traplijn2 = `curve -d 1 -p (($aantrede - $wel) * $half) ($optrede * $half) 0` ; // tekenen van het bovenste deel van de trap for ( $i = $half ; $i <= $treden ; $i++){ curve -a -p (($aantrede*($i-1))-($wel * $i)) ($optrede*$i) 0 $traplijn2; curve -a -p (($aantrede*$i)-($wel * $i)) ($optrede*$i) 0 $traplijn2; } // aftekenen van de curve curve -a -p (($aantrede - $wel)* $treden) ($optrede * ($treden-1)) 0 $traplijn2; curve -a -p (($aantrede - $wel) * $half) ($optrede * ($half-1)) 0 $traplijn2; closeCurve -ch 0 -ps 1 -rpo 1 $traplijn2; //tesselation settings nurbsToPolygonsPref -f 0 -pt 1 -pc 1; // creeren van de trap door middel van een planar string $naam2[]; $naam2 = `planarSrf -ch 0 -d 1 -po 1 -n ("Trap_" + ($hoogtetrap*1000) + "_nr") $traplijn2`; $trap2 = $naam2[0]; delete $traplijn2; select $trap2; // extruderen van de planar polyExtrudeFacet -ch 0 -ltz $breedte; select $trap2; rotate -r 0 180 0 -p (($aantrede - $wel) * $half) 0 0;// roteren van het bovenste deel xform -ws -piv (($aantrede - $wel) * $half) ($optrede * $half) 0; select -cl; // aanmaken van het bordes string $naam3[]; global string $bordesnaam; $naam3 = `polyCube -w ($breedte) -h ($optrede) -d ($breedte*2) -n "Bordes"`; $bordesnaam = $naam3[0]; move -r ((($aantrede - $wel) * $half) + ($breedte/2)) (($optrede * ($half-1)) + ($optrede/2)) 0 ; xform -ws -piv ($aantrede * $half) ($optrede * ($half-1)) 0; // aan maken van een groep voor de totale trap met bordes global string $groepnaam; $groepnaam = `group -n ("Trap_Bordes_" + ($hoogtetrap*1000) + "_nr") ($trap1) ($trap2) ($bordesnaam)`; xform -ws -piv 0 0 0; select -cl; } }