--****************************************************************************************************** -- Created: -- "3.5.2019 ?. 21:00:19" -- Last Updated: -- "5.5.2019 ?. 20:08:40" -- Version: 1.00 -- -- Author : Kostadin Kotev / miau_u@yahoo.com / http://miauumaxscript.blogspot.bg/ -- Version: 3ds max 2009 -- -- Discription: DESCRIPTION -- Usage: RUN IT -- -- Wishlist: -- --****************************************************************************************************** -- MODIFY THIS AT YOUR OWN RISK macroscript miauuSelectSplineSegmentsByMatID category:"miauu" tooltip:"Select Spline Segments by matID" buttonText:"Select Spline Segments by matID" --icon:#("miauIcon",1) ( global rol_selSegsByMatID try(destroyDialog rol_selSegsByMatID)catch() rollout rol_selSegsByMatID "Select segments by matID" ( radiobuttons rb_matIDsToUse "" labels:#("Use IDs of selected segments", "Use IDs typed below") default:1 columns:1 edittext et_matID "Material ID:" text:"1,2,3,4" enabled:false button btn_select "SELECT" width:190 on rb_matIDsToUse changed state do ( if state == 1 then et_matID.enabled = false else et_matID.enabled = true ) on btn_select pressed do ( if selection.count != 0 do ( splArr = for o in selection where classOf o == SplineShape or classOf o == Line collect o if splArr.count != 0 and et_matID.text != "" do ( matIdsBA = #{} if rb_matIDsToUse.state == 1 then ( for s in splArr do ( ssCnt = numSplines s for sIdx = 1 to ssCnt do ( selSegsArr = getSegSelection s sIdx for seg in selSegsArr do ( matIdsBA = matIdsBA + #{getMaterialID s sIdx seg} ) ) ) ) else ( matIdsBA = readValue (("#{" + et_matID.text + "}") as stringstream) ) format "matIDs to select: % \n" matIdsBA for s in splArr do ( ssCnt = numSplines s for sIdx = 1 to ssCnt do ( setSegSelection s sIdx #() segsToSelectArr = #() segsCnt = numSegments s sIdx for seg = 1 to segsCnt do ( segMatID = getMaterialID s sIdx seg if not (matIdsBA * #{segMatID}).isEmpty do ( append segsToSelectArr seg ) ) setSegSelection s sIdx segsToSelectArr keep:true ) ) ) ) ) function String2Bmp string = ( local clipboardClass = dotNetClass "System.Windows.Forms.Clipboard" local ConvertClass = dotnetclass "system.convert" local imageclass = dotNetclass "System.Drawing.image" local bytearr = convertclass.FromBase64String string local memstream = dotnetobject "System.IO.MemoryStream" bytearr local DecodedImg = ImageClass.fromstream memstream memstream.close() iconBMP = DecodedImg iconBMP ) function LoadMyLogoAsTitlebarIcon = ( local logoIcon = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAACxIAAAsSAdLdfvwAAALcSURBVDhPbZJLSFRhGIa/1C6IMmmQFNownplzv8y5zIzOqGPimE5hFxfeZxQzu0AXDbtsXHWBwNpWaIt2lQWBFSS0qCholbsW7QwiiKBNRDlv//xTWtjiO9+B77zP+37/+QkA7QxXULu7mZLmVmq1K2lvtIzSjm/A0Wt/NjdEl0d62w+eGe2gyUyCTvXHaawnSRNDTVy7AuhwfdTt+Kg1XBFIWNVLmqZj/ryGc90yVN1CZ3vjx9PDLWpS3UJH+pI0nv0L0MaEaa+cYnr1M0OVIKkWNN0AXsQxe0KCIkvwCxI818bgvsTL8eFWmhpLrgLq9Korri4si4oJVTNg6Covy5RhGQrrOusqQqIEQVSQqI/mjvY1T68AhJCc0wwLuqbwmuwKAfdcDkl4MvAmjr1NEgNpMA0NghCEFXZzKwBRFHP54WhawudbNpbuePg+5+DVBR3vZlxgIYrFqwY+zNjoSckcbNvhVYAkhnIWI4/36czZRiNzzX/07kYYl7MSd812qsC8h96UxFOy81gLOLSHxX3ooi4scsBb5jrVL3PAGJt9u2uju7Wwpuc6awEne1mChRganALgy/0oprMiB5wdsXiCgV1yAeD8B3B8P0vwOIJUfWGFL7ct3DymcsDxLgV45GEo/SfBXyvIssQPcWKQ/XsGaP8NeP+gHtdGFA6YHLOBJxFkdv1nhUBtMOc4Nhflh/lusuKdifPp8j1fYWaksJtpOLFVgFNbOltd44fCLpFpsdiHJbZvhAPa6tj763pkUiJ000JIjzATGW12xfMVQIuygbZv2bhJ2uFbDAYFXDrh4dP1MAMoSCU14GkMnc0Wu+Immqyqz/2xdXXDsYKWPxqkUvJvKyM3UEJ6TUlc8ld+9QsqNNNmrg4ExUHEqPlxwF1/6nAD0WgjUU+0+F9ATVU5WYFSigY3kreDKOIvuaiGqpdNNYTdbtncSJzoYIIoGy+mTLyIAYqYFvQLPey9qVeXvysAAAAASUVORK5CYII=" d = (windows.getChildHWND 0 rol_selSegsByMatID.title)[1] WM_SETICON = 0x0080 ICON_SMALL = 0 bm = dotnetobject "System.Drawing.Bitmap" (String2Bmp logoIcon) ptr = bm.GetHicon() icon = (dotnetclass "System.Drawing.Icon").FromHandle (dotnetobject "IntPtr" ptr) windows.SendMessage d WM_SETICON ICON_SMALL icon.handle ) on rol_selSegsByMatID open do ( LoadMyLogoAsTitlebarIcon() ) ) createdialog rol_selSegsByMatID width:200 )