Принялся я дальше экспериментировать и застрял. Тоже самое делаю с примитивами, режет нормально. Но вот файл во вложении 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
)
)
Ты вроде моё предыдущее сообщение прочитал, и даже поблагодарил... только скрипт используешь старый. Поэтому получаешь в лоб теми же граблями.
Пробуй это:
(
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
)
)
Black Sphinx, спасибо и прошу мне поверить. Я что только не делал, когда нахожусь в тупике, только тогда стараюсь писать. И вот сейчас использую эти два скрипта и не получается порезать чётко пополам. Режет четвертую часть.
Cherepushka, я проверял работу скрипта (неоптимизированный цикл for o in geometry do...) с твоей моделью primerchik-source.obj. Объекты режутся по их геометрическому центру.
Ещё раз проверь каким вариантом скрипта ты пользуешься.
У меня нет оснований тебе не верить. Но что-то идёт не так. В первую очередь проверяем человеческий фактор 😉
Кстати, а почему ты решил использовать связку Slice+Mirror а не Symmetry?
Black Sphinx, спасибо и прошу прощения, что напрягаю. Я ломал голову уже который день и понял, что проблема в файле stp. Когда скрипт работает с другими расширениями, всё нормально. Но я начал использовать несколько файлов с расширением stp и понял. Хотя непонятно, почему именно с ними.(пробовал указать o.pivot = [0,0,0]) А скрипт работает действительно быстрее, большое спасибо. Насчет Symmetry, действительно лучше. Спасибо. Только в синтаксисе думаю ошибка
local sim = (symmetry axis:0 flip:true)
Ничего не происходит, в Listener Ok. Может ли Max подсвечивать ошибки?
Успокойся, не напрягаешь. "Ломал голову ... и понял"- эт хорошо. Мы все здесь, удалённо, всё-таки не располагаем полной информацией.
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
)
)
А каким образом правильно делать скрипт, если у меня такая последовательность вручную.
Есть объект, на его фэйс нужно создать текст (с AutoCrid - если делаю вручную). Преобразовать объект в Editable Poly и команда Attach и указать текст. Я смотрю хэлп официальный и хотелось, по хорошему пинка в правильном направлении, а дальше буду экспериментировать, очень интересно стало.
У тебя в stp-файле объекты в группах. Поэтому не срабатывает CenterPivot(), правда в документации это нигде не написано
Если тебе группы не критичны, то так будет работать:
(
-- 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
)
)
Дополнительно уменьшил threshold в symmetry, что бы при слиянии не билась геометрия.
Надо одним щелчком мыши в произвольном вьюпорте (1) выбрать объект и (2) вычислить матрицу трансформации (идентити) для нового текстового объекта в указанной точке (что собственно и делает AutoGrid). Если эту проблему решить, то остальное достаточно тривиально. Некоторые мысли по этому поводу есть, но что-то больно сложно. Может кто-то подскажет как это сделать просто?
Black Sphinx, спасибо. Грызу хэлп, но пока нечем похвастаться. Как будут проблески, то сразу обрадую и буду радоваться сам. У меня такой вопрос, может кто сталкивался. Есть ли возможность экспортировать в какой-то универсальный формат, чтобы он открывался в других программах (например в SolidWorks, Компас)? Ни один формат, который пробовал экспортировать не открывается в этих программах. Остановился на dwg, открывается только в Автокаде, хотя если делать файл в самом Автокаде, он без проблем в этих программах открывается, а если через Max, то ошибка. Может в настройках экспорта есть какая-нибудь галочка? Спасибо.
Иморт/экспорт 3D-форматов - давняя боль. Всегда было криво, и всегда очень индивидуально для каждой пары программ. Если в последнее время что-то изменилось - был бы рад услышать.
Ты в Автокаде экспортированную модель не пробовал пересохранить? Или открыть в Автокаде экспортированный файл и скопировать модель в новый файл, созданный в Автокаде? Понятно, что получается через задницу, но если очень надо перекинуть модель, то почему бы и нет?
Только вопрос не по теме ветки форума. Ты бы его задал где-нибудь в более обитаемой ветке. Может кто-то и что-то и расскажет.
В самом Автокаде пробовал, ничего. Чего только не делал.
И вот до чего дошел. Экспорт из макса в Автокад (*.dwg). В автокаде в 3д режиме преобразовал в поверхность объекты и сделал экспорт в igs. Только такие файлы открывают Компас и SolidWorks. Напрямую в igs из 3ds max не выходит.
Так вот, почему продолжаю писать в этой теме. Мне нужно эти же действия, которые делал в Автокаде осуществить в Максе.
Если я просто Конвертирую объекты в Nurbs, то экспорт не выходит. Нужно найти аналог команды в Автокаде преобразовать в поверхность. (Nurbs surface или нет?)
Спасибо.
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
cherepushka
cherepushka
Спасибо.
( 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 ) )Вложения
Sphinx Black (Black Sphinx)
Пробуй это:
( 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 ) )cherepushka
Sphinx Black (Black Sphinx)
Ещё раз проверь каким вариантом скрипта ты пользуешься.
У меня нет оснований тебе не верить. Но что-то идёт не так. В первую очередь проверяем человеческий фактор 😉
Кстати, а почему ты решил использовать связку Slice+Mirror а не Symmetry?
cherepushka
Насчет Symmetry, действительно лучше. Спасибо. Только в синтаксисе думаю ошибка
Ничего не происходит, в Listener Ok. Может ли Max подсвечивать ошибки?
Sphinx Black (Black Sphinx)
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 ) )cherepushka
Произошла ошибка
Файл с этим расширением загружать нельзя.
for_5.stp
Может на почту?
Sphinx Black (Black Sphinx)
cherepushka
Вложения
cherepushka
Есть объект, на его фэйс нужно создать текст (с AutoCrid - если делаю вручную). Преобразовать объект в Editable Poly и команда Attach и указать текст. Я смотрю хэлп официальный и хотелось, по хорошему пинка в правильном направлении, а дальше буду экспериментировать, очень интересно стало.
Sphinx Black (Black Sphinx)
Если тебе группы не критичны, то так будет работать:
( -- 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 ) )Дополнительно уменьшил threshold в symmetry, что бы при слиянии не билась геометрия.cherepushka
Есть ли возможность созданный текст установить прямо сверху бокса (на его верхнюю грань)?
И после эти два объекта attach?
cherepushka
Sphinx Black (Black Sphinx)
Надо одним щелчком мыши в произвольном вьюпорте (1) выбрать объект и (2) вычислить матрицу трансформации (идентити) для нового текстового объекта в указанной точке (что собственно и делает AutoGrid). Если эту проблему решить, то остальное достаточно тривиально. Некоторые мысли по этому поводу есть, но что-то больно сложно. Может кто-то подскажет как это сделать просто?
Sphinx Black (Black Sphinx)
http://docs.autodesk.com/3DSMAX/2016/ENU/MAXScript-Help/maxscript-2016-help-chm.zip
cherepushka
У меня такой вопрос, может кто сталкивался. Есть ли возможность экспортировать в какой-то универсальный формат, чтобы он открывался в других программах (например в SolidWorks, Компас)? Ни один формат, который пробовал экспортировать не открывается в этих программах. Остановился на dwg, открывается только в Автокаде, хотя если делать файл в самом Автокаде, он без проблем в этих программах открывается, а если через Max, то ошибка.
Может в настройках экспорта есть какая-нибудь галочка?
Спасибо.
Sphinx Black (Black Sphinx)
Ты в Автокаде экспортированную модель не пробовал пересохранить? Или открыть в Автокаде экспортированный файл и скопировать модель в новый файл, созданный в Автокаде? Понятно, что получается через задницу, но если очень надо перекинуть модель, то почему бы и нет?
Только вопрос не по теме ветки форума. Ты бы его задал где-нибудь в более обитаемой ветке. Может кто-то и что-то и расскажет.
cherepushka
И вот до чего дошел. Экспорт из макса в Автокад (*.dwg). В автокаде в 3д режиме преобразовал в поверхность объекты и сделал экспорт в igs. Только такие файлы открывают Компас и SolidWorks. Напрямую в igs из 3ds max не выходит.
Так вот, почему продолжаю писать в этой теме. Мне нужно эти же действия, которые делал в Автокаде осуществить в Максе.
Если я просто Конвертирую объекты в Nurbs, то экспорт не выходит. Нужно найти аналог команды в Автокаде преобразовать в поверхность. (Nurbs surface или нет?)
Спасибо.