Skip to content

Instantly share code, notes, and snippets.

@Hoikohroh
Created December 12, 2014 10:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Hoikohroh/092867fda9f6a3aecb1b to your computer and use it in GitHub Desktop.
Save Hoikohroh/092867fda9f6a3aecb1b to your computer and use it in GitHub Desktop.
Maxscript:Brush_Preset
/*
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