Помогите нарезать модель на шпангоуты

qwerty1000

может я туплю, но это имя файла? перебрал кучу вариантов, скрипт дает ошибку:
#(3D_StudioExporterPlugin, Adobe_Illustrator, DWG_ExportExporterPlugin, DWG_Export, Wavefront_MaterialExporterPlugin, Lightscape_Layers, STL_Export, Lightscape_Material, Lightscape_Preparation, IGES_Export, Lightscape_Parameter, Lightscape_Blocks, SW3D_Exp, Wavefront_ObjectExporterPlugin, Lightscape_View, ExportHTR, JSR184Exporter, AsciiExp, VRBL_Export, DWF_Exporter)
– Error occurred in anonymous codeblock; filename: C:\CNC\3dsmax 2008\!for 3dsmax\script-porezka_new_X.ms; position: 103
– Unknown property: “max” in undefined
– Error occurred in anonymous codeblock; filename: C:\CNC\3dsmax 2008\!for 3dsmax\script-porezka_new_X.ms; position: 161
– Unknown property: “min” in undefined
– Error occurred in anonymous codeblock; filename: C:\CNC\3dsmax 2008\!for 3dsmax\script-porezka_new_X.ms; position: 188
– Unknown property: “max” in undefined
150
– Error occurred in anonymous codeblock; filename: C:\CNC\3dsmax 2008\!for 3dsmax\script-porezka_new_X.ms; position: 253
– Frame:
– No “”-“” function for undefined
– Error occurred in anonymous codeblock; filename: C:\CNC\3dsmax 2008\!for 3dsmax\script-porezka_new_X.ms; position: 0
– Unable to convert: undefined to type: Float

сам скрипт выглядит так:
theClasses = exporterPlugin.classes
meshSelected = susections.max ( ) – object to create contours of
minX = meshSelected.min.x – get min and max X positions
maxX = meshSelected.max.X
numLevels = 150 – the number of contours
delta = (maxX - minX) / (numLevels + 1) – the number of steps
for currentX = minX to maxX by delta do – start loop…
(
s = section pos:[0, 0, currentX] – create Section
max views redraw – this line is needed to get around the problem
convertToSplineShape s – convert Section to SplineShape
select s
exportFile (GetDir #scene +“/exportTest”+(currentX as string)+“.dxf”) #noPrompt selectedOnly:true using:theClasses[4] --export to dxf
s.renderable = true – set to renderable
)

qwerty1000

сори за беспокойство, но здесь мы сидим чтобы хоть что-то понять, чему-то научиться.
у меня там пустое поле, клики не помогают, как задать имя объекту?

сейчас кликнул по проекции, имя Section71, их там у меня 150, как в скрипте указать, что импортить нужно все 150?
вот что получается, у меня модель уже разбита на проекции, см. картинку, запускаю скрипт экспорта и начинаются ошибки
(вживую увидеть можно здесь www.golodranci.ru/1.gif)

mega_john

так если модель уже попилена, все еще проще:

theClasses = exporterPlugin.classes
for i = 1 to objects.count do
(
    select objects[i]
    exportFile (GetDir #scene +"/exportTest"+(i as string)+".dxf") #noPrompt  selectedOnly:true using:theClasses[4]  --export to dxf
)

сохраняет каждый объект в “.dxf”

Flanker_13

да, у меня тоже не выходит. Писал название модели ( копировал вернее) даёт ошибку.

mega_john

действительно, так будет работать только для максовых примитивов, можно попробовать так:

meshSelected = selected[1]

и при запуске скрипта, не забыть выделить свой объект для попила;)

Flanker_13
mega_john:

так если модель уже попилена, все еще проще:

theClasses = exporterPlugin.classes
for i = 1 to objects.count do
(
   select objects[i]
   exportFile (GetDir #scene +"/exportTest"+(i as string)+".dxf") #noPrompt  selectedOnly:true using:theClasses[4]  --export to dxf
)

сохраняет каждый объект в “.dxf”

Ну чтож, так тоже работает 😃

mega_john:

действительно, так будет работать только для максовых примитивов, можно попробовать так:

meshSelected = selected[1]

и при запуске скрипта, не забыть выделить свой объект для попила;)

Ага, попробуем

нет, так не работает. Ругается.

qwerty1000

у меня заработал вот этот скрипт.
theClasses = exporterPlugin.classes
for i = 1 to objects.count do
(
select objects[i]
exportFile (GetDir #scene +“/exportTest”+(i as string)+“.dxf”) #noPrompt selectedOnly:true using:theClasses[4] --export to dxf
)

перед этим мадель была уже попилена. мегаДжону-мегареспект 😃

mega_john

понятно, слив работает, надо значит автоматический попил починить…

qwerty1000
mega_john:

понятно, слив работает, надо значит автоматический попил починить…

в скрипте автопопила, указывается направление ZX и т.д. каждый раз когда нужно сменить напрвление попила, правишь в ручную, можно ли это в скрипте как-то обойти? т.е. выделил один вид (правый, левый, не суть) и запустил скрипт?

mega_john

пардон, в скрипте автопопила нужно писать selection[1], а не selected[1] 😵

по поводу смены направления, полюбому можно, можно даже гуй красивый к скрипту нарисовать, со всякими кнопачками и параметрами😒
да только я максскрипта не знаю нифига, приходица F1 читать…но тут я думаю Вы и сами его можете почитать😝

Flanker_13

Да, работает. А как выбрать другую ось?😒

mega_john

ну совсем читать не хотите😈
в этой строке

s = section pos:[0, 0, currentZ]

то, что в квадратных скобках, есть координаты Х,У и Z по каким нада, туда и подставляете currentZ

Flanker_13

попробовал. Переставлял этот параметр. Что-то режет, создаёт файлы… Но во-первых не видно что он режет, а во-вторых файлы пустые. И только в вашей редакции ( когда корентZ в оси Z стоит), программа режет модель исправно. Просто не в той плоскости. Мне например надо порезать в оси X. Ставлю так
и не получается ничего. ( на счёт читать… могу перевести со словарём, но в скриптах я всё равно не силён, уж потерпите 😃)) )
s = section pos:[currentZ, 0, 0]

