three.MF.V3.Three

   1from MF.V3 import Task
   2from MF.V3.Settings.Advanced import Advanced as MF_V3_Settings_Advanced_Advanced
   3from MF.V3.Settings.Align import Align as MF_V3_Settings_Align_Align
   4from MF.V3.Settings.AutoFocus import AutoFocus as MF_V3_Settings_AutoFocus_AutoFocus
   5from MF.V3.Settings.BoundingBox import BoundingBox as MF_V3_Settings_BoundingBox_BoundingBox
   6from MF.V3.Settings.Camera import Camera as MF_V3_Settings_Camera_Camera
   7from MF.V3.Settings.Capture import Capture as MF_V3_Settings_Capture_Capture
   8from MF.V3.Settings.CaptureImage import CaptureImage as MF_V3_Settings_CaptureImage_CaptureImage
   9from MF.V3.Settings.CopyGroups import CopyGroups as MF_V3_Settings_CopyGroups_CopyGroups
  10from MF.V3.Settings.Export import Export as MF_V3_Settings_Export_Export
  11from MF.V3.Settings.Group import Group as MF_V3_Settings_Group_Group
  12from MF.V3.Settings.HeatMap import HeatMap as MF_V3_Settings_HeatMap_HeatMap
  13from MF.V3.Settings.I18n import I18n as MF_V3_Settings_I18n_I18n
  14from MF.V3.Settings.Import import Import as MF_V3_Settings_Import_Import
  15from MF.V3.Settings.Merge import Merge as MF_V3_Settings_Merge_Merge
  16from MF.V3.Settings.NewGroup import NewGroup as MF_V3_Settings_NewGroup_NewGroup
  17from MF.V3.Settings.Project import Project as MF_V3_Settings_Project_Project
  18from MF.V3.Settings.Projector import Projector as MF_V3_Settings_Projector_Projector
  19from MF.V3.Settings.Scan import Scan as MF_V3_Settings_Scan_Scan
  20from MF.V3.Settings.ScanData import ScanData as MF_V3_Settings_ScanData_ScanData
  21from MF.V3.Settings.ScanSelection import ScanSelection as MF_V3_Settings_ScanSelection_ScanSelection
  22from MF.V3.Settings.Scanner import Scanner as MF_V3_Settings_Scanner_Scanner
  23from MF.V3.Settings.Smooth import Smooth as MF_V3_Settings_Smooth_Smooth
  24from MF.V3.Settings.Software import Software as MF_V3_Settings_Software_Software
  25from MF.V3.Settings.Style import Style as MF_V3_Settings_Style_Style
  26from MF.V3.Settings.Turntable import Turntable as MF_V3_Settings_Turntable_Turntable
  27from MF.V3.Settings.Tutorials import Tutorials as MF_V3_Settings_Tutorials_Tutorials
  28from MF.V3.Settings.Viewer import Viewer as MF_V3_Settings_Viewer_Viewer
  29from MF.V3.Settings.Wifi import Wifi as MF_V3_Settings_Wifi_Wifi
  30from MF.V3.Tasks.AddMergeToProject import AddMergeToProject as MF_V3_Tasks_AddMergeToProject
  31from MF.V3.Tasks.Align import Align as MF_V3_Tasks_Align
  32from MF.V3.Tasks.AutoFocus import AutoFocus as MF_V3_Tasks_AutoFocus
  33from MF.V3.Tasks.BoundingBox import BoundingBox as MF_V3_Tasks_BoundingBox
  34from MF.V3.Tasks.CalibrateCameras import CalibrateCameras as MF_V3_Tasks_CalibrateCameras
  35from MF.V3.Tasks.CalibrateTurntable import CalibrateTurntable as MF_V3_Tasks_CalibrateTurntable
  36from MF.V3.Tasks.CalibrationCaptureTargets import CalibrationCaptureTargets as MF_V3_Tasks_CalibrationCaptureTargets
  37from MF.V3.Tasks.CameraCalibration import CameraCalibration as MF_V3_Tasks_CameraCalibration
  38from MF.V3.Tasks.CaptureImage import CaptureImage as MF_V3_Tasks_CaptureImage
  39from MF.V3.Tasks.ClearSettings import ClearSettings as MF_V3_Tasks_ClearSettings
  40from MF.V3.Tasks.CloseProject import CloseProject as MF_V3_Tasks_CloseProject
  41from MF.V3.Tasks.ConnectWifi import ConnectWifi as MF_V3_Tasks_ConnectWifi
  42from MF.V3.Tasks.CopyGroups import CopyGroups as MF_V3_Tasks_CopyGroups
  43from MF.V3.Tasks.DepthMap import DepthMap as MF_V3_Tasks_DepthMap
  44from MF.V3.Tasks.DetectCalibrationCard import DetectCalibrationCard as MF_V3_Tasks_DetectCalibrationCard
  45from MF.V3.Tasks.DownloadProject import DownloadProject as MF_V3_Tasks_DownloadProject
  46from MF.V3.Tasks.Export import Export as MF_V3_Tasks_Export
  47from MF.V3.Tasks.ExportFactoryCalibrationLogs import ExportFactoryCalibrationLogs as MF_V3_Tasks_ExportFactoryCalibrationLogs
  48from MF.V3.Tasks.ExportHeatMap import ExportHeatMap as MF_V3_Tasks_ExportHeatMap
  49from MF.V3.Tasks.ExportLogs import ExportLogs as MF_V3_Tasks_ExportLogs
  50from MF.V3.Tasks.ExportMerge import ExportMerge as MF_V3_Tasks_ExportMerge
  51from MF.V3.Tasks.FactoryReset import FactoryReset as MF_V3_Tasks_FactoryReset
  52from MF.V3.Tasks.FlattenGroup import FlattenGroup as MF_V3_Tasks_FlattenGroup
  53from MF.V3.Tasks.ForgetWifi import ForgetWifi as MF_V3_Tasks_ForgetWifi
  54from MF.V3.Tasks.HasCameras import HasCameras as MF_V3_Tasks_HasCameras
  55from MF.V3.Tasks.HasProjector import HasProjector as MF_V3_Tasks_HasProjector
  56from MF.V3.Tasks.HasTurntable import HasTurntable as MF_V3_Tasks_HasTurntable
  57from MF.V3.Tasks.HeatMap import HeatMap as MF_V3_Tasks_HeatMap
  58from MF.V3.Tasks.Import import Import as MF_V3_Tasks_Import
  59from MF.V3.Tasks.ListExportFormats import ListExportFormats as MF_V3_Tasks_ListExportFormats
  60from MF.V3.Tasks.ListGroups import ListGroups as MF_V3_Tasks_ListGroups
  61from MF.V3.Tasks.ListNetworkInterfaces import ListNetworkInterfaces as MF_V3_Tasks_ListNetworkInterfaces
  62from MF.V3.Tasks.ListProjects import ListProjects as MF_V3_Tasks_ListProjects
  63from MF.V3.Tasks.ListScans import ListScans as MF_V3_Tasks_ListScans
  64from MF.V3.Tasks.ListSettings import ListSettings as MF_V3_Tasks_ListSettings
  65from MF.V3.Tasks.ListWifi import ListWifi as MF_V3_Tasks_ListWifi
  66from MF.V3.Tasks.Merge import Merge as MF_V3_Tasks_Merge
  67from MF.V3.Tasks.MergeData import MergeData as MF_V3_Tasks_MergeData
  68from MF.V3.Tasks.MoveGroup import MoveGroup as MF_V3_Tasks_MoveGroup
  69from MF.V3.Tasks.NewGroup import NewGroup as MF_V3_Tasks_NewGroup
  70from MF.V3.Tasks.NewProject import NewProject as MF_V3_Tasks_NewProject
  71from MF.V3.Tasks.NewScan import NewScan as MF_V3_Tasks_NewScan
  72from MF.V3.Tasks.OpenProject import OpenProject as MF_V3_Tasks_OpenProject
  73from MF.V3.Tasks.PopSettings import PopSettings as MF_V3_Tasks_PopSettings
  74from MF.V3.Tasks.PushSettings import PushSettings as MF_V3_Tasks_PushSettings
  75from MF.V3.Tasks.Reboot import Reboot as MF_V3_Tasks_Reboot
  76from MF.V3.Tasks.RemoveGroups import RemoveGroups as MF_V3_Tasks_RemoveGroups
  77from MF.V3.Tasks.RemoveProjects import RemoveProjects as MF_V3_Tasks_RemoveProjects
  78from MF.V3.Tasks.RestoreFactoryCalibration import RestoreFactoryCalibration as MF_V3_Tasks_RestoreFactoryCalibration
  79from MF.V3.Tasks.RotateTurntable import RotateTurntable as MF_V3_Tasks_RotateTurntable
  80from MF.V3.Tasks.ScanData import ScanData as MF_V3_Tasks_ScanData
  81from MF.V3.Tasks.SetCameras import SetCameras as MF_V3_Tasks_SetCameras
  82from MF.V3.Tasks.SetGroup import SetGroup as MF_V3_Tasks_SetGroup
  83from MF.V3.Tasks.SetProject import SetProject as MF_V3_Tasks_SetProject
  84from MF.V3.Tasks.SetProjector import SetProjector as MF_V3_Tasks_SetProjector
  85from MF.V3.Tasks.Shutdown import Shutdown as MF_V3_Tasks_Shutdown
  86from MF.V3.Tasks.Smooth import Smooth as MF_V3_Tasks_Smooth
  87from MF.V3.Tasks.SplitGroup import SplitGroup as MF_V3_Tasks_SplitGroup
  88from MF.V3.Tasks.StartVideo import StartVideo as MF_V3_Tasks_StartVideo
  89from MF.V3.Tasks.StopVideo import StopVideo as MF_V3_Tasks_StopVideo
  90from MF.V3.Tasks.SystemInfo import SystemInfo as MF_V3_Tasks_SystemInfo
  91from MF.V3.Tasks.TransformGroup import TransformGroup as MF_V3_Tasks_TransformGroup
  92from MF.V3.Tasks.TurntableCalibration import TurntableCalibration as MF_V3_Tasks_TurntableCalibration
  93from MF.V3.Tasks.UpdateSettings import UpdateSettings as MF_V3_Tasks_UpdateSettings
  94from MF.V3.Tasks.UploadProject import UploadProject as MF_V3_Tasks_UploadProject
  95from typing import List
  96
  97
  98def list_network_interfaces(self) -> Task:
  99
 100    """
 101     List available wifi networks.
 102    """
 103    list_network_interfaces_request = MF_V3_Tasks_ListNetworkInterfaces.Request(
 104        Index=0,
 105        Type="ListNetworkInterfaces"
 106    )
 107    list_network_interfaces_response = MF_V3_Tasks_ListNetworkInterfaces.Response(
 108        Index=0,
 109        Type="ListNetworkInterfaces"
 110    )
 111    task = Task(Index=0, Type="ListNetworkInterfaces", Input=list_network_interfaces_request, Output=list_network_interfaces_response)
 112    self.SendTask(task)
 113    return task
 114
 115
 116def list_wifi(self) -> Task:
 117
 118    """
 119     List available wifi networks.
 120    """
 121    list_wifi_request = MF_V3_Tasks_ListWifi.Request(
 122        Index=0,
 123        Type="ListWifi"
 124    )
 125    list_wifi_response = MF_V3_Tasks_ListWifi.Response(
 126        Index=0,
 127        Type="ListWifi"
 128    )
 129    task = Task(Index=0, Type="ListWifi", Input=list_wifi_request, Output=list_wifi_response)
 130    self.SendTask(task)
 131    return task
 132
 133
 134def connect_wifi(self, ssid: str, password: str) -> Task:
 135
 136    """
 137     Connect to a wifi network.
 138    """
 139    connect_wifi_request = MF_V3_Tasks_ConnectWifi.Request(
 140        Index=0,
 141        Type="ConnectWifi",
 142        Input=MF_V3_Settings_Wifi_Wifi(
 143            ssid=ssid,
 144            password=password,
 145        )
 146    )
 147    connect_wifi_response = MF_V3_Tasks_ConnectWifi.Response(
 148        Index=0,
 149        Type="ConnectWifi",
 150        Input=MF_V3_Settings_Wifi_Wifi(
 151            ssid=ssid,
 152            password=password,
 153        )
 154    )
 155    task = Task(Index=0, Type="ConnectWifi", Input=connect_wifi_request, Output=connect_wifi_response)
 156    self.SendTask(task)
 157    return task
 158
 159
 160def forget_wifi(self) -> Task:
 161
 162    """
 163     Forget all wifi connections.
 164    """
 165    forget_wifi_request = MF_V3_Tasks_ForgetWifi.Request(
 166        Index=0,
 167        Type="ForgetWifi"
 168    )
 169    forget_wifi_response = MF_V3_Tasks_ForgetWifi.Response(
 170        Index=0,
 171        Type="ForgetWifi"
 172    )
 173    task = Task(Index=0, Type="ForgetWifi", Input=forget_wifi_request, Output=forget_wifi_response)
 174    self.SendTask(task)
 175    return task
 176
 177
 178def list_settings(self) -> Task:
 179
 180    """
 181     Get scanner settings.
 182    """
 183    list_settings_request = MF_V3_Tasks_ListSettings.Request(
 184        Index=0,
 185        Type="ListSettings"
 186    )
 187    list_settings_response = MF_V3_Tasks_ListSettings.Response(
 188        Index=0,
 189        Type="ListSettings"
 190    )
 191    task = Task(Index=0, Type="ListSettings", Input=list_settings_request, Output=list_settings_response)
 192    self.SendTask(task)
 193    return task
 194
 195
 196def push_settings(self) -> Task:
 197
 198    """
 199     Push the current scanner settings to the settings stack.
 200    """
 201    push_settings_request = MF_V3_Tasks_PushSettings.Request(
 202        Index=0,
 203        Type="PushSettings"
 204    )
 205    push_settings_response = MF_V3_Tasks_PushSettings.Response(
 206        Index=0,
 207        Type="PushSettings"
 208    )
 209    task = Task(Index=0, Type="PushSettings", Input=push_settings_request, Output=push_settings_response)
 210    self.SendTask(task)
 211    return task
 212
 213
 214def pop_settings(self, Input: bool = None) -> Task:
 215
 216    """
 217      Pop and restore scanner settings from the settings stack.
 218    """
 219    pop_settings_request = MF_V3_Tasks_PopSettings.Request(
 220        Index=0,
 221        Type="PopSettings",
 222        Input=Input
 223    )
 224    pop_settings_response = MF_V3_Tasks_PopSettings.Response(
 225        Index=0,
 226        Type="PopSettings"
 227    )
 228    task = Task(Index=0, Type="PopSettings", Input=pop_settings_request, Output=pop_settings_response)
 229    self.SendTask(task)
 230    return task
 231
 232
 233def update_settings(self, advanced: MF_V3_Settings_Advanced_Advanced = None, camera: MF_V3_Settings_Camera_Camera = None, capture: MF_V3_Settings_Capture_Capture = None, i18n: MF_V3_Settings_I18n_I18n = None, projector: MF_V3_Settings_Projector_Projector = None, style: MF_V3_Settings_Style_Style = None, turntable: MF_V3_Settings_Turntable_Turntable = None, tutorials: MF_V3_Settings_Tutorials_Tutorials = None, viewer: MF_V3_Settings_Viewer_Viewer = None, software: MF_V3_Settings_Software_Software = None) -> Task:
 234
 235    """
 236     Update scanner settings.
 237    """
 238    update_settings_request = MF_V3_Tasks_UpdateSettings.Request(
 239        Index=0,
 240        Type="UpdateSettings",
 241        Input=MF_V3_Settings_Scanner_Scanner(
 242            advanced=advanced,
 243            camera=camera,
 244            capture=capture,
 245            i18n=i18n,
 246            projector=projector,
 247            style=style,
 248            turntable=turntable,
 249            tutorials=tutorials,
 250            viewer=viewer,
 251            software=software,
 252        )
 253    )
 254    update_settings_response = MF_V3_Tasks_UpdateSettings.Response(
 255        Index=0,
 256        Type="UpdateSettings",
 257        Input=MF_V3_Settings_Scanner_Scanner(
 258            advanced=advanced,
 259            camera=camera,
 260            capture=capture,
 261            i18n=i18n,
 262            projector=projector,
 263            style=style,
 264            turntable=turntable,
 265            tutorials=tutorials,
 266            viewer=viewer,
 267            software=software,
 268        )
 269    )
 270    task = Task(Index=0, Type="UpdateSettings", Input=update_settings_request, Output=update_settings_response)
 271    self.SendTask(task)
 272    return task
 273
 274
 275def list_projects(self) -> Task:
 276
 277    """
 278     List all projects.
 279    """
 280    list_projects_request = MF_V3_Tasks_ListProjects.Request(
 281        Index=0,
 282        Type="ListProjects"
 283    )
 284    list_projects_response = MF_V3_Tasks_ListProjects.Response(
 285        Index=0,
 286        Type="ListProjects"
 287    )
 288    task = Task(Index=0, Type="ListProjects", Input=list_projects_request, Output=list_projects_response)
 289    self.SendTask(task)
 290    return task
 291
 292
 293def download_project(self, Input: int) -> Task:
 294
 295    """
 296     Download a project from the scanner.
 297    """
 298    download_project_request = MF_V3_Tasks_DownloadProject.Request(
 299        Index=0,
 300        Type="DownloadProject",
 301        Input=Input
 302    )
 303    download_project_response = MF_V3_Tasks_DownloadProject.Response(
 304        Index=0,
 305        Type="DownloadProject",
 306        Input=Input
 307    )
 308    task = Task(Index=0, Type="DownloadProject", Input=download_project_request, Output=download_project_response)
 309    self.SendTask(task)
 310    return task
 311
 312
 313def upload_project(self, buffer: bytes) -> Task:
 314
 315    """
 316     Upload a project to the scanner.
 317    """
 318    upload_project_request = MF_V3_Tasks_UploadProject.Request(
 319        Index=0,
 320        Type="UploadProject"
 321    )
 322    upload_project_response = MF_V3_Tasks_UploadProject.Response(
 323        Index=0,
 324        Type="UploadProject"
 325    )
 326    task = Task(Index=0, Type="UploadProject", Input=upload_project_request, Output=upload_project_response)
 327    self.SendTask(task, buffer)
 328    return task
 329
 330
 331def new_project(self, Input: str = None) -> Task:
 332
 333    """
 334     Create a new project.
 335    """
 336    new_project_request = MF_V3_Tasks_NewProject.Request(
 337        Index=0,
 338        Type="NewProject",
 339        Input=Input
 340    )
 341    new_project_response = MF_V3_Tasks_NewProject.Response(
 342        Index=0,
 343        Type="NewProject"
 344    )
 345    task = Task(Index=0, Type="NewProject", Input=new_project_request, Output=new_project_response)
 346    self.SendTask(task)
 347    return task
 348
 349
 350def open_project(self, Input: int) -> Task:
 351
 352    """
 353     Open an existing project.
 354    """
 355    open_project_request = MF_V3_Tasks_OpenProject.Request(
 356        Index=0,
 357        Type="OpenProject",
 358        Input=Input
 359    )
 360    open_project_response = MF_V3_Tasks_OpenProject.Response(
 361        Index=0,
 362        Type="OpenProject",
 363        Input=Input
 364    )
 365    task = Task(Index=0, Type="OpenProject", Input=open_project_request, Output=open_project_response)
 366    self.SendTask(task)
 367    return task
 368
 369
 370def clear_settings(self) -> Task:
 371
 372    """
 373     Clear scanner settings and restore the default values.
 374    """
 375    clear_settings_request = MF_V3_Tasks_ClearSettings.Request(
 376        Index=0,
 377        Type="ClearSettings"
 378    )
 379    clear_settings_response = MF_V3_Tasks_ClearSettings.Response(
 380        Index=0,
 381        Type="ClearSettings"
 382    )
 383    task = Task(Index=0, Type="ClearSettings", Input=clear_settings_request, Output=clear_settings_response)
 384    self.SendTask(task)
 385    return task
 386
 387
 388def close_project(self) -> Task:
 389
 390    """
 391     Close the current open project.
 392    """
 393    close_project_request = MF_V3_Tasks_CloseProject.Request(
 394        Index=0,
 395        Type="CloseProject"
 396    )
 397    close_project_response = MF_V3_Tasks_CloseProject.Response(
 398        Index=0,
 399        Type="CloseProject"
 400    )
 401    task = Task(Index=0, Type="CloseProject", Input=close_project_request, Output=close_project_response)
 402    self.SendTask(task)
 403    return task
 404
 405
 406def copy_groups(self, sourceIndexes: List[int] = None, targetIndex: int = None, childPosition: int = None, nameSuffix: str = None, enumerate: bool = None) -> Task:
 407
 408    """
 409     Copy a set of scan groups in the current open project.
 410    """
 411    copy_groups_request = MF_V3_Tasks_CopyGroups.Request(
 412        Index=0,
 413        Type="CopyGroups",
 414        Input=MF_V3_Settings_CopyGroups_CopyGroups(
 415            sourceIndexes=sourceIndexes,
 416            targetIndex=targetIndex,
 417            childPosition=childPosition,
 418            nameSuffix=nameSuffix,
 419            enumerate=enumerate,
 420        )
 421    )
 422    copy_groups_response = MF_V3_Tasks_CopyGroups.Response(
 423        Index=0,
 424        Type="CopyGroups",
 425        Input=MF_V3_Settings_CopyGroups_CopyGroups(
 426            sourceIndexes=sourceIndexes,
 427            targetIndex=targetIndex,
 428            childPosition=childPosition,
 429            nameSuffix=nameSuffix,
 430            enumerate=enumerate,
 431        ),
 432        Output=None
 433    )
 434    task = Task(Index=0, Type="CopyGroups", Input=copy_groups_request, Output=copy_groups_response)
 435    self.SendTask(task)
 436    return task
 437
 438
 439def remove_projects(self, Input: List[int] = None) -> Task:
 440
 441    """
 442     Remove selected projects.
 443    """
 444    remove_projects_request = MF_V3_Tasks_RemoveProjects.Request(
 445        Index=0,
 446        Type="RemoveProjects",
 447        Input=Input
 448    )
 449    remove_projects_response = MF_V3_Tasks_RemoveProjects.Response(
 450        Index=0,
 451        Type="RemoveProjects"
 452    )
 453    task = Task(Index=0, Type="RemoveProjects", Input=remove_projects_request, Output=remove_projects_response)
 454    self.SendTask(task)
 455    return task
 456
 457
 458def list_groups(self) -> Task:
 459
 460    """
 461     List the scan groups in the current open project.
 462    """
 463    list_groups_request = MF_V3_Tasks_ListGroups.Request(
 464        Index=0,
 465        Type="ListGroups"
 466    )
 467    list_groups_response = MF_V3_Tasks_ListGroups.Response(
 468        Index=0,
 469        Type="ListGroups",
 470        Output=None
 471    )
 472    task = Task(Index=0, Type="ListGroups", Input=list_groups_request, Output=list_groups_response)
 473    self.SendTask(task)
 474    return task
 475
 476
 477def list_scans(self) -> Task:
 478
 479    """
 480     List the scans in the current open project.
 481    """
 482    list_scans_request = MF_V3_Tasks_ListScans.Request(
 483        Index=0,
 484        Type="ListScans"
 485    )
 486    list_scans_response = MF_V3_Tasks_ListScans.Response(
 487        Index=0,
 488        Type="ListScans"
 489    )
 490    task = Task(Index=0, Type="ListScans", Input=list_scans_request, Output=list_scans_response)
 491    self.SendTask(task)
 492    return task
 493
 494
 495def scan_data(self, index: int, mergeStep: MF_V3_Settings_ScanData_ScanData.MergeStep = None, buffers: List[MF_V3_Settings_ScanData_ScanData.Buffer] = None, metadata: List[MF_V3_Settings_ScanData_ScanData.Metadata] = None) -> Task:
 496
 497    """
 498     Download the raw scan data for a scan in the current open project.
 499    """
 500    scan_data_request = MF_V3_Tasks_ScanData.Request(
 501        Index=0,
 502        Type="ScanData",
 503        Input=MF_V3_Settings_ScanData_ScanData(
 504            index=index,
 505            mergeStep=mergeStep,
 506            buffers=buffers,
 507            metadata=metadata,
 508        )
 509    )
 510    scan_data_response = MF_V3_Tasks_ScanData.Response(
 511        Index=0,
 512        Type="ScanData",
 513        Input=MF_V3_Settings_ScanData_ScanData(
 514            index=index,
 515            mergeStep=mergeStep,
 516            buffers=buffers,
 517            metadata=metadata,
 518        ),
 519        Output=None
 520    )
 521    task = Task(Index=0, Type="ScanData", Input=scan_data_request, Output=scan_data_response)
 522    self.SendTask(task)
 523    return task
 524
 525
 526def set_project(self, index: int = None, name: str = None) -> Task:
 527
 528    """
 529     Apply settings to the current open project.
 530    """
 531    set_project_request = MF_V3_Tasks_SetProject.Request(
 532        Index=0,
 533        Type="SetProject",
 534        Input=MF_V3_Settings_Project_Project(
 535            index=index,
 536            name=name,
 537        )
 538    )
 539    set_project_response = MF_V3_Tasks_SetProject.Response(
 540        Index=0,
 541        Type="SetProject"
 542    )
 543    task = Task(Index=0, Type="SetProject", Input=set_project_request, Output=set_project_response)
 544    self.SendTask(task)
 545    return task
 546
 547
 548def set_group(self, index: int, name: str = None, color: List[float] = None, visible: bool = None, collapsed: bool = None, rotation: List[float] = None, translation: List[float] = None) -> Task:
 549
 550    """
 551     Set scan group properties.
 552    """
 553    set_group_request = MF_V3_Tasks_SetGroup.Request(
 554        Index=0,
 555        Type="SetGroup",
 556        Input=MF_V3_Settings_Group_Group(
 557            index=index,
 558            name=name,
 559            color=color,
 560            visible=visible,
 561            collapsed=collapsed,
 562            rotation=rotation,
 563            translation=translation,
 564        )
 565    )
 566    set_group_response = MF_V3_Tasks_SetGroup.Response(
 567        Index=0,
 568        Type="SetGroup",
 569        Input=MF_V3_Settings_Group_Group(
 570            index=index,
 571            name=name,
 572            color=color,
 573            visible=visible,
 574            collapsed=collapsed,
 575            rotation=rotation,
 576            translation=translation,
 577        ),
 578        Output=None
 579    )
 580    task = Task(Index=0, Type="SetGroup", Input=set_group_request, Output=set_group_response)
 581    self.SendTask(task)
 582    return task
 583
 584
 585def new_group(self, parentIndex: int = None, baseName: str = None, color: List[float] = None, visible: bool = None, collapsed: bool = None, rotation: List[float] = None, translation: List[float] = None) -> Task:
 586
 587    """
 588     Create a new scan group.
 589    """
 590    new_group_request = MF_V3_Tasks_NewGroup.Request(
 591        Index=0,
 592        Type="NewGroup",
 593        Input=MF_V3_Settings_NewGroup_NewGroup(
 594            parentIndex=parentIndex,
 595            baseName=baseName,
 596            color=color,
 597            visible=visible,
 598            collapsed=collapsed,
 599            rotation=rotation,
 600            translation=translation,
 601        )
 602    )
 603    new_group_response = MF_V3_Tasks_NewGroup.Response(
 604        Index=0,
 605        Type="NewGroup",
 606        Output=None
 607    )
 608    task = Task(Index=0, Type="NewGroup", Input=new_group_request, Output=new_group_response)
 609    self.SendTask(task)
 610    return task
 611
 612
 613def move_group(self, Input: List[int] = None) -> Task:
 614
 615    """
 616     Move a scan group.
 617    """
 618    move_group_request = MF_V3_Tasks_MoveGroup.Request(
 619        Index=0,
 620        Type="MoveGroup",
 621        Input=Input
 622    )
 623    move_group_response = MF_V3_Tasks_MoveGroup.Response(
 624        Index=0,
 625        Type="MoveGroup",
 626        Output=None
 627    )
 628    task = Task(Index=0, Type="MoveGroup", Input=move_group_request, Output=move_group_response)
 629    self.SendTask(task)
 630    return task
 631
 632
 633def factory_reset(self) -> Task:
 634
 635    """
 636     Reset the scanner to factory settings.
 637    """
 638    factory_reset_request = MF_V3_Tasks_FactoryReset.Request(
 639        Index=0,
 640        Type="FactoryReset"
 641    )
 642    factory_reset_response = MF_V3_Tasks_FactoryReset.Response(
 643        Index=0,
 644        Type="FactoryReset"
 645    )
 646    task = Task(Index=0, Type="FactoryReset", Input=factory_reset_request, Output=factory_reset_response)
 647    self.SendTask(task)
 648    return task
 649
 650
 651def flatten_group(self, Input: int) -> Task:
 652
 653    """
 654     Flatten a scan group such that it only consists of single scans.
 655    """
 656    flatten_group_request = MF_V3_Tasks_FlattenGroup.Request(
 657        Index=0,
 658        Type="FlattenGroup",
 659        Input=Input
 660    )
 661    flatten_group_response = MF_V3_Tasks_FlattenGroup.Response(
 662        Index=0,
 663        Type="FlattenGroup",
 664        Input=Input,
 665        Output=None
 666    )
 667    task = Task(Index=0, Type="FlattenGroup", Input=flatten_group_request, Output=flatten_group_response)
 668    self.SendTask(task)
 669    return task
 670
 671
 672def split_group(self, Input: int) -> Task:
 673
 674    """
 675     Split a scan group (ie. move its subgroups to its parent group).
 676    """
 677    split_group_request = MF_V3_Tasks_SplitGroup.Request(
 678        Index=0,
 679        Type="SplitGroup",
 680        Input=Input
 681    )
 682    split_group_response = MF_V3_Tasks_SplitGroup.Response(
 683        Index=0,
 684        Type="SplitGroup",
 685        Input=Input,
 686        Output=None
 687    )
 688    task = Task(Index=0, Type="SplitGroup", Input=split_group_request, Output=split_group_response)
 689    self.SendTask(task)
 690    return task
 691
 692
 693def transform_group(self, index: int, name: str = None, color: List[float] = None, visible: bool = None, collapsed: bool = None, rotation: List[float] = None, translation: List[float] = None) -> Task:
 694
 695    """
 696     Apply a rigid transformation to a group.
 697    """
 698    transform_group_request = MF_V3_Tasks_TransformGroup.Request(
 699        Index=0,
 700        Type="TransformGroup",
 701        Input=MF_V3_Settings_Group_Group(
 702            index=index,
 703            name=name,
 704            color=color,
 705            visible=visible,
 706            collapsed=collapsed,
 707            rotation=rotation,
 708            translation=translation,
 709        )
 710    )
 711    transform_group_response = MF_V3_Tasks_TransformGroup.Response(
 712        Index=0,
 713        Type="TransformGroup",
 714        Input=MF_V3_Settings_Group_Group(
 715            index=index,
 716            name=name,
 717            color=color,
 718            visible=visible,
 719            collapsed=collapsed,
 720            rotation=rotation,
 721            translation=translation,
 722        ),
 723        Output=None
 724    )
 725    task = Task(Index=0, Type="TransformGroup", Input=transform_group_request, Output=transform_group_response)
 726    self.SendTask(task)
 727    return task
 728
 729
 730def remove_groups(self, Input: List[int] = None) -> Task:
 731
 732    """
 733     Remove selected scan groups.
 734    """
 735    remove_groups_request = MF_V3_Tasks_RemoveGroups.Request(
 736        Index=0,
 737        Type="RemoveGroups",
 738        Input=Input
 739    )
 740    remove_groups_response = MF_V3_Tasks_RemoveGroups.Response(
 741        Index=0,
 742        Type="RemoveGroups",
 743        Output=None
 744    )
 745    task = Task(Index=0, Type="RemoveGroups", Input=remove_groups_request, Output=remove_groups_response)
 746    self.SendTask(task)
 747    return task
 748
 749
 750def bounding_box(self, selection: MF_V3_Settings_ScanSelection_ScanSelection, axisAligned: bool) -> Task:
 751
 752    """
 753     Get the bounding box of a set of scan groups.
 754    """
 755    bounding_box_request = MF_V3_Tasks_BoundingBox.Request(
 756        Index=0,
 757        Type="BoundingBox",
 758        Input=MF_V3_Settings_BoundingBox_BoundingBox(
 759            selection=selection,
 760            axisAligned=axisAligned,
 761        )
 762    )
 763    bounding_box_response = MF_V3_Tasks_BoundingBox.Response(
 764        Index=0,
 765        Type="BoundingBox",
 766        Input=MF_V3_Settings_BoundingBox_BoundingBox(
 767            selection=selection,
 768            axisAligned=axisAligned,
 769        ),
 770        Output=None
 771    )
 772    task = Task(Index=0, Type="BoundingBox", Input=bounding_box_request, Output=bounding_box_response)
 773    self.SendTask(task)
 774    return task
 775
 776
 777def align(self, source: int, target: int, rough: MF_V3_Settings_Align_Align.Rough = None, fine: MF_V3_Settings_Align_Align.Fine = None) -> Task:
 778
 779    """
 780     Align two scan groups.
 781    """
 782    align_request = MF_V3_Tasks_Align.Request(
 783        Index=0,
 784        Type="Align",
 785        Input=MF_V3_Settings_Align_Align(
 786            source=source,
 787            target=target,
 788            rough=rough,
 789            fine=fine,
 790        )
 791    )
 792    align_response = MF_V3_Tasks_Align.Response(
 793        Index=0,
 794        Type="Align",
 795        Input=MF_V3_Settings_Align_Align(
 796            source=source,
 797            target=target,
 798            rough=rough,
 799            fine=fine,
 800        ),
 801        Output=None
 802    )
 803    task = Task(Index=0, Type="Align", Input=align_request, Output=align_response)
 804    self.SendTask(task)
 805    return task
 806
 807
 808def smooth(self, selection: MF_V3_Settings_ScanSelection_ScanSelection = None, taubin: MF_V3_Settings_Smooth_Smooth.Taubin = None) -> Task:
 809
 810    """
 811     Smooth a set of scans.
 812    """
 813    smooth_request = MF_V3_Tasks_Smooth.Request(
 814        Index=0,
 815        Type="Smooth",
 816        Input=MF_V3_Settings_Smooth_Smooth(
 817            selection=selection,
 818            taubin=taubin,
 819        )
 820    )
 821    smooth_response = MF_V3_Tasks_Smooth.Response(
 822        Index=0,
 823        Type="Smooth",
 824        Input=MF_V3_Settings_Smooth_Smooth(
 825            selection=selection,
 826            taubin=taubin,
 827        )
 828    )
 829    task = Task(Index=0, Type="Smooth", Input=smooth_request, Output=smooth_response)
 830    self.SendTask(task)
 831    return task
 832
 833
 834def heat_map(self, sources: List[int] = None, targets: List[int] = None, outlierDistance: float = None) -> Task:
 835
 836    """
 837     Compute the point-to-mesh distances of a source mesh to a target mesh and visualize as a heat map.
 838    """
 839    heat_map_request = MF_V3_Tasks_HeatMap.Request(
 840        Index=0,
 841        Type="HeatMap",
 842        Input=MF_V3_Settings_HeatMap_HeatMap(
 843            sources=sources,
 844            targets=targets,
 845            outlierDistance=outlierDistance,
 846        )
 847    )
 848    heat_map_response = MF_V3_Tasks_HeatMap.Response(
 849        Index=0,
 850        Type="HeatMap",
 851        Input=MF_V3_Settings_HeatMap_HeatMap(
 852            sources=sources,
 853            targets=targets,
 854            outlierDistance=outlierDistance,
 855        ),
 856        Output=None
 857    )
 858    task = Task(Index=0, Type="HeatMap", Input=heat_map_request, Output=heat_map_response)
 859    self.SendTask(task)
 860    return task
 861
 862
 863def merge(self, selection: MF_V3_Settings_ScanSelection_ScanSelection = None, remesh: MF_V3_Settings_Merge_Merge.Remesh = None, simplify: MF_V3_Settings_Merge_Merge.Simplify = None, texturize: bool = None) -> Task:
 864
 865    """
 866     Merge two or more scan groups.
 867    """
 868    merge_request = MF_V3_Tasks_Merge.Request(
 869        Index=0,
 870        Type="Merge",
 871        Input=MF_V3_Settings_Merge_Merge(
 872            selection=selection,
 873            remesh=remesh,
 874            simplify=simplify,
 875            texturize=texturize,
 876        )
 877    )
 878    merge_response = MF_V3_Tasks_Merge.Response(
 879        Index=0,
 880        Type="Merge",
 881        Input=MF_V3_Settings_Merge_Merge(
 882            selection=selection,
 883            remesh=remesh,
 884            simplify=simplify,
 885            texturize=texturize,
 886        ),
 887        Output=None
 888    )
 889    task = Task(Index=0, Type="Merge", Input=merge_request, Output=merge_response)
 890    self.SendTask(task)
 891    return task
 892
 893
 894def merge_data(self, index: int, mergeStep: MF_V3_Settings_ScanData_ScanData.MergeStep = None, buffers: List[MF_V3_Settings_ScanData_ScanData.Buffer] = None, metadata: List[MF_V3_Settings_ScanData_ScanData.Metadata] = None) -> Task:
 895
 896    """
 897     Download the raw scan data for the current merge process.
 898    """
 899    merge_data_request = MF_V3_Tasks_MergeData.Request(
 900        Index=0,
 901        Type="MergeData",
 902        Input=MF_V3_Settings_ScanData_ScanData(
 903            index=index,
 904            mergeStep=mergeStep,
 905            buffers=buffers,
 906            metadata=metadata,
 907        )
 908    )
 909    merge_data_response = MF_V3_Tasks_MergeData.Response(
 910        Index=0,
 911        Type="MergeData",
 912        Input=MF_V3_Settings_ScanData_ScanData(
 913            index=index,
 914            mergeStep=mergeStep,
 915            buffers=buffers,
 916            metadata=metadata,
 917        ),
 918        Output=None
 919    )
 920    task = Task(Index=0, Type="MergeData", Input=merge_data_request, Output=merge_data_response)
 921    self.SendTask(task)
 922    return task
 923
 924
 925def add_merge_to_project(self) -> Task:
 926
 927    """
 928     Add a merged scan to the current project.
 929    """
 930    add_merge_to_project_request = MF_V3_Tasks_AddMergeToProject.Request(
 931        Index=0,
 932        Type="AddMergeToProject"
 933    )
 934    add_merge_to_project_response = MF_V3_Tasks_AddMergeToProject.Response(
 935        Index=0,
 936        Type="AddMergeToProject",
 937        Output=None
 938    )
 939    task = Task(Index=0, Type="AddMergeToProject", Input=add_merge_to_project_request, Output=add_merge_to_project_response)
 940    self.SendTask(task)
 941    return task
 942
 943
 944def import_file(self, name: str = None, scale: float = None, unit: MF_V3_Settings_Import_Import.Unit = None, center: bool = None, groupIndex: int = None) -> Task:
 945
 946    """
 947     Import a set of 3D meshes to the current open project.  The meshes must be archived in a ZIP file.
 948    """
 949    import_file_request = MF_V3_Tasks_Import.Request(
 950        Index=0,
 951        Type="Import",
 952        Input=MF_V3_Settings_Import_Import(
 953            name=name,
 954            scale=scale,
 955            unit=unit,
 956            center=center,
 957            groupIndex=groupIndex,
 958        )
 959    )
 960    import_file_response = MF_V3_Tasks_Import.Response(
 961        Index=0,
 962        Type="Import"
 963    )
 964    task = Task(Index=0, Type="Import", Input=import_file_request, Output=import_file_response)
 965    self.SendTask(task)
 966    return task
 967
 968
 969def list_export_formats(self) -> Task:
 970
 971    """
 972     List all export formats.
 973    """
 974    list_export_formats_request = MF_V3_Tasks_ListExportFormats.Request(
 975        Index=0,
 976        Type="ListExportFormats"
 977    )
 978    list_export_formats_response = MF_V3_Tasks_ListExportFormats.Response(
 979        Index=0,
 980        Type="ListExportFormats"
 981    )
 982    task = Task(Index=0, Type="ListExportFormats", Input=list_export_formats_request, Output=list_export_formats_response)
 983    self.SendTask(task)
 984    return task
 985
 986
 987def export(self, selection: MF_V3_Settings_ScanSelection_ScanSelection = None, texture: bool = None, merge: bool = None, format: MF_V3_Settings_Export_Export.Format = None, scale: float = None, color: MF_V3_Settings_Export_Export.Color = None) -> Task:
 988
 989    """
 990     Export a group of scans.
 991    """
 992    export_request = MF_V3_Tasks_Export.Request(
 993        Index=0,
 994        Type="Export",
 995        Input=MF_V3_Settings_Export_Export(
 996            selection=selection,
 997            texture=texture,
 998            merge=merge,
 999            format=format,
1000            scale=scale,
1001            color=color,
1002        )
1003    )
1004    export_response = MF_V3_Tasks_Export.Response(
1005        Index=0,
1006        Type="Export",
1007        Input=MF_V3_Settings_Export_Export(
1008            selection=selection,
1009            texture=texture,
1010            merge=merge,
1011            format=format,
1012            scale=scale,
1013            color=color,
1014        )
1015    )
1016    task = Task(Index=0, Type="Export", Input=export_request, Output=export_response)
1017    self.SendTask(task)
1018    return task
1019
1020
1021def export_heat_map(self, selection: MF_V3_Settings_ScanSelection_ScanSelection = None, texture: bool = None, merge: bool = None, format: MF_V3_Settings_Export_Export.Format = None, scale: float = None, color: MF_V3_Settings_Export_Export.Color = None) -> Task:
1022
1023    """
1024     Export a mesh with vertex colors generated by the 'HeatMap' task.
1025    """
1026    export_heat_map_request = MF_V3_Tasks_ExportHeatMap.Request(
1027        Index=0,
1028        Type="ExportHeatMap",
1029        Input=MF_V3_Settings_Export_Export(
1030            selection=selection,
1031            texture=texture,
1032            merge=merge,
1033            format=format,
1034            scale=scale,
1035            color=color,
1036        )
1037    )
1038    export_heat_map_response = MF_V3_Tasks_ExportHeatMap.Response(
1039        Index=0,
1040        Type="ExportHeatMap",
1041        Input=MF_V3_Settings_Export_Export(
1042            selection=selection,
1043            texture=texture,
1044            merge=merge,
1045            format=format,
1046            scale=scale,
1047            color=color,
1048        )
1049    )
1050    task = Task(Index=0, Type="ExportHeatMap", Input=export_heat_map_request, Output=export_heat_map_response)
1051    self.SendTask(task)
1052    return task
1053
1054
1055def export_merge(self, selection: MF_V3_Settings_ScanSelection_ScanSelection = None, texture: bool = None, merge: bool = None, format: MF_V3_Settings_Export_Export.Format = None, scale: float = None, color: MF_V3_Settings_Export_Export.Color = None) -> Task:
1056
1057    """
1058     Export a merged scan.
1059    """
1060    export_merge_request = MF_V3_Tasks_ExportMerge.Request(
1061        Index=0,
1062        Type="ExportMerge",
1063        Input=MF_V3_Settings_Export_Export(
1064            selection=selection,
1065            texture=texture,
1066            merge=merge,
1067            format=format,
1068            scale=scale,
1069            color=color,
1070        )
1071    )
1072    export_merge_response = MF_V3_Tasks_ExportMerge.Response(
1073        Index=0,
1074        Type="ExportMerge",
1075        Input=MF_V3_Settings_Export_Export(
1076            selection=selection,
1077            texture=texture,
1078            merge=merge,
1079            format=format,
1080            scale=scale,
1081            color=color,
1082        )
1083    )
1084    task = Task(Index=0, Type="ExportMerge", Input=export_merge_request, Output=export_merge_response)
1085    self.SendTask(task)
1086    return task
1087
1088
1089def export_logs(self, Input: bool = None) -> Task:
1090
1091    """
1092     Export scanner logs.
1093    """
1094    export_logs_request = MF_V3_Tasks_ExportLogs.Request(
1095        Index=0,
1096        Type="ExportLogs",
1097        Input=Input
1098    )
1099    export_logs_response = MF_V3_Tasks_ExportLogs.Response(
1100        Index=0,
1101        Type="ExportLogs"
1102    )
1103    task = Task(Index=0, Type="ExportLogs", Input=export_logs_request, Output=export_logs_response)
1104    self.SendTask(task)
1105    return task
1106
1107
1108def export_factory_calibration_logs(self) -> Task:
1109
1110    """
1111     Export factory calibration logs.
1112    """
1113    export_factory_calibration_logs_request = MF_V3_Tasks_ExportFactoryCalibrationLogs.Request(
1114        Index=0,
1115        Type="ExportFactoryCalibrationLogs"
1116    )
1117    export_factory_calibration_logs_response = MF_V3_Tasks_ExportFactoryCalibrationLogs.Response(
1118        Index=0,
1119        Type="ExportFactoryCalibrationLogs"
1120    )
1121    task = Task(Index=0, Type="ExportFactoryCalibrationLogs", Input=export_factory_calibration_logs_request, Output=export_factory_calibration_logs_response)
1122    self.SendTask(task)
1123    return task
1124
1125
1126def has_cameras(self) -> Task:
1127
1128    """
1129     Check if the scanner has working cameras.
1130    """
1131    has_cameras_request = MF_V3_Tasks_HasCameras.Request(
1132        Index=0,
1133        Type="HasCameras"
1134    )
1135    has_cameras_response = MF_V3_Tasks_HasCameras.Response(
1136        Index=0,
1137        Type="HasCameras"
1138    )
1139    task = Task(Index=0, Type="HasCameras", Input=has_cameras_request, Output=has_cameras_response)
1140    self.SendTask(task)
1141    return task
1142
1143
1144def has_projector(self) -> Task:
1145
1146    """
1147     Check if the scanner has a working projector.
1148    """
1149    has_projector_request = MF_V3_Tasks_HasProjector.Request(
1150        Index=0,
1151        Type="HasProjector"
1152    )
1153    has_projector_response = MF_V3_Tasks_HasProjector.Response(
1154        Index=0,
1155        Type="HasProjector"
1156    )
1157    task = Task(Index=0, Type="HasProjector", Input=has_projector_request, Output=has_projector_response)
1158    self.SendTask(task)
1159    return task
1160
1161
1162def has_turntable(self) -> Task:
1163
1164    """
1165     Check if the scanner is connected to a working turntable.
1166    """
1167    has_turntable_request = MF_V3_Tasks_HasTurntable.Request(
1168        Index=0,
1169        Type="HasTurntable"
1170    )
1171    has_turntable_response = MF_V3_Tasks_HasTurntable.Response(
1172        Index=0,
1173        Type="HasTurntable"
1174    )
1175    task = Task(Index=0, Type="HasTurntable", Input=has_turntable_request, Output=has_turntable_response)
1176    self.SendTask(task)
1177    return task
1178
1179
1180def system_info(self, updateMajor: bool = None, updateNightly: bool = None) -> Task:
1181
1182    """
1183     Get system information.
1184    """
1185    system_info_request = MF_V3_Tasks_SystemInfo.Request(
1186        Index=0,
1187        Type="SystemInfo",
1188        Input=MF_V3_Settings_Software_Software(
1189            updateMajor=updateMajor,
1190            updateNightly=updateNightly,
1191        )
1192    )
1193    system_info_response = MF_V3_Tasks_SystemInfo.Response(
1194        Index=0,
1195        Type="SystemInfo",
1196        Output=None
1197    )
1198    task = Task(Index=0, Type="SystemInfo", Input=system_info_request, Output=system_info_response)
1199    self.SendTask(task)
1200    return task
1201
1202
1203def camera_calibration(self) -> Task:
1204
1205    """
1206     Get the camera calibration descriptor.
1207    """
1208    camera_calibration_request = MF_V3_Tasks_CameraCalibration.Request(
1209        Index=0,
1210        Type="CameraCalibration"
1211    )
1212    camera_calibration_response = MF_V3_Tasks_CameraCalibration.Response(
1213        Index=0,
1214        Type="CameraCalibration"
1215    )
1216    task = Task(Index=0, Type="CameraCalibration", Input=camera_calibration_request, Output=camera_calibration_response)
1217    self.SendTask(task)
1218    return task
1219
1220
1221def turntable_calibration(self) -> Task:
1222
1223    """
1224     Get the turntable calibration descriptor.
1225    """
1226    turntable_calibration_request = MF_V3_Tasks_TurntableCalibration.Request(
1227        Index=0,
1228        Type="TurntableCalibration"
1229    )
1230    turntable_calibration_response = MF_V3_Tasks_TurntableCalibration.Response(
1231        Index=0,
1232        Type="TurntableCalibration"
1233    )
1234    task = Task(Index=0, Type="TurntableCalibration", Input=turntable_calibration_request, Output=turntable_calibration_response)
1235    self.SendTask(task)
1236    return task
1237
1238
1239def calibration_capture_targets(self) -> Task:
1240
1241    """
1242     Get the calibration capture target for each camera calibration capture.
1243    """
1244    calibration_capture_targets_request = MF_V3_Tasks_CalibrationCaptureTargets.Request(
1245        Index=0,
1246        Type="CalibrationCaptureTargets"
1247    )
1248    calibration_capture_targets_response = MF_V3_Tasks_CalibrationCaptureTargets.Response(
1249        Index=0,
1250        Type="CalibrationCaptureTargets"
1251    )
1252    task = Task(Index=0, Type="CalibrationCaptureTargets", Input=calibration_capture_targets_request, Output=calibration_capture_targets_response)
1253    self.SendTask(task)
1254    return task
1255
1256
1257def calibrate_cameras(self) -> Task:
1258
1259    """
1260     Calibrate the cameras.
1261    """
1262    calibrate_cameras_request = MF_V3_Tasks_CalibrateCameras.Request(
1263        Index=0,
1264        Type="CalibrateCameras"
1265    )
1266    calibrate_cameras_response = MF_V3_Tasks_CalibrateCameras.Response(
1267        Index=0,
1268        Type="CalibrateCameras"
1269    )
1270    task = Task(Index=0, Type="CalibrateCameras", Input=calibrate_cameras_request, Output=calibrate_cameras_response)
1271    self.SendTask(task)
1272    return task
1273
1274
1275def calibrate_turntable(self) -> Task:
1276
1277    """
1278     Calibrate the turntable.
1279    """
1280    calibrate_turntable_request = MF_V3_Tasks_CalibrateTurntable.Request(
1281        Index=0,
1282        Type="CalibrateTurntable"
1283    )
1284    calibrate_turntable_response = MF_V3_Tasks_CalibrateTurntable.Response(
1285        Index=0,
1286        Type="CalibrateTurntable"
1287    )
1288    task = Task(Index=0, Type="CalibrateTurntable", Input=calibrate_turntable_request, Output=calibrate_turntable_response)
1289    self.SendTask(task)
1290    return task
1291
1292
1293def detect_calibration_card(self, Input: int) -> Task:
1294
1295    """
1296     Detect the calibration card on one or both cameras.
1297    """
1298    detect_calibration_card_request = MF_V3_Tasks_DetectCalibrationCard.Request(
1299        Index=0,
1300        Type="DetectCalibrationCard",
1301        Input=Input
1302    )
1303    detect_calibration_card_response = MF_V3_Tasks_DetectCalibrationCard.Response(
1304        Index=0,
1305        Type="DetectCalibrationCard",
1306        Input=Input
1307    )
1308    task = Task(Index=0, Type="DetectCalibrationCard", Input=detect_calibration_card_request, Output=detect_calibration_card_response)
1309    self.SendTask(task)
1310    return task
1311
1312
1313def restore_factory_calibration(self) -> Task:
1314
1315    """
1316     Restore factory calibration.
1317    """
1318    restore_factory_calibration_request = MF_V3_Tasks_RestoreFactoryCalibration.Request(
1319        Index=0,
1320        Type="RestoreFactoryCalibration"
1321    )
1322    restore_factory_calibration_response = MF_V3_Tasks_RestoreFactoryCalibration.Response(
1323        Index=0,
1324        Type="RestoreFactoryCalibration"
1325    )
1326    task = Task(Index=0, Type="RestoreFactoryCalibration", Input=restore_factory_calibration_request, Output=restore_factory_calibration_response)
1327    self.SendTask(task)
1328    return task
1329
1330
1331def start_video(self) -> Task:
1332
1333    """
1334     Start the video stream.
1335    """
1336    start_video_request = MF_V3_Tasks_StartVideo.Request(
1337        Index=0,
1338        Type="StartVideo"
1339    )
1340    start_video_response = MF_V3_Tasks_StartVideo.Response(
1341        Index=0,
1342        Type="StartVideo"
1343    )
1344    task = Task(Index=0, Type="StartVideo", Input=start_video_request, Output=start_video_response)
1345    self.SendTask(task)
1346    return task
1347
1348
1349def stop_video(self) -> Task:
1350
1351    """
1352     Stop the video stream.
1353    """
1354    stop_video_request = MF_V3_Tasks_StopVideo.Request(
1355        Index=0,
1356        Type="StopVideo"
1357    )
1358    stop_video_response = MF_V3_Tasks_StopVideo.Response(
1359        Index=0,
1360        Type="StopVideo"
1361    )
1362    task = Task(Index=0, Type="StopVideo", Input=stop_video_request, Output=stop_video_response)
1363    self.SendTask(task)
1364    return task
1365
1366
1367def set_cameras(self, selection: List[int] = None, autoExposure: bool = None, exposure: int = None, analogGain: float = None, digitalGain: int = None, focus: int = None) -> Task:
1368
1369    """
1370     Apply camera settings to one or both cameras.
1371    """
1372    set_cameras_request = MF_V3_Tasks_SetCameras.Request(
1373        Index=0,
1374        Type="SetCameras",
1375        Input=MF_V3_Settings_Camera_Camera(
1376            selection=selection,
1377            autoExposure=autoExposure,
1378            exposure=exposure,
1379            analogGain=analogGain,
1380            digitalGain=digitalGain,
1381            focus=focus,
1382        )
1383    )
1384    set_cameras_response = MF_V3_Tasks_SetCameras.Response(
1385        Index=0,
1386        Type="SetCameras"
1387    )
1388    task = Task(Index=0, Type="SetCameras", Input=set_cameras_request, Output=set_cameras_response)
1389    self.SendTask(task)
1390    return task
1391
1392
1393def set_projector(self, on: bool = None, brightness: float = None, pattern: MF_V3_Settings_Projector_Projector.Pattern = None, image: MF_V3_Settings_Projector_Projector.Image = None, color: List[float] = None, buffer: bytes = None) -> Task:
1394
1395    """
1396     Apply projector settings.
1397    """
1398    set_projector_request = MF_V3_Tasks_SetProjector.Request(
1399        Index=0,
1400        Type="SetProjector",
1401        Input=MF_V3_Settings_Projector_Projector(
1402            on=on,
1403            brightness=brightness,
1404            pattern=pattern,
1405            image=image,
1406            color=color,
1407        )
1408    )
1409    set_projector_response = MF_V3_Tasks_SetProjector.Response(
1410        Index=0,
1411        Type="SetProjector"
1412    )
1413    task = Task(Index=0, Type="SetProjector", Input=set_projector_request, Output=set_projector_response)
1414    self.SendTask(task, buffer)
1415    return task
1416
1417
1418def auto_focus(self, applyAll: bool, cameras: List[MF_V3_Settings_AutoFocus_AutoFocus.Camera] = None) -> Task:
1419
1420    """
1421     Auto focus one or both cameras.
1422    """
1423    auto_focus_request = MF_V3_Tasks_AutoFocus.Request(
1424        Index=0,
1425        Type="AutoFocus",
1426        Input=MF_V3_Settings_AutoFocus_AutoFocus(
1427            applyAll=applyAll,
1428            cameras=cameras,
1429        )
1430    )
1431    auto_focus_response = MF_V3_Tasks_AutoFocus.Response(
1432        Index=0,
1433        Type="AutoFocus"
1434    )
1435    task = Task(Index=0, Type="AutoFocus", Input=auto_focus_request, Output=auto_focus_response)
1436    self.SendTask(task)
1437    return task
1438
1439
1440def rotate_turntable(self, Input: int) -> Task:
1441
1442    """
1443     Rotate the turntable.
1444    """
1445    rotate_turntable_request = MF_V3_Tasks_RotateTurntable.Request(
1446        Index=0,
1447        Type="RotateTurntable",
1448        Input=Input
1449    )
1450    rotate_turntable_response = MF_V3_Tasks_RotateTurntable.Response(
1451        Index=0,
1452        Type="RotateTurntable",
1453        Input=Input
1454    )
1455    task = Task(Index=0, Type="RotateTurntable", Input=rotate_turntable_request, Output=rotate_turntable_response)
1456    self.SendTask(task)
1457    return task
1458
1459
1460def new_scan(self, camera: MF_V3_Settings_Camera_Camera = None, projector: MF_V3_Settings_Projector_Projector = None, turntable: MF_V3_Settings_Turntable_Turntable = None, capture: MF_V3_Settings_Capture_Capture = None, processing: MF_V3_Settings_Scan_Scan.Processing = None, alignWithScanner: bool = None, centerAtOrigin: bool = None) -> Task:
1461
1462    """
1463     Capture a new scan.
1464    """
1465    new_scan_request = MF_V3_Tasks_NewScan.Request(
1466        Index=0,
1467        Type="NewScan",
1468        Input=MF_V3_Settings_Scan_Scan(
1469            camera=camera,
1470            projector=projector,
1471            turntable=turntable,
1472            capture=capture,
1473            processing=processing,
1474            alignWithScanner=alignWithScanner,
1475            centerAtOrigin=centerAtOrigin,
1476        )
1477    )
1478    new_scan_response = MF_V3_Tasks_NewScan.Response(
1479        Index=0,
1480        Type="NewScan"
1481    )
1482    task = Task(Index=0, Type="NewScan", Input=new_scan_request, Output=new_scan_response)
1483    self.SendTask(task)
1484    return task
1485
1486
1487def capture_image(self, selection: List[int] = None, codec: MF_V3_Settings_CaptureImage_CaptureImage.Codec = None, grayscale: bool = None) -> Task:
1488
1489    """
1490     Capture a single Image.
1491    """
1492    capture_image_request = MF_V3_Tasks_CaptureImage.Request(
1493        Index=0,
1494        Type="CaptureImage",
1495        Input=MF_V3_Settings_CaptureImage_CaptureImage(
1496            selection=selection,
1497            codec=codec,
1498            grayscale=grayscale,
1499        )
1500    )
1501    capture_image_response = MF_V3_Tasks_CaptureImage.Response(
1502        Index=0,
1503        Type="CaptureImage",
1504        Input=MF_V3_Settings_CaptureImage_CaptureImage(
1505            selection=selection,
1506            codec=codec,
1507            grayscale=grayscale,
1508        )
1509    )
1510    task = Task(Index=0, Type="CaptureImage", Input=capture_image_request, Output=capture_image_response)
1511    self.SendTask(task)
1512    return task
1513
1514
1515def depth_map(self, camera: MF_V3_Settings_Camera_Camera = None, projector: MF_V3_Settings_Projector_Projector = None, turntable: MF_V3_Settings_Turntable_Turntable = None, capture: MF_V3_Settings_Capture_Capture = None, processing: MF_V3_Settings_Scan_Scan.Processing = None, alignWithScanner: bool = None, centerAtOrigin: bool = None) -> Task:
1516
1517    """
1518     Capture a depth map.
1519    """
1520    depth_map_request = MF_V3_Tasks_DepthMap.Request(
1521        Index=0,
1522        Type="DepthMap",
1523        Input=MF_V3_Settings_Scan_Scan(
1524            camera=camera,
1525            projector=projector,
1526            turntable=turntable,
1527            capture=capture,
1528            processing=processing,
1529            alignWithScanner=alignWithScanner,
1530            centerAtOrigin=centerAtOrigin,
1531        )
1532    )
1533    depth_map_response = MF_V3_Tasks_DepthMap.Response(
1534        Index=0,
1535        Type="DepthMap"
1536    )
1537    task = Task(Index=0, Type="DepthMap", Input=depth_map_request, Output=depth_map_response)
1538    self.SendTask(task)
1539    return task
1540
1541
1542def reboot(self) -> Task:
1543
1544    """
1545     Reboot the scanner.
1546    """
1547    reboot_request = MF_V3_Tasks_Reboot.Request(
1548        Index=0,
1549        Type="Reboot"
1550    )
1551    reboot_response = MF_V3_Tasks_Reboot.Response(
1552        Index=0,
1553        Type="Reboot"
1554    )
1555    task = Task(Index=0, Type="Reboot", Input=reboot_request, Output=reboot_response)
1556    self.SendTask(task)
1557    return task
1558
1559
1560def shutdown(self) -> Task:
1561
1562    """
1563     Shutdown the scanner.
1564    """
1565    shutdown_request = MF_V3_Tasks_Shutdown.Request(
1566        Index=0,
1567        Type="Shutdown"
1568    )
1569    shutdown_response = MF_V3_Tasks_Shutdown.Response(
1570        Index=0,
1571        Type="Shutdown"
1572    )
1573    task = Task(Index=0, Type="Shutdown", Input=shutdown_request, Output=shutdown_response)
1574    self.SendTask(task)
1575    return task
def list_network_interfaces(self) -> MF.V3.Task.Task:
 99def list_network_interfaces(self) -> Task:
