Оператор Project

Оператор Project позволяет получить из программного кода постпроцессора доступ к информации уровня проекта SprutCAM (т.е. информацию, которая относится ко всему проекту, а не к отдельным операциям), которая лежит в CLData. Синтаксис оператора следующий.

Project.Ptr|Str|Int|Flt["ParameterName"]

Здесь Project - ключевое слово для доступа к параметрам уровня проекта SprutCAM.

Ptr или Str или Int или Flt - это ключевое слово, определяющее в каком виде нужно представить значение свойства - в виде строки, целого числа, числа с плавающей точкой или в виде указателя на свойство. Подробнее об этом смотрите статью Именованные параметры CLData.

Далее в квадратных скобках следует строковый идентификатор свойства, значение которого нужно получить. Это может быть как строковая константа, как показано здесть, так любое строковое выражение или переменная.

Описание возможных свойств и их значений смотрите в приложении в статье Информация о проекте в CLData .


Рассмотрим пример получения информации о заготовке с использованием данного оператора.

PrintAllWorkpiece
sub PrintAllWorkpiece
i: Integer
j: Integer
px, py, pz, pv: Real
for i = 1 to Project.Ptr["Parts"].ItemCount do begin
Output "( Part" + str(i) + ".Workpiece )"
for j = 1 to Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].ItemCount do begin
Output "( Primitive " + str(j) + " )"
case Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Int["PrimitiveType"] of
0: begin !Unknown
Output "( Type: Unknown )"
end
1: begin !Empty
Output "( Type: Empty workpiece )"
end
2: begin !Faces
Output "( Type: Faces )"
px = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Box.Min.X"]
py = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Box.Min.Y"]
pz = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Box.Min.Z"]
Output "( Min point: (" + str(px) + ", " + str(py) + ", " + str(pz) + " ) )"
px = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Box.Max.X"]
py = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Box.Max.Y"]
pz = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Box.Max.Z"]
Output "( Max point: (" + str(px) + ", " + str(py) + ", " + str(pz) + " ) )"
end
3: begin !Casting
Output "( Type: Casting )"
pv = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Stock"]
Output "( Stock: " + str(pv) + " )"
px = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Box.Min.X"]
py = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Box.Min.Y"]
pz = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Box.Min.Z"]
Output "( Min point: (" + str(px) + ", " + str(py) + ", " + str(pz) + " ) )"
px = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Box.Max.X"]
py = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Box.Max.Y"]
pz = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Box.Max.Z"]
Output "( Max point: (" + str(px) + ", " + str(py) + ", " + str(pz) + " ) )"
end
4: begin !Box
Output "( Type: Box )"
px = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Min.X"]
py = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Min.Y"]
pz = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Min.Z"]
Output "( Min point: (" + str(px) + ", " + str(py) + ", " + str(pz) + " ) )"
px = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Max.X"]
py = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Max.Y"]
pz = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Max.Z"]
Output "( Max point: (" + str(px) + ", " + str(py) + ", " + str(pz) + " ) )"
end
5: begin !RevBody
Output "( Type: Turn envelope )"
px = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Origin.X"]
py = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Origin.Y"]
pz = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Origin.Z"]
Output "( Origin: (" + str(px) + ", " + str(py) + ", " + str(pz) + " ) )"
px = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Axis.X"]
py = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Axis.Y"]
pz = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Axis.Z"]
Output "( Axis: (" + str(px) + ", " + str(py) + ", " + str(pz) + " ) )"
end
6: begin !Cylinder
Output "( Type: Cylinder )"
px = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Origin.X"]
py = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Origin.Y"]
pz = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Origin.Z"]
Output "( Origin: (" + str(px) + ", " + str(py) + ", " + str(pz) + " ) )"
px = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Axis.X"]
py = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Axis.Y"]
pz = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Axis.Z"]
Output "( Axis: (" + str(px) + ", " + str(py) + ", " + str(pz) + " ) )"
pv = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["HMin"]
Output "( Min level: " + str(pv) + " )"
pv = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["HMax"]
Output "( Max level: " + str(pv) + " )"
pv = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["ROut"]
Output "( Outer radius: " + str(pv) + " )"
end
7: begin !Tube
Output "( Type: Tube )"
px = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Origin.X"]
py = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Origin.Y"]
pz = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Origin.Z"]
Output "( Origin: (" + str(px) + ", " + str(py) + ", " + str(pz) + " ) )"
px = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Axis.X"]
py = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Axis.Y"]
pz = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Axis.Z"]
Output "( Axis: (" + str(px) + ", " + str(py) + ", " + str(pz) + " ) )"
pv = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["HMin"]
Output "( Min level: " + str(pv) + " )"
pv = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["HMax"]
Output "( Max level: " + str(pv) + " )"
pv = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["ROut"]
Output "( Outer radius: " + str(pv) + " )"
pv = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["RInn"]
Output "( Inner radius: " + str(pv) + " )"
end
8: begin !Prism
Output "( Type: Prism )"
px = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Origin.X"]
py = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Origin.Y"]
pz = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Origin.Z"]
Output "( Origin: (" + str(px) + ", " + str(py) + ", " + str(pz) + " ) )"
px = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Axis.X"]
py = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Axis.Y"]
pz = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Axis.Z"]
Output "( Axis: (" + str(px) + ", " + str(py) + ", " + str(pz) + " ) )"
pv = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["HMin"]
Output "( Min level: " + str(pv) + " )"
pv = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["HMax"]
Output "( Max level: " + str(pv) + " )"
end
9: begin !PolygonalPrism
Output "( Type: Polygonal prism )"
px = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Origin.X"]
py = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Origin.Y"]
pz = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Origin.Z"]
Output "( Origin: (" + str(px) + ", " + str(py) + ", " + str(pz) + " ) )"
px = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Axis.X"]
py = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Axis.Y"]
pz = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Axis.Z"]
Output "( Axis: (" + str(px) + ", " + str(py) + ", " + str(pz) + " ) )"
pv = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Int["CornerCount"]
Output "( Corner count: " + str(pv) + " )"
pv = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["RInn"]
Output "( Inscribed radius: " + str(pv) + " )"
pv = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["Angle"]
Output "( Angle around axis: " + str(pv) + " )"
pv = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["HMin"]
Output "( Min level: " + str(pv) + " )"
pv = Project.Ptr["Parts"].Item[i].Ptr["Workpiece"].Item[j].Flt["HMax"]
Output "( Max level: " + str(pv) + " )"
end
else begin
Output "( Type: Something else )"
end
end
end
end
subend


