Примеры организации макрокоманд:

 Пример 1. Организация перебора точек на отрезке АВ:

< PointOtr.vbs - имя МК>

Set A = p(1,2,3)
Set B = p(6,7,6)
 
    For i = 0 To 1 step 0.05
          Set K = PointOtr(A, B, i)
          Ngpoint.ss K
     Next

Внимание, идентификатор p (без цифр), как и s, использовать в обозначения точек нельзя!



 Пример 2. Организация преобразований поллилинии "BelovCdr.dxf" в цикле: вперед и назад
<ArtPoli.vbs>
Import "BelovCdr.dxf"             ' Линия импортируется из СorelDraw
obj.All = True  ' или: obj.All = 1     - означает делать преобразования для всех объектов
obj.scale=3   '  масштаб
obj.SetH

For I = 0 To 1 step 1
             For n = 3 To 99 step 4
                  ToPolylineArt n, n-1
                  ' VbsMsg "Пауза"
             Next
             For n = 99 To 3 step -4
                  ToPolylineArt n, n-1
                  'VbsMsg "Пауза"
             Next
Next



Пример 3. Пример построения поверхности вращения
<RoundPov.vbs>
 Polyline.AddP P(2,4,0)
 Polyline.AddP P(2,2,0)
 Polyline.AddP P(3,2,0)
 Polyline.AddP P(3,0,0)
 Polyline.AddP P(2,-2,0)
 Polyline.AddP P(2,-2,0)
 Polyline.AddP P(3,-4,0)
 Polyline.AddP P(2.5,-4.5,0)
 Polyline.SaveInDoc ( ngroup )
 RoundPov.BaseNmb = 0
 RoundPov.Nu = 44
 RoundPov.Nv = 44
 RoundPov.CutThrowNodes = True   '  через узловые точки
 RoundPov.SaveInDoc
 RoundPov.Draw


Пример 4. Пример построения линейчатой поверхности
<LinPov.vbs>
 Polyline.AddP P(0,0,0)
 Polyline.AddP P(2,0,0)
 Polyline.AddP P(2,2,0)
 Polyline.AddP P(0,2,0)
 Polyline.AddP P(0,0,0)
 Polyline.SaveInDoc ( ngroup )
 Polyline.Draw

Polyline.Reset ' Обнулить
 Polyline.AddP(P(0,0,4) )
 Polyline.AddP(P(2,0,4) )
 Polyline.AddP(P(2,2,4) )
 Polyline.AddP(P(0,2,4) )
 Polyline.AddP(P(0,0,4) )
 Polyline.SaveInDoc ( ngroup )
 Polyline.Draw
    LinPov.BaseNmbU0 = 0
    LinPov.BaseNmbU1 = 1
    LinPov.Nu = 44
    LinPov.CutThrowNodes = True
 LinPov.SaveInDoc
 LinPov.Draw



 Пример 4. Построить пирамиду SABC с помощью поллинии
Set A = P(5.5, 0.5, 0.0)
Set B = P(1.0, 2.0, 0.0)
Set C = P(5.0, 5.0, 0.0)
Set S = P(3.5, 2.5, 4.5)

 Polyline.AddP A
     Polyline.AddP B
     Polyline.AddP C
     Polyline.AddP A
     Polyline.AddP S
     Polyline.AddP B
     Polyline.AddP C
     Polyline.AddP S
     Polyline.SaveInDoc ( ngroup )
     Polyline.Draw



Пример 5. Построение спирали как полилинии
  Polyline.Reset ' Обнулить, если строилась раньше полилиния
   R=3
CreateGroup
ngroup = GetLastNmb
 For i = 0 To 5*6.29 step 0.25
            x=2+R*cos(i)
            y=2+R*sin(i)
  R=R-0.05
  z=z+0.035
  Polyline.AddP(P(x,y,z) )
 Next
 Polyline.SaveInDoc ( ngroup )
 Polyline.Draw


Пример 6.  Вычисления точки на поверхности вращения и построение нормали в этой точке