100
101    """
102     List available wifi networks.
103    """
104    list_network_interfaces_request = MF_V3_Tasks_ListNetworkInterfaces.Request(
105        Index=0,
106        Type="ListNetworkInterfaces"
107    )
108    list_network_interfaces_response = MF_V3_Tasks_ListNetworkInterfaces.Response(
109        Index=0,
110        Type="ListNetworkInterfaces"
111    )
112    task = Task(Index=0, Type="ListNetworkInterfaces", Input=list_network_interfaces_request, Output=list_network_interfaces_response)
113    self.SendTask(task)
114    return task

List available wifi networks.

def list_wifi(self) -> MF.V3.Task.Task:
117def list_wifi(self) -> Task:
118
119    """
120     List available wifi networks.
121    """
122    list_wifi_request = MF_V3_Tasks_ListWifi.Request(
123        Index=0,
124        Type="ListWifi"
125    )
126    list_wifi_response = MF_V3_Tasks_ListWifi.Response(
127        Index=0,
128        Type="ListWifi"
129    )
130    task = Task(Index=0, Type="ListWifi", Input=list_wifi_request, Output=list_wifi_response)
131    self.SendTask(task)
132    return task

List available wifi networks.

def connect_wifi(self, ssid: str, password: str) -> MF.V3.Task.Task:
135def connect_wifi(self, ssid: str, password: str) -> Task:
136
137    """
138     Connect to a wifi network.
139    """
140    connect_wifi_request = MF_V3_Tasks_ConnectWifi.Request(
141        Index=0,
142        Type="ConnectWifi",
143        Input=MF_V3_Settings_Wifi_Wifi(
144            ssid=ssid,
145            password=password,
146        )
147    )
148    connect_wifi_response = MF_V3_Tasks_ConnectWifi.Response(
149        Index=0,
150        Type="ConnectWifi",
151        Input=MF_V3_Settings_Wifi_Wifi(
152            ssid=ssid,
153            password=password,
154        )
155    )
156    task = Task(Index=0, Type="ConnectWifi", Input=connect_wifi_request, Output=connect_wifi_response)
157    self.SendTask(task)
158    return task

