3DCoatScripting  4.8.31Ξ²
Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ скриптинга ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ возмоТностями ΠšΠΎΡƒΡ‚Π° ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π».
πŸŒ€ АвтоматичСскоС созданиС скриптов Π² ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π°Ρ…

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ скриптов Π² 3DCoat для инструмСнта ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² Π² ΡΠΊΡƒΠ»ΡŒΠΏΡ‚ Ρ‚Π° Ρ€Π΅Ρ‚ΠΎΠΏΠΎ ΠΊΠΎΠΌΠ½Π°Ρ‚Π°Ρ…. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ свои дСйствия Π² скрипт Ρ„Π°ΠΉΠ», ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² Ρ„Π°ΠΉΠ»Π΅ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ.

Π—Π°ΠΏΠΈΡΡŒ скрипта Π² ΡΠΊΡƒΠ»ΡŒΠΏΡ‚ ΠΊΠΎΠΌΠ½Π°Ρ‚Π΅

Для просмотра Π²ΠΈΠ΄Π΅ΠΎ записи скрипта Π² ΡΠΊΡƒΠ»ΡŒΠΏΡ‚ ΠΊΠΎΠΌΠ½Π°Ρ‚Π΅, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ здСсь Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉ этот скрипт сСбС Π½Π° ΠΊΠΎΠΌΠΏ ΠΈ запусти ΠΈΠ· мСню 3DCoat: "Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ / Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ скрипт". Если Π½Π΅ знаСшь, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ скрипты, загляни сюда.

