Render.ru

Вопрос по chamferEdges

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

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

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

igorznag

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

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

Пользователь сайта
Рейтинг
2
#3
На данную статью натыкался, но при ее использовании получал ошибку от макса:
"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
#4
На данную статью натыкался, но при ее использовании получал ошибку от макса:
"Unknown property: "edgeChamferSegments" in <MixinInterface:EditablePoly>"
У меня нет возможности проверить. Пишем тогда так:
Код:
obj.edgeChamferSegments=3
newSplineObj.edgeChamferSegments=3
 

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

Активный участник
Рейтинг
15
#5
Код:
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
#6
Вместо
Код:
newSplineObj.EditablePoly.edgeChamferSegments=3
пишем
Код:
newSplineObj.BaseObject.edgeChamferSegments=3
и переменную lenghtSpline нужно было в самом начале написать.
 

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

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

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