MaxScript Macros
- Автор темы cherepushka
- Дата создания
- Рейтинг
- 2
Принялся я дальше экспериментировать и застрял. Тоже самое делаю с примитивами, режет нормально. Но вот файл во вложении primerchik-source.obj режет четвертую часть (во вложении primerchik-itog.obj). Почему если к этой модели вручную применять, то Slice режет чётко половину, а скриптом четвертую часть?
Спасибо.
Спасибо.
Код:
(
local src_files = getFiles "C:\models\*.obj"
local save_dir = "C:\models\slice\\"
for f in src_files do
(
resetMaxFile #noPrompt
importFile f #noPrompt
for o in geometry do
(
sl = (SliceModifier slice_type:2)
sl.Slice_Plane.rotation = (quat 90 [0, 1, 0])
addModifier o sl
)
exportFile (save_dir + (getFileNameFile f) + ".obj") #noPrompt
)
)
Вложения
-
957,2 КБ Просмотров: 312
-
780,7 КБ Просмотров: 302
- Рейтинг
- 31
Ты вроде моё предыдущее сообщение прочитал, и даже поблагодарил... только скрипт используешь старый. Поэтому получаешь в лоб теми же граблями.
Пробуй это:
А иожно и соптимизировать. Это должно работать быстрее:
Пробуй это:
Код:
(
local src_files = getFiles "C:\models\*.obj"
local save_dir = "C:\models\slice\\"
for f in src_files do
(
resetMaxFile #noPrompt
importFile f #noPrompt
for o in geometry do
(
CenterPivot o
resetXForm o
sl = (SliceModifier slice_type:2)
sl.Slice_Plane.rotation = (quat 90 [0, 1, 0]) -- поворачиваю вокруг оси Y
addModifier o sl
addModifier o (Mirror mirror_axis:0 copy:true offset:0) -- копия по оси X
)
exportFile (save_dir + (getFileNameFile f) + ".obj") #noPrompt
)
)
Код:
(
local src_files = getFiles "C:\models\*.obj"
local save_dir = "C:\models\slice\\"
local sl = (SliceModifier slice_type:2)
sl.Slice_Plane.rotation = (quat 90 [0, 1, 0]) -- поворачиваю вокруг оси Y
local mirr = (Mirror mirror_axis:0 copy:true offset:0) -- копия по оси X
for f in src_files do
(
resetMaxFile #noPrompt
importFile f #noPrompt
for o in geometry do
(
CenterPivot o
resetXForm o
addModifier o sl
addModifier o mirr
)
exportFile (save_dir + (getFileNameFile f) + ".obj") #noPrompt
)
)
- Рейтинг
- 2
Black Sphinx, спасибо и прошу мне поверить. Я что только не делал, когда нахожусь в тупике, только тогда стараюсь писать. И вот сейчас использую эти два скрипта и не получается порезать чётко пополам. Режет четвертую часть.
- Рейтинг
- 31
Cherepushka, я проверял работу скрипта (неоптимизированный цикл for o in geometry do...) с твоей моделью primerchik-source.obj. Объекты режутся по их геометрическому центру.
Ещё раз проверь каким вариантом скрипта ты пользуешься.
У меня нет оснований тебе не верить. Но что-то идёт не так. В первую очередь проверяем человеческий фактор
Кстати, а почему ты решил использовать связку Slice+Mirror а не Symmetry?
Ещё раз проверь каким вариантом скрипта ты пользуешься.
У меня нет оснований тебе не верить. Но что-то идёт не так. В первую очередь проверяем человеческий фактор
Кстати, а почему ты решил использовать связку Slice+Mirror а не Symmetry?
- Рейтинг
- 2
Black Sphinx, спасибо и прошу прощения, что напрягаю. Я ломал голову уже который день и понял, что проблема в файле stp. Когда скрипт работает с другими расширениями, всё нормально. Но я начал использовать несколько файлов с расширением stp и понял. Хотя непонятно, почему именно с ними.(пробовал указать o.pivot = [0,0,0]) А скрипт работает действительно быстрее, большое спасибо.
Насчет Symmetry, действительно лучше. Спасибо. Только в синтаксисе думаю ошибка
Ничего не происходит, в Listener Ok. Может ли Max подсвечивать ошибки?
Насчет Symmetry, действительно лучше. Спасибо. Только в синтаксисе думаю ошибка
Код:
local sim = (symmetry axis:0 flip:true)
- Рейтинг
- 31
Успокойся, не напрягаешь. "Ломал голову ... и понял"- эт хорошо. Мы все здесь, удалённо, всё-таки не располагаем полной информацией.
Stp, говоришь...
Чисто идейно, должно быть совершенно фиолетово, откуда появился меш: сделан он в самом Максе или импортирован из стороннего формата (кривую модель можно получить и так, и так).
Присылай проблемную модель в stp. Будем посмотреть где и что.
Приведённый тобой код просто создаёт объект (в смысле MAXScript'а) типа модификатор Symmetry. Для того, что бы что-то происходило, надо этот объект модификатора применить к какому-то объекту в сцене посредством функции addModifier. Типа так:
Stp, говоришь...
Чисто идейно, должно быть совершенно фиолетово, откуда появился меш: сделан он в самом Максе или импортирован из стороннего формата (кривую модель можно получить и так, и так).
Присылай проблемную модель в stp. Будем посмотреть где и что.
Приведённый тобой код просто создаёт объект (в смысле MAXScript'а) типа модификатор Symmetry. Для того, что бы что-то происходило, надо этот объект модификатора применить к какому-то объекту в сцене посредством функции addModifier. Типа так:
Код:
(
local src_files = getFiles "C:\models\*.obj"
local save_dir = "C:\models\slice\\"
local sym = (symmetry axis:0) -- flip не нужен; остальные параметры - по умолчанию
for f in src_files do
(
resetMaxFile #noPrompt
importFile f #noPrompt
for o in geometry do
(
CenterPivot o
resetXForm o
addModifier o sym
)
exportFile (save_dir + (getFileNameFile f) + ".obj") #noPrompt
)
)
- Рейтинг
- 2
- Рейтинг
- 2
А каким образом правильно делать скрипт, если у меня такая последовательность вручную.
Есть объект, на его фэйс нужно создать текст (с AutoCrid - если делаю вручную). Преобразовать объект в Editable Poly и команда Attach и указать текст. Я смотрю хэлп официальный и хотелось, по хорошему пинка в правильном направлении, а дальше буду экспериментировать, очень интересно стало.
Есть объект, на его фэйс нужно создать текст (с AutoCrid - если делаю вручную). Преобразовать объект в Editable Poly и команда Attach и указать текст. Я смотрю хэлп официальный и хотелось, по хорошему пинка в правильном направлении, а дальше буду экспериментировать, очень интересно стало.
- Рейтинг
- 31
У тебя в stp-файле объекты в группах. Поэтому не срабатывает CenterPivot(), правда в документации это нигде не написано
Если тебе группы не критичны, то так будет работать:
Дополнительно уменьшил threshold в symmetry, что бы при слиянии не билась геометрия.
Если тебе группы не критичны, то так будет работать:
Код:
(
-- local src_files = getFiles (pathConfig.getCurrentProjectFolder() +@"\scenes\*.stp")
-- local save_dir = pathConfig.getCurrentProjectFolder() + @"\scenes\"
local src_files = getFiles "C:\models\*.obj"
local save_dir = "C:\models\slice\\"
local sym = (symmetry axis:0 threshold:0.001)
for f in src_files do
(
print (getFileNameFile f)
resetMaxFile #noPrompt
importFile f #noPrompt
for h in helpers do
(
if (isGroupHead h) do explodeGroup h
)
for o in geometry do
(
CenterPivot o
resetXForm o
addModifier o sym
)
exportFile (save_dir + (getFileNameFile f) + ".obj") #noPrompt
)
)
- Рейтинг
- 2
Black Sphinx, большое спасибо.
Есть ли возможность созданный текст установить прямо сверху бокса (на его верхнюю грань)?
И после эти два объекта attach?
Есть ли возможность созданный текст установить прямо сверху бокса (на его верхнюю грань)?
Код:
fow = (text text:"Hello" size:7.5)
addModifier fllow (Extrude amount:1.5)
- Рейтинг
- 31
По второму вопросу у меня нет готового решения.
Надо одним щелчком мыши в произвольном вьюпорте (1) выбрать объект и (2) вычислить матрицу трансформации (идентити) для нового текстового объекта в указанной точке (что собственно и делает AutoGrid). Если эту проблему решить, то остальное достаточно тривиально. Некоторые мысли по этому поводу есть, но что-то больно сложно. Может кто-то подскажет как это сделать просто?
Надо одним щелчком мыши в произвольном вьюпорте (1) выбрать объект и (2) вычислить матрицу трансформации (идентити) для нового текстового объекта в указанной точке (что собственно и делает AutoGrid). Если эту проблему решить, то остальное достаточно тривиально. Некоторые мысли по этому поводу есть, но что-то больно сложно. Может кто-то подскажет как это сделать просто?
- Рейтинг
- 31
Кстати, рекомендую скачать оффлайновый хелп по МаксСкрипт в формате chm. Лично для меня онлайновая версия дико неудобна.
http://docs.autodesk.com/3DSMAX/2016/ENU/MAXScript-Help/maxscript-2016-help-chm.zip
http://docs.autodesk.com/3DSMAX/2016/ENU/MAXScript-Help/maxscript-2016-help-chm.zip
- Рейтинг
- 2
Black Sphinx, спасибо. Грызу хэлп, но пока нечем похвастаться. Как будут проблески, то сразу обрадую и буду радоваться сам.
У меня такой вопрос, может кто сталкивался. Есть ли возможность экспортировать в какой-то универсальный формат, чтобы он открывался в других программах (например в SolidWorks, Компас)? Ни один формат, который пробовал экспортировать не открывается в этих программах. Остановился на dwg, открывается только в Автокаде, хотя если делать файл в самом Автокаде, он без проблем в этих программах открывается, а если через Max, то ошибка.
Может в настройках экспорта есть какая-нибудь галочка?
Спасибо.
У меня такой вопрос, может кто сталкивался. Есть ли возможность экспортировать в какой-то универсальный формат, чтобы он открывался в других программах (например в SolidWorks, Компас)? Ни один формат, который пробовал экспортировать не открывается в этих программах. Остановился на dwg, открывается только в Автокаде, хотя если делать файл в самом Автокаде, он без проблем в этих программах открывается, а если через Max, то ошибка.
Может в настройках экспорта есть какая-нибудь галочка?
Спасибо.
- Рейтинг
- 31
Иморт/экспорт 3D-форматов - давняя боль. Всегда было криво, и всегда очень индивидуально для каждой пары программ. Если в последнее время что-то изменилось - был бы рад услышать.
Ты в Автокаде экспортированную модель не пробовал пересохранить? Или открыть в Автокаде экспортированный файл и скопировать модель в новый файл, созданный в Автокаде? Понятно, что получается через задницу, но если очень надо перекинуть модель, то почему бы и нет?
Только вопрос не по теме ветки форума. Ты бы его задал где-нибудь в более обитаемой ветке. Может кто-то и что-то и расскажет.
Ты в Автокаде экспортированную модель не пробовал пересохранить? Или открыть в Автокаде экспортированный файл и скопировать модель в новый файл, созданный в Автокаде? Понятно, что получается через задницу, но если очень надо перекинуть модель, то почему бы и нет?
Только вопрос не по теме ветки форума. Ты бы его задал где-нибудь в более обитаемой ветке. Может кто-то и что-то и расскажет.
- Рейтинг
- 2
В самом Автокаде пробовал, ничего. Чего только не делал.
И вот до чего дошел. Экспорт из макса в Автокад (*.dwg). В автокаде в 3д режиме преобразовал в поверхность объекты и сделал экспорт в igs. Только такие файлы открывают Компас и SolidWorks. Напрямую в igs из 3ds max не выходит.
Так вот, почему продолжаю писать в этой теме. Мне нужно эти же действия, которые делал в Автокаде осуществить в Максе.
Если я просто Конвертирую объекты в Nurbs, то экспорт не выходит. Нужно найти аналог команды в Автокаде преобразовать в поверхность. (Nurbs surface или нет?)
Спасибо.
И вот до чего дошел. Экспорт из макса в Автокад (*.dwg). В автокаде в 3д режиме преобразовал в поверхность объекты и сделал экспорт в igs. Только такие файлы открывают Компас и SolidWorks. Напрямую в igs из 3ds max не выходит.
Так вот, почему продолжаю писать в этой теме. Мне нужно эти же действия, которые делал в Автокаде осуществить в Максе.
Если я просто Конвертирую объекты в Nurbs, то экспорт не выходит. Нужно найти аналог команды в Автокаде преобразовать в поверхность. (Nurbs surface или нет?)
Спасибо.