Import "C:\dizain_n\Exp_got\Obraz.dxf", 1
RoundPov.BaseNmb = 0
RoundPov.Nu = 22
RoundPov.Nv = 22
RoundPov.Draw
' RoundPov.CutThrowNodes = True ' условие задание сечений по узловым точкам
RoundPov.SaveInDoc
RoundPov.Draw

Set A = RoundPov.P(0.5, 0.5)
NGPoint.ss A
Set N = RoundPov.N(0.5, 0.5)
Set B = p(A.x-N.x*2, A.y-N.y*2, A.z-N.z*2)
Otrezok.ss A, B
SetWidthColor 80, 250, 0, 0



Пример 7.  Задание линейчатой поверхности и вычисления точки  и построение нормали в заданной  точке

Import "C:\dizain_n\Exp_got\Obraz.dxf", 1
Import "C:\dizain_n\Exp_got\Obraz.dxf", 1
' Cдвинем по z
obj.origin(2) = 3
obj.SetH

LinPov.BaseNmbU0 = 0
LinPov.BaseNmbU1 = 1
LinPov.Nu = 11
LinPov.Nv = 21
' LinPov.CutThrowNodes = True ' условие задание сечений по узловым точкам
LinPov.SaveInDoc
LinPov.Draw

Set A = LinPov.P(0.5, 0.5)
NGPoint.ss A
Set N = LinPov.N(0.5, 0.5)
Set B = p(A.x+N.x*2, A.y+N.y*2, A.z+N.z*2)
Otrezok.ss A, B
SetColor 250,0,0



' Пример 7.  Puhkin.vbs - Пушкин на кувшине
Import "C:\dizain_n\Exp_got\Obraz.dxf", 1 ' вызов образующей уцвшина на внешний уровень
n99 = LastNmb
SetWidthColor 60,0,0,250
RoundPov.BaseNmb = n99 ' можно = LastNmb
RoundPov.Nu = 33
RoundPov.Nv = 33
' RoundPov.CutThrowNodes = True
Polyline.SetFillColor 25, 250, 0
RoundPov.SaveInDoc
RoundPov.Draw
Import "C:\dizain_n\Exp_got\Puhkin2.dxf",1  ' вызов полилинии на внешний уровень, а надо во внутрь!
SetWidthColor 70, 250,0,0
obj.All = True
obj.xAngle=-90
obj.origin(0) = 3
obj.origin(1) = 3
obj.origin(2) = 0
obj.SetH

' Пример 8.  Молберт с картиной

' Начинаем с треугольника

Set A = p(0.7,0.5,0)
Set B = p(0,0.5,1.5)
Set C = p(-0.7,0.5,0)

Set A1 = p(0.7,-0.5,0)
Set B1 = p(0,-0.5,1.5)
Set C1 = p(-0.7,-0.5,0)
' Определяем точку на прямой АВ
Set M = p(0.4,-0.5,0)
Set M = PointOtrX (A, B, M)
Set M1 = p(M.x,-M.y,M.z)
Set K=PointDistPlane (A,B,A1,M,0.1)

Import "C:\dizain_n\Dxf\Puhkin2.dxf",0  ' Линия импортируется из СorelDraw
obj.All = 1
obj.scale=0.15 ' масштаб
obj.origin(0) = 0.5
obj.origin(1) = 0.5
obj.SetH

Parall.SetNuNvFillColor 1, 1, 255, 0, 0
Parall.ss p(0,0,0),p(1,0,0),p(0,1,0)
n90 = LastNmb
Parall.ss M1,M,B1
n91 = LastNmb
PlaneToPlane n90, n91
 Ngpoint.ss K
    Polyline.AddP A
         Polyline.AddP B
         Polyline.AddP C
         Polyline.AddP A
         Polyline.AddP A1
         Polyline.AddP B1
         Polyline.AddP C1
         Polyline.AddP A1
         Polyline.SaveInDoc ( ngroup )
         Polyline.Draw
Otrezok.ss B, B1
Otrezok.ss C, C1
Ngpoint.ss M
Ngpoint.ss M1
Parallped.ss M, M1, B, K
Parallped.ss2 M, 0.3, -1, 0.05
 
 obj.All = 1
 obj.scale=3
 obj.origin(0) = 2
 obj.origin(1) = 2
 obj.SetH



 