// Π€Π°ΠΉΠ», созданный послС записи скрипта Π² ΡΠΊΡƒΠ»ΡŒΠΏΡ‚-ΠΊΠΎΠΌΠ½Π°Ρ‚Π΅.
void main() {
Coat coat;
UI ui;
// ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΡΠΊΡƒΠ»ΡŒΠΏΡ‚ ΠΊΠΎΠΌΠ½Π°Ρ‚Ρƒ
coat.room("Sculpt");
Symmetry symm;
// Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΡΠΈΠΌΠΌΠ΅Ρ‚Ρ€ΠΈΡŽ
symm.Enable(true);
symm.ShowPlane(true);
symm.Type(0);
// Π·Π΅Ρ€ΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ "лоТь"
symm.SetMirror(false,0);
symm.SetMirror(false,1);
symm.SetMirror(false,2);
symm.CoordSystemXYZ(0);
symm.StartPoint(Vec3(0.00,0.00,0.00));
SculptRoom sculpt;
// ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ½Π°Ρ‚Ρƒ
sculpt.clear();
sculpt.toVoxel();
// Π²ΠΎΠΊΡΠ΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚
Vox vox1;
vox1.clearScene();
vox1.rename("Volume5");
// ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ инструмСнт ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ²
PrimitivesTool tool;
// ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π°ΠΌ
coat.room("Sculpt");
ui("$SCULP_PRIM");
// ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ сфСру
SpherePrim sphere1;
sphere1 = tool.sphere();
// ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ сфСры
sphere1.useDiameter(false);
sphere1.Position(Vec3(0.00,0.00,0.00));
sphere1.Radius(15.00);
// ΠΏΠ΅Ρ€ΠΉΡ‚ΠΈ Π² сурфСйсный Ρ€Π΅ΠΆΠΈΠΌ
vox1.toSurface();
ui("$SCULP_PRIM");
// ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΡƒΠ±
CubPrim cube2;
cube2 = tool.cube();
// ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΡƒΠ±Π°
cube2.AxisX(Vec3(1.00,0.00,0.00));
cube2.AxisY(Vec3(0.00,1.00,0.00));
cube2.AxisZ(Vec3(0.00,0.00,1.00));
cube2.useFillet(true);
cube2.Position(Vec3(0.00,0.00,0.00));
cube2.SideA(30.00);
cube2.SideB(30.00);
cube2.SideC(30.00);
cube2.details(0.36);
// ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ сторон
cube2.Position(Vec3(0.00,0.00,-191.27));
cube2.SideA(434.41);
cube2.SideB(12.88);
cube2.SideC(896.92);
// Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΡƒΠ± Π² сцСну
tool.Apply(0);
// ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π°ΠΌ
ui("$SCULP_PRIM");
Step(1);
// ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€
CylinderPrim cylinder4;
cylinder4 = tool.cylinder();
// ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€Π°
cylinder4.useDiameter(false);
cylinder4.useFillet(false);
cylinder4.useSector(false);
cylinder4.startPoint(Vec3(0.00,0.00,0.00));
cylinder4.endPoint(Vec3(0.00,20.00,0.00));
cylinder4.height(20.00);
cylinder4.radius(10.00);
cylinder4.topRadius(10.00);
cylinder4.bottomRadius(10.00);
cylinder4.scalex(1.00);
cylinder4.scaley(1.00);
cylinder4.details(0.36);
// ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ
cylinder4.startPoint(Vec3(153.52,-6.44,194.20));
cylinder4.endPoint(Vec3(153.52,-126.74,194.20));
// высота, радиус
cylinder4.height(120.30);
cylinder4.radius(31.52);
cylinder4.topRadius(31.52);
cylinder4.bottomRadius(31.52);
// Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€ Π² сцСну
tool.Apply(0);
// новая позиция
cylinder4.startPoint(Vec3(-147.54,-6.44,191.79));
cylinder4.endPoint(Vec3(-147.54,-126.74,191.79));
// Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€ Π² сцСну
tool.Apply(0);
// новая позиция
cylinder4.startPoint(Vec3(150.98,-6.44,-577.69));
cylinder4.endPoint(Vec3(150.98,-126.74,-577.69));
// Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€ Π² сцСну
tool.Apply(0);
// новая позиция
cylinder4.startPoint(Vec3(-149.89,-6.44,-568.62));
cylinder4.endPoint(Vec3(-149.89,-126.74,-568.62));
// Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€ Π² сцСну
tool.Apply(0);
// ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π°ΠΌ
ui("$SCULP_PRIM");
// ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠ³Ρ€Π°Π½Π½ΠΈΠΊ
NGonPrim ngon8;
ngon8 = tool.ngon();
// инициализация ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²
ngon8.useDiameter(false);
ngon8.useFillet(false);
ngon8.startPoint(Vec3(0.00,0.00,0.00));
ngon8.endPoint(Vec3(0.00,20.00,0.00));
ngon8.height(20.00);
ngon8.radius(10.00);
ngon8.topRadius(10.00);
ngon8.bottomRadius(10.00);
ngon8.Order(8);
ngon8.scalex(1.00);
ngon8.scaley(1.00);
// ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ
ngon8.details(0.36);
// ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ
ngon8.startPoint(Vec3(-75.14,6.44,99.46));
ngon8.endPoint(Vec3(-75.14,356.44,99.46));
// ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ радиус
ngon8.radius(65.01);
ngon8.topRadius(65.01);
ngon8.bottomRadius(65.01);
// Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² сцСну
tool.Apply(0);
// ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π°ΠΌ
ui("$SCULP_PRIM");
Step(1);
// ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡˆΠ΅ΡΡ‚Π΅Ρ€Π΅Π½ΠΊΡƒ
GearPrim gear9;
gear9 = tool.gear();
// инициализация ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²
gear9.useDiameter(false);
gear9.startPoint(Vec3(0.00,0.00,0.00));
gear9.endPoint(Vec3(0.00,20.00,0.00));
gear9.height(20.00);
gear9.radius(10.00);
gear9.topRadius(10.00);
gear9.bottomRadius(10.00);
gear9.Depth(0.20);
gear9.Sharpness(0.50);
gear9.Order(16);
gear9.scalex(1.00);
gear9.scaley(1.00);
gear9.details(0.36);
// ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ
gear9.startPoint(Vec3(-64.67,6.44,-410.43));
gear9.endPoint(Vec3(-64.67,300.44,-410.43));
// ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ радиус
gear9.radius(55.01);
gear9.topRadius(55.01);
gear9.bottomRadius(55.01);
// Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² сцСну
tool.Apply(0);
// ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π°ΠΌ
ui("$SCULP_PRIM");
Step(1);
// ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡˆΡ€ΠΈΡ„Ρ‚
Font font;
font.Name("Arial");
font.Size(384);
font.Weight(0);
font.Style(0);
font.OutPrecision(0);
font.ClipPrecision(0);
font.CharSet(0);
font.Quality(0);
font.Family(0);
// ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ тСкстовый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚
TextPrim text11;
text11 = tool.text();
// тСкст
text11.SetText("Hello world");
text11.AxisX(Vec3(1.00,0.00,0.00));
text11.AxisY(Vec3(0.00,1.00,0.00));
text11.AxisZ(Vec3(0.00,0.00,1.00));
text11.Position(Vec3(0.00,0.00,0.00));
// Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹
text11.SideA(50.00);
text11.SideB(50.00);
text11.SideC(5.00);
text11.ExtraRotation(0.00);
// ΠΊΡ€ΠΈΠ²ΠΈΠ·Π½Π° Π²Ρ‹ΠΊΠ».
text11.Bend(false);
// оси
text11.AxisX(Vec3(-0.03,0.00,-1.00));
text11.AxisY(Vec3(0.00,1.00,0.00));
text11.AxisZ(Vec3(1.00,-0.00,-0.03));
// позиция ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ сторон
text11.Position(Vec3(72.97,68.81,-207.88));
text11.SideA(380.69);
text11.SideB(380.69);
text11.SideC(38.07);
// Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ тСкст Π² сцСну
tool.Apply(0);
}

