VBA Addline method
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA Addline method

VBA Addline method

Ответ
Поиск в этой теме
Непрочитано 23.08.2006, 21:15 #1
VBA Addline method
To Thuc
 
Регистрация: 12.07.2006
Сообщений: 14

Я написал эти коды, но программа не работает. Не обратите внимание на лишние строки и незнакомые название.

Private Sub CommandButton5_Click()
Dim lineObj As AcadLine
Dim ten As String
Dim tl, ds As Double
Dim ghim1(0 To 2), ghim2(0 To 2), ghin1(0 To 2), ghin2(0 To 2), ghid1(0 To 2), ghid2(0 To 2), po(0 To 2) As Double
chuyen = 180 / (4 * Atn(1))
chan = phi * chuyen
ghim1(2) = 0: ghim1(0) = -l / 2: ghim1(1) = r - h
ghin1(2) = 0: ghin1(0) = 3 * l / 2: ghin1(1) = ghim1(2)
ghid1(2) = 0: ghid1(0) = 5 * l / 2: ghid1(1) = ghim1(2)
ghim2(2) = 0: ghin2(2) = 0: ghid2(2) = 0
ds = 0
For dem = -chan To chan
goc = dem / chuyen
x = l / 2 + r * Sin(goc)
cal (x)
'dau doan nay chua dung acadobject
ghim2(0) = -l / 2 + x - moment * Sin(dem / chuyen)
ghim2(1) = y + moment * Cos(goc)
If (moment - ds) > 0 Then
ghin2(0) = 3 * l / 2 + x + Abs(ngang) * Sin(goc)
ghin2(1) = y + ngang * Cos(dem / chuyen)
Else
ghin2(0) = 3 * l / 2 + x - Abs(ngang) * Sin(goc)
ghin2(1) = y - ngang * Cos(dem / chuyen)
End If
Set lineObj = ThisDrawing.ModelSpace.AddLine(ghim1, ghim2)
Set lineObj = ThisDrawing.ModelSpace.AddLine(ghin1, ghin2)
Set lineObj = ThisDrawing.ModelSpace.AddLine(ghid1, ghid2)
If dem Mod 10 = 0 Then
po(0) = x - l / 2
po(1) = y
po(2) = 0
Set lineObj = ThisDrawing.ModelSpace.AddLine(po, ghim2)
po(0) = x + 3 * l / 2
Set lineObj = ThisDrawing.ModelSpace.AddLine(po, ghin2)
po(0) = x + 5 * l / 2
Set lineObj = ThisDrawing.ModelSpace.AddLine(po, ghid2)
End If
For i = 0 To 2
ghim1(i) = ghim2(i)
ghin1(i) = ghin2(i)
ghid1(i) = ghid2(i)
Next i
Next dem
ZoomAll
End Sub

Ошибка находится в жирной строке. Error Message :

"Invalid procedure call or argument"

Наверно мне должно использовать число двойной точности, но как ?
Просмотров: 3713
 
Непрочитано 23.08.2006, 22:02
#2
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Определяй переменные в декларации последовательно,
а не через запятую:

Dim ghim1(0 To 2) As Double
Dim ghim2(0 To 2) As Double
Dim ghin1(0 To 2) As Double
Dim ghin2(0 To 2) As Double
Dim ghid1(0 To 2) As Double
Dim ghid2(0 To 2) As Double

Если перечисляешь через запятую, тогда только последняя
оределяется по указанному типу, а все которые перед
ней, определяются как тип Variant

~'J'~
fixo вне форума  
 
Автор темы   Непрочитано 24.08.2006, 00:30
#3
To Thuc


 
Регистрация: 12.07.2006
Сообщений: 14


Благодарю. Я просто не заметил.
To Thuc вне форума  
 
Непрочитано 24.08.2006, 01:13
#4
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Цитата:
Сообщение от To Thuc
Благодарю. Я просто не заметил.
Успехов

~'J'~
fixo вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA Addline method