Steps to repro:
[ol]
[li]Get a group of parts positioned around (100, 0, 100), at angles awkward enough for CSG to fail[/li]
[li]Rotate the group so that the first selected part in the group does not have a rotation that can be represented by any rational numbers[/li]
[li]CSG each of the parts,[/li]
[li]It will error[/li]
[li]After erroring, it will move all of the parts, relative to the first selected part, with the first selected part positioned at CFrame.new()[/li]
[/ol]
Can confirm.
Can also confirm.
This bug actually can make some parts CSG correctly for me if I try again after it’s moved to the origin.
This is true. This bug has also happened to me
If it helps, another repro:
Also, I’m not sure if this is specific to the error, but I noticed that when I ctrl+Z after the fail it goes back not to the state before but the state before that.
Then
Then union
Then revert
Instead of
[quote] I’m not sure if this is related 0_o
I don’t know what caused them, as I only just noticed them. [/quote]
That’s usually what I get from using your brute force plugin.
Fantastic! I followed that lead and you were right. It appears that if :Union() from a plugin fails, it creates that blank union. If I union two things that fail through Ctrl+Shift+G and it fails, nothing happens; however, if I try to force it with the brute force plugin, it creates four blank unions (the amount of times it tried to brute force the union and failed.
function forceCSG(objects)
local length = #objects
for i=1,length do
for v=1,length do
local objects = copyTable(objects)
local removed = table.remove(objects, i)
table.insert(objects, v, removed)
--local success = pcall(function()
print("Trying")
coroutine.resume(coroutine.create(function() plugin:Union(objects) end))
--end)
game:service("RunService").RenderStepped:wait()
if #game.Selection:Get() == 0 then
return true
end
end
end
end



