These elements let you create complex 3D shapes using a polyline and a built-in rule.
You can rotate, project or translate the given polyline.
The resulting bodies are a generalization of some previously described elements like
PRISM_
and CYLIND
.
Shapes generated from a single polyline:
Shapes generated from two polylines:
The first polyline is always in the x-y plane. Points are determined by two coordinates; the third value is the status (see below).
The second polyline (for RULED, SWEEP, TUBE and TUBEA) is a space curve. Apices are determined by three coordinate values.
Shape generated from four polylines:
Shape generated from any number of polylines:
General restrictions for polylines
- Adjacent vertices must not be coincident (except RULED).
- The polyline must not intersect itself (this is not checked by the program, but hidden line removal and rendering will be incorrect).
- The polylines may be either open or closed. In the latter case, the first node must be repeated after the last one of the contour.
Masking
Mask values are used to show or hide characteristic surfaces and/or edges of the 3D shape.
The mask values are specific to each element and you can find a more detailed description in their corresponding sections/chapters.
mask:
mask = j1 + 2*j2 + 4*j3 + 8*j4 + 16*j5 + 32*j6 + 64*j7
, where each j can be 0 or 1.j1, j2, j3, j4 represent whether the surfaces are present (1) or omitted (0).
j5, j6, j7 represent whether the edges are visible (1) or invisible (0).
j1:
base surface.j2:
top surface.j3:
side surface.j4:
other side surface.j5:
base edges.j6:
top edges.j7:
cross-section/surface edges are visible, surface is not smooth.To enable all faces and edges, set mask value to 127.
Status
Status values are used to state whether a given point of the polyline will leave a sharp trace of its rotation path behind.
0: latitudinal arcs/lateral edges starting from the node are all visible.
1: latitudinal arcs/lateral edges starting from the node are used only for showing the contour.
-1: for EXTRUDE only: it marks the end of the enclosing polygon or a hole,
and means that the next node will be the first node of another hole.
Additional status codes allow you to create segments and arcs in the polyline using special constraints.
See the section called “Additional Status Codes” for details.
To create a smooth 3D shape, set all status values to 1. Use status = 0 to create a ridge.
Other values are reserved for future enhancements.
EXTRUDE
EXTRUDE n, dx, dy, dz, mask, x1, y1, s1, ... xn, yn, sn
General prism using a polyline base in the x-y plane.
The displacement vector between bases is (dx, dy, dz).
This is a generalization of the PRISM command and the SLAB command.
The base polyline is not necessarily closed, as the lateral edges are not always perpendicular to the x-y plane.
The base polyline may include holes, just like PRISM_. It is possible to control the visibility of the contour edges.
n:
the number of polyline nodes.mask:
controls the existence of the bottom, top and (in case of an open polyline) side polygon.
mask = j1 + 2*j2 + 4*j3 + 16*j5 + 32*j6 + 64*j7 + 128*j8
, where each j can be 0 or 1.j1:
base surface is present,j2:
top surface is present,j3:
side (closing) surface is present,j5:
base edges are visible,j6:
top edges are visible.j7:
cross-section edges are visible, surface is articulated,j8:
cross-section edges are sharp, the surface smoothing will stop here in OpenGL and rendering.si:
status of the lateral edges or marks the end of the polygon or of a hole.
You can also define arcs and segments in the polyline using additional status code values:
0:
lateral edge starting from the node is visible,1:
lateral edges starting from the node are used for showing the contour,-1:
marks the end of the enclosing polygon or a hole, and means that the next node will be the first vertex of another hole.Additional status codes allow you to create segments and arcs in the planar polyline using special constraints.
See the section called “Additional Status Codes” for details.
n > 2
Example 1:
EXTRUDE 14, 1, 1, 4, 1+2+4+16+32, 0, 0, 0, 1, -3, 0, 2, -2, 1, 3, -4, 0, 4, -2, 1, 5, -3, 0, 6, 0, 0, 3, 4, 0, 0, 0, -1, 2, 0, 0, 3, 2, 0, 4, 0, 0, 3, -2, 0, 2, 0, -1 |
Example 2:
A = 5 B = 5 R = 2 S = 1 C = R - S D = A - R E = B - R EXTRUDE 28, -1, 0, 4, 1+2+4+16+32, 0, 0, 0, D+R*sin(0), R-R*cos(0), 1, D+R*sin(15), R-R*cos(15), 1, D+R*sin(30), R-R*cos(30), 1, D+R*sin(45), R-R*cos(45), 1, D+R*sin(60), R-R*cos(60), 1, D+R*sin(75), R-R*cos(75), 1, D+R*sin(90), R-R*cos(90), 1, A, B, 0, 0, B, 0, 0, 0, -1, C, C, 0, D+S*sin(0), R-S*cos(0), 1, D+S*sin(15), R-S*cos(15), 1, D+S*sin(30), R-S*cos(30), 1, D+S*sin(45), R-S*cos(45), 1, D+S*sin(60), R-S*cos(60), 1, D+S*sin(75), R-S*cos(75), 1, D+S*sin(90), R-S*cos(90), 1, A-C,B-C,0, R-S*cos(90), E+S*sin(90), 1, R-S*cos(75), E+S*sin(75), 1, R-S*cos(60), E+S*sin(60), 1, R-S*cos(45), E+S*sin(45), 1, R-S*cos(30), E+S*sin(30), 1, R-S*cos(15), E+S*sin(15), 1, R-S*cos(0), E+S*sin(0), 1, C, C, -1 |
PYRAMID
PYRAMID n, h, mask, x1, y1, s1, ..., xn, yn, sn
Pyramid based on a polyline in the x-y plane. The peak of the pyramid is located at (0, 0, h).
n:
number of polyline nodes.mask:
controls the existence of the bottom and (in the case of an open polyline) side polygon.
mask = j1 + 4*j3 + 16*j5
, where each j can be 0 or 1.j1:
base surface is present,j3:
side (closing) surface is present,j5:
base edges are visible.si:
status of the lateral edges.0:
lateral edges starting from the node are all visible,1:
lateral edges starting from the node are used for showing the contour.Additional status codes allow you to create segments and arcs in the planar polyline using special constraints.
See the section called “Additional Status Codes” for details.
h > 0 and n > 2
Example:
PYRAMID 4, 1.5, 1+4+16, -2, -2, 0, -2, 2, 0, 2, 2, 0, 2, -2, 0 PYRAMID 4, 4, 21, -1, -1, 0, 1, -1, 0, 1, 1, 0, -1, 1, 0 for i = 1 to 4 ! four peaks ADD -1.4, -1.4, 0 PYRAMID 4, 1.5, 21, -0.25, -0.25, 0, 0.25, -0.25, 0, 0.25, 0.25, 0, -0.25, 0.25, 0 DEL 1 ROTZ 90 next i del 4 |
REVOLVE
REVOLVE n, alpha, mask, x1, y1, s1, ..., xn, yn, sn
Surface generated by rotating a polyline defined in the x-y plane around the x axis. The profile polyline cannot contain holes.
n:
number of polyline nodes.alpha:
rotation angle in degreesmask:
controls the existence of the bottom, top and (in the case of alpha < 360°) side polygons.
mask = j1 + 2*j2 + 4*j3 + 8*j4 + 16*j5 + 32*j6 + 64*j7 + 128*j8 + 256*j9
, where each j can be 0 or 1.j1:
closing disc at first point is present,j2:
closing disc at last point is present,j3:
base closing side (in profile plane) is present,j4:
end closing side (in revolved plane) is present,j5:
base edges (in profile plane) are visible,j6:
end edges (in revolved plane) are visible,j7:
cross-section edges are visible, surface is articulated,j8:
horizontal edge in line elimination,j9:
vertical edge in line elimination.si:
status of the latitudinal arcs.0:
latitudinal arcs starting from the node are all visible,1:
latitudinal arcs starting from the node are used for showing the contour,2:
when using or Z-buffer Rendering Engine and setting Smooth Surfaces,
the latitudinal edge belonging to this point defines a break. This solution is equivalent to the definition of additional nodes.
The calculation is performed by the compiler. With other rendering methods, it has the same effect as using 0.
Additional status codes allow you to create segments and arcs in the planar polyline using special constraints.
See the section called “Additional Status Codes” for details.
n >= 2 yi >= 0.0 yi = 0.0 and yi+1 = 0.0 cannot stand at the same time (i.e., the y value of two neighboring nodes cannot be zero at the same time).
Example 1:
ROTY -90 REVOLVE 22, 360, 1+64, 0, 1.982, 0, 0.093, 2, 0, 0.144, 1.845, 0, 0.220, 1.701, 0, 0.318, 1.571, 0, 0.436, 1.459, 0, 0.617, 1.263, 0, 0.772, 1.045, 0, 0.896, 0.808, 0, 0.987, 0.557, 0, 1.044, 0.296, 0, 1.064, 0.030, 0, 1.167, 0.024, 0, 1.181, 0.056, 0, 1.205, 0.081, 0, 1.236, 0.096, 0, 1.270, 0.1, 0, 1.304, 0.092, 0, 1.333, 0.073, 0, 1.354, 0.045, 0, 1.364, 0.012, 0, 1.564, 0, 0
Example 2:
workaround without status code 2: | the same result with status code 2: |
ROTY -90 REVOLVE 26, 180, 16+32, 7, 1, 0, 6.0001, 1, 1, 6, 1, 0, 5.9999, 1.0002, 1, 5.5001, 1.9998, 1, 5.5, 2, 0, 5.4999, 1.9998, 1, 5.0001, 1.0002, 1, 5, 1, 0, 4.9999, 1, 1, 4.0001, 1, 1, 4, 1, 0, 3+cos(15), 1+sin(15), 1, 3+cos(30), 1+sin(30), 1, 3+cos(45), 1+sin(45), 1, 3+cos(60), 1+sin(60), 1, 3+cos(75), 1+sin(75), 1, 3, 2, 1, 3+cos(105), 1+sin(105), 1, 3+cos(120), 1+sin(120), 1, 3+cos(135), 1+sin(135), 1, 3+cos(150), 1+sin(150), 1, 3+cos(165), 1+sin(165), 1, 2, 1, 0, 1.9999, 1, 0, 1, 1, 0 |
ROTY -90 REVOLVE 18, 180, 48, 7, 1, 0, 6, 1, 2, 5.5, 2, 2, 5, 1, 2, 4, 1, 2, 3+cos(15), 1+sin(15), 1, 3+cos(30), 1+sin(30), 1, 3+cos(45), 1+sin(45), 1, 3+cos(60), 1+sin(60), 1, 3+cos(75), 1+sin(75), 1, 3, 2, 1, 3+cos(105), 1+sin(105), 1, 3+cos(120), 1+sin(120), 1, 3+cos(135), 1+sin(135), 1, 3+cos(150), 1+sin(150), 1, 3+cos(165), 1+sin(165), 1, 2, 1, 2, 1, 1, 0 |
REVOLVE{2}
REVOLVE{2} n, alphaOffset, alpha, mask, sideMat, x1, y1, s1, mat1, ..., xn, yn, sn, matn
Advanced version of REVOLVE. The profile polygon will always be closed and may have holes.
The start angle and the face materials are controllable.
alphaOffset:
rotation start angle.alpha:
rotation angle length in degrees, may be negative.mask:
controls the existence of the bottom, top and (in the case of alpha < 360°) side polygons.
mask = 4*j3 + 8*j4 + 16*j5 + 32*j6 + 64*j7 + 128*j8 + 256*j9
, where each j can be 0 or 1.j3:
base closing side (in profile plane) is present,j4:
end closing side (in revolved plane) is present,j5:
base edges (in profile plane) are visible,j6:
end edges (in revolved plane) are visible,j7:
cross-section edges are visible, surface is articulated,j8:
horizontal edge in line elimination,j9:
vertical edge in line elimination.sideMat:
material of the closing faces.mati:
material of the face generated from the i-th edge.REVOLVE{3}
REVOLVE{3} n, alphaOffset, alpha, betaOffset, beta, mask, sideMat, x1, y1, s1, mat1, ..., xn, yn, sn, matn
REVOLVE{3} is an extension of the REVOLVE{2} command with the possibility of defining two snap position.
During the revolution the path of each point of the base polyline is a circular arc, which is approximated by a polyline.
With REVOLVE{3} two snap location can be defined where polyline exactly fits the circle.
With REVOLVE{2} this two snap locations are at the beginning and the end of the revolution.
With REVOLVE{3} the end points are not necessarily on the circle but simply cut at end planes.
betaOffset:
Angle defining the first snap location. The defined angle need not be in the range of revolution.beta:
Angle defining the second snap location relative to the first snap location. May be negative. The defined angle need not be in the range of revolution.
Example:
revolve{2} snap positions at ends | revolve{3} custom snap positions |
resol 8 revolve{2} 4, 10, 335, ! alphaOffset, alpha 444, 2, 0, 4, 2, 2, 3, 4, 2, 2, 3, 6, 2, 2, 0, 6, 2, 2 ! reference circle resol 72 revolve{2} 4, 0, 360, ! alphaOffset, alpha 444, 0, -0.01, 3.99, 2, 0, 0, 3.99, 2, 0, 0, 4, 2, 0, -0.01, 4, 2, 0 |
resol 8 revolve{3} 4, 10, 335, ! alphaOffset, alpha 67.5, 100, ! betaOffset, beta 444, 2, 0, 4, 2, 2, 3, 4, 2, 2, 3, 6, 2, 2, 0, 6, 2, 2 ! reference circle resol 72 revolve{2} 4, 0, 360, ! alphaOffset, alpha 444, 0, -0.01, 3.99, 2, 0, 0, 3.99, 2, 0, 0, 4, 2, 0, -0.01, 4, 2, 0 |
REVOLVE{4}
REVOLVE{4} n, alphaOffset, alpha, betaOffset, beta, mask, sideMat, x1, y1, s1, mat1, ..., xn, yn, sn, matn
REVOLVE{4} is an extension of the REVOLVE{3} command with the possibility of hiding all edges.
mask:
controls the existence of the bottom, top and (in the case of alpha < 360°) side polygons.
mask = 4*j3 + 8*j4 + 16*j5 + 32*j6 + 64*j7 + 128*j8 + 256*j9 + 512*j10
, where each j can be 0 or 1.j3:
base closing side (in profile plane) is present,j4:
end closing side (in revolved plane) is present,j5:
base edges (in profile plane) are visible,j6:
end edges (in revolved plane) are visible,j7:
cross-section edges are visible, surface is articulated,j8:
horizontal edge in line elimination,j9:
vertical edge in line elimination,j10:
hide all edges of revolve,j11:
side edge and surface is smooth in curved sections of the profile. Compatibility: introduced in ARCHICAD 21.REVOLVE{5}
REVOLVE{5}n, alphaOffset, alpha, betaOffset, beta, mask, sideMat, x1, y1, s1, mat1, ..., xn, yn, sn, matn
REVOLVE{5} is an extension of the REVOLVE{4} command
with the possibility of using inline material definition, that means materials defined in GDL script locally
also can be used next to materials defined in global material definitions.
RULED
RULED n, mask, u1, v1, s1, ..., un, vn, sn, x1, y1, z1, ..., xn, yn, zn
RULED{2}
RULED{2} n, mask, u1, v1, s1, ..., un, vn, sn, x1, y1, z1, ..., xn, yn, zn
RULED is a surface based on a planar curve and a space curve having the same number of nodes. The planar curve polyline cannot have any holes.
Straight segments connect the corresponding nodes of the two polylines.
This is the only GDL element allowing the neighboring nodes to
overlap.
The second version, RULED{2}, checks the direction (clockwise or counterclockwise) in which the points of both the top polygon and
base polygon were defined, and reverses the direction if necessary.
(The original RULED command takes only the base polygon into account, which can lead to errors.)
n:
number of polyline nodes in each curve.ui, vi:
coordinates of the planar curve nodes.xi, yi, zi:
coordinates of the space curve nodes.mask:
controls the existence of the bottom, top and side polygon and the visibility of the edges on the generator polylines.
The side polygon connects the first and last nodes of the curves, if any of them are not closed.
mask = j1 + 2*j2 + 4*j3 + 16*j5 + 32*j6 + 64*j7
, where each j can be 0 or 1.j1:
base surface is present,j2:
top surface is present (not effective if the top surface is not planar),j3:
side surface is present (a planar quadrangle or two triangles),j5:
edges on the planar curve are visible,j6:
edges on the space curve are visible,j7:
edges on the surface are visible, surface is not smooth.si:
status of the lateral edges.0:
lateral edges starting from the node are all visible,1:
lateral edges starting from the node are used for showing the contour.n > 1
Example:
R = 3 RULED 16, 1+2+4+16+32, cos(22.5)*R, sin(22.5)*R, 0, cos(45)*R, sin(45)*R, 0, cos(67.5)*R, sin(67.5)*R, 0, cos(90)*R, sin(90)*R, 0, cos(112.5)*R, sin(112.5)*R, 0, cos(135)*R, sin(135)*R, 0, cos(157.5)*R, sin(157.5)*R, 0, cos(180)*R, sin(180)*R, 0, cos(202.5)*R, sin(202.5)*R, 0, cos(225)*R, sin(225)*R, 0, cos(247.5)*R, sin(247.5)*R, 0, cos(270)*R, sin(270)*R, 0, cos(292.5)*R, sin(292.5)*R, 0, cos(315)*R, sin(315)*R, 0, cos(337.5)*R, sin(337.5)*R, 0, cos(360)*R, sin(360)*R, 0, cos(112.5)*R, sin(112.5)*R, 10, cos(135)*R, sin(135)*R, 10, cos(157.5)*R, sin(157.5)*R, 10, cos(180)*R, sin(180)*R, 10, cos(202.5)*R, sin(202.5)*R, 10, cos(225)*R, sin(225)*R, 10, cos(247.5)*R, sin(247.5)*R, 10, cos(270)*R, sin(270)*R, 10, cos(292.5)*R, sin(292.5)*R, 10, cos(315)*R, sin(315)*R, 10, cos(337.5)*R, sin(337.5)*R, 10, cos(360)*R, sin(360)*R, 10, cos(22.5)*R, sin(22.5)*R, 10, cos(45)*R, sin(45)*R, 10, cos(67.5)*R, sin(67.5)*R, 10, cos(90)*R, sin(90)*R, 10 |
RULEDSEGMENTED
RULEDSEGMENTED n, mask, x11, y11, z11, s1, ..., x1n, y1n, z1n, sn, x21, y21, z21, ..., x2n, y2n, z2n
Compatibility: introduced in ARCHICAD 21.
It generates a sequence of doubly ruled surfaces, like RULED, but with less restriction on input polylines and with a subdivision of better quality.
- both are 3D polylines, does not need to be coplanar
- each may be closed but, neither may contain holes
- each may contain identical vertices, even multiple consecutive ones resulting in fan-shaped surface
- if a profile polyline is closed and coplanar, closing polygon can be generated
n:
number of polyline nodes in each curve.x1i, y1i, z1i:
3D positions of vertices on first profile polyline.x2i, y2i, z2i:
3D positions of vertices on second profile polyline.mask:
controls the existence of the bottom, top and side polygon and the visibility of the edges on the generator polylines.j1:
base surface is present (not effective if the first polyline is not coplanar or j3
is not set),j2:
top surface is present (not effective if the second polyline is not coplanar or j3
is not set),j3:
closing side surface is present (surface on additional segments between the last and first nodes),j5:
edges on the first profile polyline are visible,j6:
edges on the second profile polyline are visible,j7:
edges on the surface are visible, surface is not smooth.si:
status of the generatrices (lateral edges between one node on first profile polyline and corresponding node on second polyline).0:
generatrix is visible,1:
generatrix is used for showing the contour,2:
generatrix visible and defines a break in rendering.n > 1
Example:
RULEDSEGMENTED 4, 16+32, 0, 0, 0, 2, 1, 0, 0, 2, 1, 1, 0, 2, 1, 1, 1, 2, 0, 0, 1, 0, 1, 1, 0, 1, 2, 1, 2, 2
RULEDSEGMENTED{2}
RULEDSEGMENTED{2} top_material, bottom_material, n, mask, textureMode, x11, y11, z11, s1, mat1, ..., x1n, y1n, z1n, sn, matn, x21, y21, z21, ..., x2n, y2n, z2n
Compatibility: introduced in ARCHICAD 23.
RULEDSEGMENTED{2} is an extension of the RULEDSEGMENTED command with the possibility of controlling the surface attributes of the generated surfaces in segment detail and applying custom texture projection.
Additional parameters:
top_material:
surface attribute index of the base surface (if the first polyline is coplanar and j1+j3 are set).bottom_material:
surface attribute index of the top surface (if the second polyline is coplanar and j2+j3 are set).textureMode:
texture projection mode0:
automatic, optimized for curved surfaces, the same as with the RULEDSEGMENTED command.1:
custom, defined by the COOR command.
mati:
surface attribute index of generated surface segment i.Example:
_topMatIndex = 22 _bottomMatIndex = 34 _segmentMatIndex_1 = 55 _segmentMatIndex_2 = 44 RULEDSEGMENTED{2} _topMatIndex, _bottomMatIndex, 4, 1+2+16+32, 0, 0, 0, 0, 2, _segmentMatIndex_1, 1, 0, 0, 2, _segmentMatIndex_2, 1, 1, 0, 2, _segmentMatIndex_1, 0, 1, 0, 2, _segmentMatIndex_2, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1
SWEEP
SWEEP n, m, alpha, scale, mask, u1, v1, s1, ..., un, vn, sn, x1, y1, z1, ..., xm, ym, zm
If this condition is not met, it is moved along the z axis to start on the x-y plane.
The cross-section at point (xi, yi, zi) is perpendicular to the space curve segment between points (xi-1, yi-1, zi-1) and (xi, yi, zi).
SWEEP can be used to model the spout of a teapot and other complex shapes.
n:
number of polyline nodes.m:
number of path nodes.alpha:
incremental polyline rotation on its own plane, from one path node to the next one.scale:
incremental polyline scale factor, from one path node to the next one.ui, vi:
coordinates of the base polyline nodes.xi, yi, zi:
coordinates of the path curve nodes.mask:
controls the existence of the bottom and top polygons’ surfaces and edges.mask = j1 + 2*j2 + 4*j3 + 16*j5 + 32*j6 + 64*j7
, where each j can be 0 or 1.j1:
base surface is present,j2:
top surface is present,j3:
side surface is present,j5:
base edges are visible,j6:
top edges are visible,j7:
cross-section edges are visible, surface is articulated.si:
status of the lateral edges.0:
lateral edges starting from the node are all visible,1:
lateral edges starting from the node are used for showing the contour.Additional status codes allow you to create segments and arcs in the planar polyline using special constraints.
See the section called “Additional Status Codes” for details.
n > 1 m > 1 z1 < z2
Example:
SWEEP 4, 12, 7.5, 1, 1+2+4+16+32, -0.5, -0.25, 0, 0.5, -0.25, 0, 0.5, 0.25, 0, -0.5, 0.25, 0, 0, 0, 0.5, 0, 0, 1, 0, 0, 1.5, 0, 0, 2, 0, 0, 2.5, 0, 0, 3, 0, 0, 3.5, 0, 0, 4, 0, 0, 4.5, 0, 0, 5, 0, 0, 5.5, 0, 0, 6 |
TUBE
TUBE n, m, mask, u1, w1, s1, ... un, wn, sn, x1, y1, z1, angle1, ... xm, ym, zm, anglem
Surface generated by a polyline sweeping along a space curve path without distortion of the generating cross-section.
The internal connection surfaces are rotatable in the U-W plane of the
instantaneous U-V-W coordinate system.
V axis:
approximates the tangent of the generator curve at the corresponding point.W axis:
perpendicular to the V axis and pointing upward with respect to the local z axis.U axis:
perpendicular to the V and W axes and forms with them a right-hand sided Cartesian coordinate system.If the V axis is vertical, then the W direction is not correctly defined. The W axis in the previous path node is used for
determining a horizontal direction.
The cross-section polygon of the tube measured at the middle of the path segments is always equal to the base polygon (u1, w1, …, un, wn).
Section polygons in joints are situated in the bisector plane of the joint segments. The base polygon must be closed.
n:
number of the polyline nodes.m:
number of the path nodes.ui, wi:
coordinates of the base polyline nodes.xi, yi, zi:
coordinates of the path curve nodes.anglei:
rotation angle of the cross-section.mask:
controls the existence of the bottom and top polygons’ surfaces and edges.mask = j1 + 2*j2 + 16*j5 + 32*j6 + 64*j7 + 128*j8 + 512*j10 + 1024*j11 + 2048*j12 + 4096*j13
, where each j can be 0 or 1.j1:
base surface is present,j2:
end surface is present,j5:
base edges (at x2, y2, z2) are visible,j6:
end edges (at xm-1, ym-1, zm-1) are visible,j7:
cross-section edges are visible, surface is articulated,j8:
cross-section edges are sharp, the surface smoothing will stop here in OpenGL and rendering,j10:
base edges participate in line elimination (Compatibility: introduced in ARCHICAD 23.),j11:
end edges participate in line elimination (Compatibility: introduced in ARCHICAD 23.),j12:
longitudinal edges (which connect cross sections) participate in line elimination (Compatibility: introduced in ARCHICAD 23.),j13:
edges of cross sections participate in line elimination (Compatibility: introduced in ARCHICAD 23.),si:
status of the lateral edges.0:
lateral edges starting from the node are all visible,1:
lateral edges starting from the node are used for showing the contour.2:
when using or Z-buffer Rendering Engine and setting Smooth Surfaces,
the lateral edge belonging to this point defines a break. This solution is equivalent to the definition of additional nodes.
The calculation is performed by the compiler. With other rendering methods, it has the same effect as using 0.
Additional status codes allow you to create segments and arcs in the planar polyline using special constraints.
Note
The path comprises two points more than the number of generated sections.
The first and the last points determine the position in space of the first and the last surfaces belonging to the TUBE.
These points only play a role in determining the normal of the surfaces, they are not actual nodes of the path.
The orientation of the surfaces is the same as that of the surfaces that would be generated at the nodes nearest to the two endpoints,
if the TUBE were continued in the directions indicated by these.
n > 2 and m > 3
Example 1:
TUBE 4, 18, 16+32, 2.0, 0.0, 0, 0.0, 0.0, 0, 0.0, 0.4, 0, 2.0, 0.4, 0, -1, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0.1, 0, 6, 0, 0.15, 0, 6+4*sin(15), 4 - 4*cos(15), 0.2, 0, 6+4*sin(30), 4 - 4*cos(30), 0.25, 0, 6+4*sin(45), 4 - 4*cos(45), 0.3, 0, 6+4*sin(60), 4 - 4*cos(60), 0.35, 0, 6+4*sin(75), 4 - 4*cos(75), 0.4, 0, 10, 4, 0.45, 0, 6+4*sin(105), 4 - 4*cos(105), 0.5, 0, 6+4*sin(120), 4 - 4*cos(120), 0.55, 0, 6+4*sin(135), 4 - 4*cos(135), 0.6, 0, 6+4*sin(150), 4 - 4*cos(150), 0.65, 0, 6+4*sin(165), 4 - 4*cos(165), 0.7, 0, 6, 8, 0.75, 0, 0, 8, 1, 0, -1, 8, 1, 0
Example 2:
TUBE 14, 6, 1+2+16+32, 0, 0,0, 0.03, 0,0, 0.03, 0.02, 0, 0.06, 0.02, 0, 0.05, 0.0699, 0, 0.05, 0.07, 1, 0.05, 0.15, 901, 1, 0, 801, 0.08, 90, 2000, 0.19, 0.15, 0, 0.19, 0.19, 0, 0.25, 0.19, 0, 0.25, 0.25, 0, 0, 0.25, 0, 0, 1, 0, 0, 0, 0.0001, 0, 0, 0, 0, 0, 0, -0.8, 0, 0, 0, -0.8, 0.0001, 0, 0, -0.8, 1, 0, 0 |
Example 3:
TUBE 3, 7, 16+32, 0, 0, 0, -0.5, 0, 0, 0, 0.5, 0, 0.2, 0, -0.2, 0, 0, 0, 0, 0, 0, 0, 5, 0, 3, 0, 5, 0, 3, 4, 5, 0, 3, 4, 0, 0, 3, 3.8, -0.2, 0 |
TUBE{2}
TUBE{2} top_material, bottom_material, cut_material, n, m, mask, u1, w1, s1, mat1, ... un, wn, sn, matn, x1, y1, z1, angle1, ... xm, ym, zm, anglem
Compatibility: introduced in ARCHICAD 21.
- holes can be defined within the contour base polygon
- individual surfaces attribute for top, bottom polygons and cut areas
- individual surface attribute for side polygons belonging to the same base polygon edge
V axis, W axis, U axis:
same meaning as in the TUBE command.top_material:
surface of the closing polygon.bottom_material:
surface of the starting polygon.cut_material:
surface of the cut areas.n, m, ui, wi:
same meaning as in the TUBE command.xi, yi, zi, anglei:
same meaning as in the TUBE command.mask:
controls the existence of the bottom and top polygons’ surfaces and edges.mask = j1 + 2*j2 + 16*j5 + 32*j6 + 256*j9 + 512*j10 + 1024*j11 + 2048*j12 + 4096*j13
, where each j can be 0 or 1.j1:
base surface is present,j2:
end surface is present,j5:
base edges (at x2, y2, z2) are visible,j6:
end edges (at xm-1, ym-1, zm-1) are visible,j9:
side edge and surface is smooth in curved sections of the profile,j10:
base edges participate in line elimination (Compatibility: introduced in ARCHICAD 23.),j11:
end edges participate in line elimination (Compatibility: introduced in ARCHICAD 23.),j12:
longitudinal edges (which connect cross sections) participate in line elimination (Compatibility: introduced in ARCHICAD 23.),j13:
edges of cross sections participate in line elimination (Compatibility: introduced in ARCHICAD 23.),si:
status of the lateral edges.-1:
indicates the last node of a hole within the base polygon (duplicated first node of the hole), or the closing node of the outside polygon in case of a base polygon containing holes. The matn parameter is ignored in these duplicated nodes with status -1,0, 1, 2:
same meaning as in the TUBE command.mati:
individual surface of the side polygons belonging to the edge starting from ui, wi node of the base polygon.matEnds1 = 12 matEnds2 = 24 matCut = 15 matOuter = 10 matInner = 13 TUBE{2} matEnds1, matEnds2, matCut, 10, 4, 1 + 2 + 16 + 32, ! outside contour -0.01, 0.01, 0, matOuter, -0.01, -0.01, 0, matOuter, 0.01, -0.01, 0, matOuter, 0.01, 0.01, 0, matOuter, -0.01, 0.01, -1, matOuter, ! hole contour -0.008, 0.008, 0, matInner, -0.008, -0.008, 0, matInner, 0.008, -0.008, 0, matInner, 0.008, 0.008, 0, matInner, -0.008, 0.008, -1, matInner, ! path 0, 0, -1, 45, 0, 0, 0, 45, 0, 0, 1, 45, 0, 0, 2, 45
TUBEA
TUBEA n, m, mask, u1, w1, s1, ... un, wn, sn, x1, y1, z1, ... xm, ym, zm
TUBEA is a surface generated by a polyline sweeping along a space curve path with a different algorithm
than that of the TUBE command.
The section polygon generated in each joint of the path curve is equal with the base polygon (u1, w1, …, un, wn)
and is situated in the bisector plane of the projections of the joint segments to the local x-y plane.
The base polygon can be opened: in this case the section polygons will be generated to reach the local x-y plane as in the case of REVOLVE surfaces.
The cross section of the tube measured at the middle of the path segments can be different from the base polygon.
Additional status codes allow you to create segments and arcs in the planar polyline using special constraints.
See the section called “Additional Status Codes” for details.
Example:
TUBEA 9, 7, 1 + 2 + 16 + 32, -1, 1, 0, 0, 2, 0, 0.8, 2, 0, 0.8, 1.6, 0, 0.8001, 1.6, 1, 3.2, 1.6, 0, 3.2, 2, 0, 4, 2, 0, 5, 1, 0, 0, -7, 0, 0, 0, 0, 4, 0, 1, 9, 3, 2.25, 9, 10, 2.25, 14, 10, 2.25, 20, 15, 5
COONS
COONS n, m, mask, x11, y11, z11, ..., x1n, y1n, z1n, x21, y21, z21, ..., x2n, y2n, z2n, x31, y31, z31, ..., x3m, y3m, z3m, x41, y41, z41, ..., x4m, y4m, z4m
A Coons patch generated from four boundary curves.
mask:
mask = 4*j3 + 8*j4 + 16*j5 + 32*j6 + 64*j7
, where each j can be 0 or 1.j3:
edges of the 1st boundary (x1, y1, z1) are visible (effective only if j7 is set),j4:
edges of the 2nd boundary (x2, y2, z2) are visible (effective only if j7 is set),j5:
edges of the 3rd boundary (x3, y3, z3) are visible (effective only if j7 is set),j6:
edges of the 4th boundary (x4, y4, z4) are visible (effective only if j7 is set),j7:
edges on surface are visible, surface is not smooth.In case the edges on the surface are invisible (bit j7 is set to zero), all boundary edges become visible, with the bits j3-j6 becoming ineffective. To define boundary edge visibility independent of surface edge visibility, use COONS{2} command.
n > 1, m > 1
Example 1:
COONS 6, 6, 4+8+16+32+64, ! 1st boundary, n=6 0, 0, 5, 1, 0, 4, 2, 0, 3, 3, 0, 2, 4, 0, 1, 5, 0, 0, ! 2nd boundary, n=6 0, 5, 0, 1, 5, 1, 2, 5, 2, 3, 5, 3, 4, 5, 4, 5, 5, 5, ! 3rd boundary, m=6 0, 0, 5, 0, 1, 4, 0, 2, 3, 0, 3, 2, 0, 4, 1, 0, 5, 0, ! 4th boundary, m=6 5, 0, 0, 5, 1, 1, 5, 2, 2, 5, 3, 3, 5, 4, 4, 5, 5, 5 |
Example 2:
COONS 7, 6, 4+8+16+32+64, ! 1st boundary, n=7 1, 2, 0, 0.5, 1, 0, 0.2, 0.5, 0, -0.5, 0, 0, 0.2, -0.5, 0, 0.5, -1, 0, 1, -2, 0, ! 2nd boundary, n=7 6, 10, -2, 6.5, 4, -1.5, 5, 1, -1.2, 4, 0, -1, 5, -1, -1.2, 6.5, -4, -1.5, 6, -10, -2, ! 3rd boundary, m=6 1, 2, 0, 2, 4, -0.5, 3, 6, -1, 4, 8, -1.5, 5, 9, -1.8, 6, 10, -2, ! 4th boundary, m=6 1, -2, 0, 2, -4, -0.5, 3, -6, -1, 4, -8, -1.5, 5, -9, -1.8, 6, -10, -2 |
COONS{2}
COONS{2} n, m, mask, x11, y11, z11, ..., x1n, y1n, z1n, x21, y21, z21, ..., x2n, y2n, z2n, x31, y31, z31, ..., x3m, y3m, z3m, x41, y41, z41, ..., x4m, y4m, z4m
COONS{2} is an extension of the COONS command with the possibility of setting the visibility of surface and boundary edges independently.
mask:
mask = 4*j3 + 8*j4 + 16*j5 + 32*j6 + 64*j7
, where each j can be 0 or 1.j3:
edges of the 1st boundary (x1, y1, z1) are visible,j4:
edges of the 2nd boundary (x2, y2, z2) are visible,j5:
edges of the 3rd boundary (x3, y3, z3) are visible,j6:
edges of the 4th boundary (x4, y4, z4) are visible,j7:
edges on surface are visible, surface is not smooth.MASS
MASS top_material, bottom_material, side_material, n, m, mask, h, x1, y1, z1, s1, ... xn, yn, zn, sn, xn+1, yn+1, zn+1, sn+1, ... xn+m, yn+m, zn+m, sn+m
The equivalent of the shape generated by the Mesh tool in .
top_material, bottom_material, side_material:
name/index of the top, bottom and side materials.n:
the number of nodes in the mass polygon.m:
the number of nodes on the ridges.h:
the height of the skirt (can be negative).xi, yi, zi:
the coordinates of the nodes.mask:
mask = j1 + 4*j3 + 16*j5 + 32*j6 + 64*j7 + 128*j8
, where each j can be 0 or 1.j1:
base surface is present,j3:
side surfaces are present,j5:
base and side edges are visible,j6:
triangulation edges are visible,j7:
triangulation edges are visible, top surface is not smooth,j8:
all ridges will be sharp, but the surface is smooth.
si:
similar to the PRISM_ command.Additional status codes allow you to create segments and arcs in the planar polyline using special constraints.
See the section called “Additional Status Codes” for details.
n >= 3, m >= 0
Example:
MASS "Surf-White", "Surf-White", "Surf-White", 15, 12, 117, -5.0, 0, 12, 0, 15, 8, 12, 0, 15, 8, 0, 0, 15, 13, 0, 0, 13, 16, 0, 0, 13, 19, 0, 0, 13, 23, 0, 0, 13, 24, 0, 0, 15, 24, 12, 0, 15, 28, 12, 0, 15, 28, 20, 8, 13, 28, 22, 8, 15, 0, 22, 8, 15, 0, 20, 8, 13, 0, 12, 0, -1, 0, 22, 8, 0, 28, 22, 8, -1, 23, 17, 5, 0, 23, 0, 5, -1, 13, 13, 1, 0, 13, 0, 1, -1, 16, 0, 7, 0, 16, 19, 7, -1, 0, 20, 8, 0, 28, 20, 8, -1, 19, 17, 5, 0, 19, 0, 5, -1 |
MASS{2}
MASS{2} top_material, bottom_material, side_material, n, m, mask, h, x1, y1, z1, s1, ... xn, yn, zn, sn, xn+1, yn+1, zn+1, sn+1, ... xn+m, yn+m, zn+m, sn+m
Extension of the MASS command with an additional mask bit and the possibility of hiding all top edges of the mass.
mask:
mask = j1 + 4*j3 + 16*j5 + 32*j6 + 64*j7 + 128*j8 + 256*j9 + 512*j10
, where each j can be 0 or 1.j1:
base surface is present,j3:
side surfaces are present,j5:
base and side edges are visible,j6:
top edges are visible,j7:
top edges are visible, top surface is not smooth,j8:
all ridges will be sharp, but the surface is smooth.j9:
edges participate in line elimination.j10:
all top edges will be hidden.Example:
PEN 1 mat = IND (MATERIAL, "Metal-Aluminium") FOR i=1 TO 2 STEP 1 MASS{2} mat, mat, mat, 5, 0, 1+4+16+32+64+256, -1, 0, 0, 0, 15, 2, 0, 0, 15, 2, 2, 0, 15, 0, 2, 0, 15, 0, 0, 0, -1 BODY -1 ADDX 2 NEXT i |
POLYROOF
POLYROOF defaultMat, k, m, n, offset, thickness, applyContourInsidePivot, z_1, ..., z_k, pivotX_1, pivotY_1, pivotMask_1, roofAngle_11, gableOverhang_11, topMat_11, bottomMat_11, ... roofAngle_1k, gableOverhang_1k, topMat_1k, bottomMat_1k, ... pivotX_m, pivotY_m, pivotMask_m, roofAngle_m1, gableOverhang_m1, topMat_m1, bottomMat_m1, ... roofAngle_mk, gableOverhang_mk, topMat_mk, bottomMat_mk, contourX_1, contourY_1, contourMask_1, edgeTrim_1, edgeAngle_1, edgeMat_1, ... contourX_n, contourY_n, contourMask_n, edgeTrim_n, edgeAngle_n, edgeMat_n
The command creates a possibly multi-level roof in which the geometry is controlled by multiple parameters,
most importantly the roof angles and two polygons: a pivot polygon and a contour polygon. At the pivot polygon, the roof is slanted at the roof angle.
It ascends until it either reaches the height of the next level or until it is eliminated by its sides encountering one another.
It also descends downwards, until it reaches the contour polygon, which cuts off parts of the roof outside of it.
The contour polygon can also be used to cut holes in the roof.
defaultMat:
the numeric index of the “inner” material of the roof.
This material becomes visible at gables and at cut surfaces, e.g., if the roof is cut by a plane.
k:
the number of levels.m:
the number of pivot polygon vertices.n:
the number of contour polygon vertices.offset:
an offset for the thickness of the roof.thickness:
the thickness of the roof.applyContourInsidePivot:
if set to 0, the outer contour polygon is only applied below the pivot polygon plane.
If set to 1, the outer contour polygon is applied both above and below the pivot polygon plane.
The 0 setting may be used to prevent the contour polygon from cutting off gables that lean outwards.
z_i:
the Z coordinate of a level.pivotX_i, pivotY_i:
coordinates of the pivot polygon vertices.pivotMask_i:
0:
marks a normal vertex,-1:
marks the end of the current pivot subpolygon (outer contour or hole).
Data for such a vertex must be a copy of the data for the first vertex of the subpolygon.
A polygon must always be closed with a mask value of -1, even if there are no holes inside it.
roofAngle_i:
angle of slant for a pivot edge on a given level. If the angle >= 90, that part of the roof becomes a gable.gableOverhang_i:
at the sides of a gable, the roof can extend over a lower level of itself.
The amount of this can be controlled by this parameter,
which has effect only on gables (roofAngle >= 90) that are at least on the second level of the roof.
topMat_i, bottomMat_i:
the numeric index of the materials for the top and bottom of the roof.contourX_i, contourY_i:
coordinates of the contour polygon vertices.contourMask_i:
0:
marks a normal vertex,-1:
marks the end of the current contour subpolygon (outer contour or hole).
Data for such a vertex must be a copy of the data for the first vertex of the subpolygon.
A polygon must always be closed with a mask value of -1, even if there are no holes inside it.
edgeTrim_i:
specifies the way the edge is trimmed by the contour polygon. Possible values are:0:
Vertical,1:
Perpendicular to roof plane,2:
Horizontal,3:
Custom angle to roof plane.edgeAngle_i:
the custom angle of the edge to the roof plane. It has effect only if edgeTrim is set to 3 (custom angle to roof plane).edgeMat_i:
numeric index of the material at the edge the roof, where the contour cuts itFigure 1: Materials |
Figure 2: Angles |
Example:
POLYROOF "Paint-01", 2, 5, 5, 0, 0.2, 0, ! Start of z values 2.7, 3.2, ! Start of pivot polygon 2, 8, 0, 45, 0, ind(material, "Paint-01"), ind(material, "Paint-01"), 90, 0.5, ind(material, "Paint-01"), ind(material, "Paint-01"), 2, 3, 0, 45, 0, ind(material, "Paint-01"), ind(material, "Paint-01"), 65, 0, ind(material, "Paint-01"), ind(material, "Paint-01"), 10, 3, 0, 45, 0, ind(material, "Paint-01"), ind(material, "Paint-01"), 65, 0, ind(material, "Paint-01"), ind(material, "Paint-01"), 10, 8, 0, 45, 0, ind(material, "Paint-01"), ind(material, "Paint-01"), 65, 0, ind(material, "Paint-01"), ind(material, "Paint-01"), 2, 8, -1, 45, 0, ind(material, "Paint-01"), ind(material, "Paint-01"), 90, 0.5, ind(material, "Paint-01"), ind(material, "Paint-01"), ! Start of contour polygon 1.5, 8.5, 0, 0, 0, ind(material, "Paint-01"), 1.5, 2.5, 0, 0, 0, ind(material, "Paint-01"), 10.5, 2.5, 0, 0, 0, ind(material, "Paint-01"), 10.5, 8.5, 0, 0, 0, ind(material, "Paint-01"), 1.5, 8.5, -1, 0, 0, ind(material, "Paint-01")
Output: see Figure 1
POLYROOF{2}
POLYROOF{2} defaultMat, k, m, n, offset, thickness, totalThickness, applyContourInsidePivot, z_1, ..., z_k, pivotX_1, pivotY_1, pivotMask_1, roofAngle_11, gableOverhang_11, topMat_11, bottomMat_11, ... roofAngle_1k, gableOverhang_1k, topMat_1k, bottomMat_1k, ... pivotX_m, pivotY_m, pivotMask_m, roofAngle_m1, gableOverhang_m1, topMat_m1, bottomMat_m1, ... roofAngle_mk, gableOverhang_mk, topMat_mk, bottomMat_mk, contourX_1, contourY_1, contourMask_1, edgeTrim_1, edgeAngle_1, edgeMat_1, ... contourX_n, contourY_n, contourMask_n, edgeTrim_n, edgeAngle_n, edgeMat_n
POLYROOF{2} is an extension of the POLYROOF command with the possibility of defining the total thickness of the roof.
This parameter should be considered together with offset and thickness, when the generation of a slice of the roof is desirable.
In this case the thickness and the offset should be set to the thickness of the slice and to the distance between the top planes of the slice
and the complete roof respectively.
totalThickness:
the total thickness of the roof.
POLYROOF{3}
POLYROOF{3} defaultMat, mask, k, m, n, offset, thickness, totalThickness, applyContourInsidePivot, z_1, ..., z_k, pivotX_1, pivotY_1, pivotMask_1, roofAngle_11, gableOverhang_11, topMat_11, bottomMat_11, ... roofAngle_1k, gableOverhang_1k, topMat_1k, bottomMat_1k, ... pivotX_m, pivotY_m, pivotMask_m, roofAngle_m1, gableOverhang_m1, topMat_m1, bottomMat_m1, ... roofAngle_mk, gableOverhang_mk, topMat_mk, bottomMat_mk, contourX_1, contourY_1, contourMask_1, edgeTrim_1, edgeAngle_1, edgeMat_1, ... contourX_n, contourY_n, contourMask_n, edgeTrim_n, edgeAngle_n, edgeMat_n
POLYROOF{3} is an extension of the POLYROOF{2} command with the possibility of controlling the global behavior of the generated roof.
mask:
controls the global behavior of the generated roof.mask = j1 + 2*j2
, where each j can be 0 or 1.j1:
edges participate in line elimination.j2:
Make all edges invisible.Example:
pen 1 mat = IND (MATERIAL, "Metal-Aluminium") a = -0.4242640691048 : b = 4.424264068326 c = 6.424264068326 POLYROOF{3} mat,1, 2, 5, 5, 0, 0.3, 0.3, 1, 0, 1, a, b, 0, 45, 0, mat, mat, 90, 0, mat, mat, a, a, 0, 45, 0, mat, mat, 90, 0, mat, mat, c, a, 0, 45, 0, mat, mat, 90, 0, mat, mat, c, b, 0, 45, 0, mat, mat, 90, 0, mat, mat, a, b, -1,45, 0, mat, mat, 90, 0, mat, mat, -0.8, -0.8, 0, 2, 0, mat, 6.8, -0.8, 0, 2, 0, mat, 6.8, 4.8, 0, 2, 0, mat, -0.8, 4.8, 0, 2, 0, mat, -0.8, -0.8, -1, 2, 0, mat a = 0.1514718617904 : b = 3.848528136652 c = 5.848528136652 : q = 0.5757359305057 w = 5.424264067936 : e = 3.424264056692 POLYROOF{3} mat,1, 1, 5, 5, 0, 0.3, 0.3, 1, 0.5757359312847, a, b, 0, 45, 0, mat, mat, a, a, 0, 45, 0, mat, mat, c, a, 0, 45, 0, mat, mat, c, b, 0, 45, 0, mat, mat, a, b, -1, 45, 0, mat, mat, q, q, 0, 0, 0, mat, w, q, 0, 0, 0, mat, w, e, 0, 0, 0, mat, q, e, 0, 0, 0, mat, q, q, -1, 0, 0, mat |
POLYROOF{4}
POLYROOF{4} defaultMat, mask, k, m, n, offset, thickness, totalThickness, applyContourInsidePivot, z_1, ..., z_k, pivotX_1, pivotY_1, pivotMask_1, roofAngle_11, gableOverhang_11, topMat_11, bottomMat_11, ... roofAngle_1k, gableOverhang_1k, topMat_1k, bottomMat_1k, ... pivotX_m, pivotY_m, pivotMask_m, roofAngle_m1, gableOverhang_m1, topMat_m1, bottomMat_m1, ... roofAngle_mk, gableOverhang_mk, topMat_mk, bottomMat_mk, contourX_1, contourY_1, contourMask_1, edgeTrim_1, edgeAngle_1, edgeMat_1, ... contourX_n, contourY_n, contourMask_n, edgeTrim_n, edgeAngle_n, edgeMat_n
POLYROOF{4} is an extension of the POLYROOF{3} command
with the possibility of using inline material definition, that means materials defined in GDL script locally
also can be used next to materials defined in global material definitions.
EXTRUDEDSHELL
EXTRUDEDSHELL topMat, bottomMat, sideMat_1, sideMat_2, sideMat_3, sideMat_4, defaultMat, n, offset, thickness, flipped, trimmingBody, x_tb, y_tb, x_te, y_te, topz, tangle, x_bb, y_bb, x_be, y_be, bottomz, bangle, preThickenTran_11, preThickenTran_12, preThickenTran_13, preThickenTran_14, preThickenTran_21, preThickenTran_22, preThickenTran_23, preThickenTran_24, preThicakenTran_31, preThickenTran_32, preThickenTran_33, preThickenTran_34, x_1, y_1, s_1, ... x_n, y_n, s_n
Surface created by first extruding a polyline, then adding thickness to it.
topMat, bottomMat, sideMat_1, sideMat_2, sideMat_3, sideMat_4:
Materials on the top, bottom and four sides of the object.defaultMat:
the numeric index of the “inner” material of the object.
This material becomes visible at cut surfaces, e.g., if the object is cut by a plane.
n:
number of profile base polyline vertices.offset:
an offset for the thickness of the shell. Cannot be negative.thickness:
the thickness of the shell.flipped:
1:
if the shell should be flipped,0:
otherwise.trimmingBody:
1:
if the shell is to be closed for trimming purposes,0:
otherwise.x_tb, y_tb, x_te, y_te, topz, tangle:
Specify the top plane of the extrusion.
The meaning of the parameters is the same as for the SPRISM_{2} command.
x_bb, y_bb, x_be, y_be, bottomz, bangle:
Specify the bottom plane of the extrusion.
The meaning of the parameters is the same as for the SPRISM_{2} command.
preThickenTran_i:
a transformation executed before thickening. See the XFORM command for the meaning of parameters.x_i, y_i, s_i:
X and Y coordinates and status values for the base profile polyline. See the EXTRUDE command for details.
The visibility of the sides cannot be controlled with the status.
EXTRUDEDSHELL{2}
EXTRUDEDSHELL{2} topMat, bottomMat, sideMat_1, sideMat_2, sideMat_3, sideMat_4, defaultMat, n, status, offset, thickness, flipped, trimmingBody, x_tb, y_tb, x_te, y_te, topz, tangle, x_bb, y_bb, x_be, y_be, bottomz, bangle, preThickenTran_11, preThickenTran_12, preThickenTran_13, preThickenTran_14, preThickenTran_21, preThickenTran_22, preThickenTran_23, preThickenTran_24, preThicakenTran_31, preThickenTran_32, preThickenTran_33, preThickenTran_34, x_1, y_1, s_1, ... x_n, y_n, s_n
EXTRUDEDSHELL{2} is an extension of the EXTRUDEDSHELL command with the possibility of hiding edges between original and thickened surface.
status:
Status bits:status = j1
, where each j can be 0 or 1.j1:
Make edges invisible between original and thickened surface.Example:
EXTRUDEDSHELL "Paint-02", "Surf-Stucco Yellow", "Surf-Stucco Yellow", "Surf-Stucco Yellow", "Surf-Stucco Yellow", "Surf-Stucco Yellow", "Surf-Stucco Yellow", 3, 0.00, 0.30, 0, 0, ! 2 slant planes 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, -10.00, 0.00, ! transformation matrix 0.00, 0.00, 1.00, 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, ! profile polyline 2.00, 0.00, 15, 0.00, 2.00, 15, -2.00, 0.00, 15
EXTRUDEDSHELL{3}
EXTRUDEDSHELL{3} topMat, bottomMat, sideMat_1, sideMat_2, sideMat_3, sideMat_4, defaultMat, n, status, offset, thickness, flipped, trimmingBody, x_tb, y_tb, x_te, y_te, topz, tangle, x_bb, y_bb, x_be, y_be, bottomz, bangle, preThickenTran_11, preThickenTran_12, preThickenTran_13, preThickenTran_14, preThickenTran_21, preThickenTran_22, preThickenTran_23, preThickenTran_24, preThicakenTran_31, preThickenTran_32, preThickenTran_33, preThickenTran_34, x_1, y_1, s_1, ... x_n, y_n, s_n
EXTRUDEDSHELL{3} is an extension of the EXTRUDEDSHELL{2} command
with the possibility of using inline material definition, that means materials defined in GDL script locally
also can be used next to materials defined in global material definitions.
REVOLVEDSHELL
REVOLVEDSHELL topMat, bottomMat, sideMat_1, sideMat_2, sideMat_3, sideMat_4, defaultMat, n, offset, thickness, flipped, trimmingBody, alphaOffset, alpha, preThickenTran_11, preThickenTran_12, preThickenTran_13, preThickenTran_14, preThickenTran_21, preThickenTran_22, preThickenTran_23, preThickenTran_24, preThickenTran_31, preThickenTran_32, preThickenTran_33, preThickenTran_34, x_1, y_1, s_1, ... x_n, y_n, s_n
Surface created by rotating a polyline defined in the x-y plane around the x axis, then adding thickness to it.
topMat, bottomMat, sideMat_1, sideMat_2, sideMat_3, sideMat_4:
Materials on the top, bottom and four sides of the object.defaultMat:
the numeric index of the “inner” material of the object.
This material becomes visible at cut surfaces, e.g., if the object is cut by a plane.
n:
number of profile base polyline vertices.offset:
an offset for the thickness of the shell. Cannot be negative.thickness:
the thickness of the shell.flipped:
1:
if the shell should be flipped,0:
otherwise.trimmingBody:
1:
if the shell is to be closed for trimming purposes,0:
otherwise.alphaOffset:
the sweep start angle.alpha:
the sweep angle length in degrees, may be negative.preThickenTran_i:
a transformation executed before thickening. See the XFORM command for the meaning of parameters.x_i, y_i, s_i:
X and Y coordinates and status values for the base profile polyline. See the EXTRUDE command for details.
The visibility of the sides cannot be controlled with the status.
REVOLVEDSHELL{2}
REVOLVEDSHELL{2} topMat, bottomMat, sideMat_1, sideMat_2, sideMat_3, sideMat_4, defaultMat, n, status, offset, thickness, flipped, trimmingBody, alphaOffset, alpha, preThickenTran_11, preThickenTran_12, preThickenTran_13, preThickenTran_14, preThickenTran_21, preThickenTran_22, preThickenTran_23, preThickenTran_24, preThickenTran_31, preThickenTran_32, preThickenTran_33, preThickenTran_34, x_1, y_1, s_1, ... x_n, y_n, s_n
REVOLVEDSHELL{2} is an extension of the REVOLVEDSHELL command with the possibility of hiding edges of surfaces, and edges between original and thickened surface.
status:
Status bits:status = j1 + 2*j2
, where each j can be 0 or 1.j1:
Make edges invisible between original and thickened surface.j2:
Make edges invisible on surfaces.Example:
REVOLVEDSHELL "Paint-02", "Surf-Stucco Yellow", "Surf-Stucco Yellow", "Surf-Stucco Yellow", "Surf-Stucco Yellow", "Surf-Stucco Yellow", "Surf-Stucco Yellow", 2, 0.00, 0.30, 0, 0, 0.00, 270.00, ! transformation matrix 0.00, 0.00, -1.00, 0.00, 0.00, 1.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, ! profile polyline 4.00, 0.00, 2, 0.00, 4.00, 2
REVOLVEDSHELL{3}
REVOLVEDSHELL{3} topMat, bottomMat, sideMat_1, sideMat_2, sideMat_3, sideMat_4, defaultMat, n, status, offset, thickness, flipped, trimmingBody, alphaOffset, alpha, preThickenTran_11, preThickenTran_12, preThickenTran_13, preThickenTran_14, preThickenTran_21, preThickenTran_22, preThickenTran_23, preThickenTran_24, preThickenTran_31, preThickenTran_32, preThickenTran_33, preThickenTran_34, x_1, y_1, s_1, ... x_n, y_n, s_n
REVOLVEDSHELL{3} is an extension of the REVOLVEDSHELL{2} command
with the possibility of using inline material definition, that means materials defined in GDL script locally
also can be used next to materials defined in global material definitions.
REVOLVEDSHELLANGULAR
REVOLVEDSHELLANGULAR topMat, bottomMat, sideMat_1, sideMat_2, sideMat_3, sideMat_4, defaultMat, n, offset, thickness, flipped, trimmingBody, alphaOffset, alpha, segmentationType, nOfSegments, preThickenTran_11, preThickenTran_12, preThickenTran_13, preThickenTran_14, preThickenTran_21, preThickenTran_22, preThickenTran_23, preThickenTran_24, preThickenTran_31, preThickenTran_32, preThickenTran_33, preThickenTran_34, x_1, y_1, s_1, ... x_n, y_n, s_n
An angular variant of the REVOLVEDSHELL command. Parameters are the same with the addition of the following extra parameters:
segmentationType:
Must be either 1 or 2.1:
means that 360 degrees of revolution is split into nOfSegments segments,2:
means that the actual revolution angle (given by the alpha parameter) is split into nOfSegments segments.nOfSegments:
Number of segments, see segmentationType parameter above.REVOLVEDSHELLANGULAR{2}
REVOLVEDSHELLANGULAR{2} topMat, bottomMat, sideMat_1, sideMat_2, sideMat_3, sideMat_4, defaultMat, n, status, offset, thickness, flipped, trimmingBody, alphaOffset, alpha, segmentationType, nOfSegments, preThickenTran_11, preThickenTran_12, preThickenTran_13, preThickenTran_14, preThickenTran_21, preThickenTran_22, preThickenTran_23, preThickenTran_24, preThickenTran_31, preThickenTran_32, preThickenTran_33, preThickenTran_34, x_1, y_1, s_1, ... x_n, y_n, s_n
REVOLVEDSHELLANGULAR{2} is an extension of the REVOLVEDSHELLANGULAR command with the possibility of hiding edges of surfaces, and edges between original and thickened surface.
status:
Status bits:status = j1 + 2*j2
, where each j can be 0 or 1.j1:
Make edges invisible between original and thickened surface.j2:
Make edges invisible on surfaces.REVOLVEDSHELLANGULAR{3}
REVOLVEDSHELLANGULAR{3} topMat, bottomMat, sideMat_1, sideMat_2, sideMat_3, sideMat_4, defaultMat, n, status, offset, thickness, flipped, trimmingBody, alphaOffset, alpha, segmentationType, nOfSegments, preThickenTran_11, preThickenTran_12, preThickenTran_13, preThickenTran_14, preThickenTran_21, preThickenTran_22, preThickenTran_23, preThickenTran_24, preThickenTran_31, preThickenTran_32, preThickenTran_33, preThickenTran_34, x_1, y_1, s_1, ... x_n, y_n, s_n
REVOLVEDSHELLANGULAR{3} is an extension of the REVOLVEDSHELLANGULAR{2} command
with the possibility of using inline material definition, that means materials defined in GDL script locally
also can be used next to materials defined in global material definitions.
RULEDSHELL
RULEDSHELL topMat, bottomMat, sideMat_1, sideMat_2, sideMat_3, sideMat_4, defaultMat, n, m, g, offset, thickness, flipped, trimmingBody, preThickenTran_11, preThickenTran_12, preThickenTran_13, preThickenTran_14, preThickenTran_21, preThickenTran_22, preThickenTran_23, preThickenTran_24, preThickenTran_31, preThickenTran_32, preThickenTran_33, preThickenTran_34, firstpolyX_1, firstpolyY_1, firstpolyS_1, ... firstpolyX_n, firstpolyY_n, firstpolyS_n, secondpolyX_1, secondpolyY_1, secondpolyS_1, ... secondpolyX_m, secondpolyY_m, secondpolyS_m, profile2Tran_11, profile2Tran_12, profile2Tran_13, profile2Tran_14 profile2Tran_21, profile2Tran_22, profile2Tran_23, profile2Tran_24 profile2Tran_31, profile2Tran_32, profile2Tran_33, profile2Tran 34 generatrixFirstIndex_1, generatrixSecondIndex_1, ... generatrixFirstIndex_g, generatrixSecondIndex_g
Surface created by connecting two polylines.
topMat, bottomMat, sideMat_1, sideMat_2, sideMat_3, sideMat_4:
Materials on the top, bottom and four sides of the object.defaultMat:
the numeric index of the “inner” material of the object.
This material becomes visible at cut surfaces, e.g., if the object is cut by a plane.
n:
number of vertices for first profile base polyline.m:
number of vertices for second profile base polyline.g:
number of generatrices.offset:
an offset for the thickness of the shell. Cannot be negative.thickness:
thickness of the shell.flipped:
1:
if the shell should be flipped,0:
otherwisepreThickenTran:
a transformation executed before thickening. See the XFORM command for the meaning of parameters.trimmingBody:
1:
if the shell is to be closed for trimming purposes,0:
otherwisefirstpolyX, firstpolyY, firstpolyS:
X and Y coordinates and status values for the first base profile polyline.
See the REVOLVE command for details.
secondpolyX, secondpolyY, secondpolyS:
X and Y coordinates and status values for the second base profile polyline. See the REVOLVE command for details.
profile2Tran:
a transformation executed on the second profile.
Use this transformation to position the second profile relative to the first one. See the XFORM command for the meaning of parameters.
generatrixFirstIndex, generatrixSecondIndex:
pairs of indexes, one from the first polyline and one from the second polyline.
The vertexes with the given indexes will be connected with a line.
RULEDSHELL{2}
RULEDSHELL{2} topMat, bottomMat, sideMat_1, sideMat_2, sideMat_3, sideMat_4, defaultMat, n, m, g, status, offset, thickness, flipped, trimmingBody, preThickenTran_11, preThickenTran_12, preThickenTran_13, preThickenTran_14, preThickenTran_21, preThickenTran_22, preThickenTran_23, preThickenTran_24, preThickenTran_31, preThickenTran_32, preThickenTran_33, preThickenTran_34, firstpolyX_1, firstpolyY_1, firstpolyS_1, ... firstpolyX_n, firstpolyY_n, firstpolyS_n, secondpolyX_1, secondpolyY_1, secondpolyS_1, ... secondpolyX_m, secondpolyY_m, secondpolyS_m, profile2Tran_11, profile2Tran_12, profile2Tran_13, profile2Tran_14 profile2Tran_21, profile2Tran_22, profile2Tran_23, profile2Tran_24 profile2Tran_31, profile2Tran_32, profile2Tran_33, profile2Tran 34 generatrixFirstIndex_1, generatrixSecondIndex_1, ... generatrixFirstIndex_g, generatrixSecondIndex_g
RULEDSHELL{2} is an extension of the RULEDSHELL command with the possibility of hiding edges of surfaces, and edges between original and thickened surface.
status:
Status bits:status = j1 + 2*j2
, where each j can be 0 or 1.j1:
Make edges invisible between original and thickened surface.j2:
Make edges invisible on surfaces.Example:
RULEDSHELL "Paint-14", "Paint-14", "Paint-14", "Paint-14", "Paint-14", "Paint-14", "Paint-14", 4, 3, 3, 0.00, 0.30, 0, 0, ! transformation matrix 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, -1.00, 0.00, 0.00, 1.00, 0.00, 0.00, ! profile 1 polyline 0.00, 0.00, 2, 2.00, 2.00, 2, 4.00, 0.00, 2, 6.00, 0.00, 2, ! profile 2 polyline 0.00, 0.00, 2, 2.00, 2.00, 2, 6.00, 1.00, 2, ! transformation matrix 1.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 1.00, -10.00, ! generatrices 1, 1, 2, 2, 4, 3
RULEDSHELL{3}
RULEDSHELL{3} topMat, bottomMat, sideMat_1, sideMat_2, sideMat_3, sideMat_4, defaultMat, n, m, g, status, offset, thickness, flipped, trimmingBody, preThickenTran_11, preThickenTran_12, preThickenTran_13, preThickenTran_14, preThickenTran_21, preThickenTran_22, preThickenTran_23, preThickenTran_24, preThickenTran_31, preThickenTran_32, preThickenTran_33, preThickenTran_34, firstpolyX_1, firstpolyY_1, firstpolyS_1, ... firstpolyX_n, firstpolyY_n, firstpolyS_n, secondpolyX_1, secondpolyY_1, secondpolyS_1, ... secondpolyX_m, secondpolyY_m, secondpolyS_m, profile2Tran_11, profile2Tran_12, profile2Tran_13, profile2Tran_14 profile2Tran_21, profile2Tran_22, profile2Tran_23, profile2Tran_24 profile2Tran_31, profile2Tran_32, profile2Tran_33, profile2Tran 34 generatrixFirstIndex_1, generatrixSecondIndex_1, ... generatrixFirstIndex_g, generatrixSecondIndex_g
RULEDSHELL{3} is an extension of the RULEDSHELL{2} command
with the possibility of using inline material definition, that means materials defined in GDL script locally
also can be used next to materials defined in global material definitions.