' Пример 9.  Точка, касательная на поллилинии

Import "C:\dizain_n\Exp_got\Obraz.dxf", 1 ' вызов образующей кувшина на внешний уровень

Set A = Polyline.P (0.5)
Ngpoint.ss A
Set T = Polyline.T (0.5)
Set M = P(A.x+T.x*2, A.y+T.y*2, A.z+T.z*2)
Otrezok.ss A, M
 


'  Пример 10. Задание шестигранника

Set A = P(0, 0, 0)
Set B = P(2, 0, 0)
Set C = P(2, 2, 0)
Set D = P(0, 2, 0)
Set A1 = P(0, 0, 2)
Set B1= P(1, 0, 2)
Set C1 = P(1, 1, 2)
Set D1 = P(0, 1, 2)

C6sides.ss A, B, C, D, A1, B1, C1, D1
SetFillColor 250, 0, 250

    ' подпишем точки
    Text.ss A, "А"
    Text.ss B, "B"
    Text.ss C, "C"
    Text.ss D, "D"
    Text.ss A1, "А1"
    Text.ss B1, "B1"
    Text.ss C1, "C1"
    Text.ss D1, "D1"



'  Пример 11. Построения штриховой линии. Организован цикл

Set p1 = p(-2,4,0) ' Начало линии
Set p2 = p(2,4,0) ' Конец  линии

Htrixline p1, p2,70  'обращение к субрутине штриховой 70 - толщина линии
'  р1, р2 - начало и конец линии

Sub Htrixline (p1, p2, h)
Set p3 = p1 '
For s = 0. To 1.05 Step 0.05
x =(1.-s)*p1.x+s*p2.x
y =(1.-s)*p1.y+s*p2.y
z =(1.-s)*p1.z+s*p2.z
Set K = p(x,y,z)
 If (n Mod 2) = 0  Then
 Set P3 = K
 Else
 otrezok.ss p3,K
Width=h
      End if
n=n+1
Next
End Sub



 

'  Пример 11. Построения штрих-пунктирной линии. Организовано без цикла

Set p1 = p(-2,3,0) ' Начало линии
Set p2 = p(2,3,0) ' Конец  линии

Linhtrixov p1, p2, 70  ' обращение к субрутине штрих-пунктирной

' Собрутина построения штрих-пунктирной
'  р1, р2 - начало и конец линии

Sub Linhtrixov (p1, p2,h)
s=0.
Set p11 = p((1.-s)*p1.x+s*p2.x,(1.-s)*p1.y+s*p2.y,(1.-s)*p1.z+s*p2.z)
s=0.1
Set p12 = p((1.-s)*p1.x+s*p2.x,(1.-s)*p1.y+s*p2.y,(1.-s)*p1.z+s*p2.z)
otrezok.ss p11,p12
Width=h
s=0.14
Set p13 = p((1.-s)*p1.x+s*p2.x,(1.-s)*p1.y+s*p2.y,(1.-s)*p1.z+s*p2.z)
s=0.16
Set p14 = p((1.-s)*p1.x+s*p2.x,(1.-s)*p1.y+s*p2.y,(1.-s)*p1.z+s*p2.z)
otrezok.ss p13,p14
Width=h

s=0.2
Set p11 = p((1.-s)*p1.x+s*p2.x,(1.-s)*p1.y+s*p2.y,(1.-s)*p1.z+s*p2.z)
s=0.3
Set p12 = p((1.-s)*p1.x+s*p2.x,(1.-s)*p1.y+s*p2.y,(1.-s)*p1.z+s*p2.z)
otrezok.ss p11,p12
Width=h
s=0.34
Set p13 = p((1.-s)*p1.x+s*p2.x,(1.-s)*p1.y+s*p2.y,(1.-s)*p1.z+s*p2.z)
s=0.36
Set p14 = p((1.-s)*p1.x+s*p2.x,(1.-s)*p1.y+s*p2.y,(1.-s)*p1.z+s*p2.z)
otrezok.ss p13,p14
Width=h
s=0.4
Set p11 = p((1.-s)*p1.x+s*p2.x,(1.-s)*p1.y+s*p2.y,(1.-s)*p1.z+s*p2.z)
s=0.5
Set p12 = p((1.-s)*p1.x+s*p2.x,(1.-s)*p1.y+s*p2.y,(1.-s)*p1.z+s*p2.z)
otrezok.ss p11,p12
Width=h
s=0.54
Set p13 = p((1.-s)*p1.x+s*p2.x,(1.-s)*p1.y+s*p2.y,(1.-s)*p1.z+s*p2.z)
s=0.56
Set p14 = p((1.-s)*p1.x+s*p2.x,(1.-s)*p1.y+s*p2.y,(1.-s)*p1.z+s*p2.z)
otrezok.ss p13,p14
Width=h

