Показаны сообщения с ярлыком scripting. Показать все сообщения
Показаны сообщения с ярлыком scripting. Показать все сообщения

среда, 29 декабря 2010 г.

Еще скрипт, снова 3ДМакс

Продолжая вчерашнюю тему наваял еще один скриптик вечером. Суть - пробивать оконный проем в стене ) Специально для тех, кто дизайнит без архикада комнаты с одним окном в стенке. :-)

Тут, думаю, все понятно и так:

в первой секции параметры стены, во второй - окна, в третьей расстояние до проема от пола и от угла стены. Стенка появляется в Left вьюпорте, торцом прижата к началу координат.
Как бы это и не особо нужно, но ведь надо какие-то задачи ставить для скриптов. Да и, честно говоря, приходилось еще до арчика лепить подобное булином. Муть. Хотя все знают, что буль в моделях - моветон. В общем, арчик спас ситуацию =)

Настройки, приведенные внизу - дело личное. Так, для справки.

Вот до этого места дописал и чуть спать не лег. Собственно, а где тогда скрипт был бы?  Но я одумался:

rollout unnamedRollout "Untitled" width:212 height:527
(
 GroupBox grp1 "Wall" pos:[15,20] width:180 height:100
 button btn1 "Make it" pos:[86,357] width:108 height:23
 label lbl4 "cm" pos:[170,50] width:20 height:16
 spinner spn1 "" pos:[100,50] width:60 height:16 range:[1,1000,500]
 label lbl1 "wall length" pos:[30,50] width:60 height:16
 label lbl5 "wall width" pos:[30,70] width:60 height:16
 spinner spn4 "" pos:[100,70] width:60 height:16 range:[1,1000,40]
 label lbl9 "wall height" pos:[30,90] width:60 height:16
 spinner spn7 "" pos:[100,90] width:60 height:16 enabled:true range:[1,1000,280]

 GroupBox grp15 "Window" pos:[15,150] width:180 height:80
 label lbl18 "wind length" pos:[30,180] width:60 height:16
 label lbl19 "wind width" pos:[30,200] width:60 height:16
 spinner spn14 "" pos:[100,180] width:60 height:16 range:[1,1000,100]
 spinner spn15 "" pos:[100,200] width:60 height:16 range:[1,1000,150]
 label lbl21 "cm" pos:[170,180] width:20 height:16
 
 GroupBox grp18 "Window distanse" pos:[15,260] width:180 height:80
 label lbl29 "from flap" pos:[30,290] width:60 height:16
 label lbl30 "from corner" pos:[30,310] width:60 height:16
 spinner spn21 "" pos:[100,290] width:60 height:16 range:[1,1000,90]
 spinner spn22 "" pos:[100,310] width:60 height:16 range:[1,1000,100]
 label lbl40 "MY USUAL UNITS SETTINGS:" pos:[15,397] width:181 height:17
 label lbl41 "Customize - GridAndSnapSettings: Grid Spacing: 0,002m" pos:[15,419] width:180 height:31
 label lbl42 "Customize - UnitsSetup: metric" pos:[15,454] width:180 height:19
 label lbl43 "Customize - System Unit Setup: 1,0 unit = centimeters" pos:[15,477] width:180 height:31
 on btn1 pressed do
 (
  walllen = spn1.value
  wallwid = spn4.value
  wallhei = spn7.value
  windlen = spn14.value
  windwid = wallwid * 2
  windhei = spn15.value
  wind_dz = spn21.value
  wind_dy = spn22.value
  wall = Box lengthsegs:1 widthsegs:1 heightsegs:1 length:walllen width:wallwid height:wallhei mapcoords:on
  wind = Box lengthsegs:1 widthsegs:1 heightsegs:1 length:windlen width:windwid height:windhei mapcoords:on
  wall.pos.y = walllen/2
  wind.pos.y = windlen/2+wind_dy
  wind.pos.z = wind_dz
  select wall
  boolObj.createBooleanObject $
  boolObj.SetOperandB $ wind 4 2
 )
)
createDialog unnamedRollout width:212 height:527

вторник, 28 декабря 2010 г.

скрипт для 3DS Max

3Таки добрался и до этого. Давно смотрел в сторону скриптов - ради расширения кругозора и ради а зачем оно мне нужно; пара часов разбирательств вылились в скрипт, меняющий тремя слайдерами RGB цвет выделенных (и только! а иначе ошибка) объектов сцены, которым еще не назначен материал. Неплохо, когда собирается, например, цельный интерьер и только после сборки начинается работа с материалами. Знаю, так делают.
Собственно, сам скриптик:
rollout unnamedRollout "Untitled" width:430 height:211
(
 button btn7 "Reset" pos:[20,180] width:65 height:20
 slider sld6 "R" pos:[10,10] width:255 height:44 range:[0,255,0] type:#integer ticks:10
 slider sld7 "G" pos:[10,60] width:255 height:44 range:[0,255,0] type:#integer ticks:10
 slider sld8 "B" pos:[12,110] width:255 height:44 range:[0,255,0] type:#integer ticks:10
 progressBar pb1 "ProgressBar" pos:[280,40] width:72 height:101 value:100 color:(color 0 0 0)
 label lbl1 "0" pos:[370,32] width:45 height:20
 label lbl2 "0" pos:[370,82] width:45 height:20
 label lbl3 "0" pos:[370,132] width:45 height:20
 on unnamedRollout open do
 (
  c1 = 0
  c2 = 0
  c3 = 0
 )
 on btn7 pressed do
  $.wirecolor = color 0 0 0
 on sld6 changed val do
 (
 c1 = sld6.value
 c2 = sld7.value
 c3 = sld8.value
 $.wirecolor = color c1 c2 c3
 pb1.color = color c1 c2 c3
 lbl1.caption = c1 as string
 lbl2.caption = c2 as string
 lbl3.caption = c3 as string
 )
 on sld7 changed val do
(
 c1 = sld6.value
 c2 = sld7.value
 c3 = sld8.value
 $.wirecolor = color c1 c2 c3
 pb1.color = color c1 c2 c3
 lbl1.caption = c1 as string
 lbl2.caption = c2 as string
 lbl3.caption = c3 as string
 )
 on sld8 changed val do
(
 c1 = sld6.value
 c2 = sld7.value
 c3 = sld8.value
 $.wirecolor = color c1 c2 c3
 pb1.color = color c1 c2 c3
 lbl1.caption = c1 as string
 lbl2.caption = c2 as string
 lbl3.caption = c3 as string
 )
)
createDialog unnamedRollout width:430 height:211

Тут, конечно, стоит извиниться за стиль скрипта, 3 одинаковых блока это не гуд, но как организовать это в функцию - еще не дошло, а макс у меня сильно урезанный, ни одного хелпа нет.

Ну и... Поздравляю себя с первым сообщением на блоге :-)