> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ploterr.com/llms.txt
> Use this file to discover all available pages before exploring further.

# RectanglePrimitive

> A rectangle with a centre, a width and a breadth.

## Import

```typescript theme={null}
import { RectanglePrimitive } from '@opengeometry/floorkit';
```

**Inheritance:** `extends Polygon implements IPrimitive`

## Constructor

```typescript theme={null}
constructor(rectangleConfig?: RectangleOptions);
```

<ParamField path="rectangleConfig.ogid" type="string" />

<ParamField path="rectangleConfig.isParametric" type="boolean" required />

<ParamField path="rectangleConfig.center" type="number[]" required />

<ParamField path="rectangleConfig.width" type="number" />

<ParamField path="rectangleConfig.breadth" type="number" />

<ParamField path="rectangleConfig.color" type="number" />

<ParamField path="rectangleConfig.profile" type="Profile" />

<ParamField path="rectangleConfig.placement" type="Placement" required />

## Properties

<ResponseField name="ogType" type="string" />

<ResponseField name="subNodes" type="Map<string, THREE.Object3D>" />

<ResponseField name="selected" type="boolean" />

<ResponseField name="edit" type="boolean" />

<ResponseField name="locked" type="boolean" />

<ResponseField name="propertySet" type="RectangleOptions" />

<ResponseField name="center" type="Array<number>" />

<ResponseField name="width" type="number | undefined" />

<ResponseField name="breadth" type="number | undefined" />

<ResponseField name="profile" type="Profile" />

<ResponseField name="enableEdit" type="boolean" />

<ResponseField name="rectangleColor" type="number | undefined" />

<ResponseField name="outline" type="boolean" />

## Methods

### setOPConfig

```typescript theme={null}
setOPConfig(config: RectangleOptions): void;
```

### getOPConfig

```typescript theme={null}
getOPConfig(): RectangleOptions;
```

### setOPGeometry

```typescript theme={null}
setOPGeometry(): void;
```

### setOPMaterial

```typescript theme={null}
setOPMaterial(): void;
```

### dispose

```typescript theme={null}
dispose(): void;
```

Dispose render resources and the owned polygon kernel handle once.

## Types

### RectangleOptions

```typescript theme={null}
interface RectangleOptions {
  ogid?: string;
  isParametric: boolean;
  center: Array<number>;
  width?: number;
  breadth?: number;
  color?: number;
  profile?: Profile;
  placement: Placement;
}
```

### Profile

The package does not export this type by name.

```typescript theme={null}
interface Profile {
  outerRing: Array<Array<number>>;
  holes?: Array<Array<Array<number>>>;
}
```

## Related

* [`IPrimitive`](/floorkit/api/primitives/line-primitive#iprimitive)
* [`Placement`](/floorkit/api/shapes/cuboid-shape#placement)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.