s=0.6
Set p11 = p((1.-s)*p1.x+s*p2.x,(1.-s)*p1.y+s*p2.y,(1.-s)*p1.z+s*p2.z)
s=0.7
Set p12 = p((1.-s)*p1.x+s*p2.x,(1.-s)*p1.y+s*p2.y,(1.-s)*p1.z+s*p2.z)
otrezok.ss p11,p12
Width=h
s=0.74
Set p13 = p((1.-s)*p1.x+s*p2.x,(1.-s)*p1.y+s*p2.y,(1.-s)*p1.z+s*p2.z)
s=0.76
Set p14 = p((1.-s)*p1.x+s*p2.x,(1.-s)*p1.y+s*p2.y,(1.-s)*p1.z+s*p2.z)
otrezok.ss p13,p14
Width=h

s=0.8
Set p11 = p((1.-s)*p1.x+s*p2.x,(1.-s)*p1.y+s*p2.y,(1.-s)*p1.z+s*p2.z)
s=0.9
Set p12 = p((1.-s)*p1.x+s*p2.x,(1.-s)*p1.y+s*p2.y,(1.-s)*p1.z+s*p2.z)
otrezok.ss p11,p12
Width=h
s=0.94
Set p13 = p((1.-s)*p1.x+s*p2.x,(1.-s)*p1.y+s*p2.y,(1.-s)*p1.z+s*p2.z)
s=0.96
Set p14 = p((1.-s)*p1.x+s*p2.x,(1.-s)*p1.y+s*p2.y,(1.-s)*p1.z+s*p2.z)
otrezok.ss p13,p14
Width=h

s=1.0
Set p11 = p((1.-s)*p1.x+s*p2.x,(1.-s)*p1.y+s*p2.y,(1.-s)*p1.z+s*p2.z)
s=1.1
Set p12 = p((1.-s)*p1.x+s*p2.x,(1.-s)*p1.y+s*p2.y,(1.-s)*p1.z+s*p2.z)
otrezok.ss p11,p12
End Sub


' Пример 12. Построение линии со стрелками

Set p1 = p(-2,-4,0) ' Начало линии
Set p2 = p(2,-4,0) ' Конец  линии

Otrstrelki p1, p2  'обращение к субрутине отрезка со стрелками
Text.ss  p(-3,-3.5,0),  "Отрезок со стрелками"

' Субрутина построения отрезка со стрелками на концах
Sub Otrstrelki (p1, p2)
Otrezok.ss p1, p2
Set T = VecOtr (p2,p1)
RoundPov.Cone p1, 0.08, 0.3, T
Set T = VecOtr (p1,p2)
RoundPov.Cone p2, 0.08, 0.3, T
End Sub


' Пример 13. Масштабирования по x,y,z  в отдельности и преобразование по вектору

Import "C:\Disk.D\Dimura\Kalendar\Balabin.dxf", 0
Obj.Uniform = False
Obj.Scale = 2
Obj.ScaleY = 3
Obj.Normal = p(0,-1,0)
Obj.SetH



' Пример 14. Построение эвольвенты
' Эвольвента
r=2 ' радиус
Set P1 = p(r,0,0) ' начальная точка
For s = 0 To 5.14 step 0.1
Mx = r*cos (s) + r* s* sin (s)
My = r*sin (s) - r* s* cos (s)
Set M = p(Mx,My,0)
Otrezok.ss P1, M  ' отрезки
Set p1 = M  ' конец отрезка в начало
Next
Krug.ss p(0,0,0), r, p(0,0,1)  ' исходная окружность



