Оператор Project
Оператор Project позволяет получить из программного кода постпроцессора доступ к информации уровня проекта SprutCAM (т.е. информацию, которая относится ко всему проекту, а не к отдельным операциям), которая лежит в CLData. Синтаксис оператора следующий.
Project.Ptr|Str|Int|Flt["ParameterName"]
Здесь Project - ключевое слово для доступа к параметрам уровня проекта SprutCAM.
Ptr или Str или Int или Flt - это ключевое слово, определяющее в каком виде нужно представить значение свойства - в виде строки, целого числа, числа с плавающей точкой или в виде указателя на свойство. Подробнее об этом смотрите статью Именованные параметры CLData.
Далее в квадратных скобках следует строковый идентификатор свойства, значение которого нужно получить. Это может быть как строковая константа, как показано здесть, так любое строковое выражение или переменная.
Описание возможных свойств и их значений смотрите в приложении в статье Информация о проекте в CLData .
Рассмотрим пример получения информации о заготовке с использованием данного оператора.
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 )