Add framework to project

Drag the files FloorplannerViewer.framework and FloorplannerViewer.bundle into your applications folder.

Modify the application’s target Build Settings and add the option -ObjC to Other Linker Flags.

Use Viewer control

Load project

Using [loadProjectWithId:] and [loadProjectFromUrl:] you can load a new project using either a project id or an url to a fml project.

// import the headers to your source file
@import FloorplannerViewer;

// Load project using project id:
[viewerControl loadProjectWithId:33549795];

// Load project from a url:
NSURL* url = [NSURL URLWithString:@""];
[viewerControl loadProjectFromUrl:url];
// import the headers to your source file
import FloorplannerViewer

// Load project using project id:

// Load project from a url:
let url = NSURL(string: "")!

Change view mode

Using viewMode you can change the active viewmode for the viewer.

// Change view mode
if (viewerControl.viewMode == FPViewerViewMode3D) {
  viewerControl.viewMode = FPViewerViewMode2D;
} else {
  viewerControl.viewMode = FPViewerViewMode3D;
// Change view mode
if viewerControl.viewMode == .Mode3D {
  viewerControl.viewMode = .Mode2D
} else {
  viewerControl.viewMode = .Mode3D

Get designs in project

The following example lists the available designs in an UIActionSheet using [getFloors:], shows them and selects the new design using [loadDesign:].

[viewerControl getFloors:^(NSArray<FPFloor*>* floors, NSError* error) {
  dispatch_async(dispatch_get_main_queue(), ^{
    UIActionSheet* actionSheet = [[UIActionSheet alloc] init];
    designs = [[NSMutableArray alloc] init];

    for (FPFloor* floor in floors) {
      for (FPDesign* design in floor.designs {
        [designs addObject:design];

    actionSheet.delegate = self;
    [actionSheet showInView:self.view];

[viewerControl loadDesign:designs[designIndex]];
viewerControl.getFloors {floors, error in
  dispatch_async(dispatch_get_main_queue()) {
    let actionSheet = UIActionSheet()
    self.designs = [FPDesign]();

    for floor in floors {
      for design in floor.designs {

    actionSheet.delegate = self