
# IPCB3D_ShapeTool interface

*No description yet.*

```csharp
public interface IPCB3D_ShapeTool
```

**Namespace:** PCB · **Assembly:** Altium.SDK.Interfaces

## Methods

| Method | Returns | Description |
| --- | --- | --- |
| [AddShape](#addshape) | `int` |  |
| [BoolShape_Common](#boolshape_common) | `int` |  |
| [BoolShape_Cut](#boolshape_cut) | `int` |  |
| [BoolShape_Fuse](#boolshape_fuse) | `int` |  |
| [CreateCompound](#createcompound) | `int` |  |
| [CreateHalfSpace](#createhalfspace) | `int` |  |
| [CreateShapeExplorer](#createshapeexplorer) | `int` |  |
| [GetBoundBox](#getboundbox) | `int` |  |
| [LoadShapeFromFile](#loadshapefromfile) | `int` |  |
| [MakeCopy](#makecopy) | `int` |  |
| [MinDistance](#mindistance) | `int` |  |
| [ProjectShape](#projectshape) | `int` |  |
| [SaveShapeToFile](#saveshapetofile) | `int` |  |
| [ToEdge](#toedge) | `int` |  |
| [ToFace](#toface) | `int` |  |
| [ToVertex](#tovertex) | `int` |  |
| [TransformShape](#transformshape) | `int` |  |

### AddShape

*No description yet.*

```csharp
int AddShape(IPCB3D_Shape argmainShape, IPCB3D_Shape argsubShape);
int AddShape(object argmainShape, object argsubShape);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argmainShape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | value |
| `argsubShape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | value |

**Returns:** `int`

The first overload is an extension method of `IPCB3D_ShapeToolHelper` (`using PCB;`) with typed parameters; the second is declared by the interface.

### BoolShape_Common

*No description yet.*

```csharp
int BoolShape_Common(IPCB3D_Shape argfirstShape, IPCB3D_Shape argsecondShape, out IPCB3D_Shape argpResultShape);
int BoolShape_Common(object argfirstShape, object argsecondShape, out IPCB3D_Shape argpResultShape);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argfirstShape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | value |
| `argsecondShape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | value |
| `argpResultShape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | out |

**Returns:** `int`

The first overload is an extension method of `IPCB3D_ShapeToolHelper` (`using PCB;`) with typed parameters; the second is declared by the interface.

### BoolShape_Cut

*No description yet.*

```csharp
int BoolShape_Cut(IPCB3D_Shape argfirstShape, IPCB3D_Shape argsecondShape, out IPCB3D_Shape argpResultShape);
int BoolShape_Cut(object argfirstShape, object argsecondShape, out IPCB3D_Shape argpResultShape);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argfirstShape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | value |
| `argsecondShape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | value |
| `argpResultShape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | out |

**Returns:** `int`

The first overload is an extension method of `IPCB3D_ShapeToolHelper` (`using PCB;`) with typed parameters; the second is declared by the interface.

### BoolShape_Fuse

*No description yet.*

```csharp
int BoolShape_Fuse(IPCB3D_Shape argfirstShape, IPCB3D_Shape argsecondShape, out IPCB3D_Shape argpResultShape);
int BoolShape_Fuse(object argfirstShape, object argsecondShape, out IPCB3D_Shape argpResultShape);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argfirstShape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | value |
| `argsecondShape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | value |
| `argpResultShape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | out |

**Returns:** `int`

The first overload is an extension method of `IPCB3D_ShapeToolHelper` (`using PCB;`) with typed parameters; the second is declared by the interface.

### CreateCompound

*No description yet.*

```csharp
int CreateCompound(out IPCB3D_Shape argpResultShape);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argpResultShape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | out |

**Returns:** `int`

### CreateHalfSpace

*No description yet.*

```csharp
int CreateHalfSpace(GeomPlane argplane, out IPCB3D_Shape argpResultShape);
int CreateHalfSpace(IGeomPlane argplane, out IPCB3D_Shape argpResultShape);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argplane` | [GeomPlane](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/GeomPlane.md) | value |
| `argpResultShape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | out |

**Returns:** `int`

The first overload is an extension method of `IPCB3D_ShapeToolHelper` (`using PCB;`) with typed parameters; the second is declared by the interface.

### CreateShapeExplorer

*No description yet.*

```csharp
int CreateShapeExplorer(out IPCB3D_ShapeExplorer argpShapeExplorer);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argpShapeExplorer` | [IPCB3D_ShapeExplorer](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_ShapeExplorer.md) | out |

**Returns:** `int`

### GetBoundBox

*No description yet.*

```csharp
int GetBoundBox(IPCB3D_Shape argshape, out bool argpIsVoid, out double argxMin, out double argyMin, out double argzMin, out double argxMax, out double argyMax, out double argzMax);
int GetBoundBox(object argshape, out bool argpIsVoid, out double argxMin, out double argyMin, out double argzMin, out double argxMax, out double argyMax, out double argzMax);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argshape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | value |
| `argpIsVoid` | `bool` | out |
| `argxMin` | `double` | out |
| `argyMin` | `double` | out |
| `argzMin` | `double` | out |
| `argxMax` | `double` | out |
| `argyMax` | `double` | out |
| `argzMax` | `double` | out |

**Returns:** `int`

The first overload is an extension method of `IPCB3D_ShapeToolHelper` (`using PCB;`) with typed parameters; the second is declared by the interface.

### LoadShapeFromFile

*No description yet.*

```csharp
int LoadShapeFromFile(string argshapeFile, out IPCB3D_Shape argpResultShape);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argshapeFile` | `string` | value |
| `argpResultShape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | out |

**Returns:** `int`

### MakeCopy

*No description yet.*

```csharp
int MakeCopy(IPCB3D_Shape argsourceShape, out IPCB3D_Shape argpResultShape);
int MakeCopy(object argsourceShape, out IPCB3D_Shape argpResultShape);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argsourceShape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | value |
| `argpResultShape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | out |

**Returns:** `int`

The first overload is an extension method of `IPCB3D_ShapeToolHelper` (`using PCB;`) with typed parameters; the second is declared by the interface.

### MinDistance

*No description yet.*

```csharp
int MinDistance(IPCB3D_Shape argfirstShape, IPCB3D_Shape argsecondShape, out GeomPoint3D argpntOnFirstShape, out GeomPoint3D argpntOnSecondShape, out double argminDist);
int MinDistance(object argfirstShape, object argsecondShape, out IGeomPoint3D argpntOnFirstShape, out IGeomPoint3D argpntOnSecondShape, out double argminDist);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argfirstShape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | value |
| `argsecondShape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | value |
| `argpntOnFirstShape` | [GeomPoint3D](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/GeomPoint3D.md) | out |
| `argpntOnSecondShape` | [GeomPoint3D](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/GeomPoint3D.md) | out |
| `argminDist` | `double` | out |

**Returns:** `int`

The first overload is an extension method of `IPCB3D_ShapeToolHelper` (`using PCB;`) with typed parameters; the second is declared by the interface.

### ProjectShape

*No description yet.*

```csharp
int ProjectShape(IPCB3D_Shape argshape, bool argpers, double argfocus, double argdx, double argdy, double argdz, double argxAt, double argyAt, double argzAt, double argxUp, double argyUp, double argzUP, bool argusePoly, out IPCB3D_Shape argpResultShape);
int ProjectShape(object argshape, bool argpers, double argfocus, double argdx, double argdy, double argdz, double argxAt, double argyAt, double argzAt, double argxUp, double argyUp, double argzUP, bool argusePoly, out IPCB3D_Shape argpResultShape);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argshape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | value |
| `argpers` | `bool` | value |
| `argfocus` | `double` | value |
| `argdx` | `double` | value |
| `argdy` | `double` | value |
| `argdz` | `double` | value |
| `argxAt` | `double` | value |
| `argyAt` | `double` | value |
| `argzAt` | `double` | value |
| `argxUp` | `double` | value |
| `argyUp` | `double` | value |
| `argzUP` | `double` | value |
| `argusePoly` | `bool` | value |
| `argpResultShape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | out |

**Returns:** `int`

The first overload is an extension method of `IPCB3D_ShapeToolHelper` (`using PCB;`) with typed parameters; the second is declared by the interface.

### SaveShapeToFile

*No description yet.*

```csharp
int SaveShapeToFile(IPCB3D_Shape argshape, string argshapeFile);
int SaveShapeToFile(object argshape, string argshapeFile);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argshape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | value |
| `argshapeFile` | `string` | value |

**Returns:** `int`

The first overload is an extension method of `IPCB3D_ShapeToolHelper` (`using PCB;`) with typed parameters; the second is declared by the interface.

### ToEdge

*No description yet.*

```csharp
int ToEdge(IPCB3D_Shape argshape, out IPCB3D_Edge argpResult);
int ToEdge(object argshape, out IPCB3D_Edge argpResult);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argshape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | value |
| `argpResult` | [IPCB3D_Edge](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Edge.md) | out |

**Returns:** `int`

The first overload is an extension method of `IPCB3D_ShapeToolHelper` (`using PCB;`) with typed parameters; the second is declared by the interface.

### ToFace

*No description yet.*

```csharp
int ToFace(IPCB3D_Shape argshape, out IPCB3D_Face argpResult);
int ToFace(object argshape, out IPCB3D_Face argpResult);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argshape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | value |
| `argpResult` | [IPCB3D_Face](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Face.md) | out |

**Returns:** `int`

The first overload is an extension method of `IPCB3D_ShapeToolHelper` (`using PCB;`) with typed parameters; the second is declared by the interface.

### ToVertex

*No description yet.*

```csharp
int ToVertex(IPCB3D_Shape argshape, out IPCB3D_Vertex argpResult);
int ToVertex(object argshape, out IPCB3D_Vertex argpResult);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argshape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | value |
| `argpResult` | [IPCB3D_Vertex](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Vertex.md) | out |

**Returns:** `int`

The first overload is an extension method of `IPCB3D_ShapeToolHelper` (`using PCB;`) with typed parameters; the second is declared by the interface.

### TransformShape

*No description yet.*

```csharp
int TransformShape(IPCB3D_Shape argshape, IPCB3D_Transformation argtrsf, out IPCB3D_Shape argpResultShape);
int TransformShape(object argshape, object argtrsf, out IPCB3D_Shape argpResultShape);
```

| Parameter | Type | Passing |
| --- | --- | --- |
| `argshape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | value |
| `argtrsf` | [IPCB3D_Transformation](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Transformation.md) | value |
| `argpResultShape` | [IPCB3D_Shape](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IPCB3D_Shape.md) | out |

**Returns:** `int`

The first overload is an extension method of `IPCB3D_ShapeToolHelper` (`using PCB;`) with typed parameters; the second is declared by the interface.

## Returned by

[IOccWrapper.CreateShapeTool](https://altiumdeveloper.github.io/ad-sdk-docs/reference/pcb/IOccWrapper.md#createshapetool)
