А нет-ли такого скрипта? |
Home· Статьи · Вакансии · Чертежи · 3D Галерея · 2D Галерея · Форум · Форум Realtime | Реклама |  Конкурсы | RAR Award | Правила |
Здравствуйте, гость ( Вход | Регистрация )
А нет-ли такого скрипта? |
13/12/2017, 09:28
Сообщение
#2611
|
|
уже всё сделал Группа: Пользователи Сообщений: 2 456 Регистрация: 01/06/2005 Из: z3л3№гр@d Пользователь №: 13 838 |
ты хочешь разбить сплайн на составные части? т.е. один шейп = один сплайн?
|
|
|
13/12/2017, 09:45
Сообщение
#2612
|
|
уже всё сделал Группа: Пользователи Сообщений: 2 456 Регистрация: 01/06/2005 Из: z3л3№гр@d Пользователь №: 13 838 |
explode spline
CODE for shp in selection where superclassof shp == shape do (
local count = shp.numsplines for i = 1 to count do ( ns = splineShape () addnewspline ns for k = 1 to (numKnots shp i) do( knotpos = getKnotPoint shp i k segtype = getSegmentType shp i k knottype = getKnotType shp i k if knottype == #bezier or knottype == #bezierCorner then ( addknot ns 1 knottype segtype knotpos (getInVec shp i k) (getOutVec shp i k) ) else ( addknot ns 1 knottype segtype knotpos ) ) if (isClosed shp i) then close ns 1 updateshape ns ns.name = uniqueName (shp.name + "_spl_" + (i as string)) ) ) |
|
|
13/12/2017, 18:17
Сообщение
#2613
|
|
MaxMan Группа: Пользователи Сообщений: 180 Регистрация: 04/05/2006 Из: Ryazan Пользователь №: 30 816 |
explode spline Код for shp in selection where superclassof shp == shape do ( local count = shp.numsplines for i = 1 to count do ( ns = splineShape () addnewspline ns for k = 1 to (numKnots shp i) do( knotpos = getKnotPoint shp i k segtype = getSegmentType shp i k knottype = getKnotType shp i k if knottype == #bezier or knottype == #bezierCorner then ( addknot ns 1 knottype segtype knotpos (getInVec shp i k) (getOutVec shp i k) ) else ( addknot ns 1 knottype segtype knotpos ) ) if (isClosed shp i) then close ns 1 updateshape ns ns.name = uniqueName (shp.name + "_spl_" + (i as string)) ) ) Я в общем до этого хоть и посмотрел твою ссылку выше на VG но не фига не запомнил, там есть эта штука что я пытался воспроизвести через Поли объект ) Думаю я просто увлекся самим процессом, да и хоть немного для себя закрепил простые вещи для копирования с листенера. Я вот про это: V G .UniformSpline Information: This plugin allows to modify spline/shape object |
|
|
15/01/2018, 20:13
Сообщение
#2614
|
|
Продвинутый ученик Группа: Пользователи Сообщений: 72 Регистрация: 08/09/2006 Из: UA Пользователь №: 36 576 |
Приветствую всех!
Помогите пожалуйста, кому не лень допилить скрипт. Хочу стандартный максовский Constraints (poly) повесить на кнопки своей панельки. На toolBars знаю как повесить, но это не то. Саму панель с кнопками собрал, и все даже работает, но не так, как хотелось бы. Хотелось-бы по нормальному: При нажатии Edge, включается констраинт Edge. При нажатии Face, отключается кнопка edge, и включается Face. Ну и с normal так-же. Т.е. при нажатии одной кнопки, отключается другая. Отключаются констраинты отжатием любой кнопки. CODE try(destroyDialog MyScripts)catch()
rollout MyScripts "Constraints" ( checkbutton ckb1 "Edge" tooltip:"Constraint Edge" width:45 height:25 pos:[5,5] on ckb1 changed state do if state == on then $.constrainType = 1 else $.constrainType = 0 checkButton ckb2 "Face" tooltip:"Constraint Face" width:45 height:25 pos:[52,5] on ckb2 changed state do if state == on then $.constrainType = 2 else $.constrainType = 0 checkButton ckb3 "Normal" tooltip:"Constraint Normal" width:45 height:25 pos:[99,5] on ckb3 changed state do if state == on then $.constrainType = 3 else $.constrainType = 0 ) createDialog MyScripts 149 35 800 90 |
|
|
15/01/2018, 21:16
Сообщение
#2615
|
|
уже всё сделал Группа: Пользователи Сообщений: 2 456 Регистрация: 01/06/2005 Из: z3л3№гр@d Пользователь №: 13 838 |
По хорошему это надо совсем по иному делать.
При создании роллаута создается NodeEventCallback который следит за изменением выделения. Если у выделенного объекта/ов есть свойство constrainType или имеется edit_poly модификатор, кнопки включения/выключения констрейнтов активируются/деактивирутся соответственно. Если выделено два объекта и у одного активен едж, а у другого фейс констрейнт, какие кнопки включать? CODE try (destroydialog X ) catch ()
rollout X "" width:170 ( checkbutton edgecb "Edge" tooltip:"Constraint Edge" width:45 height:25 across:3 checkButton facecb "Face" tooltip:"Constraint Face" width:45 height:25 checkButton normcb "Normal" tooltip:"Constraint Normal" width:45 height:25 local disableConstraints = false fn setConstraint mode = ( if mode == 0 and disableConstraints then ( edgecb.checked = facecb.checked = normcb.checked = false for s in selection where isProperty s #constrainType do s.constrainType = 0 ) else ( disableConstraints = false case mode of ( 1 : facecb.checked = normcb.checked = false 2 : edgecb.checked = normcb.checked = false 3 : edgecb.checked = facecb.checked = false ) disableConstraints = true for s in selection where isProperty s #constrainType do s.constrainType = mode -- TODO: check if object has Edit_Poly modifier and set constrainType of modifier instead of baseobject ) ) on edgecb changed state do if state then setConstraint 1 else setConstraint 0 on facecb changed state do if state then setConstraint 2 else setConstraint 0 on normcb changed state do if state then setConstraint 3 else setConstraint 0 ) createDialog X pos:[100,100] Сообщение отредактировал Jahman - 15/01/2018, 21:20 |
|
|
15/01/2018, 22:30
Сообщение
#2616
|
|
Продвинутый ученик Группа: Пользователи Сообщений: 72 Регистрация: 08/09/2006 Из: UA Пользователь №: 36 576 |
По хорошему это надо совсем по иному делать. Jahman, спасибо за уделенное время, и помощь! Это то, что было нужно Как все непросто оказалось.. думал там просто код немного у кнопки поменять надо.. Моих знаний к сожалению хватает только на то, чтоб взять чей-то скрипт, и на его основе попробовать слепить то, что мне надо( |
|
|
15/01/2018, 23:14
Сообщение
#2617
|
|
уже всё сделал Группа: Пользователи Сообщений: 2 456 Регистрация: 01/06/2005 Из: z3л3№гр@d Пользователь №: 13 838 |
ну, с чего-то надо начинать. расковырять чужой скрипт на детали - лучший как по мне способ освоить максскрипт и заодно познакомиться с практиками его применения.
|
|
|
28/02/2018, 12:15
Сообщение
#2618
|
|
Новичок Группа: Пользователи Сообщений: 9 Регистрация: 09/02/2017 Пользователь №: 130 198 |
Доброго времени. Пытаюсь допилить работу с максом под свои нужды. Заинтересовался возможностью вешать на одну клавишу несколько функций в зависимости от количества кликов на нее. И вроде бы даже нашел скрипт на поликаунтере для этого, но он не запускает код, который должен активироваться после двойного нажатия. Может кто в курсе как скрипт нужно откорректировать, чтобы он работал в 2016 максе.
macroscript Doubletap01 Category:" MyTools" toolTip:"Double Tap 01" ( fn checklastClicked = ( local thisClicked = timeStamp() if lastClicked != undefined then ( if (thisClicked - lastClicked) < 500 do (--adjust this value to shorten or lengthen wait time (in milliseconds) --insert double tap function here ) lastClicked = thisClicked ) else ( --insert single tap function here ) OK ) checklastClicked() ) ссылка на тему на поликаунтере. |
|
|
28/02/2018, 22:06
Сообщение
#2619
|
||
MaxMan Группа: Пользователи Сообщений: 153 Регистрация: 14/08/2015 Пользователь №: 109 394 |
Заинтересовался возможностью вешать на одну клавишу несколько функций в зависимости от количества кликов на нее. Попробуйте такой вариант. Используем таймер. Код global lastClicked_igorznag, double_click_igorznag, ftm_igorznag fn onTick s e = ( if double_click_igorznag then ( print "double click"--insert double tap function here ) else ( print "single click"--insert single tap function here ) s.Stop() ) macroscript Doubletap01 Category:" MyTools" toolTip:"Double Tap 01" ( fn checklastClicked = ( _interval=250 --adjust this value to shorten or lengthen wait time (in milliseconds) if ftm_igorznag==undefined do ( ftm_igorznag = dotnetobject "System.Windows.Forms.Timer" ftm_igorznag.Interval = _interval dotnet.addEventHandler ftm_igorznag "Tick" onTick )--if ftm==undefined do thisClicked = timeStamp(); double_click_igorznag=false if lastClicked_igorznag != undefined do if (thisClicked - lastClicked_igorznag) < _interval do double_click_igorznag=true lastClicked_igorznag = thisClicked if ftm_igorznag.enabled==false do ftm_igorznag.Start() OK ) checklastClicked() ) |
|
|
||
28/02/2018, 22:17
Сообщение
#2620
|
|
щепдро. Группа: Пользователи Сообщений: 1 530 Регистрация: 24/04/2008 Из: минск Пользователь №: 63 638 |
а нет ли такого скрипта чтобы при перемещении крайней точки сплайна с зажатым shift вытягавался новый сегмент (по аналогии shift+drag ребра в editpoly с образованием нового полигона)
Сообщение отредактировал харумскарум - 28/02/2018, 22:18 |
|
|
01/03/2018, 10:42
Сообщение
#2621
|
|
MaxMan Группа: Пользователи Сообщений: 153 Регистрация: 14/08/2015 Пользователь №: 109 394 |
|
|
|
01/03/2018, 11:44
Сообщение
#2622
|
|
Мастер Группа: Участник Сообщений: 1 280 Регистрация: 30/05/2006 Пользователь №: 32 013 |
2 харумскарум: Припоминаю, что на cgsociety поднимался такой вопрос. И там что-то такое говорили, что вроде никак. Но это не точно.
|
|
|
01/03/2018, 16:52
Сообщение
#2623
|
||
Новичок Группа: Пользователи Сообщений: 9 Регистрация: 09/02/2017 Пользователь №: 130 198 |
Заинтересовался возможностью вешать на одну клавишу несколько функций в зависимости от количества кликов на нее. Попробуйте такой вариант. Используем таймер. Код global lastClicked_igorznag, double_click_igorznag, ftm_igorznag fn onTick s e = ( if double_click_igorznag then ( print "double click"--insert double tap function here ) else ( print "single click"--insert single tap function here ) s.Stop() ) macroscript Doubletap01 Category:" MyTools" toolTip:"Double Tap 01" ( fn checklastClicked = ( _interval=250 --adjust this value to shorten or lengthen wait time (in milliseconds) if ftm_igorznag==undefined do ( ftm_igorznag = dotnetobject "System.Windows.Forms.Timer" ftm_igorznag.Interval = _interval dotnet.addEventHandler ftm_igorznag "Tick" onTick )--if ftm==undefined do thisClicked = timeStamp(); double_click_igorznag=false if lastClicked_igorznag != undefined do if (thisClicked - lastClicked_igorznag) < _interval do double_click_igorznag=true lastClicked_igorznag = thisClicked if ftm_igorznag.enabled==false do ftm_igorznag.Start() OK ) checklastClicked() ) Благодарю за помощь, попробовал использовать вашу версию. Листнер выдает ошибку. win 10 max 2016 -- Error occurred in checklastClicked(); filename: C:\Users\User18\AppData\Local\Autodesk\3dsMax\2016 - 64bit\ENU\usermacros\Custom-test_double_tap.mcr; position: 731; line: 25 -- Frame: -- ftm_igorznag: dotNetObject:System.Windows.Forms.Timer -- _interval: 250 -- thisClicked: undefined -- lastClicked_igorznag: undefined -- onTick: undefined -- double_click_igorznag: undefined -- called in anonymous codeblock; filename: C:\Users\User18\AppData\Local\Autodesk\3dsMax\2016 - 64bit\ENU\usermacros\Custom-test_double_tap.mcr; position: 1127; line: 35 -- Frame: -- checklastClicked: checklastClicked() >> MAXScript MacroScript Error Exception: -- Runtime error: dotNet event handler must be a functions, got: undefined << |
|
|
||
01/03/2018, 19:14
Сообщение
#2624
|
|
щепдро. Группа: Пользователи Сообщений: 1 530 Регистрация: 24/04/2008 Из: минск Пользователь №: 63 638 |
а нет ли такого скрипта чтобы при перемещении крайней точки сплайна с зажатым shift вытягавался новый сегмент (по аналогии shift+drag ребра в editpoly с образованием нового полигона) Почему для вас не подходит кнопка Insert? вот это да! век живи - век учись... ) большое спасибо! |
|
|
01/03/2018, 20:05
Сообщение
#2625
|
|
MaxMan Группа: Пользователи Сообщений: 153 Регистрация: 14/08/2015 Пользователь №: 109 394 |
Благодарю за помощь, попробовал использовать вашу версию. Листнер выдает ошибку. win 10 max 2016 Копируйте полностью код или используйте следующий код: Код macroscript Doubletap01
Category:" MyTools" toolTip:"Double Tap 01" ( global lastClicked_igorznag, double_click_igorznag, ftm_igorznag global onTick fn onTick s e = ( if double_click_igorznag then ( print "double click"--insert double tap function here ) else ( print "single click"--insert single tap function here ) s.Stop() ) fn checklastClicked = ( _interval=250 --adjust this value to shorten or lengthen wait time (in milliseconds) if ftm_igorznag==undefined do ( ftm_igorznag = dotnetobject "System.Windows.Forms.Timer" ftm_igorznag.Interval = _interval dotnet.addEventHandler ftm_igorznag "Tick" onTick )--if ftm==undefined do thisClicked = timeStamp(); double_click_igorznag=false if lastClicked_igorznag != undefined do if (thisClicked - lastClicked_igorznag) < _interval do double_click_igorznag=true lastClicked_igorznag = thisClicked if ftm_igorznag.enabled==false do ftm_igorznag.Start() OK ) checklastClicked() ) |
|
|
Bots |
Системное сообщение
|
|
|
|
|
Текстовая версия | Сейчас: 25/04/2024 - 02:02 |