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()