Твердотельная 3D-геометрия (класс Solid)#
Общий класс Solid не имеет конструктора. Содержит функции, порождающие твердотельную геометрию. Служит для построения 3D-геометрии объектов.
Порождающие функции#
Параллелепипед#
Четырехугольная призма, все грани которой являются прямоугольниками (прямоугольный параллелепипед).
- CreateBlock(length, width, height, placement)#
- Parameters:
length (
Number
) – Задает длину параллелепипеда.width (
Number
) – Задает глубину параллелепипеда.height (
Number
) – Задает высоту параллелепипеда.placement (Placement3D) – (optional) Задает локальную систему координат, в которой строится тело. Если не задана, то для построения используется глобальная система координат.
- Returns:
Твердотельная 3D-геометрия.
- Return type:
Solid
1local detailedGeometry = ModelGeometry()
2local cubeSolid = CreateBlock(20, 20, 20)
3detailedGeometry:AddSolid(cubeSolid)
4Style.SetDetailedGeometry(detailedGeometry)
Результат:
1local detailedGeometry = ModelGeometry()
2local boxSolid = CreateBlock(40, 15, 20)
3detailedGeometry:AddSolid(boxSolid)
4Style.SetDetailedGeometry(detailedGeometry)
Результат:
Сфера#
- CreateSphere(radius, originPoint)#
- Parameters:
radius (
Number
) – Задает радиус сферы.originPoint (Point3D) – (optional) Задает точку центра сферы. Если не задана, соответствует началу координат.
- Returns:
Твердотельная 3D-геометрия.
- Return type:
Solid
1local detailedGeometry = ModelGeometry()
2local bearingSolid = CreateSphere(10)
3detailedGeometry:AddSolid(bearingSolid:ShowTangentEdges(false))
4Style.SetDetailedGeometry(detailedGeometry)
Результат:
Правильный круговой цилиндр#
Тело, ограниченное цилиндрической поверхностью и двумя параллельными плоскостями, пересекающими её.
- CreateRightCircularCylinder(radius, height, placement)#
- Parameters:
radius (
Number
) – Задает радиус цилиндра.height (
Number
) – Задает высоту цилиндра.placement (Placement3D) – (optional) Задает локальную систему координат, в которой строится тело. Если не задана, то для построения используется глобальная система координат.
- Returns:
Твердотельная 3D-геометрия.
- Return type:
Solid
1local detailedGeometry = ModelGeometry()
2local pinSolid = CreateRightCircularCylinder(10, 40)
3detailedGeometry:AddSolid(pinSolid:ShowTangentEdges(false))
4Style.SetDetailedGeometry(detailedGeometry)
Результат:
Правильный эллиптический цилиндр#
- CreateRightEllipticalCylinder(halfRadiusX, halfRadiusY, height, placement)#
- Parameters:
halfRadiusX (
Number
) – Задает радиус полуоси вдоль оси X.halfRadiusY (
Number
) – Задает радиус полуоси вдоль оси Y.height (
Number
) – Задает высоту цилиндра по оси Y.placement (Placement3D) – (optional) Задает локальную систему координат, в которой строится тело. Если не задана, то для построения используется глобальная система координат.
- Returns:
Твердотельная 3D-геометрия.
- Return type:
Solid
Правильный круговой конус#
Прямой конус, основанием которого является окружность и ортогональная проекция вершины конуса на плоскость основания совпадает с этим центром.
- CreateRightCircularCone(radius, height, placement)#
- Parameters:
radius (
Number
) – Задает радиус конуса.height (
Number
) – Задает высоту конуса.placement (Placement3D) – (optional) Задает локальную систему координат, в которой строится тело. Если не задана, то для построения используется глобальная система координат.
- Returns:
Твердотельная 3D-геометрия.
- Return type:
Solid
1local detailedGeometry = ModelGeometry()
2local coneSolid = CreateRightCircularCone(10, 40)
3detailedGeometry:AddSolid(coneSolid:ShowTangentEdges(false))
4Style.SetDetailedGeometry(detailedGeometry)
Результат:
Правильная призма#
Основанием является многоугольник, заданый массивом точек-вершин. Боковые грани — прямоугольники.
- CreateRightPrism({points}, height, placement)#
- Parameters:
points (table of Points2D) – Задает таблицу точек, определяющих ребра многоугольника - основания призмы.
height (
Number
) – Задает высоту призмы.placement (Placement3D) – (optional) Задает локальную систему координат, в которой строится тело. Если не задана, то для построения используется глобальная система координат.
- Returns:
Твердотельная 3D-геометрия.
- Return type:
Solid
Пирамида с прямоугольным основанием#
Основанием пирамиды является прямоугольник.
- CreateRectangularPyramid(width, depth, height, placement)#
- Parameters:
width (
Number
) – Задает размер основания пирамиды по оси X.depth (
Number
) – Задает размер основания пирамиды по оси Y.height (
Number
) – Задает высоту пирамиды.placement (Placement3D) – (optional) Задает локальную систему координат, в которой строится тело. Если не задана, то для построения используется глобальная система координат.
- Returns:
Твердотельная 3D-геометрия.
- Return type:
Solid
1local detailedGeometry = ModelGeometry()
2local baseSolid = CreateRectangularPyramid(25, 15, 20)
3detailedGeometry:AddSolid(baseSolid)
4Style.SetDetailedGeometry(detailedGeometry)
Результат:
Тело перемещения диска по пути#
Строится путем перемещения круглого диска по трехмерной кривой.
- CreateSweptDiskSolid(radius, holeRadius, guideCurve)#
- Parameters:
radius (
Number
) – Задает радиус круглого диска для перемещения по пути.holeRadius (
Number
) – Задает радиус круглого отверстия в центре диска.guideCurve (Curve3D) – Задает направляющую трёхмерную кривую.
- Returns:
Твердотельная 3D-геометрия.
- Return type:
Solid
Тело выдавливания#
- Extrude(contour, extrusionParameters, placement)#
- Parameters:
contour (Curve2D) – Задает плоский контур выдавливания.
extrusionParameters (ExtrusionParameters) – Задает дополнительные параметры построения.
placement (Placement3D) – (optional) Задает локальную систему координат, в которой строится тело. Если не задана, то для построения используется глобальная система координат.
- Returns:
Твердотельная 3D-геометрия.
- Return type:
Solid
Дополнительные параметры построения для функции Extrude#
- ExtrusionParameters(ForwardDirectionDepth, ReverseDirectionDepth)#
- Parameters:
ForwardDirectionDepth (
Number
) – Задает глубину выдавливания в прямом направлении.ReverseDirectionDepth (
Number
) – (optional) Задает глубину выдавливания в обратном направлении. Значение по умолчанию равно 0.
- MEMBERS:
OutwardOffset (
Number
) - Задает отступ наружу от образующей кривой. Значение по умолчанию равно 0.InwardOffset (
Number
) - Задает отступ внутрь от образующей кривой. Значение по умолчанию равно 0.
Примечание
Используются для построения тонкостенного тела. При
OutwardOffset
= 0 иInwardOffset
= 0 строится сплошное тело по контуру.ForwardDirectionDraftAngle (
Number
) - Задает угол наклона при выдавливании в прямом направлении в радианах. Значение по умолчанию равно 0.ReverseDirectionDraftAngle (
Number
) - Задает угол наклона при выдавливании в обратном направлении в радианах. Значение по умолчанию равно 0.
Примечание
При положительном значении происходит сужение. При отрицательном - расширение. Используются только при выдавливании по направлению вдоль оси Z.
Direction (Vector3D) - Задает направление выдавливания. По умолчанию равно направлению оси Z.
1local detailedGeometry = ModelGeometry()
2local points = {Point2D(0, 0),
3 Point2D(0, 10),
4 Point2D(10, 10),
5 Point2D(10, 8),
6 Point2D(8, 8),
7 Point2D(8, 6),
8 Point2D(6, 6),
9 Point2D(6, 4),
10 Point2D(4, 4),
11 Point2D(4, 2),
12 Point2D(2, 2),
13 Point2D(2, 0),
14 Point2D(0, 0)}
15local extrusionContour = CreatePolyline2D(points)
16-- глубина выдавливания в прямом направлении = 40, в обратном направлении - по умолчанию = 0:
17local params = ExtrusionParameters(40)
18-- значения дополнительным атрибутам ExtrusionParameters() не задаем, значения принимаются по умолчанию
19local moldingSolid = Extrude(extrusionContour,
20 params)
21detailedGeometry:AddSolid(moldingSolid)
22Style.SetDetailedGeometry(detailedGeometry)
Результат:
1local detailedGeometry = ModelGeometry()
2local points = {Point2D(0, 0),
3 Point2D(0, 10),
4 Point2D(10, 10),
5 Point2D(10, 8),
6 Point2D(8, 8),
7 Point2D(8, 6),
8 Point2D(6, 6),
9 Point2D(6, 4),
10 Point2D(4, 4),
11 Point2D(4, 2),
12 Point2D(2, 2),
13 Point2D(2, 0),
14 Point2D(0, 0)}
15local profileContour = CreatePolyline2D(points)
16-- глубина выдавливания в прямом направлении = 15, в обратном направлении - по умолчанию = 0:
17local params = ExtrusionParameters(15)
18-- толщина отступа наружу и внутрь относительно заданного контура = 0.5:
19params.OutwardOffset = params.InwardOffset = 0.5
20local thinSolid = Extrude(profileContour,
21 params)
22detailedGeometry:AddSolid(thinSolid)
23Style.SetDetailedGeometry(detailedGeometry)
Результат:
Построение тела по плоским сечениям#
Размер массива profiles
должен быть равен размеру массива placements
.
- Loft({profiles}, {placements}, loftParameters)#
- Parameters:
{profiles} (table of Curves2D) – Задает таблицу плоских контуров.
{placements} (table of Placements3D) – Задает таблицу координатных плоскостей в 3D пространстве.
loftParameters (LoftParameters) – (optional) Задает дополнительные параметры построения.
- Returns:
Твердотельная 3D-геометрия.
- Return type:
Solid
Дополнительные параметры построения для функции Loft#
- LoftParameters()#
- MEMBERS:
OutwardOffset (
Number
) - Задает отступ наружу от образующей кривой. Значение по умолчанию равно 0.InwardOffset (
Number
) - Задает отступ внутрь от образующей кривой. Значение по умолчанию равно 0.
Примечание
Используются для построения тонкостенного тела. При
OutwardOffset
= 0 иInwardOffset
= 0 строится сплошное тело по контуру.GuideCurve (Curve3D) - (optional) Задает направляющую кривую. Если не задана, то соединение кривых будет осуществлено по кратчайшему пути.
ControlPoints (table of Points3D) - (optional) Задает контрольные точки. Если список точек не пустой, то он должен быть согласован со списком кривых сечений
profiles
и систем координатplacements
.
Примечание
С помощью контрольных точек управляется положение ребер, соединяющих вершины разных контуров множества
profiles
.
1local detailedGeometry = ModelGeometry()
2local profiles = {
3 CreateRectangle2D(Point2D(0, 0), 0, 30, 30),
4 CreateCircle2D(Point2D(0, 0), 10)}
5local placements = {
6 Placement3D(Point3D(0, 0, 0),
7 Vector3D(1, 0, 0),
8 Vector3D(0, 1, 0)),
9 Placement3D(Point3D(40, 0, 0),
10 Vector3D(1, 0, 0),
11 Vector3D(0, 1, 0))}
12-- дополнительные параметры LoftParameters() не указаны, соединение контуров будет выполнятся по кратчайшему пути
13local loftedSolid = Loft(profiles, placements)
14detailedGeometry:AddSolid(loftedSolid)
15Style.SetDetailedGeometry(detailedGeometry)
Результат:
1local detailedGeometry = ModelGeometry()
2local profiles = {
3 CreateRectangle2D(Point2D(0, 0), 0, 30, 30),
4 CreateCircle2D(Point2D(0, 0), 10)}
5local placements = {
6 Placement3D(Point3D(0, 0, 0),
7 Vector3D(1, 0, 0),
8 Vector3D(0, 1, 0)),
9 Placement3D(Point3D(30, 0, 30),
10 Vector3D(0, 0, 1),
11 Vector3D(1, 0, 0))}
12-- создаем направляющую кривую
13local guideArc3D = CreateArc3DByCenterStartEndPoints(Point3D(0, 0, 30),
14 Point3D(0, 0, 0),
15 Point3D(30, 0, 30),
16 false)
17-- указываем направляющую кривую в дополнительных параметрах LoftParameters()
18local loftParams = LoftParameters()
19loftParams.GuideCurve = guideArc3D
20local loftedSolid = Loft(profiles, placements, loftParams)
21detailedGeometry:AddSolid(loftedSolid)
22Style.SetDetailedGeometry(detailedGeometry)
Результат:
Тело вращения#
Вращение плоского замкнутого контура вокруг заданной оси на указанный угол.
- Revolve(contour, placement, axis, revolutionParameters)#
- Parameters:
contour (Curve2D) – Задает плоский контур.
placement (Placement3D) – Задает координатную плоскость.
axis (Axis3D) – Задает ось вращения.
revolutionParameters (RevolutionParameters) – Задает дополнительные параметры построения.
- Returns:
Твердотельная 3D-геометрия.
- Return type:
Solid
Дополнительные параметры построения для функции Revolve#
- RevolutionParameters(counterClockwiseAngle)#
- Parameters:
counterClockwiseAngle (
Number
) – Задает угол вращения против часовой стрелки в радианах.- MEMBERS:
OutwardOffset (
Number
) - Задает отступ наружу от образующей кривой. Значение по умолчанию равно 0.InwardOffset (
Number
) - Задает отступ внутрь от образующей кривой. Значение по умолчанию равно 0.
Примечание
Используются для построения тонкостенного тела. При
OutwardOffset
= 0 иInwardOffset
= 0 строится сплошное тело по контуру.CounterClockwiseRotationAngle (
Number
) - Задает угол вращения против часовой стрелки в радианах.ClockwiseRotationAngle (
Number
) - Задает угол вращения по часовой стрелке в радианах.
1local detailedGeometry = ModelGeometry()
2local placement = Placement3D(Point3D(0, 0, 0),
3 Vector3D(1, 0, 0),
4 Vector3D(0, 1, 0))
5local contour = CreateRectangle2D(Point2D(0, 0), 0, 6, 15)
6FilletCornerAfterSegment2D(contour, 3, 3)
7FilletCornerAfterSegment2D(contour, 5, 3)
8-- дополнительные параметры построение RevolutionParameters()
9local params = RevolutionParameters(0)
10params.ClockwiseRotationAngle = math.rad(270)
11-- создание геометрии
12local revolutionSolid = Revolve(contour,
13 placement,
14 Axis3D(Point3D(0, 10, 0), Vector3D(0, -0.5, 1)),
15 params)
16detailedGeometry:AddSolid(revolutionSolid:ShowTangentEdges(false))
17Style.SetDetailedGeometry(detailedGeometry)
Результат:
Тело заметания#
Построение кинематического тела путем движения образующей кривой вдоль направляющей кривой.
- Evolve(profile, placement, path, evolutionParameters)#
- Parameters:
profile (Curve2D) – Задает образующую кривую.
placement (Placement3D) – Задает локальную систему координат, в плоскости XY которой располагается сечение.
path (Curve3D) – Задает направляющую кривую.
evolutionParameters (EvolutionParameters) – (optional) Задает дополнительные параметры
- Returns:
Твердотельная 3D-геометрия.
- Return type:
Solid
Дополнительные параметры построения для функции Evolve#
- EvolutionParameters()#
- MEMBERS:
OutwardOffset (
Number
) - Задает отступ наружу от образующей кривой. Значение по умолчанию равно 0.InwardOffset (
Number
) - Задает отступ внутрь от образующей кривой. Значение по умолчанию равно 0.
Примечание
Используются для построения тонкостенного тела. При
OutwardOffset
= 0 иInwardOffset
= 0 строится сплошное тело по контуру.
Методы класса#
Общие методы твердотельной геометрии Solid.
Сместить по осям X, Y, Z
- :Shift(dX, dY, dZ)
- Parameters:
dX (
Number
) – Задает смещение по оси X.dY (
Number
) – Задает смещение по оси Y.dZ (
Number
) – Задает смещение по оси Z.
Повернуть относительно оси
- :Rotate(axis, angle)
- Parameters:
axis (Axis3D) – Задает ось вращения.
angle (
Number
) – Задает угол поворота в радианах.
Масштабировать относительно точки
- :Scale(point, xScale, yScale,zScale)
- Parameters:
point (Point3D) – Задает точку центра масштабирования.
xScale (
Number
) – Задает коэффициент масштабирования по оси X.yScale (
Number
) – Задает коэффициент масштабирования по оси Y.yScale – Задает коэффициент масштабирования по оси Z.
Преобразовать согласно матрице
- :Transform(matrix)
- Parameters:
matrix (Matrix3D) – Задает матрицу преобразования в трёхмерном пространстве.
Вернуть копию объекта
- :Clone()
- Returns:
Копия твердотельной 3D-геометрии
- Return type:
Solid
Установить видимость рёбер на гладких стыках граней
- :ShowTangentEdges(isShowing)
- Parameters:
isShowing (
Boolean
) – Устанавливает видимость рёбер на гладких стыках граней. True - видны, False - скрыты.
Операторы#
Проверить равенство с другой твёрдотельной 3D-геометрией
- ==
- Результат:
Логическое значение
- Тип результата:
Boolean
Проверить неравенство с другой твёрдотельной 3D-геометрией
- ~=
- Результат:
Логическое значение
- Тип результата:
Boolean
Функции, не члены класса#
Булевое сложение
Перегрузка 1:
- Unite(solid1, solid2)#
- Parameters:
solid1 (
Solid
) – Задает первый операнд операцииsolid2 (
Solid
) – Задает второй операнд операции
- Returns:
Твердотельная 3D-геометрия.
- Return type:
Solid
Перегрузка 2:
- Unite({solids})
- Parameters:
solids (
table of Solids
) – Задает таблицу, содержащую твердотельные тела- Returns:
Твердотельная 3D-геометрия.
- Return type:
Solid
Пример кода:
1local detailedGeometry = ModelGeometry()
2local cube = CreateBlock(20, 20, 20)
3local sphere = CreateSphere(10)
4local compoundSolid = Unite(cube, sphere:Shift(10, 0, 20)):ShowTangentEdges(false)
5detailedGeometry:AddSolid(compoundSolid)
6Style.SetDetailedGeometry(detailedGeometry)
Результат:
Булевое вычитание
- Subtract(solid1, solid2)#
- Parameters:
solid1 (
Solid
) – Задает первый операнд операцииsolid2 (
Solid
) – Задает второй операнд операции
- Returns:
Твердотельная 3D-геометрия.
- Return type:
Solid
Пример кода:
1local detailedGeometry = ModelGeometry()
2local cube = CreateBlock(20, 20, 20)
3local sphere = CreateSphere(10)
4local compoundSolid = Subtract(cube, sphere:Shift(10, 0, 20)):ShowTangentEdges(false)
5detailedGeometry:AddSolid(compoundSolid)
6Style.SetDetailedGeometry(detailedGeometry)
Результат:
Булевое пересечение
- Intersect(solid1, solid2)#
- Parameters:
solid1 (
Solid
) – Задает первый операнд операцииsolid2 (
Solid
) – Задает второй операнд операции
- Returns:
Твердотельная 3D-геометрия.
- Return type:
Solid
Пример кода:
1local detailedGeometry = ModelGeometry()
2local cube = CreateBlock(20, 20, 20)
3local sphere = CreateSphere(10)
4local compoundSolid = Intersect(cube, sphere:Shift(10, 0, 20)):ShowTangentEdges(false)
5detailedGeometry:AddSolid(compoundSolid)
6Style.SetDetailedGeometry(detailedGeometry)
Результат: