macroScript pivot_by_two_select_vertexs category:"SoftStar" toolTip:"pivot_by_2_vertex_0.2" buttontext:"pivot_by_2_vertex_0.2" Icon:#("Systems",2) ------------------------------- -- by kuang 2008-08-02 -- support mesh and poly for Hansanter ----------------------------------- ( global command_panel_status global model global model_source_pos global Vert_A global Vert_B global Vert_A_pos global Vert_B_pos global Tape_align global gg=#{} global pivot_rotate_angle global Vert_AB_mid_pos escapeEnable=true command_panel_status=cui.commandPanelOpen gg=selection as array if gg.count <1 then ( messagebox"Select obj ?? " ) else( ------------------------------------- progress_txt=sliderManipulator value:1 minVal:1 maxVal:gg.count width:200 xPos:0.4 yPos:0.07 progress_txt.hide=false progress_txt.isSelected=false progress_txt.sldName = "Total "+(gg.count as string)+" ( ESC to Exit ) " -------------------------------------- for u=1 to gg.count do ( if (classof gg[u]==Editable_Poly) or (classof gg[u]==Editable_mesh) then( try( model=gg[u] ) catch( ) ------------------------------------------------------------ -- check esc if keyboard.escPressed then (exit) else() Vert_A=gg[u].selectedVerts[1] Vert_B=gg[u].selectedVerts[2] Vert_A_pos=Vert_A.pos Vert_B_pos=Vert_B.pos Vert_AB_mid_pos=(Vert_A_pos+Vert_B_pos)/2 subobjectLevel = 0 -- check esc if keyboard.escPressed then (exit) else() Tape_align=tape pos:(Vert_A_pos) target:(targetObject pos:(Vert_B_pos)) toolMode.coordsys #local animate off in coordsys local select model ResetXForm gg[u] ResetTransform gg[u] ResetScale gg[u] ResetPivot gg[u] model.pivot=Tape_align.pos model_source_pos=model.pos --------------------------------------------------------------------- pivot_rotate_angle= inverse (Tape_align.transform.rotation) model.rotation *= pivot_rotate_angle model.objectoffsetrot *= pivot_rotate_angle model.objectoffsetpos *= pivot_rotate_angle -------------------------------------------------------- model.pos=model_source_pos model.pivot=Vert_AB_mid_pos -- check esc if keyboard.escPressed then (exit) else() --------------------------------------------------------------------- delete Tape_align if classof gg[u]==PolyMeshObject --not Editable_Poly then ( try( macros.run "Modifier Stack" "Convert_to_Poly" ) catch() ) if classof gg[u]==Editable_mesh then ( try( macros.run "Modifier Stack" "Convert_to_mesh" ) catch() ) max rotate toolMode.coordsys #local setCoordCenter #local ----------------------------------- progress_txt.value=u completeredraw() ------------------------------------- ) -- if (classof gg[u]==Editable_Poly) or (classof gg[u]==Editable_mesh) else() )-- for u=1 to gg.count delete progress_txt )--else cui.commandPanelOpen=command_panel_status select gg )