Connect to a wifi network.

def forget_wifi(self) -> MF.V3.Task.Task:
161def forget_wifi(self) -> Task:
162
163    """
164     Forget all wifi connections.
165    """
166    forget_wifi_request = MF_V3_Tasks_ForgetWifi.Request(
167        Index=0,
168        Type="ForgetWifi"
169    )
170    forget_wifi_response = MF_V3_Tasks_ForgetWifi.Response(
171        Index=0,
172        Type="ForgetWifi"
173    )
174    task = Task(Index=0, Type="ForgetWifi", Input=forget_wifi_request, Output=forget_wifi_response)
175    self.SendTask(task)
176    return task

Forget all wifi connections.

def list_settings(self) -> MF.V3.Task.Task:
179def list_settings(self) -> Task:
180
181    """
182     Get scanner settings.
183    """
184    list_settings_request = MF_V3_Tasks_ListSettings.Request(
185        Index=0,
186        Type="ListSettings"
187    )
188    list_settings_response = MF_V3_Tasks_ListSettings.Response(
189        Index=0,
190        Type="ListSettings"
191    )
192    task = Task(Index=0, Type="ListSettings", Input=list_settings_request, Output=list_settings_response)
193    self.SendTask(task)
194    return task

Get scanner settings.

def push_settings(self) -> MF.V3.Task.Task:
197def push_settings(self) -> Task:
198
199    """
200     Push the current scanner settings to the settings stack.
201    """
202    push_settings_request = MF_V3_Tasks_PushSettings.Request(
203        Index=0,
204        Type="PushSettings"
205    )
206    push_settings_response = MF_V3_Tasks_PushSettings.Response(
207        Index=0,
208        Type="PushSettings"
209    )
210    task = Task(Index=0, Type="PushSettings", Input=push_settings_request, Output=push_settings_response)
211    self.SendTask(task)
212    return task

