I asked this in the Max plugin thread. But this might be more general and/or lost to someone who might otherwise see it if posted as own thread.
I have to take some medium high rez meshes. 10000-20000 tris and Convert into low poly models. They were initially created with Nurbs in sections. So its not one complete mesh, and Nurbs triangulates if you set no other options. The person I am getting these from has lost his nurb files and can only give me this triangulated mess.
I attempted using one of the max scripts that hides the longest edge to attempt to create polygons as so I can have a hell of an easier time working with edge loops and cleaner uv layout. Unfortunately, the way nurbs or at least these have been converted, the longest edge is not always the longest. Hell, even one of the submeshes is more than one object because nurbs split the portions versus making a continuous mesh. The picture below is one mesh with the subobject selected/converted. I realize that doesn't look bad. But thats that one subobject in that one mesh and there are about 20 different meshes in the scene.

Is there another tool or triangle to edge plugin that works differently or methodology I should attempt? Most of these tools I think assume these were polygon models before. This is not the case.
Replies
Check it out here:
http://www.scriptspot.com/3ds-max/quadrangulate
That way you can check if the selection of the 'to be removed edges' is ok and make some tweaks, once the selection is final then hit ctrl+backspace to clear the selected edges and cleaning up the poly.
thanks for the link.
here is my attempt at finding quad diagonals. It's very far from perfection and absolutely not optimized, but I hope it helps anyway. Just select a bunch of faces and press "Select!", it tries to find and select diagonal edges on most squared tri-couples. If no faces are selected, it works on the whole Editable Poly.
rollout rolTest "Select Diags" ( button btRun "Select!" width:90 align:#center offset:[0, -2] function getEdgeAngle oPoly iEdge01 iEdge02 = ( if ((classOf oPoly) != Editable_Poly) then throw "Wrong input in function: getEdgeAngle() - Invalid Editable Poly" if ( ((classOf iEdge01) != Integer) or ((classOf iEdge02) != Integer) ) then throw "Wrong input in function: getEdgeAngle() - Invalid Edge Indexes" local baVertsFromEdge01 = polyOp.getVertsUsingEdge oPoly iEdge01 local baVertsFromEdge02 = polyOp.getVertsUsingEdge oPoly iEdge02 local baOrigin = baVertsFromEdge01 * baVertsFromEdge02 local iOrigin = 0 if (baOrigin.isEmpty == true) then throw "Wrong input in function: getEdgeAngle() - Edges do not share a vertex" else iOrigin = (baOrigin as Array)[1] local p3Origin = polyOp.getVert oPoly iOrigin local p3Vector01 = (polyOp.getVert oPoly ((baVertsFromEdge01 - baOrigin) as Array)[1]) - p3Origin local p3Vector02 = (polyOp.getVert oPoly ((baVertsFromEdge02 - baOrigin) as Array)[1]) - p3Origin return (acos(dot (normalize(p3Vector01)) (normalize(p3Vector02)))) ) function selQuadDiagonals oPoly = ( if ((classOf oPoly) != Editable_Poly) then throw "Wrong input in function: selQuadDiagonals()" local baFaceSelection = polyOp.getFaceSelection oPoly if (baFaceSelection.isEmpty == true) then baFaceSelection = #{1..(polyOp.getNumFaces oPoly)} local baTriFaces = #{} for iFace in baFaceSelection do if ((polyOp.getFaceDeg oPoly iFace) == 3) then baTriFaces[iFace] = true local baDiagonals = #{} for iTriFace in baTriFaces do ( local baTriEdges = polyOp.getEdgesUsingFace oPoly iTriFace local aiEdgeIndex = #() local afAngleRatio = #() local aaEdgeData = #() for iTriEdge in baTriEdges do ( local baNearFace = (polyOp.getFacesUsingEdge oPoly iTriEdge) - #{iTriFace} if (baNearFace.isEmpty == false) then if ((polyOp.getFaceDeg oPoly (baNearFace as Array)[1]) != 3) then baNearFace = #{} if (baNearFace.isEmpty == true) then ( local aiEdges01 = (baTriEdges - #{iTriEdge}) as Array local fAngleRatio = abs( (90 - getEdgeAngle oPoly aiEdges01[1] aiEdges01[2]) ) append aaEdgeData #(fAngleRatio, 0) ) else ( local baNearFaceEdges = polyOp.getEdgesUsingFace oPoly baNearFace local aiEdges01 = (baTriEdges - #{iTriEdge}) as Array local aiEdges02 = (baNearFaceEdges - #{iTriEdge}) as Array local fAngleRatio = abs( (90 - getEdgeAngle oPoly aiEdges01[1] aiEdges01[2]) + (90 - getEdgeAngle oPoly aiEdges02[1] aiEdges02[2]) ) append aaEdgeData #(fAngleRatio, iTriEdge) ) ) local minRatio = 360 local iDiagonal = 0 for aData in aaEdgeData do ( if (aData[1] < minRatio) then ( iDiagonal = aData[2] minRatio = aData[1] ) ) if (iDiagonal != 0) then baDiagonals[iDiagonal] = true ) setCommandPanelTaskMode #modify subObjectLevel = 2 polyOp.setEdgeSelection oPoly baDiagonals forceCompleteRedraw() ) on btRun pressed do ( if ( (selection.count == 1) and (classOf selection[1] == Editable_Poly) ) then ( selQuadDiagonals selection[1] ) ) ) -- End Rollout createDialog rolTest 96 27 style:#(#style_toolwindow, #style_border, #style_sysmenu)Might be easier to just rebuild some of your geometry. Try selecting crossections (edges), separating them from the mesh, and then bridging them together through edit poly or loft.