Пример. 15. Точка на растоянии s от начало
Fi=150*3.14/180     ' перевели в радианы
Set T= p(S*cos(Fi),S*sin(Fi),0)   ' в полярных координатах решили задачу



Пример 16. Обобщенный цилиндр
' Обобщенный цилиндр
h99=-5
polyline.Reset
Polyline.AddP(P(0,0,h99) )
Polyline.AddP(P(4,0,h99) )
Polyline.AddP(P(4,4,h99) )
Polyline.AddP(P(0,4,h99) )
Polyline.AddP(P(0,0,h99) )
Polyline.SetFillColor 0, 250, 0
Polyline.SaveInDoc ( ngroup )
Polyline.Draw
n99 = LastNmb

 LinPov.Nu = "22"
 LinPov.Nv = "22"
linpov.Cyl  p(0, 0, 0),  10,  p(0,0,1),  n99



Пример 17. Обобщенный цилиндр

Import "C:\TexH\detalir\zubhatka.dxf",1
n99 = LastNmb
LinPov.Nu = "22"
LinPov.Nv = "22"
Linpov.Cyl  p(0, 0, 0),  4,  p(0,0,1),  n99
obj.yAngle = 90
obj.SetH


 Методы для задания некоторых форм деталей

Задание кулачка

Set O5 =p(0,0,0)
Set O6 =p(0,0,0)
Set Ox = Kulachek (R,R1,R2,R3,s,a,a1,b,b1,x,y,fi,fi1,O5,O6 )
где
R,R1,R2,R3,s,a,a1,b,b1,x,y,fi,fi1 - параметры кулачка (см. рис.)
Ox,О5,О6 - центры искомых дуг сопряжения
В Ox.z - лежит искомый радиус соответствующей дуги



Задание детали N1 (исполнение 1-6)
s1=30 ' ширина в основании (см. рис)
s2=50 ' глубина
s3=80 ' ширина верхней части детали
s4=45 ' высота всей детали
s5=25 ' глубина (толщина) выступа справа и слева
s6=35 ' высота (толщина) выступа справа и слева
s7=12.5 ' Отстояние выступа от задней стенки

   Listpr1 s1,s2,s3,s4,s5,s6,s7    ' деталь без сечения (рис.)
'  Listpr2g s1,s2,s3,s4,s5,s6,s7  ' деталь с наклонным сечением (рис.)



Задание детали N2 (исполнение 1)
Listpr2 d,h,d1,h1,h2,a,a1
где
d=80  ' ширина
h =80 ' высота всей детали
d1=20 ' диаметр вертикального отверстия
h1=25 ' высота до выреза
h2=40 '
a =60 ' ширина внизу выреза
a1=25 ' ширина выреза вверху

Задание детали N2 (исполнение 2)

h =100  ' высота всей детали
a=90    ' Ширина детали
d = 25  ' Диаметр отверстия
h1=25   ' высота до выреза
h2=60   ' высота нижней части выреза
h3=-20    ' высота верхней части выреза
a1 =70 ' ширина внизу выреза
a2=50 ' ширина у выреза вверху
Listprv2 h,a,d,h1,h2,h3,a1,a2



Задание детали N2 (исполнение 3)
h =90 ' высота всей детали
d = 90  '
d1 = 20  '
h1=25 ' высота до вырезаа
h2=40 ' высота нижней части выреза
h3=-40 ' высота верхней части выреза
a1 =40 ' ширина внизу выреза
a2=30 ' ширина выреза вверху
Listprv3 h,d,d1,h1,h2,h3,a1,a2


Объем тетраэдра и его центр (обращение к методам)
a=10
b=10
c=10

Set k1 = p(0,0,c)
Set k2 = p(a,0,c)
Set k4 = p(0,0,0)
Set k11 = p(0,b,c)
Otrezok.ss k1,k2
Otrezok.ss k2,k4
Otrezok.ss k4,k1
Otrezok.ss k1,k11
Otrezok.ss k2,k11
Otrezok.ss k4,k11