Push the current scanner settings to the settings stack.

def pop_settings(self, Input: bool = None) -> MF.V3.Task.Task:
215def pop_settings(self, Input: bool = None) -> Task:
216
217    """
218      Pop and restore scanner settings from the settings stack.
219    """
220    pop_settings_request = MF_V3_Tasks_PopSettings.Request(
221        Index=0,
222        Type="PopSettings",
223        Input=Input
224    )
225    pop_settings_response = MF_V3_Tasks_PopSettings.Response(
226        Index=0,
227        Type="PopSettings"
228    )
229    task = Task(Index=0, Type="PopSettings", Input=pop_settings_request, Output=pop_settings_response)
230    self.SendTask(task)
231    return task

Pop and restore scanner settings from the settings stack.

def update_settings( self, advanced: MF.V3.Settings.Advanced.Advanced = None, camera: MF.V3.Settings.Camera.Camera = None, capture: MF.V3.Settings.Capture.Capture = None, i18n: MF.V3.Settings.I18n.I18n = None, projector: MF.V3.Settings.Projector.Projector = None, style: MF.V3.Settings.Style.Style = None, turntable: MF.V3.Settings.Turntable.Turntable = None, tutorials: MF.V3.Settings.Tutorials.Tutorials = None, viewer: MF.V3.Settings.Viewer.Viewer = None, software: MF.V3.Settings.Software.Software = None) -> MF.V3.Task.Task:
234def update_settings(self, advanced: MF_V3_Settings_Advanced_Advanced = None, camera: MF_V3_Settings_Camera_Camera = None, capture: MF_V3_Settings_Capture_Capture = None, i18n: MF_V3_Settings_I18n_I18n = None, projector: MF_V3_Settings_Projector_Projector = None, style: MF_V3_Settings_Style_Style = None, turntable: MF_V3_Settings_Turntable_Turntable = None, tutorials: MF_V3_Settings_Tutorials_Tutorials = None, viewer: MF_V3_Settings_Viewer_Viewer = None, software: MF_V3_Settings_Software_Software = None) -> Task:
235
236    """
237     Update scanner settings.
238    """
239    update_settings_request = MF_V3_Tasks_UpdateSettings.Request(
240        Index=0,
241        Type="UpdateSettings",
242        Input=MF_V3_Settings_Scanner_Scanner(
243            advanced=advanced,
244            camera=camera,
245            capture=capture,
246            i18n=i18n,
247            projector=projector,
248            style=style,
249            turntable=turntable,
250            tutorials=tutorials,
251            viewer=viewer,
252            software=software,
253        )
254    )
255    update_settings_response = MF_V3_Tasks_UpdateSettings.Response(
256        Index=0,
257        Type="UpdateSettings",
258        Input=MF_V3_Settings_Scanner_Scanner(
259            advanced=advanced,
260            camera=camera,
261            capture=capture,
262            i18n=i18n,
263            projector=projector,
264            style=style,
265            turntable=turntable,
266            tutorials=tutorials,
267            viewer=viewer,
268            software=software,
269        )
270    )
271    task = Task(Index=0, Type="UpdateSettings", Input=update_settings_request, Output=update_settings_response)
272    self.SendTask(task)
273    return task

