-- Max amount of panels/poles places local amount = 200 -- Length between poles = length of 1 panel piece local fenceLength = 2 -- Node in your scene that will be copied as panel local panel = 78737 -- Node in your scene that will be copied as pole local pole = 78724 if getNumSelected() ~= 1 then print("Select exactly 1 spline") return end function connectPoints(template, startX, startY, startZ, endX, endY, endZ) local splinePoints = {endX, endY, endZ,startX, endY, startZ} local newSpline = createSplineFromEditPoints(getRootNode(),splinePoints,true,false) local rX, rY, rZ = getSplineOrientation(newSpline,0,0,-1,0) delete(newSpline) local newFence = clone(template,false) link(getRootNode(),newFence) setWorldRotation(newFence, rX, rY, rZ) setWorldTranslation(newFence, startX,startY,startZ) return newFence end local spline = getSelection(0) local spawnedObject = {} local mSplineLength = getSplineLength(spline) print("Spline length: " .. mSplineLength) local fenceLengthTime = 1 / (mSplineLength / fenceLength) print("Fence length: " .. fenceLengthTime) local splinePos = 0.0 -- Spawn all Objects for i=0,amount do if splinePos <= 1.0 and ((splinePos + fenceLengthTime) <= 1.0) then local x, y, z = getSplinePosition(spline,splinePos) local endX, endY, endZ = getSplinePosition(spline,(splinePos + fenceLengthTime)) local panel = connectPoints(panel, x, y, z, endX, endY, endZ) table.insert(spawnedObject, panel) local pole = connectPoints(pole, x, y, z, endX, endY, endZ) table.insert(spawnedObject, pole) if (splinePos + fenceLengthTime) >= 1 then local endPole = connectPoints(pole, endX, endY, endZ, x,y,z) table.insert(spawnedObject, endPole) i = amount + 1 end splinePos = splinePos + fenceLengthTime end end -- Move Objects to parent Group local parentGroup = createTransformGroup("fence") link(getRootNode(),parentGroup) setWorldTranslation(parentGroup, getSplinePosition(spline,0)) for i=1,#spawnedObject do local x, y, z = getWorldTranslation(spawnedObject[i]) -- x, y, z = worldToLocal(parentGroup, x, y, z) link(parentGroup, spawnedObject[i]) setWorldTranslation(spawnedObject[i], x, y, z) end