SmApiPolygons.h#

Fully qualified name: SM_API/inc/SmApiPolygons.h

File members: SM_API/inc/SmApiPolygons.h

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

/**********************************************************************
FILE NAME: SmApiPolygons.h

PURPOSE:
    Contains high level "C" type functions that operate on SmPolyBreps.

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

#ifndef __SmApiPolygons_H__
#define __SmApiPolygons_H__

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

#include <SmPolyMerge.h>

class SmContext;
class SmBrep;
class SmPolyBrep;

SMAPI_EXPORT SmApiStatus SmApiPolyBoolean(
    SmPolyBrep*  pPolyBrep1,
    SmPolyBrep*  pPolyBrep2,
    SmPolyBooleanOperationType lOperation,
    SmPolyBrep*& rpResult
);

SMAPI_EXPORT SmApiStatus SmApiPolyBooleanUnion(
    SmPolyBrep*  pPolyBrep1,
    SmPolyBrep*  pPolyBrep2,
    SmPolyBrep*& rpResult
);

SMAPI_EXPORT SmApiStatus SmApiPolyBooleanDifference(
    SmPolyBrep*  pPolyBrep1,
    SmPolyBrep*  pPolyBrep2,
    SmPolyBrep*& rpResult
);

SMAPI_EXPORT SmApiStatus SmApiPolyBooleanIntersection(
    SmPolyBrep*  pPolyBrep1,
    SmPolyBrep*  pPolyBrep2,
    SmPolyBrep*& rpResult
);

SMAPI_EXPORT SmApiStatus SmApiPolyBooleanMerge(
    SmPolyBrep*  pPolyBrep1,
    SmPolyBrep*  pPolyBrep2,
    SmPolyBrep*& rpResult
);

SMAPI_EXPORT SmApiStatus SmApiPolyBrepIsManifoldSolid(
    const SmPolyBrep* pPolyBrep,
    SmBoolean & rbIsManifoldSolid
);

SMAPI_EXPORT SmApiStatus SmApiPolyBrepComputeVolume(
    const SmPolyBrep*  pPolyBrep,
    double     & rdVolume
);

SMAPI_EXPORT SmApiStatus SmApiPolyBrepComputeMassProperties(
    const SmPolyBrep* pPolyBrep,
    double       dDensity,
    const SmPoint3d & crOrigin,
    double &     rdArea,
    double &     rdVolume,
    double &     rdMass,
    SmPoint3d &  rCentroid,
    SmVector3d & rMomentsOfInertia,
    SmVector3d & rProductsOfInertia
);

SMAPI_EXPORT SmApiStatus SmApiPolyBrepCopy(
    const SmPolyBrep*  pPolyBrep,
    SmPolyBrep*& rpResult
);

#endif