Update scanner settings.

def list_projects(self) -> MF.V3.Task.Task:
276def list_projects(self) -> Task:
277
278    """
279     List all projects.
280    """
281    list_projects_request = MF_V3_Tasks_ListProjects.Request(
282        Index=0,
283        Type="ListProjects"
284    )
285    list_projects_response = MF_V3_Tasks_ListProjects.Response(
286        Index=0,
287        Type="ListProjects"
288    )
289    task = Task(Index=0, Type="ListProjects", Input=list_projects_request, Output=list_projects_response)
290    self.SendTask(task)
291    return task

List all projects.

def download_project(self, Input: int) -> MF.V3.Task.Task:
294def download_project(self, Input: int) -> Task:
295
296    """
297     Download a project from the scanner.
298    """
299    download_project_request = MF_V3_Tasks_DownloadProject.Request(
300        Index=0,
301        Type="DownloadProject",
302        Input=Input
303    )
304    download_project_response = MF_V3_Tasks_DownloadProject.Response(
305        Index=0,
306        Type="DownloadProject",
307        Input=Input
308    )
309    task = Task(Index=0, Type="DownloadProject", Input=download_project_request, Output=download_project_response)
310    self.SendTask(task)
311    return task

Download a project from the scanner.

def upload_project(self, buffer: bytes) -> MF.V3.Task.Task:
314def upload_project(self, buffer: bytes) -> Task:
315
316    """
317     Upload a project to the scanner.
318    """
319    upload_project_request = MF_V3_Tasks_UploadProject.Request(
320        Index=0,
321        Type="UploadProject"
322    )
323    upload_project_response = MF_V3_Tasks_UploadProject.Response(
324        Index=0,
325        Type="UploadProject"
326    )
327    task = Task(Index=0, Type="UploadProject", Input=upload_project_request, Output=upload_project_response)
328    self.SendTask(task, buffer)
329    return task

Upload a project to the scanner.

def new_project(self, Input: str = None) -> MF.V3.Task.Task:
332def new_project(self, Input: str = None) -> Task:
333
334    """
335     Create a new project.
336    """
337    new_project_request = MF_V3_Tasks_NewProject.Request(
338        Index=0,
339        Type="NewProject",
340        Input=Input
341    )
342    new_project_response = MF_V3_Tasks_NewProject.Response(
343        Index=0,
344        Type="NewProject"
345    )
346    task = Task(Index=0, Type="NewProject", Input=new_project_request, Output=new_project_response)
347    self.SendTask(task)
348    return task

Create a new project.

def open_project(self, Input: int) -> MF.V3.Task.Task:
351def open_project(self, Input: int) -> Task:
352
353    """
354     Open an existing project.
355    """
356    open_project_request = MF_V3_Tasks_OpenProject.Request(
357        Index=0,
358        Type="OpenProject",
359        Input=Input
360    )
361    open_project_response = MF_V3_Tasks_OpenProject.Response(
362        Index=0,
363        Type="OpenProject",
364        Input=Input
365    )
366    task = Task(Index=0, Type="OpenProject", Input=open_project_request, Output=open_project_response)
367    self.SendTask(task)
368    return task

Open an existing project.

def clear_settings(self) -> MF.V3.Task.Task:
371def clear_settings(self) -> Task:
372
373    """
374     Clear scanner settings and restore the default values.
375    """
376    clear_settings_request = MF_V3_Tasks_ClearSettings.Request(
377        Index=0,
378        Type="ClearSettings"
379    )
380    clear_settings_response = MF_V3_Tasks_ClearSettings.Response(
381        Index=0,
382        Type="ClearSettings"
383    )
384    task = Task(Index=0, Type="ClearSettings", Input=clear_settings_request, Output=clear_settings_response)
385    self.SendTask(task)
386    return task

Clear scanner settings and restore the default values.

def close_project(self) -> MF.V3.Task.Task:
389def close_project(self) -> Task:
390
391    """
392     Close the current open project.
393    """
394    close_project_request = MF_V3_Tasks_CloseProject.Request(
395        Index=0,
396        Type="CloseProject"
397    )
398    close_project_response = MF_V3_Tasks_CloseProject.Response(
399        Index=0,
400        Type="CloseProject"
401    )
402    task = Task(Index=0, Type="CloseProject", Input=close_project_request, Output=close_project_response)
403    self.SendTask(task)
404    return task

Close the current open project.

def copy_groups( self, sourceIndexes: List[int] = None, targetIndex: int = None, childPosition: int = None, nameSuffix: str = None, enumerate: bool = None) -> MF.V3.Task.Task:
407def copy_groups(self, sourceIndexes: List[int] = None, targetIndex: int = None, childPosition: int = None, nameSuffix: str = None, enumerate: bool = None) -> Task:
408
409    """
410     Copy a set of scan groups in the current open project.
411    """
412    copy_groups_request = MF_V3_Tasks_CopyGroups.Request(
413        Index=0,
414        Type="CopyGroups",
415        Input=MF_V3_Settings_CopyGroups_CopyGroups(
416            sourceIndexes=sourceIndexes,
417            targetIndex=targetIndex,
418            childPosition=childPosition,
419            nameSuffix=nameSuffix,
420            enumerate=enumerate,
421        )
422    )
423    copy_groups_response = MF_V3_Tasks_CopyGroups.Response(
424        Index=0,
425        Type="CopyGroups",
426        Input=MF_V3_Settings_CopyGroups_CopyGroups(
427            sourceIndexes=sourceIndexes,
428            targetIndex=targetIndex,
429            childPosition=childPosition,
430            nameSuffix=nameSuffix,
431            enumerate=enumerate,
432        ),
433        Output=None
434    )
435    task = Task(Index=0, Type="CopyGroups", Input=copy_groups_request, Output=copy_groups_response)
436    self.SendTask(task)
437    return task

Copy a set of scan groups in the current open project.

def remove_projects(self, Input: List[int] = None) -> MF.V3.Task.Task:
440def remove_projects(self, Input: List[int] = None) -> Task:
441
442    """
443     Remove selected projects.
444    """
445    remove_projects_request = MF_V3_Tasks_RemoveProjects.Request(
446        Index=0,
447        Type="RemoveProjects",
448        Input=Input
449    )
450    remove_projects_response = MF_V3_Tasks_RemoveProjects.Response(
451        Index=0,
452        Type="RemoveProjects"
453    )
454    task = Task(Index=0, Type="RemoveProjects", Input=remove_projects_request, Output=remove_projects_response)
455    self.SendTask(task)
456    return task

Remove selected projects.

def list_groups(self) -> MF.V3.Task.Task:
459def list_groups(self) -> Task:
460
461    """
462     List the scan groups in the current open project.
463    """
464    list_groups_request = MF_V3_Tasks_ListGroups.Request(
465        Index=0,
466        Type="ListGroups"
467    )
468    list_groups_response = MF_V3_Tasks_ListGroups.Response(
469        Index=0,
470        Type="ListGroups",
471        Output=None
472    )
473    task = Task(Index=0, Type="ListGroups", Input=list_groups_request, Output=list_groups_response)
474    self.SendTask(task)
475    return task

