А нет-ли такого скрипта? |
Home· Статьи · Вакансии · Чертежи · 3D Галерея · 2D Галерея · Форум · Форум Realtime | Реклама |  Конкурсы | RAR Award | Правила |
Здравствуйте, гость ( Вход | Регистрация )
А нет-ли такого скрипта? |
11/11/2017, 14:08
Сообщение
#2566
|
|
уже всё сделал Группа: Пользователи Сообщений: 2 456 Регистрация: 01/06/2005 Из: z3л3№гр@d Пользователь №: 13 838 |
CODE fn selectNodesByName name = ( select (for s in (execute ("$" + name + "*")) where s.name == name collect s) ) fn getNodesByName name = ( for s in (execute ("$" + name + "*")) where s.name == name collect s ) -- EXAMPLE delete objects for s in #( "red", "green", "yellow" ) do ( clr = execute s for i=1 to 7 do ( b = box pos:(random [-100,-100,0] [100,100,0]) wirecolor:clr name:(s + "Box") rotate b (AngleAxis (random 0.0 180.0) [0,0,1]) ) ) max tool zoomextents all sleep 1 select objects for s in selection do ( nodes = getNodesByName s.name if nodes.count > 1 do ( for j=2 to nodes.count do ( redrawViews() sleep 0.1 nodes[j].transform = nodes[1].transform ) ) deselect nodes ) Сообщение отредактировал Jahman - 11/11/2017, 14:47 |
|
|
11/11/2017, 18:29
Сообщение
#2567
|
|
MaxMan Группа: Пользователи Сообщений: 180 Регистрация: 04/05/2006 Из: Ryazan Пользователь №: 30 816 |
первый вариант был лучше
|
|
|
11/11/2017, 19:49
Сообщение
#2568
|
|
уже всё сделал Группа: Пользователи Сообщений: 2 456 Регистрация: 01/06/2005 Из: z3л3№гр@d Пользователь №: 13 838 |
а чем конкретно лучше? по функционалу всё ровно то же самое должно быть
этот вариант для всех объектов сцены, что вроде и требовалось а для конкретного имени все то же самое: CODE selectNodesByName "somename"
if selection.count > 1 do selection.transform = selection[1].transform Сообщение отредактировал Jahman - 11/11/2017, 19:53 |
|
|
12/11/2017, 13:10
Сообщение
#2569
|
|
Уважаемый Группа: Участник Сообщений: 862 Регистрация: 05/12/2004 Из: Минск Пользователь №: 8 716 |
как объект выделить или подобъекты по айди думаю понятно Код ( uvwXform = UVW_Xform() paramWire.connect2Way uvwXform[#U_Tile] uvwXform[#V_Tile] "V_Tile" "U_Tile" paramWire.connect2Way uvwXform[#W_Tile] uvwXform[#V_Tile] "V_Tile" "W_Tile" max modify mode modPanel.addModToSelection uvwXform ) Пытаюсь сделать аналогично скрипт, чтобы назначал модификатор Slice первому объекту, находил модификатор Slice у второго объекта, и связывал их Позишн и Ротэйшн через Wire Parameters, однако чтото ругается и не выходит...что не так непойму ? : Код (
s = selection as array local M for i=1 to s[2].modifiers.count where classof s[2].modifiers[i] == SliceModifier and s[2].modifiers[i].enabled == true and s[2].modifiers[i].enabledInRenders == true do M = i select s[1] SM = SliceModifier() paramWire.connect2Way SM.Slice_Plane.position s[2].modifiers[M].Slice_Plane.position "Position" "Position" paramWire.connect2Way SM.Slice_Plane.rotation s[2].modifiers[M].Slice_Plane.rotation "Rotation" "Rotation" modPanel.addModToSelection SM ) Сообщение отредактировал IOG - 12/11/2017, 13:33 |
|
|
12/11/2017, 16:36
Сообщение
#2570
|
|
уже всё сделал Группа: Пользователи Сообщений: 2 456 Регистрация: 01/06/2005 Из: z3л3№гр@d Пользователь №: 13 838 |
так вроде все как белый день в листенере написано, не?
CODE -- Runtime error: connect requires subAnims к свойству надо через квадратые скобки обращаться как в моем примере выше |
|
|
12/11/2017, 17:03
Сообщение
#2571
|
|
Уважаемый Группа: Участник Сообщений: 862 Регистрация: 05/12/2004 Из: Минск Пользователь №: 8 716 |
Ага - спасибо за подсказку . Вот так вот уже работает
Код paramWire.connect2Way SM.Slice_Plane[#position] s[2].modifiers[M].Slice_Plane[#position] "Position" "Position"
|
|
|
14/11/2017, 14:43
Сообщение
#2572
|
|
Новичок Группа: Пользователи Сообщений: 3 Регистрация: 09/08/2015 Пользователь №: 109 346 |
добрый день
подскажите со сриптом (кодом), (частью кода) к выделенным вершинам обьекта применяем команду (например мув или релакс....) которая смещает вершини, требуеться наити "старые" координаты вершин, и "новые" координаты вершин и в конечном итиге разместить каждую из выделенных вершин на 50% пути етого смешения |
|
|
14/11/2017, 15:02
Сообщение
#2573
|
|
уже всё сделал Группа: Пользователи Сообщений: 2 456 Регистрация: 01/06/2005 Из: z3л3№гр@d Пользователь №: 13 838 |
может изначально стоит смещать лишь на нужное расстояние? в чем смысл скрипта вцелом?
а так. делаете snapshotasmesh объекта перед сдвигом вершин смещаете вершины теперь между текущим и прошлым положением несложно найти искомое положение (середину): (стараяПозиция + новаяПозиция)/2.0 |
|
|
14/11/2017, 16:12
Сообщение
#2574
|
|
уже всё сделал Группа: Пользователи Сообщений: 2 456 Регистрация: 01/06/2005 Из: z3л3№гр@d Пользователь №: 13 838 |
вот жеж век учись. rtfm как грится
QUOTE getNodeByName <string> exact:<bool> ignoreCase:<bool> all:<bool> |
|
|
15/11/2017, 14:05
Сообщение
#2575
|
|
Новичок Группа: Пользователи Сообщений: 3 Регистрация: 09/08/2015 Пользователь №: 109 346 |
Jahman спасибо
а можете в код оформить? (не имею достачоно знаний чтоб в код оформить самостоятельно) интересно понять как етот скрипт выглядит, а вместо релакса можно будет использовать любую команду, смещать на заданное растояние изначально не вариант т.к. тотже релакс смешает вершины не на заданное число а в зависимости от конкретного расположения вершин п.с. скрипт должен работать без сворачивания стека, и с модификатором Edit Ploy, быть применим к сабобжектам |
|
|
15/11/2017, 14:23
Сообщение
#2576
|
|
уже всё сделал Группа: Пользователи Сообщений: 2 456 Регистрация: 01/06/2005 Из: z3л3№гр@d Пользователь №: 13 838 |
сделайте копию объекта, модифицируйте
а потом через morpher модификтор интерполируйте как душе угодно между двумя состояниями Сообщение отредактировал Jahman - 15/11/2017, 14:23 |
|
|
16/11/2017, 12:20
Сообщение
#2577
|
|
Новичок Группа: Пользователи Сообщений: 3 Регистрация: 09/08/2015 Пользователь №: 109 346 |
нужно именно чтоб как релакс, и к вертексам был применим, чтоб не выходить из сабобджектов
ето ведь возможно реализовать? может подскажите где можно информацию найти? , конкретные ресурсы, для моего уровня "новичка"), чтоб я мог разобраться с кодом |
|
|
16/11/2017, 12:59
Сообщение
#2578
|
|
уже всё сделал Группа: Пользователи Сообщений: 2 456 Регистрация: 01/06/2005 Из: z3л3№гр@d Пользователь №: 13 838 |
я не могу смысла написанного расшифровать, сорри.
картинка как было - как есть - как нужно снимет все вопросы |
|
|
27/11/2017, 18:03
Сообщение
#2579
|
|
MaxMan Группа: Пользователи Сообщений: 180 Регистрация: 04/05/2006 Из: Ryazan Пользователь №: 30 816 |
Здравствуйте
Jahman. Прошу вашей помощи, этот будет полезно не только мне , все у кого есть Laseraxes , производитель почему-то прекратил в этом году поддержку, не отвечает на форуме. Его все пользователи просили сделать поддержку импорта DXF файлов. Он вроде написал новую версию программы с индексом C но там DXF все равно не открывается. Я уже больше года делаю сам из DXF код для ЧПУ Laseraxes так: рисую что мне надо в CorelDrive, а потом открываю в 3ds Max, или в 3ds Max сразу если позволяет информация, ведь в 3ds Max сплайны оптимизированы и меньше по весу, далее сопоставляю все размеры как надо в миллиметрах что были, Laseraxes понимает только миллиметры в коде. Все сплайны располагаю на виде с верху, не задействую ось Z вообще. все только двухмерные (x-y), все сплайны надо размещать так чтобы они были справа вверху оц центра координат на виде сверху, тоесть не должно быть минусовых значений, желательно всю сцену с сплайнами ориентировать нижним левым углом габаритного контейнера в нулевой точке, что бы потом не было холостого хода вправо и вверх. Экспортирую из 3ds Max в формах DXF (Autocad 2004 версия), потом открываю в специальной программе с графической оболочкой для 3 д принтеров, там 3 оси генерируется для кода с другими командами на действия, но с схожими командами на перемещение. с осью Z , так как мне для плоттера не нужна полностью ось Z, а только одна актив а ция (лазера-ножа) я делаю так: Эта программка "Ace Converter" из DXF делает такой вот код, на примере прямоугольна и одной линии : CODE G00 Z0.1000 --подъем ножа(экструдера) G00 X50.0000 Y50.0000 -- точка начала очередного сегмента (прямоугольника) х =50 мм, н тоже 50 мм G01 Z0.0000 --опускание ножа (экструдера), активация G01 X0.0000 Y50.0000 Z0.0000 --координата к которой стремится (нож, экструдер..) это движение влево G01 X0.0000 Y0.0000 Z0.0000 --координата к которой стремится (нож, экструдер..) это движение вниз G01 X50.0000 Y0.0000 Z0.0000 --координата к которой стремится (нож, экструдер..) это движение вправо G01 X50.0000 Y50.0000 Z0.0000 --координата к которой стремится (нож, экструдер..) это движение вверх G00 Z0.1000 -- это код подъема ножа(экструдера), прекращения реза G00 X40.0000 Y80.0000 -- точка начала следующего сегмента (линии) G01 Z0.0000 --опускание ножа (экструдера), активация G01 X70.0000 Y20.0000 Z0.0000 --координата к которой стремится (нож, экструдер.. G00 Z0.1000 -- это код подъема ножа(экструдера), прекращения реза Программа у меня Laseraxes использует команду M5 (laser stop) и команду M3 (laser start) я в блокноте заменяю все ( G00 Z0.1000 на M5 ) и ( G01 Z0.0000 на M3 ) Получается у меня вот такой код: CODE M5 G00 X50.0000 Y50.0000 M3 G01 X0.0000 Y50.0000 Z0.0000 G01 X0.0000 Y0.0000 Z0.0000 G01 X50.0000 Y0.0000 Z0.0000 G01 X50.0000 Y50.0000 Z0.0000 M5 G00 X40.0000 Y80.0000 M3 G01 X70.0000 Y20.0000 Z0.0000 M5 я еще добавляю от себя иногда скорость, если надо где-то помедленней пройтись для большего прожига в код строчку "Fxxx", но это не всегда, обычно все на одной скорости делаю и иногда строчку пишу для возврата головки в парковочные координаты , это команда G2 Jahman. Как этот G- код (движения по двухмерному сплайну) c такими как надо мне командами генерировать сразу в 3ds Max? Мне достаточно кода без изменения скорости и без прочих атрибутов, только: |
|
|
27/11/2017, 20:09
Сообщение
#2580
|
|
уже всё сделал Группа: Пользователи Сообщений: 2 456 Регистрация: 01/06/2005 Из: z3л3№гр@d Пользователь №: 13 838 |
Вопрос на миллион, конечно.
Я бы начал с разбиения всех криволинейных участков сплайна на отрезки некоторой длины (какой-то минимальный шаг для сохранения кривизны, возможно как-раз зависимый от кривизны). Затем по всем этим координатам для каждого сплайна по отдельности генерить код команд для резака и форматом его писать в файл. CODE ss = stringstream ""
cmd = "G01" pts = #([1,1,0],[2,2,0],[2,3,0],[4,4,0],[3,5,0]) for p in pts do ( format "% X% Y% Z%\n" cmd p.x p.y p.z to:ss ) |
|
|
Bots |
Системное сообщение
|
|
|
|
|
Текстовая версия | Сейчас: 24/04/2024 - 06:17 |