Результатом работы данной подпрограммы может быть следующий текстовый блок.

Результат
( Part1.Workpiece )
( Primitive 1 )
( Type: Tube )
( Origin: (0, 0, 117.5 ) )
( Axis: (0, 0, 1 ) )
( Min level: -149.5 )
( Max level: 149.5 )
( Outer radius: 66 )
( Inner radius: 29 )
( Primitive 2 )
( Type: Cylinder )
( Origin: (0, 0, 117.5 ) )
( Axis: (0, 0, 1 ) )
( Min level: -147.5 )
( Max level: 147.5 )
( Outer radius: 64 )
( Primitive 3 )
( Type: Turn envelope )
( Origin: (0, 0, 117.5 ) )
( Axis: (0, 0, 1 ) )
( Primitive 4 )
( Type: Box )
( Min point: (-64, -64, -30 ) )
( Max point: (64, 64, 265 ) )
( Primitive 5 )
( Type: Casting )
( Stock: 1 )
( Min point: (-65, -65, -31 ) )
( Max point: (65, 65, 266 ) )
( Primitive 6 )
( Type: Faces )
( Min point: (-54, -54, -30 ) )
( Max point: (54, 54, 265 ) )
( Primitive 7 )
( Type: Polygonal prism )
( Origin: (0, 0, 117.5 ) )
( Axis: (0, 1, 0 ) )
( Corner count: 6 )
( Inscribed radius: 160.786 )
( Angle around axis: 0 )
( Min level: -64 )
( Max level: 64 )
( Primitive 8 )
( Type: Empty workpiece )