List the scan groups in the current open project.

def list_scans(self) -> MF.V3.Task.Task:
478def list_scans(self) -> Task:
479
480    """
481     List the scans in the current open project.
482    """
483    list_scans_request = MF_V3_Tasks_ListScans.Request(
484        Index=0,
485        Type="ListScans"
486    )
487    list_scans_response = MF_V3_Tasks_ListScans.Response(
488        Index=0,
489        Type="ListScans"
490    )
491    task = Task(Index=0, Type="ListScans", Input=list_scans_request, Output=list_scans_response)
492    self.SendTask(task)
493    return task

List the scans in the current open project.

def scan_data( self, index: int, mergeStep: MF.V3.Settings.ScanData.ScanData.MergeStep = None, buffers: List[MF.V3.Settings.ScanData.ScanData.Buffer] = None, metadata: List[MF.V3.Settings.ScanData.ScanData.Metadata] = None) -> MF.V3.Task.Task:
496def scan_data(self, index: int, mergeStep: MF_V3_Settings_ScanData_ScanData.MergeStep = None, buffers: List[MF_V3_Settings_ScanData_ScanData.Buffer] = None, metadata: List[MF_V3_Settings_ScanData_ScanData.Metadata] = None) -> Task:
497
498    """
499     Download the raw scan data for a scan in the current open project.
500    """
501    scan_data_request = MF_V3_Tasks_ScanData.Request(
502        Index=0,
503        Type="ScanData",
504        Input=MF_V3_Settings_ScanData_ScanData(
505            index=index,
506            mergeStep=mergeStep,
507            buffers=buffers,
508            metadata=metadata,
509        )
510    )
511    scan_data_response = MF_V3_Tasks_ScanData.Response(
512        Index=0,
513        Type="ScanData",
514        Input=MF_V3_Settings_ScanData_ScanData(
515            index=index,
516            mergeStep=mergeStep,
517            buffers=buffers,
518            metadata=metadata,
519        ),
520        Output=None
521    )
522    task = Task(Index=0, Type="ScanData", Input=scan_data_request, Output=scan_data_response)
523    self.SendTask(task)
524    return task

Download the raw scan data for a scan in the current open project.

def set_project(self, index: int = None, name: str = None) -> MF.V3.Task.Task:
527def set_project(self, index: int = None, name: str = None) -> Task:
528
529    """
530     Apply settings to the current open project.
531    """
532    set_project_request = MF_V3_Tasks_SetProject.Request(
533        Index=0,
534        Type="SetProject",
535        Input=MF_V3_Settings_Project_Project(
536            index=index,
537            name=name,
538        )
539    )
540    set_project_response = MF_V3_Tasks_SetProject.Response(
541        Index=0,
542        Type="SetProject"
543    )
544    task = Task(Index=0, Type="SetProject", Input=set_project_request, Output=set_project_response)
545    self.SendTask(task)
546    return task

Apply settings to the current open project.

def set_group( self, index: int, name: str = None, color: List[float] = None, visible: bool = None, collapsed: bool = None, rotation: List[float] = None, translation: List[float] = None) -> MF.V3.Task.Task:
549def set_group(self, index: int, name: str = None, color: List[float] = None, visible: bool = None, collapsed: bool = None, rotation: List[float] = None, translation: List[float] = None) -> Task:
550
551    """
552     Set scan group properties.
553    """
554    set_group_request = MF_V3_Tasks_SetGroup.Request(
555        Index=0,
556        Type="SetGroup",
557        Input=MF_V3_Settings_Group_Group(
558            index=index,
559            name=name,
560            color=color,
561            visible=visible,
562            collapsed=collapsed,
563            rotation=rotation,
564            translation=translation,
565        )
566    )
567    set_group_response = MF_V3_Tasks_SetGroup.Response(
568        Index=0,
569        Type="SetGroup",
570        Input=MF_V3_Settings_Group_Group(
571            index=index,
572            name=name,
573            color=color,
574            visible=visible,
575            collapsed=collapsed,
576            rotation=rotation,
577            translation=translation,
578        ),
579        Output=None
580    )
581    task = Task(Index=0, Type="SetGroup", Input=set_group_request, Output=set_group_response)
582    self.SendTask(task)
583    return task

Set scan group properties.

def new_group( self, parentIndex: int = None, baseName: str = None, color: List[float] = None, visible: bool = None, collapsed: bool = None, rotation: List[float] = None, translation: List[float] = None) -> MF.V3.Task.Task:
586def new_group(self, parentIndex: int = None, baseName: str = None, color: List[float] = None, visible: bool = None, collapsed: bool = None, rotation: List[float] = None, translation: List[float] = None) -> Task:
587
588    """
589     Create a new scan group.
590    """
591    new_group_request = MF_V3_Tasks_NewGroup.Request(
592        Index=0,
593        Type="NewGroup",
594        Input=MF_V3_Settings_NewGroup_NewGroup(
595            parentIndex=parentIndex,
596            baseName=baseName,
597            color=color,
598            visible=visible,
599            collapsed=collapsed,
600            rotation=rotation,
601            translation=translation,
602        )
603    )
604    new_group_response = MF_V3_Tasks_NewGroup.Response(
605        Index=0,
606        Type="NewGroup",
607        Output=None
608    )
609    task = Task(Index=0, Type="NewGroup", Input=new_group_request, Output=new_group_response)
610    self.SendTask(task)
611    return task

Create a new scan group.

def move_group(self, Input: List[int] = None) -> MF.V3.Task.Task:
614def move_group(self, Input: List[int] = None) -> Task:
615
616    """
617     Move a scan group.
618    """
619    move_group_request = MF_V3_Tasks_MoveGroup.Request(
620        Index=0,
621        Type="MoveGroup",
622        Input=Input
623    )
624    move_group_response = MF_V3_Tasks_MoveGroup.Response(
625        Index=0,
626        Type="MoveGroup",
627        Output=None
628    )
629    task = Task(Index=0, Type="MoveGroup", Input=move_group_request, Output=move_group_response)
630    self.SendTask(task)
631    return task

Move a scan group.

def factory_reset(self) -> MF.V3.Task.Task:
634def factory_reset(self) -> Task:
635
636    """
637     Reset the scanner to factory settings.
638    """
639    factory_reset_request = MF_V3_Tasks_FactoryReset.Request(
640        Index=0,
641        Type="FactoryReset"
642    )
643    factory_reset_response = MF_V3_Tasks_FactoryReset.Response(
644        Index=0,
645        Type="FactoryReset"
646    )
647    task = Task(Index=0, Type="FactoryReset", Input=factory_reset_request, Output=factory_reset_response)
648    self.SendTask(task)
649    return task

Reset the scanner to factory settings.

def flatten_group(self, Input: int) -> MF.V3.Task.Task:
652def flatten_group(self, Input: int) -> Task:
653
654    """
655     Flatten a scan group such that it only consists of single scans.
656    """
657    flatten_group_request = MF_V3_Tasks_FlattenGroup.Request(
658        Index=0,
659        Type="FlattenGroup",
660        Input=Input
661    )
662    flatten_group_response = MF_V3_Tasks_FlattenGroup.Response(
663        Index=0,
664        Type="FlattenGroup",
665        Input=Input,
666        Output=None
667    )
668    task = Task(Index=0, Type="FlattenGroup", Input=flatten_group_request, Output=flatten_group_response)
669    self.SendTask(task)
670    return task

Flatten a scan group such that it only consists of single scans.

def split_group(self, Input: int) -> MF.V3.Task.Task:
673def split_group(self, Input: int) -> Task:
674
675    """
676     Split a scan group (ie. move its subgroups to its parent group).
677    """
678    split_group_request = MF_V3_Tasks_SplitGroup.Request(
679        Index=0,
680        Type="SplitGroup",
681        Input=Input
682    )
683    split_group_response = MF_V3_Tasks_SplitGroup.Response(
684        Index=0,
685        Type="SplitGroup",
686        Input=Input,
687        Output=None
688    )
689    task = Task(Index=0, Type="SplitGroup", Input=split_group_request, Output=split_group_response)
690    self.SendTask(task)
691    return task

Split a scan group (ie. move its subgroups to its parent group).

def transform_group( self, index: int, name: str = None, color: List[float] = None, visible: bool = None, collapsed: bool = None, rotation: List[float] = None, translation: List[float] = None) -> MF.V3.Task.Task:
694def transform_group(self, index: int, name: str = None, color: List[float] = None, visible: bool = None, collapsed: bool = None, rotation: List[float] = None, translation: List[float] = None) -> Task:
695
696    """
697     Apply a rigid transformation to a group.
698    """
699    transform_group_request = MF_V3_Tasks_TransformGroup.Request(
700        Index=0,
701        Type="TransformGroup",
702        Input=MF_V3_Settings_Group_Group(
703            index=index,
704            name=name,
705            color=color,
706            visible=visible,
707            collapsed=collapsed,
708            rotation=rotation,
709            translation=translation,
710        )
711    )
712    transform_group_response = MF_V3_Tasks_TransformGroup.Response(
713        Index=0,
714        Type="TransformGroup",
715        Input=MF_V3_Settings_Group_Group(
716            index=index,
717            name=name,
718            color=color,
719            visible=visible,
720            collapsed=collapsed,
721            rotation=rotation,
722            translation=translation,
723        ),
724        Output=None
725    )
726    task = Task(Index=0, Type="TransformGroup", Input=transform_group_request, Output=transform_group_response)
727    self.SendTask(task)
728    return task

Apply a rigid transformation to a group.

def remove_groups(self, Input: List[int] = None) -> MF.V3.Task.Task:
731def remove_groups(self, Input: List[int] = None) -> Task:
732
733    """
734     Remove selected scan groups.
735    """
736    remove_groups_request = MF_V3_Tasks_RemoveGroups.Request(
737        Index=0,
738        Type="RemoveGroups",
739        Input=Input
740    )
741    remove_groups_response = MF_V3_Tasks_RemoveGroups.Response(
742        Index=0,
743        Type="RemoveGroups",
744        Output=None
745    )
746    task = Task(Index=0, Type="RemoveGroups", Input=remove_groups_request, Output=remove_groups_response)
747    self.SendTask(task)
748    return task

Remove selected scan groups.

def bounding_box( self, selection: MF.V3.Settings.ScanSelection.ScanSelection, axisAligned: bool) -> MF.V3.Task.Task:
751def bounding_box(self, selection: MF_V3_Settings_ScanSelection_ScanSelection, axisAligned: bool) -> Task:
752
753    """
754     Get the bounding box of a set of scan groups.
755    """
756    bounding_box_request = MF_V3_Tasks_BoundingBox.Request(
757        Index=0,
758        Type="BoundingBox",
759        Input=MF_V3_Settings_BoundingBox_BoundingBox(
760            selection=selection,
761            axisAligned=axisAligned,
762        )
763    )
764    bounding_box_response = MF_V3_Tasks_BoundingBox.Response(
765        Index=0,
766        Type="BoundingBox",
767        Input=MF_V3_Settings_BoundingBox_BoundingBox(
768            selection=selection,
769            axisAligned=axisAligned,
770        ),
771        Output=None
772    )
773    task = Task(Index=0, Type="BoundingBox", Input=bounding_box_request, Output=bounding_box_response)
774    self.SendTask(task)
775    return task

Get the bounding box of a set of scan groups.

def align( self, source: int, target: int, rough: MF.V3.Settings.Align.Align.Rough = None, fine: MF.V3.Settings.Align.Align.Fine = None) -> MF.V3.Task.Task:
778def align(self, source: int, target: int, rough: MF_V3_Settings_Align_Align.Rough = None, fine: MF_V3_Settings_Align_Align.Fine = None) -> Task:
779
780    """
781     Align two scan groups.
782    """
783    align_request = MF_V3_Tasks_Align.Request(
784        Index=0,
785        Type="Align",
786        Input=MF_V3_Settings_Align_Align(
787            source=source,
788            target=target,
789            rough=rough,
790            fine=fine,
791        )
792    )
793    align_response = MF_V3_Tasks_Align.Response(
794        Index=0,
795        Type="Align",
796        Input=MF_V3_Settings_Align_Align(
797            source=source,
798            target=target,
799            rough=rough,
800            fine=fine,
801        ),
802        Output=None
803    )
804    task = Task(Index=0, Type="Align", Input=align_request, Output=align_response)
805    self.SendTask(task)
806    return task

Align two scan groups.

def smooth( self, selection: MF.V3.Settings.ScanSelection.ScanSelection = None, taubin: MF.V3.Settings.Smooth.Smooth.Taubin = None) -> MF.V3.Task.Task:
809def smooth(self, selection: MF_V3_Settings_ScanSelection_ScanSelection = None, taubin: MF_V3_Settings_Smooth_Smooth.Taubin = None) -> Task:
810
811    """
812     Smooth a set of scans.
813    """
814    smooth_request = MF_V3_Tasks_Smooth.Request(
815        Index=0,
816        Type="Smooth",
817        Input=MF_V3_Settings_Smooth_Smooth(
818            selection=selection,
819            taubin=taubin,
820        )
821    )
822    smooth_response = MF_V3_Tasks_Smooth.Response(
823        Index=0,
824        Type="Smooth",
825        Input=MF_V3_Settings_Smooth_Smooth(
826            selection=selection,
827            taubin=taubin,
828        )
829    )
830    task = Task(Index=0, Type="Smooth", Input=smooth_request, Output=smooth_response)
831    self.SendTask(task)
832    return task

Smooth a set of scans.

def heat_map( self, sources: List[int] = None, targets: List[int] = None, outlierDistance: float = None) -> MF.V3.Task.Task:
835def heat_map(self, sources: List[int] = None, targets: List[int] = None, outlierDistance: float = None) -> Task:
836
837    """
838     Compute the point-to-mesh distances of a source mesh to a target mesh and visualize as a heat map.
839    """
840    heat_map_request = MF_V3_Tasks_HeatMap.Request(
841        Index=0,
842        Type="HeatMap",
843        Input=MF_V3_Settings_HeatMap_HeatMap(
844            sources=sources,
845            targets=targets,
846            outlierDistance=outlierDistance,
847        )
848    )
849    heat_map_response = MF_V3_Tasks_HeatMap.Response(
850        Index=0,
851        Type="HeatMap",
852        Input=MF_V3_Settings_HeatMap_HeatMap(
853            sources=sources,
854            targets=targets,
855            outlierDistance=outlierDistance,
856        ),
857        Output=None
858    )
859    task = Task(Index=0, Type="HeatMap", Input=heat_map_request, Output=heat_map_response)
860    self.SendTask(task)
861    return task

Compute the point-to-mesh distances of a source mesh to a target mesh and visualize as a heat map.

