尽管 Dynamo 能够创建各种复杂的几何形状,但简单的几何基本体构成任何计算设计的支柱:直接以最终设计形式表示或用作生成更复杂几何体的脚手架。
    虽然不是严格的一块几何体,但 CoordinateSystem 是构建几何体的重要工具。CoordinateSystem 对象可记录位置和几何变换(如旋转、调节和缩放)。
    以 x = 0、y = 0、z = 0 的点为中心创建 CoordinateSystem,不进行旋转、缩放或调节变换,只需调用 Identity 构造函数:
    12.2 几何基本体 - 图1

    1. // create a CoordinateSystem at x = 0, y = 0, z = 0,
    2. // no rotations, scaling, or sheering transformations
    3. cs = CoordinateSystem.Identity();

    具有几何变换的 CoordinateSystems 超出本章的范围,但另一个构造函数允许您在特定点 CoordinateSystem.ByOriginVectors 创建坐标系:
    12.2 几何基本体 - 图2

    1. // create a CoordinateSystem at a specific location,
    2. // no rotations, scaling, or sheering transformations
    3. x_pos = 3.6;
    4. y_pos = 9.4;
    5. z_pos = 13.0;
    6. origin = Point.ByCoordinates(x_pos, y_pos, z_pos);
    7. identity = CoordinateSystem.Identity();
    8. cs = CoordinateSystem.ByOriginVectors(origin,
    9. identity.XAxis, identity.YAxis, identity.ZAxis);

    最简单的几何基本体是一个点,表示三维空间中的零维位置。如前所述,可以通过几种不同的方式在特定坐标系中创建点:Point.ByCoordinates 使用指定的 x、y 和 z 坐标创建点;Point.ByCartesianCoordinates 使用指定的 x、y 和 z 坐标在特定坐标系中创建点;Point.ByCylindricalCoordinates 使用半径、旋转角度和高度创建位于圆柱体上的点;Point.BySphericalCoordinates 使用半径和两个旋转角度创建位于球体上的点。
    本例说明在各种坐标系中创建的点:
    12.2 几何基本体 - 图3

    1. // create a point with x, y, and z coordinates
    2. x_pos = 1;
    3. y_pos = 2;
    4. z_pos = 3;
    5. pCoord = Point.ByCoordinates(x_pos, y_pos, z_pos);
    6. // create a point in a specific coordinate system
    7. cs = CoordinateSystem.Identity();
    8. pCoordSystem = Point.ByCartesianCoordinates(cs, x_pos,
    9. y_pos, z_pos);
    10. // create a point on a cylinder with the following
    11. // radius and height
    12. radius = 5;
    13. height = 15;
    14. theta = 75.5;
    15. pCyl = Point.ByCylindricalCoordinates(cs, radius, theta,
    16. height);
    17. // create a point on a sphere with radius and two angles
    18. phi = 120.3;
    19. pSphere = Point.BySphericalCoordinates(cs, radius,
    20. theta, phi);

    下一个更多维的 Dynamo 基本体是一条线段,表示两个端点之间的无限多个点。可以通过构造函数 Line.ByStartPointEndPoint 明确指定两个边界点,或者通过 Line.ByStartPointDirectionLength 在该方向指定起点、方向和长度来创建直线。
    12.2 几何基本体 - 图4

    1. p1 = Point.ByCoordinates(-2, -5, -10);
    2. p2 = Point.ByCoordinates(6, 8, 10);
    3. // a line segment between two points
    4. l2pts = Line.ByStartPointEndPoint(p1, p2);
    5. // a line segment at p1 in direction 1, 1, 1 with
    6. // length 10
    7. lDir = Line.ByStartPointDirectionLength(p1,
    8. Vector.ByCoordinates(1, 1, 1), 10);

    Dynamo 有表示三维中大多数基本类型的几何基本体的对象:立方体,使用 Cuboid.ByLengths 创建;圆锥体,使用 Cone.ByPointsRadiusCone.ByPointsRadius 创建;圆柱体,使用 Cylinder.ByRadiusHeight 创建;球体,使用 Sphere.ByCenterPointRadius 创建。
    12.2 几何基本体 - 图5

    1. // create a cuboid with specified lengths
    2. cs = CoordinateSystem.Identity();
    3. cub = Cuboid.ByLengths(cs, 5, 15, 2);
    4. // create several cones
    5. p1 = Point.ByCoordinates(0, 0, 10);
    6. p2 = Point.ByCoordinates(0, 0, 20);
    7. p3 = Point.ByCoordinates(0, 0, 30);
    8. cone1 = Cone.ByPointsRadii(p1, p2, 10, 6);
    9. cone2 = Cone.ByPointsRadii(p2, p3, 6, 0);
    10. // make a cylinder
    11. cylCS = cs.Translate(10, 0, 0);
    12. cyl = Cylinder.ByRadiusHeight(cylCS, 3, 10);
    13. // make a sphere
    14. centerP = Point.ByCoordinates(-10, -10, 0);
    15. sph = Sphere.ByCenterPointRadius(centerP, 5);