MacroScript RangeSelect category:"Piranha-Bytes" tooltip:"RangeSelect" buttonText:"RangeSelect" ( local distObjs = #() local baseObj = undefined local rangeObj = undefined rollout ro_RangeSelect_Main "pb RangeSelect" ( pickbutton ui_DS_SelectObj "Select Source Obj" pos:[5,5] width:110 height:20 tooltip:"Select Source Object" radioButtons ui_DS_SelectMode pos:[12,30] labels:#("Sphere", "Box") columns:2 enabled:false spinner ui_DS_Distance "Range: " pos:[5,55] fieldwidth:50 range:[0,999999,0] scale:0.1 type:#float enabled:false multiListBox ui_DS_ObjList pos:[5,80] width:110 height:10 function getNameList oList = ( nList = #() for b=1 to oList.count do append nList oList[b].name return nList ) function showList = ( ui_DS_ObjList.items = getNameList distObjs ) on ui_DS_Distance buttonDown do ( rangeObj = sphere() rangeObj.pos = baseObj.transform[4] rangeObj.radius = ui_DS_Distance.value rangeObj.xray = true rangeObj.name = "!RangeIndicator" rangeObj.wirecolor = red ) on ui_DS_Distance buttonup do ( if ((rangeObj != undefined ) and (rangeObj.isDeleted == false)) then delete rangeObj ) on ui_DS_SelectObj picked obj do ( ui_DS_SelectObj.caption = obj.name baseObj = obj select baseObj ui_DS_SelectMode.enabled = true ui_DS_Distance.enabled = true distObjs = #() showList() ) on ui_DS_Distance changed val do ( rangeObj.radius = ui_DS_Distance.value stype = ui_DS_SelectMode.state if baseObj != undefined do ( allObj = objects as array distObjs = #() for o=1 to allObj.count do ( nObj = allObj[o] if sType == 1 do ( dis = Distance baseObj nObj rangeObj.boxmode = false rangeObj.xray = true if ((dis <= val) and (nObj != rangeObj)) then append distObjs nObj ) if sType == 2 do ( dis = intersects rangeObj nObj rangeObj.boxmode = true rangeObj.xray = false if ((dis == true) and (nObj != rangeObj)) then append distObjs nObj ) ) showList() select distObjs ) ) on ro_RangeSelect_Main close do gc() on ro_RangeSelect_Main open do ( baseObj = (getCurrentSelection())[1] if baseObj != undefined then ( ui_DS_SelectObj.caption = BaseObj.name ui_DS_SelectMode.enabled = true ui_DS_Distance.enabled = true ) ) ) createDialog ro_RangeSelect_Main width:120 height:225 style:#(#style_toolwindow, #style_sysmenu) )