mega_john

надо тут еще подставлять нужную координату:

minZ = meshSelected.min.z
maxZ = meshSelected.max.z
qwerty1000

Мега-Джон, мастер, не откажи! Начал въезжать в постпроцессы и прочее для станка, как-бы скрипт переделать, чтобы сохранял не по слою, а два соседних слоя в 3д… понятно спросил?
т.е. на выходе файлы:
1 файл состоит из 1 и 2 проекции
2 файл состоит из 2 и 3 проекции
и т.д.
сложно такое сделать в махе?

Flanker_13

А у меня так и не получилось заставить резать по оси Х 😦(((((((((((((((( И получается, что режется сверху вниз, а не в доль…

mega_john

ну прям захвалили:)
резка по оси Х

theClasses = exporterPlugin.classes
meshSelected = sphere() -- object to create contours of
minX = meshSelected.min.x -- get min and max X positions
maxX = meshSelected.max.X
numLevels = 5 -- the number of contours
delta = (maxX - minX) / (numLevels + 1) -- the number of steps
for currentX = minX to maxX by delta do -- start loop...
(
s = section rotation:(eulerangles 0 90 0) position:[currentX,0,0]
max views redraw -- this line is needed to get around the problem
convertToSplineShape s -- convert Section to SplineShape
select s
exportFile (GetDir #scene +"/exportTest"+(currentX as string)+".dxf") #noPrompt selectedOnly:true using:theClasses[4] --export to dxf
s.renderable = true -- set to renderable
)

сливание в файл по два:

theClasses = exporterPlugin.classes
for i = 1 to objects.count-1 do
(
select objects[i]
selectMore objects[i+1]

exportFile (GetDir #scene +"/exportTest"+(i as string)+".dxf") #noPrompt selectedOnly:true using:theClasses[4] --export to dxf
)
Flanker_13

ухты класс!!! Режет, да как быстро! И не подвисает, как в случае с “ручной резкой”.
Вот это настоящая автоматизация!!!
Спасибо!😆