Example PPM Symbol



The following code will generate a window. To use the resulting window you must either:


  1. Save the script as a .ppm file, and load the folder containing the file into the symbol library, and then drag the symbol onto a wall.
  2. Run the PPM script. Select the result, and turn it into a block. Finally drag the block from the block palette onto a wall.



3ArchWindow.ppm



Units(1[mm]);
H = Parameter("Window Height", 1200, LINEAR, Interval(400, 10000));
W = Parameter("Window Width", 2000, LINEAR, Interval(700, 10000)); Curvature = Parameter("Curvature", 40, LINEAR, Interval(0, 100)); elevation = Parameter("Window Eleveation", 700, LINEAR, Interval(0, 10000)); sash = Parameter("Window Sash", 30, LINEAR, Interval(0, 100));
W1 = W/3.0;
P00 = Point(0,0); P10 = Point(0, H); P11 = Point(W1, H); P12 = Point(2*W1, H); P13 = Point(3*W1, H); P03 = Point(3*W1, 0);
C1 = Point(0.5*(PointX(P10) + PointX(P11)), 0.5*(PointY(P10) + PointY(P11)) - Curvature);
C2 = Point(0.5*(PointX(P11) + PointX(P12)), 0.5*(PointY(P11) + PointY(P12)) - Curvature);
C3 = Point(0.5*(PointX(P12) + PointX(P13)), 0.5*(PointY(P12) + PointY(P13)) - Curvature);
contour = Polyline(P10, Arc0(PointX(C1), PointY(C1)), P11, Arc0(PointX(C2), PointY(C2)), P12, Arc0(PointX(C3), PointY(C3)), P13, P03, P00, P10);
contourZ = RotateX(contour, 90); ClipContour = SetProperties(contourZ, "#$AUX@_Contour" = 1, "PenColor"= 0x0000ff); TS = RefPoint (W/2, 0, -elevation); Output(ClipContour, TS);
PL = Point(sash/2, H); PR = Point(W1 - sash/2, H); ArcWind1 = Polyline(Point(sash/2, 0),  Point(sash/2, H),  Arc0(PointX(C1), PointY(C1)),  Point(W1 - sash/2, H), Point(W1 - sash/2, 0), Point(sash/2, 0)); ArcWindz1 = RotateX(ArcWind1, 90);
ArcWind2 = Move(ArcWind1, W1, 0, 0); ArcWindz2 = RotateX(ArcWind2, 90);
ArcWind3 = Move(ArcWind2, W1, 0, 0); ArcWindz3 = RotateX(ArcWind3, 90);
ArcWindz1D = Thickness(ArcWindz1, sash); ArcWindz1Surf = SetProperties(ArcWindz1D, "Solid" = 0);
ArcWindz2D = Thickness(ArcWindz2, sash); ArcWindz2Surf = SetProperties(ArcWindz2D, "Solid" = 0);
ArcWindz3D = Thickness(ArcWindz3, sash); ArcWindz3Surf = SetProperties(ArcWindz3D, "Solid" = 0);
contourZ3D = Thickness(contourZ, sash); contourZ3DSurf = SetProperties(contourZ3D, "Solid" = 0);
res1 = BooleanSubtract(contourZ3DSurf, ArcWindz3Surf);  res2 = BooleanSubtract(res1, ArcWindz2Surf);  res3 = BooleanSubtract(res2, ArcWindz1Surf);
Output(res3);