' Объем тетраэдра обращение к методам
v=ObTetraedr (k1,k2,k4, k11)
VBSMsg "Объем тетраэдра = " & v
Set pct = CentrTetraedr (k1,k2,k4, k11)
Krug.ss pct,0.25, p(0,0,1)

' Проверка
 Set tt1 = PointOtr(k1, k2, 0.5)
 Set tt2 = PointOtr(k2, k4, 0.5)
 Set tt3 = PointOtr(k4, k1, 0.5)
Otrezok.ss k1,tt2
Otrezok.ss k2,tt3
Otrezok.ss k4,tt1

' вычисление центра тяжести
xc=(k1.x+k2.x+k4.x)/3
yc=(k1.y+k2.y+k4.y)/3
zc=(k1.z+k2.z+k4.z)/3
Set Pc = p(xc,yc,zc)
krug.ss Pc, 0.2, p(0,0,0.1)
Otrezok.ss pc,k11



' Вычисление объема и центра 6-гранника-
a=10
b=10
c=10
Set p1 = p(0,0,c)
Set p2 = p(a,0,c)
Set p3 = p(a,0,0)
Set p4 = p(0,0,0)
Set p11 = p(0,b,c)
Set p12 = p(a,b,c)
Set p13 = p(a,b,0)
Set p14 = p(0,b,0)

C6sides.ss p1, p2, p3, p4, p11, p12, p13, p14

' Вычисление объема 6-гранника
v= Ob6Sides (p1, p2, p3, p4, p11, p12, p13, p14)
VBSMsg "Объем 6-гранника v = " & v
' Центр
Set pct = Centr6Sides (p1, p2, p3, p4, p11, p12, p13, p14)
Krug.ss pct,0.25, p(0,0,1)


Скрипты на VBS

Тест №1 Организация скрипта, задание полилинии и вычисление ее длины (рис. экрана)
<HTML>
<HEAD>
<META name=VI60_defaultClientScript content=VBScript>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE></TITLE>
<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
<!--

Sub button1_onclick
 Set p1 = CreateObject("Vector.P")
 Set line = CreateObject("Vector.Polyline")
 p1.x = 0
 p1.y = 0
 p1.z = 0
 line.AddP p1
 p1.x = 1
 p1.y = 0
 p1.z = 0
 line.AddP p1
 p1.x = 1
 p1.y = 1
 p1.z = 0
 line.AddP p1
 p1.x = 0
 p1.y = 1
 p1.z = 0
 line.AddP p1
 MsgBox "line.length=" & line.Length
End Sub

-->
</SCRIPT>
</HEAD>
<BODY>

<P><INPUT id=text1 name=text1
style="HEIGHT: 134px; WIDTH: 348px" value="   Должно вывестись значение = 3"><INPUT id=button1 name=button1 type=button value="Нажми меня" style  ="HEIGHT: 66px; WIDTH: 125px"></P>

</BODY>
</HTML>


Тест №2

Задание полилинии в цикле и вычисление ее длины

<HTML>
<HEAD>
<META name=VI60_defaultClientScript content=VBScript>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE></TITLE>
<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
<!--

Sub button1_onclick
 Set doc  = CreateObject("Vector.Document")
Dim Rx
Rx = Array(0,0,2,2,4,4,6,6,8,8,10,10,12,12,14,14,16,16,18,18,20,20,22,22,24,26,28,30,0,0,0,0,0,0)
Dim Ry
Ry = Array(0,2,2,-2,-2,2,2,-2,-2,2,2,-2,-2,2,2,-2,-2,2,2,0,0,0,0,0,0,0,0,0,0,0,0)
Dim Rz
Rz = Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
Xb=Rx(0)
Xb=Rx(0)
Xb=Rx(0)

doc.Polyline.Reset
 For n=0 To 13 Step 1
  doc.Polyline.AddP doc.p(Rx(n),Ry(n),0)
 Next
doc.Polyline.SaveInDoc ( -1 )
' Polyline.SaveInDoc ( -1 )
' Polyline.Draw
' doc.Import "test1.dxf", True ' a aieoiaio - ia a a?oiio!!! ' вариант импортрования линии
 Set plline2 = CreateObject("Vector.Polyline")
 plline2.FromCurrObj  11
 MsgBox "plline2.Length=" & plline2.Length
