В текущей версии интерпретатора поддерживаются:
Операторы присваивания и вызова [один оператор в строке].
Объявление составных построений [sub ... end sub].
Вызов составных построений в других составных построениях.
Выполнение циклов [for ... end for].
Измерители, элементы оформления [линии-выноски, размерные знаки, штриховки, заливки, стрелки].
Вывод пространственных координат точек [Z, !cout3D].
Не поддерживаются:
Вложенные операторы [ sub1 (sub2 (...)) ].
Вложенные циклы [for ... for ... end for ... end for].
Условный оператор [!if].
Списки.
Объектно-ориентированные объявления [операторы new и .].
Модификаторы стиля [через :].
Специальные символы
(Специальные символы: αβγδεζηθικλμνξοπρστυφχψω ∀∃∈∉∋∩∪∞∅°∠ ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ ≅≈≠≡⊂⊃⊄⊥)
Программа
sub p3d (x, y, z: name) vr = @vrd(O,x,true) X = @pab(x12,vr) hr = @hrd(O,y,true) A1 = PAB (vr,hr: {name}_1,-7,+11,green) hr = @hrd(O,z) A2 = PAB (vr,hr: {name}_2,+2,+9,red) ls1 = ls (A1,X) ls2 = ls (A2,X) !erase(vr,hr,X) ret(A1,A2,ls1,ls2) end sub sub edge3d(a,b:astyle,bstyle,cstyle) e1 = sab({a}1,{b}1:false,astyle) e2 = sab({a}2,{b}2:false,bstyle) l1 = ls({a}1s,{b}1s) l2 = ls({a}2s,{b}2s) es = sab({a}s,{b}s:false,cstyle) end sub PSIZE=1.5 [x12,O] = cs12(-60,-10) // вершины [S1,S2,_,_] = p3d(50, 50,85: S) [A1,A2,_,_] = p3d(90,35,15: A) [B1,B2,_,_] = p3d(55, 20,15: B) [D1,D2,_,_] = p3d(70, 80,15: D) [C1,C2,_,_] = p3d(30, 70,15: C) // система координат аксонометрии Os = pxy(135,-35:O') xs = spf(Os,-195:true,thin:x',-115,+25) ys = spf(Os,45:true,thin:y',+35,+30) zs = spf(Os,-90:true,thin:z',+2,-45) v = vrd(Os,100,true) X = pab(v,xs) v = hrd(Os,25,true) X = pab(v,ys) v = hrd(Os,60) X = pab(v,zs) // аффинные преобразования c = @ccx(O,25) Z = @psp(c,0.25) X = @psp(c,0.5) Y = @psp(c,0.75) c = @ccx(Os,25) [_,Zs] = @pac(zs,c) [_,Xs] = @pac(xs,c) [Ys,_] = pac(ys,c) Ys = @psp(Os,Ys,0.7) tpi2 = traff(O,Z,X:Os,Zs,Xs) tpi1 = traff(O,X,Y:Os,Xs,Ys) h = hr(O) v = spa(xs,Os) V1 = pab(h,v) h = hr(Z) v = spa(xs,Zs) V2 = pab(h,v) OR2 = sab(V1,V2:true,,red) h = hr(Y) v = spa(xs,Ys) V2 = pab(h,v) OR1 = sab(V1,V2:true,,green) !erase(v,h,V1,V2) // аксонометрическая проекция sub axon (A1,A2:name) A1s = trobj(tpi1, A1) A2s = trobj(tpi2, A2) h = @spa(ys,A2s) v = @spa(zs,A1s) As = pab(h,v:{name}', -7,+11) ls1 = ls(A1s,As) ls2 = ls(A2s,As) h = hr(A2) T2 = pab(h,OR2:CROSS,red) l21 = ls(A2,T2) l22 = ls(A2s,T2) h = hr(A1) T1 = pab(h,OR1:CROSS,green) l11 = ls(A1,T1) l12 = ls(A1s,T1) !erase(h,v) ret(As,A1s,A2s) end sub [As,A1s,A2s] = axon(A1,A2:A) [Bs,B1s,B2s] = axon(B1,B2:B) [Cs,C1s,C2s] = axon(C1,C2:C) [Ds,D1s,D2s] = axon(D1,D2:D) [Ss,S1s,S2s] = axon(S1,S2:S) cap(Ss,_,+2,-4) // ребра edge3d (A,B:thick,dashed,dashed) edge3d (A,D:thick,thick,thick) //edge3d (A,B:thick,thick,dashed) edge3d (B,C:thick,dashed,dashed) edge3d (D,C:thick,thick,thick) edge3d (A,S:thick,thick,thick) edge3d (B,S:thick,dashed,dashed) edge3d (C,S:thick,thick,thick) edge3d (D,S:thick,thick,thick)
Графические команды
-- Точки
point = PXY (X, Y [,W]: [caption, cap-X, cap-Y])
point = PAB (line-a, line-b: [caption, cap-X, cap-Y])
point = PSP (obj, position| point-a, point-b, position: [caption, cap-X, cap-Y])
point-ideal = PIDEAL (line: [caption, cap-X, cap-Y])
point-real-part = PRE (complex-point: [caption, cap-X, cap-Y])
point-image-part-as-real = PIM (complex-point: [caption, cap-X, cap-Y])
point-real-and-image-part-as-real = PIM1 (complex-point: [caption, cap-X, cap-Y])
point-as-sum = PADD (point-a, point-b: [caption, cap-X, cap-Y])
point-as-difference = PSUB (point-a, point-b: [caption, cap-X, cap-Y])
point = PP (X: x^0-coef, x^1-coef, x^2-coef, ...: [caption, cap-X, cap-Y])
-- Прямые
line = SXY (X1, Y1, X2, Y2: [extension] [,style] [,color]: [caption, cap-X, cap-Y])
line = SAB (point-A, point-B: : [caption, cap-X, cap-Y])
line = SPA (line, point: : [caption, cap-X, cap-Y])
line = SOA (line, point: : [caption, cap-X, cap-Y])
line = SPF (point, angle, negative, line-to: : [caption, cap-X, cap-Y])
line = SKB (k-coeff, b-coeff [, x-flag]: : [caption, cap-X, cap-Y])
line = SABC (a-coeff, b-coeff, c-coeff: : [caption, cap-X, cap-Y])
arrow = ARROW (point-A, point-B: [style] [, color])
ls = LS (point-A, point-B: [length])
-- Окружности и дуги
circle = CCX (center-point, point|line|circle|V, diameterFlag: [style]: [caption, cap-X, cap-Y])
[circle, center-point] = CXYV (center-X, center-Y, V, diameter0flag: : [caption, cap-X, cap-Y])
[circle, center-point] = C2P (point-a, point-b: : [caption, cap-X, cap-Y])
[circle, center-point] = C3P (point-a, point-b, point-c: : [caption, cap-X, cap-Y])
[point-a, point-b] = PAC (line, circle: [caption, cap-X, cap-Y]: [caption, cap-X, cap-Y])
point-b = PAC2ND (line, circle, point-a: [caption, cap-X, cap-Y]: [caption, cap-X, cap-Y])
point-b = PAC2DIR (line, circle, point-a: [caption, cap-X, cap-Y]: [caption, cap-X, cap-Y])
[point-a, point-b] = P2C (circle-a, circle-b: [caption, cap-X, cap-Y]: [caption, cap-X, cap-Y])
point-b = P2C2ND (circle-a, circle-b, point-a: [caption, cap-X, cap-Y]: [caption, cap-X, cap-Y])
point-b = P2C2DIR (circle-a, circle-b, point-a: [caption, cap-X, cap-Y]: [caption, cap-X, cap-Y])
[line-a, line-b] = SCP (circle, point: : [caption, cap-X, cap-Y])
[line-a, point-a, line-b, point-b] = SCP (circle, external-point: : [caption, cap-X, cap-Y])
[arc, center-point] = A3P (point-a, point-b, point-c: : [style] [, color])
[arc, point-from, point-to] = APRA (center-point, radius, angle-from, angle-to: [style] [, color])
-- Кривые второго порядка
-- Полилинии
polyline = PLINE (code: [style] [, color])
PLINPADD (polyline, point-a [, point-b] [, point-c])
PLINS (polyline)
PLINZ (polyline)
SHADOW (polyline)
SECTION (polyline)
-- Линейки и измерители
value = MDX(point-a, point-b)
value = MDY(point-a, point-b)
value = MD(point, point-to|line|circle)
ruler = VR (x)
ruler = VRD (point, distance [, negative])
ruler = HR (y)
ruler = HRD (point, distance [, negative])
ruler = RD (line, distance [, negative])
obj = DL (point-a, point-b, pos-X, pos-Y: [caption, cap-X, cap-Y])
-- Преобразователи
T-object = TROFS (P-old: P-new)
T-object = TRMV (P1-old, P2-old | SEG-old: P1-new, P2-new | SEG-new)
T-object = TRSIM (P1-old, P2-old | SEG-old: P1-new, P2-new | SEG-new)
T-object = TRAFF (P1-old, P2-old, P3-old: P1-new, P2-new, P3-new)
T-object = TRMIR (point | line)
T-object = TRROD (line, point-old, point-new)
T-object = TRINV (circle)
[object, ...] = TROBJ (T-object, object, ...)
[object, ...] = TROBI (T-object, object, ...)
-- Системы координат начертательной геометрии
[axis, O] = CS12 (x, y)
[axis, O] = CS23 (x, y)
-- Разное
[x, y] = XY (point)
CAP (obj, caption [, cap-X, cap-Y])
CAPS (obj1, ...: caption-1 [, cap1-X, cap1-Y]: ...)
!ERASE (o1, o2, ...)
!RECSET (fname, max-recursion-depth)
!COUT (var1|precision-coeff|multiplier, var2|precision-coeff|multiplier, ...)
obj = LEADER (obj: [caption, cap-X, cap-Y])
/Пусто/