Created
December 12, 2014 10:31
-
-
Save Hoikohroh/092867fda9f6a3aecb1b to your computer and use it in GitHub Desktop.
Maxscript:Brush_Preset
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Brush_Preset v20131017 | |
・スクリプト概要 | |
グラファイトモデリングツールのブラシプリセットを保存 | |
作成したプリセットはTex形式で保存/読み込み可能 | |
ペイント変形のオフセット、ノイズの取得が出来なかった為、 | |
一部記録できないパラメーター有 | |
CalmeraLister | |
http://www.scriptspot.com/3ds-max/scripts/camera-lister | |
ViewsMan | |
http://www.scriptspot.com/3ds-max/scripts/viewsman | |
を元にしています | |
*/ | |
try (destroyDialog BrushPreset)catch() | |
BrushPreset_width = 140 | |
BrushPreset_height = 200 | |
Struct Brush_Setting \ | |
( | |
name, | |
PD_size_Min, | |
PD_size_Max, | |
PD_str_Min, | |
PD_str_Max, | |
PD_Offset, | |
PD_Cap, | |
PD_NorDir, | |
CF_Str, | |
CF_FallOff, | |
CF_FullStr, | |
CF_SelVerts, | |
IgnoreBack, | |
AxisFrozenX, | |
AxisFrozenY, | |
AxisFrozenZ, | |
EdgeFrozenX, | |
EdgeFrozenY, | |
EdgeFrozenZ, | |
UseMirror, | |
MirrorAxis | |
) | |
fn compareFn obj1 obj2 = | |
( | |
local name1 = obj1.name | |
local name2 = obj2.name | |
case of | |
( | |
(name1 < name2) : -1 | |
(name1 > name2) : 1 | |
default: 0 | |
) | |
) | |
Rollout BrushPreset "BrushPreset" | |
( | |
Local Brushes = #() | |
Local BrushList = #() | |
/* デバッグ用 | |
Button btn_Check "Print" | |
on btn_Check pressed do | |
(print Brushes) | |
*/ | |
Button btn_Add width:24 height:24 images:#("enss_tools_16i.bmp",undefined,13, 5, 5, 6, 6, true) across:4 | |
Button btn_Del width:24 height:24 images:#("enss_tools_16i.bmp",undefined,13, 7, 7, 8, 8, true) | |
Button btn_Save width:24 height:24 images:#("bip_mixerio_i.bmp", undefined,4, 3, 3, 4, 4, true) | |
Button btn_Open width:24 height:24 images:#("bip_mixerio_i.bmp", undefined,4, 1, 1, 2, 2, true) | |
EditText tex_Ren "Rename:" width:(BrushPreset_width-25) | |
Listbox lst_Brush width:(BrushPreset_width-25) height:(BrushPreset_height/20) | |
------------------ボタン動作------------------------ | |
on btn_Add pressed do | |
( | |
Local TempName = "Brush " + (lst_Brush.items.count+1) as string | |
Local PD_size_Min = thePainterInterface.minSize | |
Local PD_size_Max = thePainterInterface.maxSize | |
Local PD_str_Min = thePainterInterface.minStr | |
Local PD_str_Max = thePainterInterface.maxStr | |
-- Local PD_Offset = PolyToolsPaintDeform.Offset --取得不可能? | |
Local PD_Cap = PolyToolsPaintDeform.CapOffset | |
Local PD_NorDir = PolyToolsPaintDeform.NormalDirection | |
Local CF_Str = PolyToolsShift.FullStrength | |
Local CF_FallOff = PolyToolsShift.Falloff | |
Local CF_FullStr = PolyToolsShift.FullStrength | |
Local CF_SelVerts = PolyToolsShift.UseSelectedVerts | |
Local IgnoreBack = PolyToolsShift.IgnoreBackfacing | |
Local AxisFrozenX = PolyToolsShift.GetAxisFrozen #x | |
Local AxisFrozenY = PolyToolsShift.GetAxisFrozen #y | |
Local AxisFrozenZ = PolyToolsShift.GetAxisFrozen #z | |
Local EdgeFrozenX = PolyToolsShift.GetAxisFrozenEdges #x | |
Local EdgeFrozenY = PolyToolsShift.GetAxisFrozenEdges #y | |
Local EdgeFrozenZ = PolyToolsShift.GetAxisFrozenEdges #z | |
Local UseMirror = PolyToolsShift.UseMirror | |
Local MirrorAxis = PolyToolsShift.GetMirrorAxis() | |
Temp = Brush_Setting \ | |
name: TempName \ | |
PD_size_Min: PD_size_Min \ | |
PD_size_Max: PD_size_Max \ | |
PD_str_Min: PD_str_Min \ | |
PD_str_Max: PD_str_Max \ | |
PD_Offset: PD_Offset \ | |
PD_Cap: PD_Cap \ | |
PD_NorDir: PD_NorDir \ | |
CF_Str: CF_Str \ | |
CF_FallOff: CF_FallOff \ | |
CF_FullStr: CF_FullStr \ | |
CF_SelVerts: CF_SelVerts \ | |
IgnoreBack: IgnoreBack \ | |
AxisFrozenX: AxisFrozenX \ | |
AxisFrozenY: AxisFrozenY \ | |
AxisFrozenZ: AxisFrozenZ \ | |
EdgeFrozenX: EdgeFrozenX \ | |
EdgeFrozenY: EdgeFrozenY \ | |
EdgeFrozenZ: EdgeFrozenZ \ | |
UseMirror: UseMirror \ | |
MirrorAxis: MirrorAxis | |
Append Brushes Temp | |
qsort Brushes compareFn | |
BrushList = for i in Brushes collect i.name | |
lst_Brush.items = BrushList | |
) | |
on btn_Del pressed do | |
( | |
Temp = lst_Brush.selection | |
if Temp > 0 do | |
( | |
deleteItem Brushes Temp | |
qsort Brushes compareFn | |
BrushList = for i in Brushes collect i.name | |
lst_Brush.items = BrushList | |
) | |
) | |
on tex_Ren entered value do | |
( | |
if Value != "" and lst_Brush.selection != 0 do | |
( | |
Brushes[lst_Brush.selection].name = Value | |
qsort Brushes compareFn | |
BrushList = for i in Brushes collect i.name | |
lst_Brush.items = BrushList | |
Temp = findItem BrushList Value | |
lst_Brush.selection = Temp | |
) | |
) | |
on lst_Brush selected value do | |
( | |
tex_Ren.text = lst_Brush.selected | |
) | |
on lst_Brush doubleClicked value do | |
( | |
Temp = lst_Brush.selection | |
Target = Brushes[(Temp)] | |
thePainterInterface.minSize = Target.PD_size_Min | |
thePainterInterface.maxSize = Target.PD_size_Max | |
thePainterInterface.minStr = Target.PD_str_Min | |
thePainterInterface.maxStr = Target.PD_str_Max | |
PolyToolsPaintDeform.CapOffset = Target.PD_Cap | |
PolyToolsPaintDeform.NormalDirection = Target.PD_NorDir | |
PolyToolsShift.FullStrength = Target.CF_Str | |
PolyToolsShift.Falloff = Target.CF_FallOff | |
PolyToolsShift.FullStrength = Target.CF_FullStr | |
PolyToolsShift.UseSelectedVerts = Target.CF_SelVerts | |
PolyToolsShift.IgnoreBackfacing = Target.IgnoreBack | |
PolyToolsShift.SetAxisFrozen #x Target.AxisFrozenX | |
PolyToolsShift.SetAxisFrozen #y Target.AxisFrozenY | |
PolyToolsShift.SetAxisFrozen #z Target.AxisFrozenZ | |
PolyToolsShift.SetAxisFrozenEdges #x Target.EdgeFrozenX | |
PolyToolsShift.SetAxisFrozenEdges #y Target.EdgeFrozenY | |
PolyToolsShift.SetAxisFrozenEdges #z Target.EdgeFrozenZ | |
PolyToolsShift.UseMirror = Target.UseMirror | |
PolyToolsShift.SetMirrorAxis Target.MirrorAxis | |
) | |
----------------------ファイル入出力---------------------------- | |
on btn_Save pressed do | |
( | |
save_dir = getSaveFileName types:"Text File (*.txt)|*.txt|" | |
if save_dir != undefined do | |
( | |
file = createFile save_dir | |
print Brushes to:file | |
close file | |
) | |
) | |
on btn_Open pressed do | |
( | |
open_dir = getOpenFileName types:"Text File (*.txt)|*.txt|" | |
if open_dir != undefined do | |
( | |
file = openFile open_dir | |
Brushes = #() | |
while eof file != true do (append Brushes (readValue file)) | |
close file | |
BrushList = for i in Brushes collect i.name | |
lst_Brush.items = BrushList | |
) | |
) | |
---------------リサイズ動作-------------------- | |
on BrushPreset resized Value do | |
( | |
lst_Brush.width = (Value.x ) - 25 | |
lst_Brush.height = (Value.y) - 65 | |
tex_Ren.width = (Value.x ) - 72 | |
) | |
) | |
CreateDialog BrushPreset width:(BrushPreset_width) height:(BrushPreset_height)\ | |
style:#(#style_titlebar, #style_resizing, #style_minimizebox, #style_sysmenu) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment