Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
max_Script синтаксис.doc
Скачиваний:
9
Добавлен:
01.05.2025
Размер:
196.1 Кб
Скачать

Часть 4 Сплайны

Сплайн – это объект, представляющий собой одну или несколько линий в пространстве или на плоскости. Все сплайны, а также NURBS-кривые относятся к категории Shapes (формы). Команда showclass “*:shape выводит в окно Listener все существующие классы сплайнов. Некоторые свойства этих классов повторяются, как общие свойства всех сплайнов. Описывать все классы нет необходимости, рассмотрим класс Arc (дуга):

Свойство                    Описание                  

<Arc>.radius               Радиус дуги (тип значения – float, по умолчанию 25.0)

<Arc>.from                 Положение начальной точки, как угол, отмеряемый от

положительного направления локальной оси X. (float, 45.0)

<Arc>.to                      Положение конечной точки, как угол, отмеряемый от положительного направления локальной оси X. (float, 135.0)

<Arc>.pie                    Достраивает дугу до замкнутого сплайна, соединяя концы с центром прямыми сегментами. (Boolean, false)

<Arc>.reverse            Инвертирует сплайн дуги, т.е. меняет порядок вершин на противоположный. (Boolean, false)

<Arc>.steps                Число разбиений сегмента между вершинами. (Integer, 6)

<Arc>.optimize           Удаляет разбиение прямых сегментов сплайна. (Boolean, true)

<Arc>.adaptive           Автоматически определяет и устанавливает разбиение для сплайнов. У прямых сегментов всегда 0. (Boolean, false)

<Arc>.angle                Угол поворота сечения визуализируемого сплайна. (float, 0.0)

<Arc>.thickness         Диаметр (толщина) визуализируемого сплайна. (float, 1.0)

<Arc>.sides                Число сторон в сетке визуализируемого сплайна. Например, значение 4 дает квадратное сечение. (Integer, 12)

<Arc>.renderable       Включает показ сплайна при визуализации. (Boolean, false)

<Arc>.mapCoords      Включает проекционные координаты. (Boolean, false)

Пример: duga = arc radius: 100 from: 0 to: 180 pos: [0, 0, 0]

 

Класс SplineShape

Методы этого класса работают с любыми сплайнами и позволяют всячески их редактировать. Чтобы конвертировать сплайны стандартных классов в класс SplineShape, необходимо использовать функцию convertToSplineShape <node>, где <node> – любой объект-сплайн. Если в качестве <node> задать объект, который нельзя конвертировать, функция возвратит значение undefined.

 

Методы, работающие с целым объектом Shape

updateShape <shape> – обновляет объект, этот метод необходимо запускать после редактирования формы методами SplineShape и до работы с объектом любыми другими операциями.

resetShape <shape> – стирает все сплайны объекта.

numSplines <shape> – возвращает количество всех сплайнов в объекте как значение типа Integer. Эквивалент <shape>.numSplines.

setFirstSpline <shape> <spline_index_integer> – меняет порядок сплайнов таким образом, что указанный сплайн становится первым.

addAndWeld <to_shape> <from_shape> <weldthreshold_float> – добавляет сплайны одного объекта к другому. Конечные точки сплайнов будут объединяться, если расстояние между ними не превысит значения <weldthreshold_float>.

bindKnot         <shape> <isEnd_boolean> <splineId_integer>

<segIndex_integer> <splineSegId_integer> – связывает первую или последнюю вершину сплайна с серединой указанного сегмента. Если значение параметра <isEnd_boolean> - true, связывается последняя вершина, иначе первая. Параметр <splineId_integer> задает номер сплайна, которому принадлежат связываемые вершины, <segIndex_integer> определяет номер сегмента, к середине которого будет привязана вершина, <splineSegId_integer> – номер сплайна, которому принадлежит этот сегмент.

unBindKnot <shape> <spline_index_integer> <isEnd_boolean> – разрывает связь конечной или начальной вершины указанного сплайна.

updateBindList <shape> – обновляет список связей. Метод вызывается, когда меняется топология, например, стираются вершины.

materialID <shape> <spline_index_integer> <segment_index_integer> – возвращает идентификатор материала для указанного сегмента сплайна заданного объекта.

 

Методы, работающие со сплайнами объекта Shape

addNewSpline <shape> – добавляет новый пустой сплайн к объекту и возвращает его номер (будет последним в списке всех сплайнов этого объекта)

getSplineSelection <shape> – возвращает номера выделенных сплайнов объекта как массив целых чисел.

setSplineSelection <shape> <spline_index_array> [keep:<boolean>] – выделяет сплайны, определенные массивом <spline_index_array>. Со сплайнов, уже выделенных к данному моменту, выделение снимается, если только не установлен параметр keep:true.

deleteSpline <shape> <spline_index_integer> – удаляет заданный сплайн из объекта. Оставшиеся сплайны перенумеровываются.

numSegments <shape> <spline_index_integer> – возвращает количество сегментов указанного сплайна. Это целое число, равное числу вершин для замкнутых сплайнов и на единицу меньше числа вершин для открытых.

numKnots <shape> [<spline_index_integer>] – возвращает число вершин в указанном сплайне (значение типа Integer). Если номер сплайна не указан, возвращается число  вершин во всем объекте.

isClosed <shape> <spline_index_integer> – возвращает true, если указанный сплайн замкнут, и false, если открыт.

close <shape> <spline_index_integer> – замыкает указанный сплайн. Этот метод всегда создает новый сегмент от первой до последней вершины, даже если их координаты совпадают.

open <shape> <spline_index_integer> – открывает указанный сплайн, удаляя сегмент между первой и последней вершиной.

reverse <shape> <spline_index_integer> – инвертирует порядок вершин в указанном сплайне.

setFirstKnot <shape> <spline_index_integer> <knot_index_integer> – устанавливает новый порядок вершин в указанном сплайне так, что заданная вершина становится первой.

getSegLengths           <splineShape> <spline_index> [cum:<boolean>]

[byVertex:<boolean>] [numArcSteps:<integer>] – возвращает массив длин сегментов или расстояний между вершинами сплайна и общую длину сплайна. Вычисления повышенной точности. Если значение cum:true – результаты складываются, иначе отсчитываются для каждого сегмента (по умолчанию false). Если значение byVertex:true – результаты для вершин, иначе для сегментов (по умолчанию false). Параметр numArcSteps:<integer> по умолчанию равен 100.

subdivideSegment      <splineShape> <spline_index>

<seg_index> <divisions> – разделяет сегмент на заданное количество частей. Вычисления двойной точности.

interpCurve3D           <splineShape> <spline_index> <param_float>

[pathParam:<boolean>] – возвращает <point3>-координату указанной кривой. Если pathParam:false – значение <param_float> является частью длины сплайна, иначе частью длины сегмента. По умолчанию pathParam:false.

tangentCurve3D        <splineShape> <spline_index> <param_float>

[pathParam:<boolean>] – возвращает <point3>-касательную к указанной кривой. Если pathParam:false – значение <param_float> является частью длины сплайна, иначе частью длины сегмента. По умолчанию pathParam:false.

 

Методы, работающие с сегментами сплайнов объекта Shape

getSegmentType <shape> <spline_index_integer> <seg_index_integer> – возвращает тип указанного сегмента заданного сплайна.

setSegmentType        <shape> <spline_index_integer> <seg_index_integer>

(#curve | #line) – устанавливает тип указанного сегмента заданного сплайна.

refineSegment            <shape> <spline_index_integer> <seg_index_integer>

            <seg_interp_param_float> – добавляет новую вершину к указанному сегменту заданного сплайна. Конкретное положение вершины, определяется значением <seg_interp_param_float>. Это число от 0.0 до 1.0 пропорционально длине сегмента. Координаты и касательные на входе и выходе из вершины устанавливаются автоматически, чтобы сохранить исходную кривизну сегмента. Функция refineSegment() возвращает номер новой добавленной вершины.

getSegSelection <shape> <spline_index_integer> – возвращает номера выделенных сегментов заданного сплайна как массив целых чисел.

setSegSelection          <shape> <spline_index_integer> <seg_index_array>

[keep:<boolean>] – выделяет сегменты, определенные массивом номеров <seg_index_array>. С сегментов, уже выделенных к данному моменту, выделение снимается, если только не установлен параметр keep:true.

setMaterialID <splineShape> <spline_index> <seg_index> <matID> – устанавливает идентификатор материала для заданного сегмента сплайна.

getMaterialID <splineShape> <spline_index> <seg_index> – возвращает идентификатор материала для заданного сегмента сплайна.

 

Методы, работающие с вершинами сплайнов объекта Shape

addKnot                      <shape> <spline_index_integer>

(#smooth | #corner | #bezier | #bezierCorner)

(#curve | #line) <position_point3> [invec_point3 outvec_point3]

[where_integer] – добавляет к указанному сплайну новую вершину и возвращает ее номер. Третий аргумент определяет тип вершины, четвертый – тип сегмента на выходе из вершины, пятый – координаты новой точки в текущей системе координат. Если тип вершины bezier или bezierCorner, необходимо задать векторы входящей и исходящей касательной (6-ой и 7-ой аргументы). Дополнительный последний аргумент устанавливает номер новой вершины в массиве вершин сплайна, если его не задать, она будет последней.

deleteKnot <shape> <spline_index_integer> <knot_index_integer> – удаляет указанную вершину с заданного сплайна. Оставшиеся вершины перенумеровываются.

getKnotType <shape> <spline_index_integer> <knot_index_integer> – возвращает тип указанной вершины с заданного сплайна. Значения (тип name) бывают следующими: #smooth, #corner, #bezier, #bezierCorner.

setKnotType <shape> <spline_index_integer> <knot_index_integer>

(#smooth | #corner | #bezier | #bezierCorner) – задает тип указанной вершины заданного сплайна.

getKnotPoint  <shape> <spline_index_integer> <knot_index_integer> – возвращает координаты (тип point3) в текущей системе координат указанной вершины заданного сплайна.

setKnotPoint <shape> <spline_index_integer> <knot_index_integer> <point3> – устанавливает координаты (point3) указанной вершины заданного сплайна в текущей системе координат.

getInVec <shape> <spline_index_integer> <knot_index_integer> – возвращает вектор (point3) входящей касательной для указанной вершины в текущей системе координат.

setInVec <shape> <spline_index_integer> <knot_index_integer> <point3> – задает вектор (point3) входящей касательной для указанной вершины в текущей системе координат.

getOutVec <shape> <spline_index_integer> <knot_index_integer> – возвращает вектор (point3) выходящей касательной для указанной вершины в текущей системе координат.

setOutVec <shape> <spline_index_integer> <knot_index_integer> <point3>  – задает вектор (point3) выходящей касательной для указанной вершины в текущей системе координат.

getKnotSelection <shape> <spline_index_integer> – возвращает номера выделенных вершин заданного сплайна как массив целых чисел.

setKnotSelection        <shape> <spline_index_integer> <knot_index_array>

[keep: <boolean>] – выделяет вершины, определенные в  массиве <knot_index_array>, представляющем собой набор целых чисел – номеров вершин. С вершин, уже выделенных к данному моменту, выделение снимается, если только не установлен параметр keep:true.

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]