ScriptSpot

Forum topic · Scripts Wanted

Weld large complicated meshes

By jininjin · 2012-11-10

Description

I need a script that can incrementally weld through large complicated meshes without crashing. Is this possible?

Comments (8)

try this too

Anubis · 2012-11-10

fn WeldMesh obj split: thresh: = (
	if thresh == unsupplied or thresh <= 0 do thresh = .01
	if split  == unsupplied or split < 1 do split = 1
	
	if not isKindOf obj Editable_Mesh do
		if canConvertTo obj Editable_Mesh do
			convertToMesh obj
		
	if isKindOf obj Editable_Mesh do (
		local _openEdges = meshop.getOpenEdges
		local _EdgeVerts = meshop.getVertsUsingEdge
		local _weldVerts = meshop.weldVertsByThreshold
		
		local vList = _EdgeVerts obj (_openEdges obj)

		if split == 1 then _weldVerts obj vList thresh
		else (
			-- your own implementation does here...
		)
	)
)

barigazy · 2012-11-10

Hi Anubis,
Maybe i'm wrong but converting hires objects to mesh in this case can slow down the process.What do you think?

Yes, sure

Anubis · 2012-11-10

But as the question was about meshes,
I just make the function user friendly.

barigazy · 2012-11-10

Do you mean attach hi-res meshes?

jininjin · 2012-11-10

no not attaching meshes. I need to weld one large triangulated mesh. Welding as it is takes forever or crashes since there is a lot of vertices to weld.

weldByThreshold

barigazy · 2012-11-10

This is the simple function that works on editable poly and mesh objects. Maybe this can help but not sure.

fn weldByThreshold thresh: = if selection.count != 0 do
(
local polyWeld = polyop.weldVertsByThreshold
local meshWeld = meshop.weldVertsByThreshold
for i = 1 to selection.count where isKindOf selection[i] Editable_Poly or isKindOf selection[i] Editable_Mesh do
(
vertslist = #{1..(selection[i].Verts.count)}
if not isKindOf selection[i] Editable_Poly then meshWeld selection[i] vertslist thresh else
(
selection[i].weldThreshold = thresh
polyWeld selection[i] vertslist
)
)
)
weldByThreshold thresh:0.01

barigazy · 2012-11-10

Another recommended method is to detach your mesh in several parts, use this function on individual parts, then attach piece by piece select open edges and convert selection to vertex and then use weld operation from command panel. This is better then do it all at once.

jininjin · 2012-11-12

Thanks I think this is what I will have to do. Make selections by a grid and weld small groups at a time. Although this may still take a long time....