def merge( self, selection: MF.V3.Settings.ScanSelection.ScanSelection = None, remesh: MF.V3.Settings.Merge.Merge.Remesh = None, simplify: MF.V3.Settings.Merge.Merge.Simplify = None, texturize: bool = None) -> MF.V3.Task.Task:
864def merge(self, selection: MF_V3_Settings_ScanSelection_ScanSelection = None, remesh: MF_V3_Settings_Merge_Merge.Remesh = None, simplify: MF_V3_Settings_Merge_Merge.Simplify = None, texturize: bool = None) -> Task:
865
866    """
867     Merge two or more scan groups.
868    """
869    merge_request = MF_V3_Tasks_Merge.Request(
870        Index=0,
871        Type="Merge",
872        Input=MF_V3_Settings_Merge_Merge(
873            selection=selection,
874            remesh=remesh,
875            simplify=simplify,
876            texturize=texturize,
877        )
878    )
879    merge_response = MF_V3_Tasks_Merge.Response(
880        Index=0,
881        Type="Merge",
882        Input=MF_V3_Settings_Merge_Merge(
883            selection=selection,
884            remesh=remesh,
885            simplify=simplify,
886            texturize=texturize,
887        ),
888        Output=None
889    )
890    task = Task(Index=0, Type="Merge", Input=merge_request, Output=merge_response)
891    self.SendTask(task)
892    return task

Merge two or more scan groups.

def merge_data( self, index: int, mergeStep: MF.V3.Settings.ScanData.ScanData.MergeStep = None, buffers: List[MF.V3.Settings.ScanData.ScanData.Buffer] = None, metadata: List[MF.V3.Settings.ScanData.ScanData.Metadata] = None) -> MF.V3.Task.Task:
895def merge_data(self, index: int, mergeStep: MF_V3_Settings_ScanData_ScanData.MergeStep = None, buffers: List[MF_V3_Settings_ScanData_ScanData.Buffer] = None, metadata: List[MF_V3_Settings_ScanData_ScanData.Metadata] = None) -> Task:
896
897    """
898     Download the raw scan data for the current merge process.
899    """
900    merge_data_request = MF_V3_Tasks_MergeData.Request(
901        Index=0,
902        Type="MergeData",
903        Input=MF_V3_Settings_ScanData_ScanData(
904            index=index,
905            mergeStep=mergeStep,
906            buffers=buffers,
907            metadata=metadata,
908        )
909    )
910    merge_data_response = MF_V3_Tasks_MergeData.Response(
911        Index=0,
912        Type="MergeData",
913        Input=MF_V3_Settings_ScanData_ScanData(
914            index=index,
915            mergeStep=mergeStep,
916            buffers=buffers,
917            metadata=metadata,
918        ),
919        Output=None
920    )
921    task = Task(Index=0, Type="MergeData", Input=merge_data_request, Output=merge_data_response)
922    self.SendTask(task)
923    return task

Download the raw scan data for the current merge process.

def add_merge_to_project(self) -> MF.V3.Task.Task:
926def add_merge_to_project(self) -> Task:
927
928    """
929     Add a merged scan to the current project.
930    """
931    add_merge_to_project_request = MF_V3_Tasks_AddMergeToProject.Request(
932        Index=0,
933        Type="AddMergeToProject"
934    )
935    add_merge_to_project_response = MF_V3_Tasks_AddMergeToProject.Response(
936        Index=0,
937        Type="AddMergeToProject",
938        Output=None
939    )
940    task = Task(Index=0, Type="AddMergeToProject", Input=add_merge_to_project_request, Output=add_merge_to_project_response)
941    self.SendTask(task)
942    return task

Add a merged scan to the current project.

def import_file( self, name: str = None, scale: float = None, unit: MF.V3.Settings.Import.Import.Unit = None, center: bool = None, groupIndex: int = None) -> MF.V3.Task.Task:
945def import_file(self, name: str = None, scale: float = None, unit: MF_V3_Settings_Import_Import.Unit = None, center: bool = None, groupIndex: int = None) -> Task:
946
947    """
948     Import a set of 3D meshes to the current open project.  The meshes must be archived in a ZIP file.
949    """
950    import_file_request = MF_V3_Tasks_Import.Request(
951        Index=0,
952        Type="Import",
953        Input=MF_V3_Settings_Import_Import(
954            name=name,
955            scale=scale,
956            unit=unit,
957            center=center,
958            groupIndex=groupIndex,
959        )
960    )
961    import_file_response = MF_V3_Tasks_Import.Response(
962        Index=0,
963        Type="Import"
964    )
965    task = Task(Index=0, Type="Import", Input=import_file_request, Output=import_file_response)
966    self.SendTask(task)
967    return task

Import a set of 3D meshes to the current open project. The meshes must be archived in a ZIP file.

def list_export_formats(self) -> MF.V3.Task.Task:
970def list_export_formats(self) -> Task:
971
972    """
973     List all export formats.
974    """
975    list_export_formats_request = MF_V3_Tasks_ListExportFormats.Request(
976        Index=0,
977        Type="ListExportFormats"
978    )
979    list_export_formats_response = MF_V3_Tasks_ListExportFormats.Response(
980        Index=0,
981        Type="ListExportFormats"
982    )
983    task = Task(Index=0, Type="ListExportFormats", Input=list_export_formats_request, Output=list_export_formats_response)
984    self.SendTask(task)
985    return task

List all export formats.

def export( self, selection: MF.V3.Settings.ScanSelection.ScanSelection = None, texture: bool = None, merge: bool = None, format: MF.V3.Settings.Export.Export.Format = None, scale: float = None, color: MF.V3.Settings.Export.Export.Color = None) -> MF.V3.Task.Task:
 988def export(self, selection: MF_V3_Settings_ScanSelection_ScanSelection = None, texture: bool = None, merge: bool = None, format: MF_V3_Settings_Export_Export.Format = None, scale: float = None, color: MF_V3_Settings_Export_Export.Color = None) -> Task:
 989
 990    """
 991     Export a group of scans.
 992    """
 993    export_request = MF_V3_Tasks_Export.Request(
 994        Index=0,
 995        Type="Export",
 996        Input=MF_V3_Settings_Export_Export(
 997            selection=selection,
 998            texture=texture,
 999            merge=merge,
1000            format=format,
1001            scale=scale,
1002            color=color,
1003        )
1004    )
1005    export_response = MF_V3_Tasks_Export.Response(
1006        Index=0,
1007        Type="Export",
1008        Input=MF_V3_Settings_Export_Export(
1009            selection=selection,
1010            texture=texture,
1011            merge=merge,
1012            format=format,
1013            scale=scale,
1014            color=color,
1015        )
1016    )
1017    task = Task(Index=0, Type="Export", Input=export_request, Output=export_response)
1018    self.SendTask(task)
1019    return task

Export a group of scans.

def export_heat_map( self, selection: MF.V3.Settings.ScanSelection.ScanSelection = None, texture: bool = None, merge: bool = None, format: MF.V3.Settings.Export.Export.Format = None, scale: float = None, color: MF.V3.Settings.Export.Export.Color = None) -> MF.V3.Task.Task:
1022def export_heat_map(self, selection: MF_V3_Settings_ScanSelection_ScanSelection = None, texture: bool = None, merge: bool = None, format: MF_V3_Settings_Export_Export.Format = None, scale: float = None, color: MF_V3_Settings_Export_Export.Color = None) -> Task:
1023
1024    """
1025     Export a mesh with vertex colors generated by the 'HeatMap' task.
1026    """
1027    export_heat_map_request = MF_V3_Tasks_ExportHeatMap.Request(
1028        Index=0,
1029        Type="ExportHeatMap",
1030        Input=MF_V3_Settings_Export_Export(
1031            selection=selection,
1032            texture=texture,
1033            merge=merge,
1034            format=format,
1035            scale=scale,
1036            color=color,
1037        )
1038    )
1039    export_heat_map_response = MF_V3_Tasks_ExportHeatMap.Response(
1040        Index=0,
1041        Type="ExportHeatMap",
1042        Input=MF_V3_Settings_Export_Export(
1043            selection=selection,
1044            texture=texture,
1045            merge=merge,
1046            format=format,
1047            scale=scale,
1048            color=color,
1049        )
1050    )
1051    task = Task(Index=0, Type="ExportHeatMap", Input=export_heat_map_request, Output=export_heat_map_response)
1052    self.SendTask(task)
1053    return task

Export a mesh with vertex colors generated by the 'HeatMap' task.

def export_merge( self, selection: MF.V3.Settings.ScanSelection.ScanSelection = None, texture: bool = None, merge: bool = None, format: MF.V3.Settings.Export.Export.Format = None, scale: float = None, color: MF.V3.Settings.Export.Export.Color = None) -> MF.V3.Task.Task:
1056def export_merge(self, selection: MF_V3_Settings_ScanSelection_ScanSelection = None, texture: bool = None, merge: bool = None, format: MF_V3_Settings_Export_Export.Format = None, scale: float = None, color: MF_V3_Settings_Export_Export.Color = None) -> Task:
1057
1058    """
1059     Export a merged scan.
1060    """
1061    export_merge_request = MF_V3_Tasks_ExportMerge.Request(
1062        Index=0,
1063        Type="ExportMerge",
1064        Input=MF_V3_Settings_Export_Export(
1065            selection=selection,
1066            texture=texture,
1067            merge=merge,
1068            format=format,
1069            scale=scale,
1070            color=color,
1071        )
1072    )
1073    export_merge_response = MF_V3_Tasks_ExportMerge.Response(
1074        Index=0,
1075        Type="ExportMerge",
1076        Input=MF_V3_Settings_Export_Export(
1077            selection=selection,
1078            texture=texture,
1079            merge=merge,
1080            format=format,
1081            scale=scale,
1082            color=color,
1083        )
1084    )
1085    task = Task(Index=0, Type="ExportMerge", Input=export_merge_request, Output=export_merge_response)
1086    self.SendTask(task)
1087    return task

Export a merged scan.

def export_logs(self, Input: bool = None) -> MF.V3.Task.Task:
1090def export_logs(self, Input: bool = None) -> Task:
1091
1092    """
1093     Export scanner logs.
1094    """
1095    export_logs_request = MF_V3_Tasks_ExportLogs.Request(
1096        Index=0,
1097        Type="ExportLogs",
1098        Input=Input
1099    )
1100    export_logs_response = MF_V3_Tasks_ExportLogs.Response(
1101        Index=0,
1102        Type="ExportLogs"
1103    )
1104    task = Task(Index=0, Type="ExportLogs", Input=export_logs_request, Output=export_logs_response)
1105    self.SendTask(task)
1106    return task

Export scanner logs.

def export_factory_calibration_logs(self) -> MF.V3.Task.Task:
1109def export_factory_calibration_logs(self) -> Task:
1110
1111    """
1112     Export factory calibration logs.
1113    """
1114    export_factory_calibration_logs_request = MF_V3_Tasks_ExportFactoryCalibrationLogs.Request(
1115        Index=0,
1116        Type="ExportFactoryCalibrationLogs"
1117    )
1118    export_factory_calibration_logs_response = MF_V3_Tasks_ExportFactoryCalibrationLogs.Response(
1119        Index=0,
1120        Type="ExportFactoryCalibrationLogs"
1121    )
1122    task = Task(Index=0, Type="ExportFactoryCalibrationLogs", Input=export_factory_calibration_logs_request, Output=export_factory_calibration_logs_response)
1123    self.SendTask(task)
1124    return task

Export factory calibration logs.

def has_cameras(self) -> MF.V3.Task.Task:
1127def has_cameras(self) -> Task:
1128
1129    """
1130     Check if the scanner has working cameras.
1131    """
1132    has_cameras_request = MF_V3_Tasks_HasCameras.Request(
1133        Index=0,
1134        Type="HasCameras"
1135    )
1136    has_cameras_response = MF_V3_Tasks_HasCameras.Response(
1137        Index=0,
1138        Type="HasCameras"
1139    )
1140    task = Task(Index=0, Type="HasCameras", Input=has_cameras_request, Output=has_cameras_response)
1141    self.SendTask(task)
1142    return task

Check if the scanner has working cameras.

def has_projector(self) -> MF.V3.Task.Task:
1145def has_projector(self) -> Task:
1146
1147    """
1148     Check if the scanner has a working projector.
1149    """
1150    has_projector_request = MF_V3_Tasks_HasProjector.Request(
1151        Index=0,
1152        Type="HasProjector"
1153    )
1154    has_projector_response = MF_V3_Tasks_HasProjector.Response(
1155        Index=0,
1156        Type="HasProjector"
1157    )
1158    task = Task(Index=0, Type="HasProjector", Input=has_projector_request, Output=has_projector_response)
1159    self.SendTask(task)
1160    return task

Check if the scanner has a working projector.

def has_turntable(self) -> MF.V3.Task.Task:
1163def has_turntable(self) -> Task:
1164
1165    """
1166     Check if the scanner is connected to a working turntable.
1167    """
1168    has_turntable_request = MF_V3_Tasks_HasTurntable.Request(
1169        Index=0,
1170        Type="HasTurntable"
1171    )
1172    has_turntable_response = MF_V3_Tasks_HasTurntable.Response(
1173        Index=0,
1174        Type="HasTurntable"
1175    )
1176    task = Task(Index=0, Type="HasTurntable", Input=has_turntable_request, Output=has_turntable_response)
1177    self.SendTask(task)
1178    return task

Check if the scanner is connected to a working turntable.

def system_info( self, updateMajor: bool = None, updateNightly: bool = None) -> MF.V3.Task.Task:
1181def system_info(self, updateMajor: bool = None, updateNightly: bool = None) -> Task:
1182
1183    """
1184     Get system information.
1185    """
1186    system_info_request = MF_V3_Tasks_SystemInfo.Request(
1187        Index=0,
1188        Type="SystemInfo",
1189        Input=MF_V3_Settings_Software_Software(
1190            updateMajor=updateMajor,
1191            updateNightly=updateNightly,
1192        )
1193    )
1194    system_info_response = MF_V3_Tasks_SystemInfo.Response(
1195        Index=0,
1196        Type="SystemInfo",
1197        Output=None
1198    )
1199    task = Task(Index=0, Type="SystemInfo", Input=system_info_request, Output=system_info_response)
1200    self.SendTask(task)
1201    return task

Get system information.

def camera_calibration(self) -> MF.V3.Task.Task:
1204def camera_calibration(self) -> Task:
1205
1206    """
1207     Get the camera calibration descriptor.
1208    """
1209    camera_calibration_request = MF_V3_Tasks_CameraCalibration.Request(
1210        Index=0,
1211        Type="CameraCalibration"
1212    )
1213    camera_calibration_response = MF_V3_Tasks_CameraCalibration.Response(
1214        Index=0,
1215        Type="CameraCalibration"
1216    )
1217    task = Task(Index=0, Type="CameraCalibration", Input=camera_calibration_request, Output=camera_calibration_response)
1218    self.SendTask(task)
1219    return task

Get the camera calibration descriptor.

def turntable_calibration(self) -> MF.V3.Task.Task:
1222def turntable_calibration(self) -> Task:
1223
1224    """
1225     Get the turntable calibration descriptor.
1226    """
1227    turntable_calibration_request = MF_V3_Tasks_TurntableCalibration.Request(
1228        Index=0,
1229        Type="TurntableCalibration"
1230    )
1231    turntable_calibration_response = MF_V3_Tasks_TurntableCalibration.Response(
1232        Index=0,
1233        Type="TurntableCalibration"
1234    )
1235    task = Task(Index=0, Type="TurntableCalibration", Input=turntable_calibration_request, Output=turntable_calibration_response)
1236    self.SendTask(task)
1237    return task