End Sub
-->
</SCRIPT>
</HEAD>
<BODY>

<P><INPUT id=text1 name=text1
style="HEIGHT: 134px; WIDTH: 348px" value="Должно вывестись значение = 38"><INPUT id=button1 name=button1 type=button value="Нажми меня" style  ="HEIGHT: 66px; WIDTH: 125px"></P>

</BODY>
</HTML>



Ct_2borta (Рис. 1, 2)
' Задаем правый борт отдельно
Import "C:\Bolotov\ship\ship_test.dxf", 0
n1 = LastNmb ' номер 1-й группы линий
PolylinesByZ  n1, 2.0
' Строим полиповерхность слева
'1) т. привязки
'2) номер группы
'3) число U-линий
'4) число V-линий
'5) флаг - проводить по узлам
'6) флаг - внутренность/внешность
PolyPov.SS p(0,0,0), n1, 10, 10, False, False
ar = PolyPov.area
Set Pc = PolyPov.centroid
VBSMsg "area =" &  ar
VBSMsg "x=" & Pc.x & "  y=  " & Pc.y & "  z =  " & Pc.z
Krug.ss pc, 0.15, p(0,0,1)
SetFillColor 250, 0, 0

Import "C:\Bolotov\ship\ship_test_lev.dxf", 0
n2 = LastNmb ' номер 1-й группы линий
PolylinesByZ  n2, 2.0
' Строим полиповерхность слева
'1) т. привязки
'2) номер группы
'3) число U-линий
'4) число V-линий
'5) флаг - проводить по узлам
'6) флаг - внутренность/внешность
PolyPov.Reset
PolyPov.SS p(0,0,0), n2, 10, 10, False, False
ar = PolyPov.area
Set Pc = PolyPov.centroid
VBSMsg "area =" &  ar
VBSMsg "x=" & Pc.x & "  y=  " & Pc.y & "  z =  " & Pc.z
Krug.ss pc, 0.15, p(0,0,1)
SetFillColor 250, 0, 0


Макрокорманды для тестирования ошибок

<Kubic>
' замкнутый кубик
a=4
b=4
t=4
Set p1 =p(0,0,t)
Set p2 =p(0,b,t)
Set p3 =p(0,b,0)
Set p4 =p(0,0,0)

Set p5 =p(a,0,0)
Set p6 =p(a,0,t)

Set p7 =p(0,-b,t)
Set p8 =p(0,-b,0)
Set p9 =p(-a,0,t)
Set p10=p(-a,0,0)

Polyline.Reset
Polyline.AddP P1
Polyline.AddP P2
Polyline.AddP P3
Polyline.AddP P4
Polyline.SaveInDoc ( ngroup )
Polyline.Draw

Polyline.Reset
Polyline.AddP P1
Polyline.AddP P6
Polyline.AddP P5
Polyline.AddP P4
Polyline.SaveInDoc ( ngroup )
Polyline.Draw

Polyline.Reset
Polyline.AddP P1
Polyline.AddP P7
Polyline.AddP P8
Polyline.AddP P4
Polyline.SaveInDoc ( ngroup )
Polyline.Draw

Polyline.Reset
Polyline.AddP P1
Polyline.AddP P9
Polyline.AddP P10
Polyline.AddP P4
Polyline.SaveInDoc ( ngroup )
Polyline.Draw

Polyline.Reset
Polyline.AddP P1
Polyline.AddP P2
Polyline.AddP P3
Polyline.AddP P4
Polyline.SaveInDoc ( ngroup )
Polyline.Draw

 n1 = LastNmb+1
 MoveToGroup 0, n1, "Йети" ' - название группы
 ng = LastNmb
 '1) т. привязки
 '2) номер группы
 '3) число U-линий
 '4) число V-линий
 '5) флаг - проводить по узлам
 '6) флаг - внутренность/внешность
 'PolyPov.Reset
 'PolyPov.SS p(0,0,0), ng, 5, 20, False, False