Доброго времени господа!) помогите пожалуйста разобраться, никак не дается решение, задача: указать обьект, клонировать его, назначить контр.аттачмент, указать цел.обьект и разместить на нем созданый. Застрял на моменте пиканья, никак не удается "привязать" мышку к ноде( вот собсна что получилось, не много, только учусь, подскажите плиз, а
rollout unnamedRollout "Untitled" width:162 height:300
(
pickbutton pickbutton "PickButton" pos:[8,8] width:145 height:33
pickbutton DriverPicker "DrvPick" pos:[8,48] width:145 height:33 enabled:true
on pickbutton picked obj do
(
if SuperClassOf(obj) == GeometryClass then
Пример: Запускаем скрипт. Открывается новое окно.
Нажимаем кнопку SrcPick и выбираем нужный обьект.
Нажимаем кнопку DrvPick и выбираем нужный цел.обьект.
Нажимаем кнопку CloneSetPosition и перемещаем курсор мыши над поверхностью цел.обьекта.
Нажимаем левую или правую кнопку мыши, чтобы зафиксировать положение объекта.
rollout unnamedRollout "Untitled"
(
fn obj_filt obj = SuperClassOf obj == GeometryClass
pickbutton sourcePicker "SrcPick" width:145 height:33 filter:obj_filt
pickbutton DriverPicker "DrvPick" width:145 height:33 filter:obj_filt
button btnsetpos "CloneSetPosition" width:145 height:33
local source_obj, driver_obj, cloned_obj
tool select_pos
(
on mousePoint clickno do if clickno == 1 then
(try deletemodifier driver_obj 1 catch(); #stop)
on mouseAbort clickno do try deletemodifier driver_obj 1 catch()
on freeMove do
(
try
(
theRay = mapScreenToWorldRay mouse.pos
theInt = IntersectRayEx driver_obj theRay
if theInt !=undefined then
(
actrl=cloned_obj.pos.controller
theAKey=AttachCtrl.getKey actrl 1
p=theInt[1].pos; i=theInt[2]; bc=theInt[3]
theAKey.coord=[bc.x,bc.y]; theAKey.face=i-1;
AttachCtrl.update actrl
)--if theInt !=undefined then
)catch()
)--on freeMove do
)--tool PointCreator
on bbb picked obj do starttool select_pos
on sourcePicker picked obj do (source_obj=obj;sourcePicker.caption = obj.name)
on DriverPicker picked obj do (driver_obj=obj;DriverPicker.caption = obj.name)
on btnsetpos pressed do
(
try
(
maxOps.cloneNodes source_obj cloneType:#copy newNodes:&nnl; cloned_obj=nnl[1]
m=Turn_to_Mesh(); addmodifier driver_obj m
select cloned_obj;
actrl = Attachment();cloned_obj.position.controller = actrl
actrl.node = driver_obj; addNewKey actrl 0f
starttool select_pos
)catch()
)--on btnsetpos pressed do
);createdialog unnamedRollout
Доброго времени уважаемые) а подскажите пожалуйста, возможноли средствами кода выделить обьект мышкой, тоесть написать код, а выделять обьект мышкой, ну например чтоб записать его в переменную
Если я вас правильно понял, тогда используйте функцию pickObject.
Пример: Запускаем скрипт. Открывается новое окно.
Нажимаем один раз кнопку CloneSetPosition и выбираем нужный обьект.
Потом выбираем нужный цел.обьект и перемещаем курсор мыши над поверхностью цел.обьекта.
Нажимаем левую или правую кнопку мыши, чтобы зафиксировать положение объекта.
try destroydialog unnamedRollout catch()
rollout unnamedRollout "Untitled"
(
fn obj_filt obj = SuperClassOf obj == GeometryClass
button btnsetpos "CloneSetPosition" width:145 height:33
local driver_obj, cloned_obj
tool select_pos
(
on mousePoint clickno do if clickno == 1 then
(try deletemodifier driver_obj 1 catch(); #stop)
on mouseAbort clickno do try deletemodifier driver_obj 1 catch()
on freeMove do
(
try
(
theRay = mapScreenToWorldRay mouse.pos
theInt = IntersectRayEx driver_obj theRay
if theInt !=undefined then
(
actrl=cloned_obj.pos.controller
theAKey=AttachCtrl.getKey actrl 1
p=theInt[1].pos; i=theInt[2]; bc=theInt[3]
theAKey.coord=[bc.x,bc.y]; theAKey.face=i-1;
AttachCtrl.update actrl
)--if theInt !=undefined then
)catch()
)--on freeMove do
)--tool PointCreator
on btnsetpos pressed do
(
try
(
source_obj=pickObject filter:obj_filt
if isvalidnode source_obj then
(
driver_obj=pickObject filter:obj_filt rubberBand:source_obj.pos
if isvalidnode driver_obj then
(
maxOps.cloneNodes source_obj cloneType:#copy newNodes:&nnl; cloned_obj=nnl[1]
m=Turn_to_Mesh(); addmodifier driver_obj m
select cloned_obj;
actrl = Attachment();cloned_obj.position.controller = actrl
actrl.node = driver_obj; addNewKey actrl 0f
starttool select_pos
)--if driver_obj source_obj then
)--if isvalidnode source_obj then
)catch()
)--on btnsetpos pressed do
);createdialog unnamedRollout
Доброго времени господа! Чет никак не могу я понять систему написания скриптов( вот Вы igorznag написали скрипт таким образом что на каждое "действие" своя кнопка т.е. соурс, драйвер и конформ (помоему так называются)), а я изначально думал что можно все эти действия в скрипте заложить, и нажав одну кнопку поочередно пикнуть соурс, затем указать драйвер и тутже начнется размещение на драйвере. И вот же засада, ну никак не получается у меня такое написать((( может я неправильно понимаю все, может нельза такова впринципе написать?(
я изначально думал что можно все эти действия в скрипте заложить, и нажав одну кнопку поочередно пикнуть соурс, затем указать драйвер и тутже начнется размещение на драйвере. И вот же засада, ну никак не получается у меня такое написать
Я написал такой скрипт в сообщение 5.
Вы читали сообщение 5? Чем вас не устраивает скрипт из сообщения 5?
Доброго всем времени и хорошего настроения!!!никак не выходит у меня каменный цветок))) возраст чтоли, не пойму(, может подскажете как работать с кнопкой checkedButon, почитал во здесь http://forum.darkdragons.ru/showthread.php?t=1024 чет ничего не понятно, не дает никакой инфы про то как ей(кнопкой) пользоваться. А задачу я себе поставил следующую: нажимаем чекБатон, выполняется какой нибудь скрипт(да хоть бокс создается) и кнопка отключается(сама). Ну никак не получается( может такова вообще нельзя сделать? Хотя этож максскрипт, я думаю там все можно(
А задачу я себе поставил следующую: нажимаем чекБатон, выполняется какой нибудь скрипт(да хоть бокс создается) и кнопка отключается(сама).
Пример: Запускаем скрипт. Открывается новое окно.
Включаем кнопку CloneSetPosition и выбираем нужный обьект.
Потом выбираем нужный цел.обьект и перемещаем курсор мыши над поверхностью цел.обьекта.
Нажимаем левую или правую кнопку мыши, чтобы зафиксировать положение объекта.
try destroydialog unnamedRollout catch()
rollout unnamedRollout "Untitled"
(
fn obj_filt obj = SuperClassOf obj == GeometryClass
checkbutton btnsetpos "CloneSetPosition" width:145 height:33
local driver_obj, cloned_obj
tool select_pos
(
on mousePoint clickno do if clickno == 1 then
(try deletemodifier driver_obj 1 catch(); #stop)
on mouseAbort clickno do try deletemodifier driver_obj 1 catch()
on freeMove do
(
try
(
theRay = mapScreenToWorldRay mouse.pos
theInt = IntersectRayEx driver_obj theRay
if theInt !=undefined then
(
actrl=cloned_obj.pos.controller
theAKey=AttachCtrl.getKey actrl 1
p=theInt[1].pos; i=theInt[2]; bc=theInt[3]
theAKey.coord=[bc.x,bc.y]; theAKey.face=i-1;
AttachCtrl.update actrl
)--if theInt !=undefined then
)catch()
)--on freeMove do
)--tool PointCreator
on btnsetpos changed theState do
(
if theState==true then
(
try
(
source_obj=pickObject filter:obj_filt
if isvalidnode source_obj then
(
driver_obj=pickObject filter:obj_filt rubberBand:source_obj.pos
if isvalidnode driver_obj then
(
maxOps.cloneNodes source_obj cloneType:#copy newNodes:&nnl; cloned_obj=nnl[1]
m=Turn_to_Mesh(); addmodifier driver_obj m
select cloned_obj;
actrl = Attachment();cloned_obj.position.controller = actrl
actrl.node = driver_obj; addNewKey actrl 0f
starttool select_pos
)--if driver_obj source_obj then
)--if isvalidnode source_obj then
btnsetpos.checked=false
)catch()
)--if theState==true then
else btnsetpos.checked=true
)--on btnsetpos changed theState do
);createdialog unnamedRollout
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
Andrew Lopatin
rollout unnamedRollout "Untitled" width:162 height:300
(
pickbutton pickbutton "PickButton" pos:[8,8] width:145 height:33
pickbutton DriverPicker "DrvPick" pos:[8,48] width:145 height:33 enabled:true
on pickbutton picked obj do
(
if SuperClassOf(obj) == GeometryClass then
(
PickButton.caption = obj.name
select obj
s=obj
actrl = Attachment()
s.position.controller = actrl
(
actrl.node = on mousePoint clickno do
if on == 1 then obj select else #stop
)
)
else
messageBox "bla-bla-bla"
)
)
createdialog unnamedRollout
igorznag
Нажимаем кнопку SrcPick и выбираем нужный обьект.
Нажимаем кнопку DrvPick и выбираем нужный цел.обьект.
Нажимаем кнопку CloneSetPosition и перемещаем курсор мыши над поверхностью цел.обьекта.
Нажимаем левую или правую кнопку мыши, чтобы зафиксировать положение объекта.
Andrew Lopatin
Andrew Lopatin
igorznag
Пример: Запускаем скрипт. Открывается новое окно.
Нажимаем один раз кнопку CloneSetPosition и выбираем нужный обьект.
Потом выбираем нужный цел.обьект и перемещаем курсор мыши над поверхностью цел.обьекта.
Нажимаем левую или правую кнопку мыши, чтобы зафиксировать положение объекта.
Andrew Lopatin
Andrew Lopatin
igorznag
Я написал такой скрипт в сообщение 5.
Вы читали сообщение 5? Чем вас не устраивает скрипт из сообщения 5?
Andrew Lopatin
Andrew Lopatin
igorznag
Включаем кнопку CloneSetPosition и выбираем нужный обьект.
Потом выбираем нужный цел.обьект и перемещаем курсор мыши над поверхностью цел.обьекта.
Нажимаем левую или правую кнопку мыши, чтобы зафиксировать положение объекта.
Andrew Lopatin
rollout unnamedRollout "Untitled" width:162 height:300
(
fn MoF = ckb1 checked == false
checkbutton ckb1 "CheckButton" pos:[5,10] width:148 height:44
on ckb1 changed state do
(if state == true then
box()
else MoF
)
)
createdialog unnamedRollout
видимо я еще просто не понимаю синтаксис построения скриптов, хотя самому кажется что все понятно, вот же незадача)))