Π—Π°ΠΏΠΈΡΡŒ скрипта Π² Ρ€Π΅Ρ‚ΠΎΠΏΠΎ ΠΊΠΎΠΌΠ½Π°Ρ‚Π΅

Для просмотра Π²ΠΈΠ΄Π΅ΠΎ записи скрипта Π² Ρ€Π΅Ρ‚ΠΎΠΏΠΎ ΠΊΠΎΠΌΠ½Π°Ρ‚Π΅, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ здСсь Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉ этот скрипт сСбС Π½Π° ΠΊΠΎΠΌΠΏ ΠΈ запусти ΠΈΠ· мСню 3DCoat: "Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ / Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ скрипт". Если Π½Π΅ знаСшь, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ скрипты, загляни сюда.

// This file generated after the script recording in the retopo room.
void main() {
Coat coat;
// goto retopo room
coat.room("Retopo");
// symmetry object
Symmetry symm;
// enable window
symm.Enable(true);
symm.ShowPlane(true);
symm.Type(0);
// mirror set to "false"
symm.SetMirror(false,0);
symm.SetMirror(false,1);
symm.SetMirror(false,2);
symm.CoordSystemXYZ(0);
symm.StartPoint(Vec3(0.00,0.00,0.00));
// clear the retopo
RetopoRoom retopo;
retopo.clear();
// prepare the primitives tool
PrimitivesTool tool;
// go to the retopo primitives
coat.room("Retopo");
cmd("$RTP_PRIM");
// get the retopo sphere
rGeoSphere rsphere22;
rsphere22 = tool.rsphere();
// init parameters
rsphere22.useDiameter(false);
rsphere22.Position(Vec3(0.00,0.00,0.00));
rsphere22.Radius(10.00);
rsphere22.SubDivision(8);
// go to the retopo primitives
cmd("$RTP_PRIM");
Step(1);
// get the retopo box
rGeoBox rbox23;
rbox23 = tool.rbox();
// init parameters
rbox23.AxisX(Vec3(1.00,0.00,0.00));
rbox23.AxisY(Vec3(0.00,1.00,0.00));
rbox23.AxisZ(Vec3(0.00,0.00,1.00));
rbox23.useFillet(false);
rbox23.useUniform(true);
rbox23.Position(Vec3(0.00,0.00,0.00));
rbox23.SideA(30.00);
rbox23.SideB(30.00);
rbox23.SideC(30.00);
rbox23.DivX(1);
rbox23.DivY(1);
rbox23.DivZ(1);
rbox23.AverageDivision(12);
// change the sides
rbox23.SideA(134.45);
rbox23.SideB(134.45);
rbox23.SideC(134.45);
// add the box in the scene
tool.Apply();
// go to the retopo primitives
cmd("$RTP_PRIM");
Step(1);
// go to a sphere
tool.SetPrim("rsphere");
rsphere22.Position(Vec3(-83.80,182.77,57.41));
rsphere22.Radius(60.48);
// add the sphere in the scene
tool.Apply();
// go to the retopo primitives
cmd("$RTP_PRIM");
Step(1);
// get the retopo cylinder
rGeoCylinder rcylinder24;
rcylinder24 = tool.rcylinder();
// init parameters ( diameter, fillet, removecaps )
rcylinder24.useDiameter(false);
rcylinder24.useFillet(false);
rcylinder24.RemoveCaps(false);
// uniform subdivision
rcylinder24.useUniform(true);
// positions (start,end points)
rcylinder24.startPoint(Vec3(0.00,0.00,0.00));
rcylinder24.endPoint(Vec3(0.00,20.00,0.00));
// height, radius, topRadius, bottomRadius
rcylinder24.height(20.00);
rcylinder24.radius(0.00);
rcylinder24.topRadius(10.00);
rcylinder24.bottomRadius(10.00);
// scales
rcylinder24.scalex(1.00);
rcylinder24.scaley(1.00);
// custom divisions
rcylinder24.DivY(1);
rcylinder24.DivX(1);
rcylinder24.DivZ(3);
// average division
rcylinder24.AverageDivision(16);
// set the new positions
rcylinder24.startPoint(Vec3(60.54,134.45,61.37));
rcylinder24.endPoint(Vec3(60.54,163.89,61.37));
// set the new height, radius, topRadius, bottomRadius
rcylinder24.height(129.44);
rcylinder24.radius(47.91);
rcylinder24.topRadius(47.91);
rcylinder24.bottomRadius(47.91);
rcylinder24.DivZ(7);
// add the cylinder in the scene
tool.Apply();
// go to the retopo primitives
cmd("$RTP_PRIM");
Step(1);
// get the retopo cone
rGeoCone rcone25;
rcone25 = tool.rcone();
// init parameters (diameters, fillet)
rcone25.useDiameter(false);
rcone25.useFillet(false);
// uniform subdivision
rcone25.useUniform(true);
// set the positions
rcone25.startPoint(Vec3(0.00,0.00,0.00));
rcone25.endPoint(Vec3(0.00,20.00,0.00));
// height & radius
rcone25.height(20.00);
rcone25.bottomRadius(10.00);
// scales
rcone25.scalex(1.00);
rcone25.scaley(1.00);
// custom divisions
rcone25.DivY(1);
rcone25.DivX(1);
rcone25.DivZ(3);
// average division
rcone25.AverageDivision(12);
// change the parameters
rcone25.startPoint(Vec3(-65.00,134.45,-69.28));
rcone25.endPoint(Vec3(-65.00,198.84,-69.28));
rcone25.height(164.39);
rcone25.bottomRadius(47.91);
rcone25.DivY(4);
rcone25.DivZ(4);
// add the cone in the scene
tool.Apply();
// go to the retopo primitives
cmd("$RTP_PRIM");
Step(1);
// get the retopo spiral
rGeoSpiral rspiral31;
rspiral31 = tool.rspiral();
// init parameters (axises)
rspiral31.AxisX(Vec3(0.00,0.00,-1.00));
rspiral31.AxisY(Vec3(1.00,-0.00,0.00));
rspiral31.AxisZ(Vec3(0.00,-1.00,-0.00));
// uniform subdivision
rspiral31.useUniform(true);
// positions
rspiral31.Position(Vec3(0.00,0.00,0.00));
rspiral31.Position2(Vec3(0.00,2.00,0.00));
// sphere profile
rspiral31.UseRectProfile(false);
// outer diameter
rspiral31.OuterDiameter(40.00);
// pitch
rspiral31.Pitch(20.00);
// profile params (d & r)
rspiral31.ProfileDiameter(10.00);
rspiral31.ProfileRadiusRelation(0.50);
// amount of turns
rspiral31.Turns(10);
// clockwise direction
rspiral31.ClockWise(true);
// custom subdivisions
rspiral31.DivY(3);
rspiral31.DivX(3);
rspiral31.DivZ(3);
// average division
rspiral31.AverageDivision(3);
// change the axises
rspiral31.AxisX(Vec3(-1.00,-0.07,0.00));
rspiral31.AxisY(Vec3(-0.07,1.00,0.00));
rspiral31.AxisZ(Vec3(-0.00,0.00,-1.00));
// set the new positions
rspiral31.Position(Vec3(-8.92,24.72,134.45));
rspiral31.Position2(Vec3(-8.92,24.72,136.45));
// set the new outer diameter
rspiral31.OuterDiameter(120);
// change the pitch
rspiral31.Pitch(47.91);
rspiral31.ProfileDiameter(30);
// change the divisions
rspiral31.DivY(8);
rspiral31.DivZ(1);
// change the average divisions
rspiral31.AverageDivision(16);
// add the spiral in the scene
tool.Apply();
// change locations (axes & positions)
rspiral31.AxisX(Vec3(-0.00,0.13,0.99));
rspiral31.AxisY(Vec3(0.00,0.99,-0.13));
rspiral31.AxisZ(Vec3(-1.00,0.00,-0.00));
rspiral31.Position(Vec3(134.45,29.35,-0.27));
rspiral31.Position2(Vec3(136.45,29.35,-0.27));
// add the spiral in the scene
tool.Apply();
}