I have been building a lowpoly from a detailed sub-d cage for the last few days and it really slows me down to have to pull my hands away to hit ctrl-backspace. Any way to rebind this to another key? I would use one of those third party tools that can bind a macro to any key but I dont want to lose the ability to type with that key in max (in this case the B key would be what I am using). Is there a function for this anywhere in the max UI commands? I tried everything that begins with "remove."
I have remove loop bound right now but there are times when its not what I want.
Replies
But you can assign that function to another key, just bind VertexRemove in the "Ribbon - Modeling" category.
I'm using a custom macro for that:
Always wondered that, thanks. I've been meant to reassign this hotkey for years.
macroscript CleanRemove category:"miauu" tooltip:"As default max Ctrl+Backspace" buttonText:"Clean Remove" ( if selection.count ==1 and classof selection[1] == Editable_Poly then ( local currObj = $ if subobjectlevel==1 then ( vertSel01 = polyop.getVertSelection currObj currObj.EditablePoly.ConvertSelectionToBorder #Vertex #Edge currObj.Remove selLevel: #Edge vertsToRemove = for i in vertSel01 where (polyop.getEdgesUsingVert currObj i ).numberSet <= 2 collect i polyop.setVertSelection currObj vertsToRemove currObj.Remove selLevel: #Vertex redrawViews() ) else ( if subobjectlevel==2 or subobjectLevel==3 then ( edgeSel01 = polyop.getEdgeSelection currObj edgeVerts = polyop.getVertsUsingEdge currObj edgeSel01 currObj.Remove selLevel:#Edge vertsToRemove = for i in edgeVerts where (polyop.getEdgesUsingVert currObj i ).numberSet <= 2 collect i polyop.setVertSelection currObj vertsToRemove currObj.Remove selLevel: #Vertex redrawViews() ) else messagebox "Go to Vertex or Edge sub-object level" title:"miauu Script Error!!!" ) ) else messagebox "The selected object is not an Editable Poly object" title:"miauu Script Error!!!" )Let me know if you want support for edit poly modifier.
That would be great, because i will definatelly use both edit and editable poly
macroscript CleanRemove category:"miauu" tooltip:"As default max Ctrl+Backspace" buttonText:"Clean Remove" ( if selection.count ==1 then ( function GetEdgesUsingVertEPM curSel verts = ( local edgeVerts = #() for i in verts do ( edgeVerts[1] = curSel.GetEdgeVertex i 1 node:$ edgeVerts[2] = curSel.GetEdgeVertex i 2 node:$ ) edgeVerts ) local curObj = modPanel.getCurrentObject() if (classOf curObj) == Editable_Poly do ( if subobjectlevel==1 then ( vertSel01 = polyop.getVertSelection curObj curObj.EditablePoly.ConvertSelectionToBorder #Vertex #Edge curObj.Remove selLevel: #Edge vertsToRemove = for i in vertSel01 where (polyop.getEdgesUsingVert curObj i ).numberSet <= 2 collect i polyop.setVertSelection curObj vertsToRemove curObj.Remove selLevel: #Vertex redrawViews() ) else ( if subobjectlevel==2 or subobjectLevel==3 then ( edgeSel01 = polyop.getEdgeSelection curObj edgeVerts = polyop.getVertsUsingEdge curObj edgeSel01 curObj.Remove selLevel:#Edge vertsToRemove = for i in edgeVerts where (polyop.getEdgesUsingVert curObj i ).numberSet <= 2 collect i polyop.setVertSelection curObj vertsToRemove curObj.Remove selLevel: #Vertex redrawViews() ) else messagebox "Go to Vertex or Edge sub-object level" title:"miauu Script Error!!!" ) ) if (classOf curObj) == Edit_Poly do ( if subobjectlevel==1 then ( vertSel01 = curObj.getSelection #Vertex curObj.ConvertSelectionToBorder #Vertex #Edge curObj.buttonOp #RemoveEdge vertsToRemove = for i in vertSel01 where (GetEdgesUsingVertEPM curObj #(i) ).count <= 2 collect i curObj.setSelection #Vertex (vertsToRemove as bitarray) curObj.buttonOp #RemoveVertex redrawViews() ) else ( if subobjectlevel==2 or subobjectLevel==3 then ( edgeSel01 = curObj.getSelection #Edge curObj.ConvertSelection #Edge #Vertex curObj.buttonOp #RemoveEdge edgeVerts = curObj.getSelection #Vertex vertsToRemove = for i in edgeVerts where (GetEdgesUsingVertEPM curObj #(i) ).count <= 2 collect i curObj.setSelection #Vertex (vertsToRemove as bitarray) curObj.buttonOp #RemoveVertex redrawViews() ) else messagebox "Go to Vertex or Edge sub-object level" title:"miauu Script Error!!!"Watch the video:
[ame]
Can you send me the scene that is problematic for you. Note that I use max2009.
No problem miauu
I really hope you solve it out. I tried some modifications on your script, but It doesnt work
Try this code:
macroscript CleanRemove category:"miauu" tooltip:"As default max Ctrl+Backspace" buttonText:"Clean Remove" ( if selection.count ==1 then ( function GetEdgesUsingVertEPM curSel verts = ( local edgeVerts = #() for i in verts do ( edgeVerts[1] = curSel.GetEdgeVertex i 1 node:$ edgeVerts[2] = curSel.GetEdgeVertex i 2 node:$ ) edgeVerts ) local curObj = modPanel.getCurrentObject() if (classOf curObj) == Editable_Poly do ( if subobjectlevel==1 then ( vertSel01 = polyop.getVertSelection curObj curObj.EditablePoly.ConvertSelectionToBorder #Vertex #Edge curObj.Remove selLevel: #Edge vertsToRemove = for i in vertSel01 where (polyop.getEdgesUsingVert curObj i ).numberSet <= 2 collect i polyop.setVertSelection curObj vertsToRemove curObj.Remove selLevel: #Vertex redrawViews() ) else ( if subobjectlevel==2 or subobjectLevel==3 then ( edgeSel01 = polyop.getEdgeSelection curObj edgeVerts = polyop.getVertsUsingEdge curObj edgeSel01 curObj.Remove selLevel:#Edge vertsToRemove = for i in edgeVerts where (polyop.getEdgesUsingVert curObj i ).numberSet <= 2 collect i polyop.setVertSelection curObj vertsToRemove curObj.Remove selLevel: #Vertex redrawViews() ) else messagebox "Go to Vertex or Edge sub-object level" title:"miauu Script Error!!!" ) ) if (classOf curObj) == Edit_Poly do ( if subobjectlevel==1 then ( vertSel01 = curObj.getSelection #Vertex curObj.ConvertSelectionToBorder #Vertex #Edge curObj.buttonOp #RemoveEdge vertsToRemove = for i in vertSel01 where (GetEdgesUsingVertEPM curObj #(i) ).count <= 2 collect i curObj.setSelection #Vertex (vertsToRemove as bitarray) curObj.buttonOp #RemoveVertex redrawViews() ) else ( if subobjectlevel==2 or subobjectLevel==3 then ( edgeSel01 = curObj.getSelection #Edge curObj.ConvertSelection #Edge #Vertex curObj.buttonOp #RemoveEdge edgeVerts = curObj.getSelection #Vertex vertsToRemove = for i in edgeVerts where (GetEdgesUsingVertEPM curObj #(i) ).count <= 2 collect i curObj.setSelection #Vertex (vertsToRemove as bitarray) curObj.buttonOp #RemoveVertex redrawViews() ) else messagebox "Go to Vertex or Edge sub-object level" title:"miauu Script Error!!!" ) ) ) )(correction: assign both the hotkey you want and ctrl plus the hotkey you want as shortcut too edge remove for me d , ctrl + d )
Yeah it works Dreamexpress. Heh, I tried to rebing edge remove in ribon-modeling category before to Y key, but it didnt work of course. But when I tried your method it works both in editable and edit poly. I only bind it to CTRL+Y. Thanks
Thanks Miauu for your effort in helping me :thumbup:
Anyone know if assigning another shortcut to ctrl+backspace ( from ribbon-modelling) will the backspace button still work (delete edges without vertices) ? I ask because from a mistake I change the delete object shortcut ( which is delete ) and I couldn't assign it back, I have to reset all shortcut. Max it`s not supporting backspace or delete as shortcut, if u change them you couldn't put them back.
Thank you miauu!
This is definitly where keyhydra can be of some help. As it can, do all of this. www.onikanabo.com/keyhydra.
You be able to assign tools on 'space', 'del', backspace' while still keeping the original behaviour. Exemple : keeping 'space' for lock selection, but pressing 'twice' the space key will do 'extrude' or whatever you want as you can assign whatever you want inside the shortcut editor
Availability of the trial should be next week
Massimo
Hey everyone couple years later!
I tried the miauu script but it's seams not working in max 2022. Is someone as somewhat figure it out yet?
Thx!
isn't it just "Remove (Poly)" ?
tested it in max 2011 and max 2020. just tested on a few loops, or verts. same result als ctrl+backspace. or not?
i guess @perprerp would know?
Yep, it's just "Remove", can be bound to anything - dunno where this confusion stemmed from, but it's brought up often lol.