Bitbybit Docs
    Preparing search index...

    Class Draw

    将任何对象绘制到场景中:内核形状、点、直线、折线、曲线、网格和标签都通过 drawAnyAsync 绘制,它会为对象选择合适的渲染器并返回绘制后的对象。options 方法为每种对象构建带默认值的绘制选项,createPBRMaterialcreateTexture 为面槽位创建材质,已绘制的对象可以通过传回来在原位重绘。

    Hierarchy (View Summary)

    Index

    Constructors

    • Returns Bit.Draw

    draw async

    • drawAnyAsync 一样将任意实体绘制到场景中,但不返回绘制的对象;适用于脚本的最后一步只需要结果显示出来的情况。

      Parameters

      • inputs: DrawAny

        要绘制的对象和可选的绘制选项

      Returns Promise<void>

      const box = await bitbybit.occt.shapes.solid.createBox({ width: 10, length: 10, height: 10, center: [0, 0, 0] });
      await bitbybit.draw.drawAnyAsyncNoReturn({ entity: box });
    • 将本库生成的任意实体绘制到场景中并返回绘制的对象:来自 OCCT、JSCAD 和 Manifold 的内核形状、点、直线、折线、曲线、网格、标签和节点。

      选项与实体相匹配,未给出时使用默认值;将上一次的结果传回更新槽可就地重绘。

      Type Parameters

      • E extends any

      Parameters

      • inputs: DrawAny<E>

        要绘制的对象、可选的绘制选项以及更新时的上一次结果

      Returns Promise<Drawn<E, Mesh>>

      绘制该对象所产生的结果:几何体对应场景对象,标签对应一个或多个标签,节点对应坐标轴三元组;空列表返回 undefined

      const box = await bitbybit.occt.shapes.solid.createBox({ width: 10, length: 10, height: 10, center: [0, 0, 0] });
      const options = bitbybit.draw.optionsOcctShapeSimple({ precision: 0.01, drawFaces: true, faceColour: "#ff0000", drawEdges: true, edgeColour: "#ffffff", edgeWidth: 2, drawTwoSided: true, backFaceColour: "#0000ff", backFaceOpacity: 1 });
      const drawn = await bitbybit.draw.drawAnyAsync({ entity: box, options });

    draw sync

    • drawAny 一样绘制不需要内核处理的实体,但不返回绘制的对象;点、直线、折线和标签符合条件,内核形状不符合。

      Parameters

      • inputs: DrawAny

        要绘制的对象和可选的绘制选项

      Returns void

      bitbybit.draw.drawAnyNoReturn({ entity: [[0, 0, 0], [5, 5, 5], [10, 0, 0]] });
      
    • 立即将不需要内核处理的实体绘制到场景中并返回绘制的对象:点、直线、折线、标签和节点。

      来自 OCCT、JSCAD 和 Manifold 的内核形状必须通过 drawAnyAsync,它会等待内核将其网格化。

      Type Parameters

      • E extends any

      Parameters

      • inputs: DrawAny<E>

        要绘制的对象、可选的绘制选项以及更新时的上一次结果

      Returns Drawn<E, Mesh>

      绘制该对象所产生的结果:几何体对应场景对象,标签对应一个或多个标签,节点对应坐标轴三元组;空列表返回 undefined

      const options = bitbybit.draw.optionsSimple({ colours: "#00ff00", size: 0.5, opacity: 1, updatable: false, hidden: false, drawTwoSided: true, backFaceColour: "#0000ff", backFaceOpacity: 1, colorMapStrategy: Bit.Inputs.Base.colorMapStrategyEnum.lastColorRemainder, arrowSize: 0, arrowAngle: 15 });
      const drawn = bitbybit.draw.drawAny({ entity: [[0, 0, 0], [5, 5, 5], [10, 0, 0]], options });

    grid

    • drawGridMesh 一样在地平面上绘制网格,但不返回该网格。

      Parameters

      Returns void

      bitbybit.draw.drawGridMeshNoReturn({ width: 400, height: 400, subdivisions: 10, majorUnitFrequency: 10, minorUnitVisibility: 0.45, gridRatio: 0.5, opacity: 0.5, backFaceCulling: false, mainColor: "#ffffff", secondaryColor: "#ffffff" });
      
    • 在地平面(经过原点的 XZ 平面)上绘制网格,以提供比例和方向感;默认每第十条线画得更粗。

      Parameters

      Returns Mesh

      网格地面网格

      const grid = bitbybit.draw.drawGridMesh({ width: 400, height: 400, subdivisions: 10, majorUnitFrequency: 10, minorUnitVisibility: 0.45, gridRatio: 0.5, opacity: 0.5, backFaceCulling: false, mainColor: "#ffffff", secondaryColor: "#ffffff" });
      

    material

    • 从 URL 创建图像纹理,用于 createPBRMaterial 的纹理槽,其平铺、偏移、旋转和过滤在每个渲染器中含义相同。

      Parameters

      • inputs: GenericTextureDto

        图像 URL 以及平铺、偏移、旋转、翻转和采样选项

      Returns Texture

      引擎的纹理

      const texture = bitbybit.draw.createTexture({ url: "https://example.com/wood.jpg", name: "wood", uScale: 2, vScale: 2, uOffset: 0, vOffset: 0, wAng: 0, invertY: false, invertZ: false, samplingMode: Bit.Inputs.Draw.samplingModeEnum.trilinear });
      
    • 根据在每个渲染器中含义相同的设置创建基于物理的材质:基础颜色、金属度和粗糙度、不透明度、自发光、纹理槽以及透明和面向选项;将其放入绘制选项的 faceMaterial

      Parameters

      • inputs: GenericPBRMaterialDto

        名称、颜色、金属度和粗糙度值、不透明度、纹理和渲染选项

      Returns PBRMetallicRoughnessMaterial

      引擎的材质

      const material = bitbybit.draw.createPBRMaterial({ name: "steel", baseColor: "#c0c0c0", metallic: 1, roughness: 0.4, alpha: 1, emissiveColor: "#000000", emissiveIntensity: 1, zOffset: 0, zOffsetUnits: 0, alphaMode: Bit.Inputs.Draw.alphaModeEnum.opaque, alphaCutoff: 0.5, doubleSided: false, wireframe: false, unlit: false });
      const options = bitbybit.draw.optionsOcctShapeMaterial({ precision: 0.01, faceMaterial: material, drawEdges: true, edgeColour: "#ffffff", edgeWidth: 2 });

    options

    • 为点、直线、折线、曲线、曲面和 JSCAD 网格构建绘制选项:颜色、大小、不透明度、双面渲染和直线上的箭头,省略的部分使用默认值。

      Parameters

      Returns DrawBasicGeometryOptions

      绘制选项

      const options = bitbybit.draw.optionsSimple({ colours: "#ff0000", size: 2, opacity: 1, updatable: false, hidden: false, drawTwoSided: true, backFaceColour: "#0000ff", backFaceOpacity: 1, colorMapStrategy: Bit.Inputs.Base.colorMapStrategyEnum.lastColorRemainder, arrowSize: 0, arrowAngle: 15 });
      
    • 为 OCCT 形状构建完整的绘制选项:网格化精度、面、边和顶点的颜色和大小、索引标签、边上的箭头、双面渲染和三角化缓存,省略的部分使用默认值。

      Parameters

      Returns DrawOcctShapeOptions

      绘制选项

      const options = bitbybit.draw.optionsOcctShape({ faceOpacity: 1, edgeOpacity: 1, edgeColour: "#ffffff", faceColour: "#ff0000", edgeWidth: 2, drawEdges: true, drawFaces: true, drawVertices: false, vertexColour: "#ff00ff", vertexSize: 0.03, precision: 0.01, drawEdgeIndexes: false, edgeIndexHeight: 0.06, edgeIndexColour: "#ff00ff", drawFaceIndexes: false, faceIndexHeight: 0.06, faceIndexColour: "#0000ff", drawTwoSided: true, backFaceColour: "#0000ff", backFaceOpacity: 1, edgeArrowSize: 0, edgeArrowAngle: 15, keepMeshData: false, allowQualityDecrease: true, forceFaceDeflection: false });
      
    • 为 OCCT 形状构建最常用的绘制选项,即精度、面和边的颜色以及双面渲染,省略的部分使用默认值。

      Parameters

      Returns DrawOcctShapeSimpleOptions

      绘制选项

      const options = bitbybit.draw.optionsOcctShapeSimple({ precision: 0.01, drawFaces: true, faceColour: "#ff0000", drawEdges: true, edgeColour: "#ffffff", edgeWidth: 2, drawTwoSided: true, backFaceColour: "#0000ff", backFaceOpacity: 1 });
      
    • 为面使用完整引擎材质(如 createPBRMaterial 所创建)的 OCCT 形状构建绘制选项,外加精度和边的样式。

      Parameters

      Returns DrawOcctShapeMaterialOptions

      绘制选项

      const material = bitbybit.draw.createPBRMaterial({ name: "steel", baseColor: "#c0c0c0", metallic: 1, roughness: 0.4, alpha: 1, emissiveColor: "#000000", emissiveIntensity: 1, zOffset: 0, zOffsetUnits: 0, alphaMode: Bit.Inputs.Draw.alphaModeEnum.opaque, alphaCutoff: 0.5, doubleSided: false, wireframe: false, unlit: false });
      const options = bitbybit.draw.optionsOcctShapeMaterial({ precision: 0.01, faceMaterial: material, drawEdges: true, edgeColour: "#ffffff", edgeWidth: 2 });
    • 为 Manifold 实体和横截面构建绘制选项:面的颜色或完整引擎材质、横截面的线条样式、法线和双面渲染。

      Parameters

      Returns DrawManifoldOrCrossSectionOptions

      绘制选项

      const options = bitbybit.draw.optionsManifoldShapeMaterial({ faceOpacity: 1, faceColour: "#ff0000", faceMaterial: material, crossSectionColour: "#ff00ff", crossSectionWidth: 2, crossSectionOpacity: 1, computeNormals: false, drawTwoSided: true, backFaceColour: "#0000ff", backFaceOpacity: 1 });
      const drawn = await bitbybit.draw.drawAnyAsync({ entity: solid, options });
    • 为变换节点构建绘制选项,节点被绘制为给定长度的三条彩色坐标轴线。

      Parameters

      Returns DrawNodeOptions

      绘制选项

      const options = bitbybit.draw.optionsBabylonNode({ colorX: "#ff0000", colorY: "#00ff00", colorZ: "#0000ff", size: 2 });
      const drawn = await bitbybit.draw.drawAnyAsync({ entity: node, options });