Организация скрипта вывода значения 10 немного
сложнее: надо организовать сервис окон и надписей в Explorer (см.
рисунок ниже)
и субрутину вычислений на языке VBS.
Sub button1_onclick
' tect вывести значение =10
MsgBox "Длина = " & 10
End Sub
В результате выполнения скрипта получим результат:
Ниже даны примеры организации скриптов и МК (с объетами и без объектов)
| Название задач | Скрипты | Простые Макросы |
| 1. Длина отрезка | Скрипт | МК, рис. |
| 2. Расстояние от точки до прямой | Скрипт (экран. рис.) | МК, рис. 1, 2 |
| 3. Задание полилинии и ее длина | Скрипт (экран. рис.) | |
| 4. Импорт полилинии в формате .dxf и ее длина | Скрипт | |
| 5. Задание полилинии в цикле и расчет ее длины | Скрипт | MK1 MK2 |
| 6. Задание точки и вывод ее координат | Скрипт (экран. рис.) |
Sub button1_onclick
' tect вывести значение =10
MsgBox "Длина = " & 10
End Sub
-->
</SCRIPT>
</HEAD>
<BODY>
<P><INPUT id=text1 name=text1
style="HEIGHT: 134px; WIDTH: 348px" value="Должно вывестись значение
= 10"><INPUT id=button1 name=button1 type=button value="Нажми меня"
style ="HEIGHT: 66px; WIDTH: 125px"></P>
</BODY>
</HTML>
Sub button1_onclick
' определения расстояния между двумя точками
Set p1 = CreateObject("Vector.P")
Set p3 = CreateObject("Vector.P")
p1.x = 1
p1.y = 2.4
p1.z = 2.5
p3.x = 11
p3.y = 2.5
p3.z = 1
' dlina = DlinaOtr (p1, p3) ' так не работает
dlina=sqr((p3.x-p1.x)*(p3.x-p1.x)+(p3.y-p1.y)*(p3.y-p1.y)+(p3.z-p1.z)*(p3.z-p1.z))
MsgBox "Длина отрезка = " & dlina
End Sub
-->
</SCRIPT>
</HEAD>
<BODY>
<P><INPUT id=text1 name=text1
style="HEIGHT: 134px; WIDTH: 348px" value="Должно вывестись значение
= 10.1"><INPUT id=button1 name=button1 type=button value="Нажми меня"
style ="HEIGHT: 66px; WIDTH: 125px"></P>
</BODY>
</HTML>
p1.x = 1
p1.y = 2.4
p1.z = 2.5
p2.x = 5
p2.y = 10
p2.z = 9
p3.x = 11
p3.y = 2.5
p3.z = 1
' smin эталон сравнения - заведомо большее число
smin=10000
For s = 0. To 1.01 Step 0.1
x = (1.-s)*p1.x+s*p2.x
y = (1.-s)*p1.y+s*p2.y
z = (1.-s)*p1.z+s*p2.z
dlina=sqr((p3.x-x)*(p3.x-x)+(p3.y-y)*(p3.y-y)+(p3.z-z)*(p3.z-z))
if dlina < smin Then smin=dlina
Next
MsgBox "Наикратчейшее расстояние от точки до прямой = " & smin
End Sub
-->
</SCRIPT>
</HEAD>
<BODY>
<P><INPUT id=text1 name=text1
style="HEIGHT: 134px; WIDTH: 348px" value=" Должно вывестись
значение = 9.7"><INPUT id=button1 name=button1 type=button value="Нажми
меня" style ="HEIGHT: 66px; WIDTH: 125px"></P>
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: 50px; WIDTH: 200px" value="Будет значение = 3">
_<INPUT id=button1 name=button1 type=button value="Нажми"
_style ="HEIGHT: 40px; WIDTH: 100px"></P>
</BODY>
</HTML>
Sub button1_onclick
Set doc = CreateObject("Vector.Document")
doc.Import "C:/Bolotov/Skrypty/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="Должно вывестись значение
= 9.01932...">
_<INPUT id=button1 name=button1 type=button value="Нажми меня" style
="HEIGHT: 66px;
_WIDTH: 125px"></P>
</BODY>
</HTML>
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 )
doc.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>
Sub button1_onclick
Set p1 = CreateObject("Vector.P")
p1.x = 5
p1.y = 7
p1.z = 9
MsgBox "x = " & p1.x & " y = " & p1.y
& " z = " & p1.z
End Sub
-->
</SCRIPT>
</HEAD>
<BODY>
<P><INPUT id=text1 name=text1
style="HEIGHT: 134px; WIDTH: 348px" value="Точка, ее кординаты д.б.
x = 5, y = 7, z = 9">
_<INPUT id=button1 name=button1 type=button value="Нажми меня"
_style ="HEIGHT: 66px; WIDTH: 125px"></P>
</BODY>
</HTML>
' <Otest2.vbs> Мк определения расстояния
между двумя точками
Set p1 = CreateObject("Vector.P")
Set p3 = CreateObject("Vector.P")
p1.x = 1
p1.y = 2.4
p1.z = 2.5
p3.x = 11
p3.y = 2.5
p3.z = 1
otrezok.s p1.x,p1.y,p1.z, p3.x,p3.y,p3.z
dlina=sqr((p3.x-p1.x)*(p3.x-p1.x)+(p3.y-p1.y)*(p3.y-p1.y)+(p3.z-p1.z)*(p3.z-p1.z))
' MsgBox "Длина отрезка = " & dlina
VBSMsg "Длина отрезка = " & dlina
Set plline2 = CreateObject("Vector.Polyline")
plline2.FromCurrObj 11
VBSMsg plline2.Length
А вот как будет таже МК без использования объектного
программирования
' Наикратчайшее расстояние от точки р3 до
прямой р1-р2
' Дано:
Set p1 =p(1,2.4,2.5)
Set p2 =p(5,10,9)
otrezok.ss p1, p2 ' отрезок p1-p2
Set p3 =p(11,2.5,1)
r3= 0.3
dlina=sqr((p3.x-p1.x)*(p3.x-p1.x)+(p3.y-p1.y)*(p3.y-p1.y)+(p3.z-p1.z)*(p3.z-p1.z))
' начальные точки графиков ЦФ
Set p103=p(p1.x,dlina,dlina)
Set p104=p(p1.x,dlina-1,dlina-1)
krug.ss p3, r3, p(0,0,1) ' окружность в точке р3
' строим серию точек на прямой р1-р2, cоединяя их с р3 тут же
' вычисляем длины отрезков и сравнивая с эталаном выбираем меньшее
' эталон - заведомо большее число
smin=10000
For s = 0. To 1.01 Step 0.1
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 pi= p(x,y,z)
otrezok.ss pi, p3
' krug.ss pi, 0.15, p(0,0,1) ' окружность в точке рi
dlina=sqr((p3.x-pi.x)*(p3.x-pi.x)+(p3.y-pi.y)*(p3.y-pi.y)+(p3.z-pi.z)*(p3.z-pi.z))
' if dlina < smin Then smin=dlina
otrezok.s p103.x, p103.y, p103.z, x, dlina, dlina ' график
Цф
p103.x=x 'переводим конец в начало
p103.y=dlina
p103.z=dlina
if dlina < smin Then
smin=dlina ' фиксируем минимаальное расстояние
'строим график Цф до точки минимума
otrezok.s p104.x, p104.y, p104.z, x, dlina-1, dlina-1
p104.x=pi.x 'переводим конец в начало
p104.y=dlina-1
p104.z=dlina-1
krug.ss pi,0.2,p(0,0,1) ' точка на прямой (до минимума)
xx=pi.x ' запоминаем точку (p*)
yy=pi.y
zz=pi.z
End if
Next
' Оси
otrezok.s 0.,0.,0.,10.,0.,0.
otrezok.s 0.,0.,0.,0.,6.,0.
otrezok.s 0.,0.,0.,0.,0.,5.
VBSMsg "Минимальное расстояние = " & smin & vbCrLf & "в
точке р, у которой"_
& vbCrLf & "х = " & xx & vbCrLf & "y = " &
yy & vbCrLf & "z = " & zz