3DCenter.ru

Здравствуйте, гость ( Вход | Регистрация )

191 страниц V  « < 170 171 172 173 174 > »   
Reply to this topicStart new topic
> А нет-ли такого скрипта?
Jahman
сообщение 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
Go to the top of the page
 
+Quote Post
Ded_
сообщение 11/11/2017, 18:29
Сообщение #2567


MaxMan
Иконка группы

Группа: Пользователи
Сообщений: 180
Регистрация: 04/05/2006
Из: Ryazan
Пользователь №: 30 816



первый вариант был лучше
Go to the top of the page
 
+Quote Post
Jahman
сообщение 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
Go to the top of the page
 
+Quote Post
IOG
сообщение 12/11/2017, 13:10
Сообщение #2569


Уважаемый
Иконка группы

Группа: Участник
Сообщений: 862
Регистрация: 05/12/2004
Из: Минск
Пользователь №: 8 716



Цитата(Jahman @ 09/11/2017, 13:23) *
как объект выделить или подобъекты по айди думаю понятно
Код
(
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
Go to the top of the page
 
+Quote Post
Jahman
сообщение 12/11/2017, 16:36
Сообщение #2570


уже всё сделал
Иконка группы

Группа: Пользователи
Сообщений: 2 456
Регистрация: 01/06/2005
Из: z3л3№гр@d
Пользователь №: 13 838



так вроде все как белый день в листенере написано, не?
CODE
-- Runtime error: connect requires subAnims


к свойству надо через квадратые скобки обращаться как в моем примере выше
Go to the top of the page
 
+Quote Post
IOG
сообщение 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"
Go to the top of the page
 
+Quote Post
dl80802
сообщение 14/11/2017, 14:43
Сообщение #2572


Новичок
Иконка группы

Группа: Пользователи
Сообщений: 3
Регистрация: 09/08/2015
Пользователь №: 109 346



добрый день
подскажите со сриптом (кодом), (частью кода)
к выделенным вершинам обьекта применяем команду (например мув или релакс....) которая смещает вершини,
требуеться наити "старые" координаты вершин, и "новые" координаты вершин и в конечном итиге разместить каждую из выделенных вершин на 50% пути етого смешения
Go to the top of the page
 
+Quote Post
Jahman
сообщение 14/11/2017, 15:02
Сообщение #2573


уже всё сделал
Иконка группы

Группа: Пользователи
Сообщений: 2 456
Регистрация: 01/06/2005
Из: z3л3№гр@d
Пользователь №: 13 838



может изначально стоит смещать лишь на нужное расстояние? в чем смысл скрипта вцелом?

а так.
делаете snapshotasmesh объекта перед сдвигом вершин
смещаете вершины
теперь между текущим и прошлым положением несложно найти искомое положение (середину): (стараяПозиция + новаяПозиция)/2.0
Go to the top of the page
 
+Quote Post
Jahman
сообщение 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>


Go to the top of the page
 
+Quote Post
dl80802
сообщение 15/11/2017, 14:05
Сообщение #2575


Новичок
Иконка группы

Группа: Пользователи
Сообщений: 3
Регистрация: 09/08/2015
Пользователь №: 109 346



Jahman спасибо

а можете в код оформить? (не имею достачоно знаний чтоб в код оформить самостоятельно)

интересно понять как етот скрипт выглядит, а вместо релакса можно будет использовать любую команду,
смещать на заданное растояние изначально не вариант т.к. тотже релакс смешает вершины не на заданное число а в зависимости от конкретного расположения вершин

п.с. скрипт должен работать без сворачивания стека, и с модификатором Edit Ploy, быть применим к сабобжектам
Go to the top of the page
 
+Quote Post
Jahman
сообщение 15/11/2017, 14:23
Сообщение #2576


уже всё сделал
Иконка группы

Группа: Пользователи
Сообщений: 2 456
Регистрация: 01/06/2005
Из: z3л3№гр@d
Пользователь №: 13 838



сделайте копию объекта, модифицируйте
а потом через morpher модификтор интерполируйте как душе угодно между двумя состояниями

Сообщение отредактировал Jahman - 15/11/2017, 14:23
Go to the top of the page
 
+Quote Post
dl80802
сообщение 16/11/2017, 12:20
Сообщение #2577


Новичок
Иконка группы

Группа: Пользователи
Сообщений: 3
Регистрация: 09/08/2015
Пользователь №: 109 346



нужно именно чтоб как релакс, и к вертексам был применим, чтоб не выходить из сабобджектов
ето ведь возможно реализовать?
может подскажите где можно информацию найти? , конкретные ресурсы, для моего уровня "новичка"), чтоб я мог разобраться с кодом
Go to the top of the page
 
+Quote Post
Jahman
сообщение 16/11/2017, 12:59
Сообщение #2578


уже всё сделал
Иконка группы

Группа: Пользователи
Сообщений: 2 456
Регистрация: 01/06/2005
Из: z3л3№гр@d
Пользователь №: 13 838



я не могу смысла написанного расшифровать, сорри.
картинка как было - как есть - как нужно снимет все вопросы
Go to the top of the page
 
+Quote Post
Ded_
сообщение 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, а только одна актив huh.gifа ция (лазера-ножа) я делаю так:
Эта программка "Ace Converter" из DXF делает такой вот код, на примере прямоугольна и одной линии :
http://www.dakeng.com/ace.htm (сайт программы)
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?
Мне достаточно кода без изменения скорости и без прочих атрибутов, только:


Go to the top of the page
 
+Quote Post
Jahman
сообщение 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

)
Go to the top of the page
 
+Quote Post
Bots
сообщение Системное сообщение






191 страниц V  « < 170 171 172 173 174 > » 
Reply to this topicStart new topic

1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 16/04/2024 - 07:49