Share

Script34_clipping.lua

-- Lua example for Autodesk Netfabb 2021.0

-- Demonstrates clip plane control

BoundingBox = tray.outbox

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

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

Axis = Groupbox:adddropdown()
Axis.caption = "Axis"
Axis.translate = false
Axis.captionwidth = 100
Axis:additem("X", 0, 0, false)
Axis:additem("Y", 1, 1, false)
Axis:additem("Z", 2, 2, false)
Axis.onchange = "scrollbar_change"

HalfSpace = Groupbox:adddropdown()
HalfSpace.caption = "Halfspace"
HalfSpace.translate = false
HalfSpace.captionwidth = 100
HalfSpace:additem("None", 0, 0, false)
HalfSpace:additem("Both", 1, 1, false)
HalfSpace:additem("Positive", 2, 2, false)
HalfSpace:additem("Negative", 3, 3, false)
HalfSpace.onchange = "scrollbar_change"

Contour = Groupbox:addcheckbox()
Contour.caption = "Contour enabled"
Contour.translate = false

Space = Groupbox:adddropdown()
Space.caption = "Space"
Space.translate = false
Space.captionwidth = 100
Space:additem("Model", 0, 0, false)
Space:additem("World", 1, 1, false)
Space:additem("View", 2, 2, false)
Space.onchange = "scrollbar_change"

Distance = Groupbox:addscrollbar()
Distance.max = math.max(BoundingBox.maxx, BoundingBox.maxy, BoundingBox.maxz)
Distance.height = 25
Distance.onchange = "scrollbar_change"

Edit = Groupbox:addedit()
Edit.caption = "Distance"
Edit.translate = false
Edit.captionwidth = 100
Edit.text = "0"

Button = Groupbox:addbutton()
Button.caption = "Screenshot"
Button.translate = false
Button.onclick = "screenshot_click"

function scrollbar_change()
    Edit.text = tostring(Distance.position)

    local Axis = Axis.selecteditem
    local Halfspace = hsNone

    if HalfSpace.selecteditem == 1 then
        Halfspace = hsBoth
    elseif HalfSpace.selecteditem == 2 then
        Halfspace = hsPositive
    elseif HalfSpace.selecteditem == 3 then
        Halfspace = hsNegative
    end

    local Space = csModel

    if Space.selecteditem == 1 then
        Space = csWorld
    elseif Space.selecteditem == 2 then
        Space = csView
    end

    Distance = Distance.position
    Contour = Contour.checked

    tray:setclipplane(Axis, Halfspace, Space, Distance, Contour)
end

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

    if FileName ~= "" then
        local Options = system:createjson()
        Options:loadfromstring('{"show_horizontalruler":false,"show_coordsystem":false,"show_verticalruler":false}')
        local Image = system:createscreenshot(1920, 1080, Options)
        Image:saveto(FileName)
    end
end

Dialog:show()

Was this information helpful?