SmApiPrimitives.h#

Fully qualified name: SM_API/inc/SmApiPrimitives.h

File members: SM_API/inc/SmApiPrimitives.h

// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

/**********************************************************************
FILE NAME: SmPrimitives.h

PURPOSE:
    Contains popular, high level "C" type functions that create
    primitive objects (cube, sphere, etc).

GENERAL NOTES:
    High level functions may assume some input parameters
    for ease of use. For maximum flexibility, related functions
    can be found in SmPrimitiveCreation
**********************************************************************/

#ifndef __SmApiPrimitives_H__
#define __SmApiPrimitives_H__

#ifndef __SmApiTypes_H__
#include <SmApiTypes.h>
#endif

#include <SmTArray.h>

class SmContext;
class SmBrep;
class SmEdge;
class SmEdgeuse;
class SmFace;
class SmVector3d;
class SmBSplineCurve;

SMAPI_EXPORT SmApiStatus SmApiCreatePlane
(
    const SmVector3d& crOrigin,
    double dX,
    double dY,
    SmBrep*& rpResult
);

SMAPI_EXPORT SmApiStatus SmApiCreatePlane
(
    const SmVector3d& crOrigin,
    double dLength,
    double dWidth,
    SmPlane*& rpResult
);

SMAPI_EXPORT SmApiStatus SmApiCreatePlanarCircle
(
    const SmVector3d& crOrigin,
    double dRadius,
    SmBrep*& rpResult
);

SMAPI_EXPORT SmApiStatus SmApiCreateBox
(
    const SmVector3d& crOrigin,
    double dLength,
    double dWidth,
    double dHeight,
    SmBrep*& pResult
);

SMAPI_EXPORT SmApiStatus SmApiCreateSphere
(
    const SmVector3d& crOrigin,
    double dRadius,
    SmBrep*& pResult
);

SMAPI_EXPORT SmApiStatus SmApiCreateCone
(
    const SmVector3d& crOrigin,
    double dRadiusBase,
    double dRadiusTop,
    double dHeight,
    SmBrep*& rpResult
);

SMAPI_EXPORT SmApiStatus SmApiCreateCone
(
    const SmVector3d& crOrigin,
    double dRadiusBase,
    double dRadiusTop,
    double dHeight,
    SmSurface*& rpResult
);

SMAPI_EXPORT SmApiStatus SmApiCreateCylinder
(
    const SmVector3d& crOrigin,
    double dRadius,
    double dHeight,
    SmBrep*& rpResult
);

SMAPI_EXPORT SmApiStatus SmApiCreateCylinder
(
    const SmVector3d& crOrigin,
    double dRadius,
    double dHeight,
    SmSurface*& rpResult
);

SMAPI_EXPORT SmApiStatus SmApiCreateTorus
(
    const SmVector3d& crOrigin,
    double dRadiusMajor,
    double dRadiusMinor,
    SmBrep*& rpResult
);

SMAPI_EXPORT SmApiStatus SmApiCreateTorus
(
    const SmVector3d& crOrigin,
    double dRadiusMajor,
    double dRadiusMinor,
    SmSurface*& rpResult
);

SMAPI_EXPORT SmApiStatus SmApiCreatePyramid
(
    const SmVector3d& crOrigin,
    double dLength,
    double dHeight,
    SmBrep*& rpResult
);

SMAPI_EXPORT SmApiStatus SmApiCreateCylindricalBox
(
    const SmVector3d& crOrigin,
    double dLength,
    double dInsideRadius,
    double dOutsideRadius,
    double dStartAngleDeg,
    double dEndAngleDeg,
    SmBrep*& rpResult
);

SMAPI_EXPORT SmApiStatus SmApiCreatePartialSphere
(
    const SmVector3d& crOrigin,
    double dRadius,
    double dStartAngleDeg,
    double dEndAngleDeg,
    SmBrep*& rpResult
);

SMAPI_EXPORT SmApiStatus SmApiCreateSphereNoPole
(
    const SmVector3d& crCenter,
    double dRadius,
    SmBrep*& rpResult
);

SMAPI_EXPORT SmApiStatus SmApiCreatePartialCone
(
    const SmVector3d& crOrigin,
    double dRadiusBase,
    double dRadiusTop,
    double dHeight,
    double dStartAngleDeg,
    double dEndAngleDeg,
    SmBrep*& rpResult
);

SMAPI_EXPORT SmApiStatus SmApiCreateConeEllipticEnds
(
    double dFrontRadius,
    double dRearRadius,
    double dHeight,
    double dFrontYTiltDeg,
    double dRearYTiltDeg,
    double dFrontXTiltDeg,
    double dRearXTiltDeg,
    SmBoolean bEndCaps,
    SmBrep*& rpResult
);

SMAPI_EXPORT SmApiStatus SmApiCreatePartialCylinder
(
    const SmVector3d& crOrigin,
    double dRadius,
    double dHeight,
    double dStartAngleDeg,
    double dEndAngleDeg,
    SmBrep*& rpResult
);

SMAPI_EXPORT SmApiStatus SmApiCreatePartialTorus
(
    const SmVector3d& crOrigin,
    double dRadiusMajor,
    double dRadiusMinor,
    double dStartAngleDeg,
    double dEndAngleDeg,
    SmBrep*& rpResult
);

SMAPI_EXPORT SmApiStatus SmApiCreateOffsetProfile
(
    const SmTArray<SmCurve*>& rPlanarCurves,
    double dOffsetDistance,
    ULONG lOffsetType,
    SmBoolean bRoundCorners,
    SmBoolean bShellResult,
    SmBrep*& rpResult
);

SMAPI_EXPORT SmApiStatus SmApiCreateBlendPrimitive
(
    SmBrep* pBrep,
    SmEdge* pEdge1,
    SmFace* pFace1,
    SmEdge* pEdge2,
    SmFace* pFace2,
    SmBoolean bSameDirCurves,
    SmFace*& rpBlendFace
);

SMAPI_EXPORT SmApiStatus SmApiCreateSwungPrimitive
(
    SmTArray<SmCurve*>& rXYCurves,
    SmTArray<SmCurve*>& rXZCurves,
    double dScale,
    SmBrep*& rpResult
);

SMAPI_EXPORT SmApiStatus SmApiCreateSkinPrimitive
(
    const SmTArray<ULONG>& rCurvesInEachProfile,
    const SmTArray<const SmCurve*>& r3DCurves,
    ULONG lDegree,
    SmBoolean bCapEnds,
    SmBrep*& rpResult,
    SmTArray<SmFace*>* pOptStartFaces,
    SmTArray<SmFace*>* pOptSideFaces,
    SmTArray<SmFace*>* pOptEndFaces
);

SMAPI_EXPORT SmApiStatus SmApiCreateSkinFromFaces
(
    SmTArray<SmFace*>& rFaces,
    ULONG lDegree,
    SmTArray<SmFace*>& rNewFaces,
    SmBrep*& rpResult
);

#endif