Share

Script33_CameraControl.lua

-- Lua example for Autodesk Netfabb 2021.0

-- Demonstrates setting camera to built-in perspectives
-- and generating a screenshot

Dialog = application:createdialog()
Dialog.caption = "Set camera"
Dialog.translatecaption = false

Groupbox = Dialog:addgroupbox()
Groupbox.caption = "Orientation"
Groupbox.translate = false

Orientation = Groupbox:adddropdown()
Orientation:additem("Front" , 1, 1, false)
Orientation:additem("Back"  , 2, 2, false)
Orientation:additem("Left"  , 3, 3, false)
Orientation:additem("Right" , 4, 4, false)
Orientation:additem("Top"   , 5, 5, false)
Orientation:additem("Bottom", 6, 6, false)
Orientation:additem("Iso"   , 7, 7, false)

ButtonOrient = Groupbox:addbutton()
ButtonOrient.caption = "Change orientation"
ButtonOrient.translate = false
ButtonOrient.onclick = "change_orientation"

Groupbox = Dialog:addgroupbox()
Groupbox.caption = "Zoom to"
Groupbox.translate = false

ZoomTo = Groupbox:adddropdown()
ZoomTo.caption = "Zoom to"
ZoomTo:additem("Everything", 1, 1, false)
ZoomTo:additem("Platform"  , 2, 2, false)
ZoomTo:additem("All parts" , 3, 3, false)
ZoomTo:additem("Selected"  , 4, 4, false)
ZoomTo:additem("Home"      , 5, 5, false)

ButtonZoom = Groupbox:addbutton()
ButtonZoom.caption = "Zoom to"
ButtonZoom.translate = false
ButtonZoom.onclick = "zoom_to"

Splitter = Dialog:addsplitter()
Splitter:settoleft()

ButtonScreenshot = Splitter:addbutton()
ButtonScreenshot.caption = "Take screenshot"
ButtonScreenshot.translate = false
ButtonScreenshot.onclick = "save_screenshot"

Splitter:settoright()
button = Splitter:addbutton()
button.caption = "Cancel"
button.translate = false
button.onclick = "DoCancel"

function DoCancel()
    if Dialog ~= nil then
        Dialog:close(false)
    end
end

function change_orientation()
  if Orientation.selecteditem == 1 then
    system:setcameraorientation(cameraFront)
  elseif Orientation.selecteditem == 2 then
    system:setcameraorientation(cameraBack)
  elseif Orientation.selecteditem == 3 then
    system:setcameraorientation(cameraLeft)
  elseif Orientation.selecteditem == 4 then
    system:setcameraorientation(cameraRight)
  elseif Orientation.selecteditem == 5 then
    system:setcameraorientation(cameraTop)
  elseif Orientation.selecteditem == 6 then
    system:setcameraorientation(cameraBottom)
  elseif Orientation.selecteditem == 7 then
    system:setcameraorientation(cameraIso)
  end
end

function zoom_to()
  if ZoomTo.selecteditem == 1 then
    system:zoomto(zoomtoEverything)
  elseif ZoomTo.selecteditem == 2 then
    system:zoomto(zoomtoPlatform)
  elseif ZoomTo.selecteditem == 3 then
    system:zoomto(zoomtoAllparts)
  elseif ZoomTo.selecteditem == 4 then
    system:zoomto(zoomtoSelected)
  elseif ZoomTo.selecteditem == 5 then
    system:zoomto(zoomtoHome)
  end
end

function save_screenshot()
  local FileName = system:showsavedialog("png")

  if FileName ~= "" then
    change_orientation()
    zoom_to()

    local Options = system:createjson()
    Options:loadfromstring("{\"show_horizontalruler\":false,\"show_coordsystem\":false,\"show_verticalruler\":false}")
    local AImage = system:createscreenshot(1920, 1080, Options)
    AImage:saveto(FileName)
  end
end

Dialog:show()

Was this information helpful?