Get the turntable calibration descriptor.

def calibration_capture_targets(self) -> MF.V3.Task.Task:
1240def calibration_capture_targets(self) -> Task:
1241
1242    """
1243     Get the calibration capture target for each camera calibration capture.
1244    """
1245    calibration_capture_targets_request = MF_V3_Tasks_CalibrationCaptureTargets.Request(
1246        Index=0,
1247        Type="CalibrationCaptureTargets"
1248    )
1249    calibration_capture_targets_response = MF_V3_Tasks_CalibrationCaptureTargets.Response(
1250        Index=0,
1251        Type="CalibrationCaptureTargets"
1252    )
1253    task = Task(Index=0, Type="CalibrationCaptureTargets", Input=calibration_capture_targets_request, Output=calibration_capture_targets_response)
1254    self.SendTask(task)
1255    return task

Get the calibration capture target for each camera calibration capture.

def calibrate_cameras(self) -> MF.V3.Task.Task:
1258def calibrate_cameras(self) -> Task:
1259
1260    """
1261     Calibrate the cameras.
1262    """
1263    calibrate_cameras_request = MF_V3_Tasks_CalibrateCameras.Request(
1264        Index=0,
1265        Type="CalibrateCameras"
1266    )
1267    calibrate_cameras_response = MF_V3_Tasks_CalibrateCameras.Response(
1268        Index=0,
1269        Type="CalibrateCameras"
1270    )
1271    task = Task(Index=0, Type="CalibrateCameras", Input=calibrate_cameras_request, Output=calibrate_cameras_response)
1272    self.SendTask(task)
1273    return task

Calibrate the cameras.

def calibrate_turntable(self) -> MF.V3.Task.Task:
1276def calibrate_turntable(self) -> Task:
1277
1278    """
1279     Calibrate the turntable.
1280    """
1281    calibrate_turntable_request = MF_V3_Tasks_CalibrateTurntable.Request(
1282        Index=0,
1283        Type="CalibrateTurntable"
1284    )
1285    calibrate_turntable_response = MF_V3_Tasks_CalibrateTurntable.Response(
1286        Index=0,
1287        Type="CalibrateTurntable"
1288    )
1289    task = Task(Index=0, Type="CalibrateTurntable", Input=calibrate_turntable_request, Output=calibrate_turntable_response)
1290    self.SendTask(task)
1291    return task

Calibrate the turntable.

def detect_calibration_card(self, Input: int) -> MF.V3.Task.Task:
1294def detect_calibration_card(self, Input: int) -> Task:
1295
1296    """
1297     Detect the calibration card on one or both cameras.
1298    """
1299    detect_calibration_card_request = MF_V3_Tasks_DetectCalibrationCard.Request(
1300        Index=0,
1301        Type="DetectCalibrationCard",
1302        Input=Input
1303    )
1304    detect_calibration_card_response = MF_V3_Tasks_DetectCalibrationCard.Response(
1305        Index=0,
1306        Type="DetectCalibrationCard",
1307        Input=Input
1308    )
1309    task = Task(Index=0, Type="DetectCalibrationCard", Input=detect_calibration_card_request, Output=detect_calibration_card_response)
1310    self.SendTask(task)
1311    return task

Detect the calibration card on one or both cameras.

def restore_factory_calibration(self) -> MF.V3.Task.Task:
1314def restore_factory_calibration(self) -> Task:
1315
1316    """
1317     Restore factory calibration.
1318    """
1319    restore_factory_calibration_request = MF_V3_Tasks_RestoreFactoryCalibration.Request(
1320        Index=0,
1321        Type="RestoreFactoryCalibration"
1322    )
1323    restore_factory_calibration_response = MF_V3_Tasks_RestoreFactoryCalibration.Response(
1324        Index=0,
1325        Type="RestoreFactoryCalibration"
1326    )
1327    task = Task(Index=0, Type="RestoreFactoryCalibration", Input=restore_factory_calibration_request, Output=restore_factory_calibration_response)
1328    self.SendTask(task)
1329    return task

Restore factory calibration.

def start_video(self) -> MF.V3.Task.Task:
1332def start_video(self) -> Task:
1333
1334    """
1335     Start the video stream.
1336    """
1337    start_video_request = MF_V3_Tasks_StartVideo.Request(
1338        Index=0,
1339        Type="StartVideo"
1340    )
1341    start_video_response = MF_V3_Tasks_StartVideo.Response(
1342        Index=0,
1343        Type="StartVideo"
1344    )
1345    task = Task(Index=0, Type="StartVideo", Input=start_video_request, Output=start_video_response)
1346    self.SendTask(task)
1347    return task

Start the video stream.

def stop_video(self) -> MF.V3.Task.Task:
1350def stop_video(self) -> Task:
1351
1352    """
1353     Stop the video stream.
1354    """
1355    stop_video_request = MF_V3_Tasks_StopVideo.Request(
1356        Index=0,
1357        Type="StopVideo"
1358    )
1359    stop_video_response = MF_V3_Tasks_StopVideo.Response(
1360        Index=0,
1361        Type="StopVideo"
1362    )
1363    task = Task(Index=0, Type="StopVideo", Input=stop_video_request, Output=stop_video_response)
1364    self.SendTask(task)
1365    return task

Stop the video stream.

def set_cameras( self, selection: List[int] = None, autoExposure: bool = None, exposure: int = None, analogGain: float = None, digitalGain: int = None, focus: int = None) -> MF.V3.Task.Task:
1368def set_cameras(self, selection: List[int] = None, autoExposure: bool = None, exposure: int = None, analogGain: float = None, digitalGain: int = None, focus: int = None) -> Task:
1369
1370    """
1371     Apply camera settings to one or both cameras.
1372    """
1373    set_cameras_request = MF_V3_Tasks_SetCameras.Request(
1374        Index=0,
1375        Type="SetCameras",
1376        Input=MF_V3_Settings_Camera_Camera(
1377            selection=selection,
1378            autoExposure=autoExposure,
1379            exposure=exposure,
1380            analogGain=analogGain,
1381            digitalGain=digitalGain,
1382            focus=focus,
1383        )
1384    )
1385    set_cameras_response = MF_V3_Tasks_SetCameras.Response(
1386        Index=0,
1387        Type="SetCameras"
1388    )
1389    task = Task(Index=0, Type="SetCameras", Input=set_cameras_request, Output=set_cameras_response)
1390    self.SendTask(task)
1391    return task

Apply camera settings to one or both cameras.

def set_projector( self, on: bool = None, brightness: float = None, pattern: MF.V3.Settings.Projector.Projector.Pattern = None, image: MF.V3.Settings.Projector.Projector.Image = None, color: List[float] = None, buffer: bytes = None) -> MF.V3.Task.Task:
1394def set_projector(self, on: bool = None, brightness: float = None, pattern: MF_V3_Settings_Projector_Projector.Pattern = None, image: MF_V3_Settings_Projector_Projector.Image = None, color: List[float] = None, buffer: bytes = None) -> Task:
1395
1396    """
1397     Apply projector settings.
1398    """
1399    set_projector_request = MF_V3_Tasks_SetProjector.Request(
1400        Index=0,
1401        Type="SetProjector",
1402        Input=MF_V3_Settings_Projector_Projector(
1403            on=on,
1404            brightness=brightness,
1405            pattern=pattern,
1406            image=image,
1407            color=color,
1408        )
1409    )
1410    set_projector_response = MF_V3_Tasks_SetProjector.Response(
1411        Index=0,
1412        Type="SetProjector"
1413    )
1414    task = Task(Index=0, Type="SetProjector", Input=set_projector_request, Output=set_projector_response)
1415    self.SendTask(task, buffer)
1416    return task

Apply projector settings.

def auto_focus( self, applyAll: bool, cameras: List[MF.V3.Settings.AutoFocus.AutoFocus.Camera] = None) -> MF.V3.Task.Task:
1419def auto_focus(self, applyAll: bool, cameras: List[MF_V3_Settings_AutoFocus_AutoFocus.Camera] = None) -> Task:
1420
1421    """
1422     Auto focus one or both cameras.
1423    """
1424    auto_focus_request = MF_V3_Tasks_AutoFocus.Request(
1425        Index=0,
1426        Type="AutoFocus",
1427        Input=MF_V3_Settings_AutoFocus_AutoFocus(
1428            applyAll=applyAll,
1429            cameras=cameras,
1430        )
1431    )
1432    auto_focus_response = MF_V3_Tasks_AutoFocus.Response(
1433        Index=0,
1434        Type="AutoFocus"
1435    )
1436    task = Task(Index=0, Type="AutoFocus", Input=auto_focus_request, Output=auto_focus_response)
1437    self.SendTask(task)
1438    return task

Auto focus one or both cameras.

def rotate_turntable(self, Input: int) -> MF.V3.Task.Task:
1441def rotate_turntable(self, Input: int) -> Task:
1442
1443    """
1444     Rotate the turntable.
1445    """
1446    rotate_turntable_request = MF_V3_Tasks_RotateTurntable.Request(
1447        Index=0,
1448        Type="RotateTurntable",
1449        Input=Input
1450    )
1451    rotate_turntable_response = MF_V3_Tasks_RotateTurntable.Response(
1452        Index=0,
1453        Type="RotateTurntable",
1454        Input=Input
1455    )
1456    task = Task(Index=0, Type="RotateTurntable", Input=rotate_turntable_request, Output=rotate_turntable_response)
1457    self.SendTask(task)
1458    return task

Rotate the turntable.

def new_scan( self, camera: MF.V3.Settings.Camera.Camera = None, projector: MF.V3.Settings.Projector.Projector = None, turntable: MF.V3.Settings.Turntable.Turntable = None, capture: MF.V3.Settings.Capture.Capture = None, processing: MF.V3.Settings.Scan.Scan.Processing = None, alignWithScanner: bool = None, centerAtOrigin: bool = None) -> MF.V3.Task.Task:
1461def new_scan(self, camera: MF_V3_Settings_Camera_Camera = None, projector: MF_V3_Settings_Projector_Projector = None, turntable: MF_V3_Settings_Turntable_Turntable = None, capture: MF_V3_Settings_Capture_Capture = None, processing: MF_V3_Settings_Scan_Scan.Processing = None, alignWithScanner: bool = None, centerAtOrigin: bool = None) -> Task:
1462
1463    """
1464     Capture a new scan.
1465    """
1466    new_scan_request = MF_V3_Tasks_NewScan.Request(
1467        Index=0,
1468        Type="NewScan",
1469        Input=MF_V3_Settings_Scan_Scan(
1470            camera=camera,
1471            projector=projector,
1472            turntable=turntable,
1473            capture=capture,
1474            processing=processing,
1475            alignWithScanner=alignWithScanner,
1476            centerAtOrigin=centerAtOrigin,
1477        )
1478    )
1479    new_scan_response = MF_V3_Tasks_NewScan.Response(
1480        Index=0,
1481        Type="NewScan"
1482    )
1483    task = Task(Index=0, Type="NewScan", Input=new_scan_request, Output=new_scan_response)
1484    self.SendTask(task)
1485    return task

Capture a new scan.

def capture_image( self, selection: List[int] = None, codec: MF.V3.Settings.CaptureImage.CaptureImage.Codec = None, grayscale: bool = None) -> MF.V3.Task.Task:
1488def capture_image(self, selection: List[int] = None, codec: MF_V3_Settings_CaptureImage_CaptureImage.Codec = None, grayscale: bool = None) -> Task:
1489
1490    """
1491     Capture a single Image.
1492    """
1493    capture_image_request = MF_V3_Tasks_CaptureImage.Request(
1494        Index=0,
1495        Type="CaptureImage",
1496        Input=MF_V3_Settings_CaptureImage_CaptureImage(
1497            selection=selection,
1498            codec=codec,
1499            grayscale=grayscale,
1500        )
1501    )
1502    capture_image_response = MF_V3_Tasks_CaptureImage.Response(
1503        Index=0,
1504        Type="CaptureImage",
1505        Input=MF_V3_Settings_CaptureImage_CaptureImage(
1506            selection=selection,
1507            codec=codec,
1508            grayscale=grayscale,
1509        )
1510    )
1511    task = Task(Index=0, Type="CaptureImage", Input=capture_image_request, Output=capture_image_response)
1512    self.SendTask(task)
1513    return task

Capture a single Image.

def depth_map( self, camera: MF.V3.Settings.Camera.Camera = None, projector: MF.V3.Settings.Projector.Projector = None, turntable: MF.V3.Settings.Turntable.Turntable = None, capture: MF.V3.Settings.Capture.Capture = None, processing: MF.V3.Settings.Scan.Scan.Processing = None, alignWithScanner: bool = None, centerAtOrigin: bool = None) -> MF.V3.Task.Task:
1516def depth_map(self, camera: MF_V3_Settings_Camera_Camera = None, projector: MF_V3_Settings_Projector_Projector = None, turntable: MF_V3_Settings_Turntable_Turntable = None, capture: MF_V3_Settings_Capture_Capture = None, processing: MF_V3_Settings_Scan_Scan.Processing = None, alignWithScanner: bool = None, centerAtOrigin: bool = None) -> Task:
1517
1518    """
1519     Capture a depth map.
1520    """
1521    depth_map_request = MF_V3_Tasks_DepthMap.Request(
1522        Index=0,
1523        Type="DepthMap",
1524        Input=MF_V3_Settings_Scan_Scan(
1525            camera=camera,
1526            projector=projector,
1527            turntable=turntable,
1528            capture=capture,
1529            processing=processing,
1530            alignWithScanner=alignWithScanner,
1531            centerAtOrigin=centerAtOrigin,
1532        )
1533    )
1534    depth_map_response = MF_V3_Tasks_DepthMap.Response(
1535        Index=0,
1536        Type="DepthMap"
1537    )
1538    task = Task(Index=0, Type="DepthMap", Input=depth_map_request, Output=depth_map_response)
1539    self.SendTask(task)
1540    return task

Capture a depth map.

def reboot(self) -> MF.V3.Task.Task:
1543def reboot(self) -> Task:
1544
1545    """
1546     Reboot the scanner.
1547    """
1548    reboot_request = MF_V3_Tasks_Reboot.Request(
1549        Index=0,
1550        Type="Reboot"
1551    )
1552    reboot_response = MF_V3_Tasks_Reboot.Response(
1553        Index=0,
1554        Type="Reboot"
1555    )
1556    task = Task(Index=0, Type="Reboot", Input=reboot_request, Output=reboot_response)
1557    self.SendTask(task)
1558    return task

Reboot the scanner.

def shutdown(self) -> MF.V3.Task.Task:
1561def shutdown(self) -> Task:
1562
1563    """
1564     Shutdown the scanner.
1565    """
1566    shutdown_request = MF_V3_Tasks_Shutdown.Request(
1567        Index=0,
1568        Type="Shutdown"
1569    )
1570    shutdown_response = MF_V3_Tasks_Shutdown.Response(
1571        Index=0,
1572        Type="Shutdown"
1573    )
1574    task = Task(Index=0, Type="Shutdown", Input=shutdown_request, Output=shutdown_response)
1575    self.SendTask(task)
1576    return task

Shutdown the scanner.