Render.ru
Поддержать

Вопрос по chamferEdges

Александр Боровских

Пользователь сайта
Рейтинг
2
Здравствуйте.
Совсем недавно начал изучать MAXScript и возник вопрос связанный с командой obj.EditablePoly.chamferEdges. В ней указывается величина, на которую делается фаска, но как сделать число сегментов самой фаски?
Смотрел через Макро рекодер, но хотелось бы узнать может есть вариант попроще и покороче в написании кода?

PS: Может быть кто-нибудь знает статьи или литературу по создании геометрии (сложной геометрии) при помощи MAXScript?

igorznag

Мастер
Рейтинг
103
возник вопрос связанный с командой obj.EditablePoly.chamferEdges. В ней указывается величина, на которую делается фаска, но как сделать число сегментов самой фаски?
Объект EditablePoly имеет свойство edgeChamferSegments, которое обозначает число сегментов самой фаски. Сначала нужно установить число сегментов самой фаски, а потом сделать chamferEdges.
Пример: Число сегментов самой фаски=3
obj.EditablePoly.edgeChamferSegments=3

Александр Боровских

Пользователь сайта
Рейтинг
2
На данную статью натыкался, но при ее использовании получал ошибку от макса:
"Unknown property: "edgeChamferSegments" in <MixinInterface:EditablePoly>"

Прикреплю код, может быть я где-нибудь сильно перемудрил

max select all
max delete
clearlistener()
arrSpline = #()
arrAttach = #()
widthSpline
newObj
newSplineObj
 
fn createSpline = (
    for i = 1 to 10 do (
        objSpline = Rectangle name:(uniquename("stepSpline_")) wirecolor: black material: meditMaterials[1]
        if i == 1 then objSpline.pos = [0, 0, 0]
        else objSpline.pos = [0, objSpline.length * (i - 1), 0]
        lenghtSpline = objSpline.length
        widthSpline = objSpline.width
        append arrSpline objSpline
    )
)
 
fn createFirstBox = (
    newSplineObj = copy arrSpline[1]
    addModifier newSplineObj (Extrude amount: 5 segments: 2)
    convertToPoly newSplineObj
    newSplineObj.edges[#centerEdge] = #(3, 7, 10, 12)
    move newSplineObj.edges[#centerEdge] [ 0, 0, (5 / 2) - 0.5 ]
    polyop.setFaceSelection newSplineObj #{6, 8}
    newSplineObj.extrudeFaces 0.5
    polyop.setFaceSelection newSplineObj #{7, 12, 18}
    newSplineObj.extrudeFaces 0.5
    polyop.setEdgeSelection newSplineObj #{40..42}
    newSplineObj.EditablePoly.edgeChamferSegments=3
    newSplineObj.EditablePoly.chamferEdges 0.40
    newSplineObj.wirecolor = color 0 0 0
    newSplineObj.material = meditMaterials[1]
    )
 
createSpline()
createFirstBox()
 
for i = 1 to arrSpline.count do (
    newObj = copy newSplineObj
    move newObj.edges[8] [0, 0, -3]
    move newObj [0,lenghtSpline * i,3 * i]
    append arrAttach newObj
)
 
for i = 1 to arrAttach.count do polyop.attach newSplineObj arrAttach[i]
max views redraw

igorznag

Мастер
Рейтинг
103
На данную статью натыкался, но при ее использовании получал ошибку от макса:
"Unknown property: "edgeChamferSegments" in <MixinInterface:EditablePoly>"
У меня нет возможности проверить. Пишем тогда так:
obj.edgeChamferSegments=3
newSplineObj.edgeChamferSegments=3

Владислав Бодюл

Активный участник
Рейтинг
15
max select all
max delete
clearlistener()
arrSpline = #()
arrAttach = #()
widthSpline
newObj
newSplineObj
lenghtSpline
 
fn createSpline = (
    for i = 1 to 10 do (
        objSpline = Rectangle name:(uniquename("stepSpline_")) wirecolor: black material: meditMaterials[1]
        if i == 1 then objSpline.pos = [0, 0, 0]
        else objSpline.pos = [0, objSpline.length * (i - 1), 0]
        lenghtSpline = objSpline.length
        widthSpline = objSpline.width
        append arrSpline objSpline
    )
)
 
fn createFirstBox = (
    newSplineObj = copy arrSpline[1]
    addModifier newSplineObj (Extrude amount: 5 segments: 2)
    convertToPoly newSplineObj
    newSplineObj.edges[#centerEdge] = #(3, 7, 10, 12)
    move newSplineObj.edges[#centerEdge] [ 0, 0, (5 / 2) - 0.5 ]
    polyop.setFaceSelection newSplineObj #{6, 8}
    newSplineObj.extrudeFaces 0.5
    polyop.setFaceSelection newSplineObj #{7, 12, 18}
    newSplineObj.extrudeFaces 0.5
    polyop.setEdgeSelection newSplineObj #{40..42}
    newSplineObj.baseObject.edgeChamferSegments=3
    newSplineObj.EditablePoly.chamferEdges 0.40
    newSplineObj.wirecolor = color 0 0 0
    newSplineObj.material = meditMaterials[1]
    )
 
createSpline()
createFirstBox()
 
for i = 1 to arrSpline.count do (
    newObj = copy newSplineObj
    move newObj.edges[8] [0, 0, -3]
    move newObj [0,lenghtSpline * i,3 * i]
    append arrAttach newObj
)
 
for i = 1 to arrAttach.count do polyop.attach newSplineObj arrAttach[i]
max views redraw

Владислав Бодюл

Активный участник
Рейтинг
15
Вместо
newSplineObj.EditablePoly.edgeChamferSegments=3
пишем
newSplineObj.BaseObject.edgeChamferSegments=3
и переменную lenghtSpline нужно было в самом начале написать.

Александр Боровских

Пользователь сайта
Рейтинг
2
Спасибо, люди добрые!
Все заработало.

И можно еще вопросик. В данном скрипте создается экструдом бокс с ребрами по центру высоты. Вот и хочется узнать, есть ли в макс скрипте способ их определять и выделять автоматически, без введения в скрипт ручных значений? Пример даже с изменением этих самых количеств ребер приведет уже к неудачным результатам скрипта.