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

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

программирование на VBA для работы в AutoCAD

Ответ
Поиск в этой теме
Непрочитано 30.05.2011, 03:52 #1
программирование на VBA для работы в AutoCAD
Igor12345
 
Регистрация: 30.05.2011
Сообщений: 8

Помогите пожалуйста назначить задачи кнопкам на приближение отдаления, сохранения и закрытие чертежа в AutoCad

Код:
[Выделить все]
'*******Процедура открытия чертежа************
Private Sub Command1_Click()
  Label1.Visible = True
  Set acd = CreateObject("autocad.application") 'запускаем AutoCAD
  Set dr = acd.Documents
  dr.Open ("C:\AutoCAD_23\Stanok.dwg")     'открываем чертеж
  acd.Visible = True
  Form1.Caption = "Станок"      'переименовываем главную форму
  Form1.Show
  Form1.Height = 10855            'устанавливаем высоту главной формы
  Frame1.Visible = True  'делаем видимой панель параметров 
  Command1.Enabled = False
End Sub 

'*******Приблизить*************
Private Sub Command24_Click()
   
End Sub
'*******Отдалить*************
Private Sub Command24_Click()
   
End Sub

'*******Сохранить чертеж*************
Private Sub Command24_Click()
   
End Sub

'*******Закрыть программу*************
Private Sub Command25_Click()
Rem acd.Close 'зарываем чертеж
Rem acd.quit
End Sub

Последний раз редактировалось Кулик Алексей aka kpblc, 22.01.2014 в 10:49.
Просмотров: 12988
 
Непрочитано 30.05.2011, 08:32
#2
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Igor12345 Посмотреть сообщение
Помогите пожалуйста назначить задачи кнопкам на приближение отдаления, сохранения и закрытие чертежа в AutoCad
Эти кнопки уже имеются в AutoCAD.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 30.05.2011, 09:07
#3
Igor12345


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


У меня форма на VBA 6 работает с чертежом AUtoCAD 2004 и только одно не могу прописать это приблизить, отдалить, сохранить, и закрыть чертеж
Igor12345 вне форума  
 
Непрочитано 30.05.2011, 10:33
1 | #4
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Цитата:
Сообщение от Igor12345 Посмотреть сообщение
Set acd = CreateObject("autocad.application") 'запускаем AutoCAD
Не понимаю, это зачем?

Приблизить!
Sub Example_ZoomCenter()
' This example creates several objects in model space and
' then performs a variety of zooms on the drawing.

' Create a Ray object in model space
Dim rayObj As AcadRay
Dim basePoint(0 To 2) As Double
Dim SecondPoint(0 To 2) As Double
basePoint(0) = 3#: basePoint(1) = 3#: basePoint(2) = 0#
SecondPoint(0) = 1#: SecondPoint(1) = 3#: SecondPoint(2) = 0#
Set rayObj = ThisDrawing.ModelSpace.AddRay(basePoint, SecondPoint)

' Create a polyline object in model space
Dim plineObj As AcadLWPolyline
Dim points(0 To 5) As Double
points(0) = 3: points(1) = 7
points(2) = 9: points(3) = 2
points(4) = 3: points(5) = 5
Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)
plineObj.Closed = True

' Create a line object in model space
Dim lineObj As AcadLine
Dim startPoint(0 To 2) As Double
Dim endPoint(0 To 2) As Double
startPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0
endPoint(0) = 2: endPoint(1) = 2: endPoint(2) = 0
Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)

' Create a circle object in model space
Dim circObj As AcadCircle
Dim centerPt(0 To 2) As Double
Dim radius As Double
centerPt(0) = 20: centerPt(1) = 30: centerPt(2) = 0
radius = 3
Set circObj = ThisDrawing.ModelSpace.AddCircle(centerPt, radius)

' Create an ellipse object in model space
Dim ellObj As AcadEllipse
Dim majAxis(0 To 2) As Double
Dim center(0 To 2) As Double
Dim radRatio As Double
center(0) = 5#: center(1) = 5#: center(2) = 0#
majAxis(0) = 10: majAxis(1) = 20#: majAxis(2) = 0#
radRatio = 0.3
Set ellObj = ThisDrawing.ModelSpace.AddEllipse(center, majAxis, radRatio)

' ZoomAll
MsgBox "Perform a ZoomAll", , "ZoomWindow Example"
ZoomAll

' ZoomWindow
MsgBox "Perform a ZoomWindow using the following coordinates:" & vbCrLf & _
"1.3, 7.8, 0" & vbCrLf & _
"13.7, -2.6, 0", , "ZoomWindow Example"

Dim point1(0 To 2) As Double
Dim point2(0 To 2) As Double
point1(0) = 1.3: point1(1) = 7.8: point1(2) = 0
point2(0) = 13.7: point2(1) = -2.6: point2(2) = 0
ZoomWindow point1, point2

' ZoomScaled
MsgBox "Perform a ZoomScaled using:" & vbCrLf & _
"Scale Type: acZoomScaledRelative" & vbCrLf & _
"Scale Factor: 2", , "ZoomWindow Example"
Dim scalefactor As Double
Dim scaletype As Integer
scalefactor = 2
scaletype = acZoomScaledRelative
ZoomScaled scalefactor, scaletype

' ZoomExtents
MsgBox "Perform a ZoomExtents", , "ZoomWindow Example"
ZoomExtents

' ZoomPickWindow
MsgBox "Perform a ZoomPickWindow", , "ZoomWindow Example"
ZoomPickWindow

' ZoomCenter
MsgBox "Perform a ZoomCenter using:" & vbCrLf & _
"Center 3, 3, 0" & vbCrLf & _
"Magnification: 10", , "ZoomWindow Example"
Dim zcenter(0 To 2) As Double
Dim magnification As Double
zcenter(0) = 3: zcenter(1) = 3: zcenter(2) = 0
magnification = 10
zoomcenter zcenter, magnification

End Sub



Сохранение!
Sub Example_SaveAs()
' The following example saves current drawing as "test.dwg"

ThisDrawing.SaveAs ("test.dwg")

End Sub


Закрытие документа!
Sub Example_Close()
' This example cycles through the documents collection
' and closes all open drawings using the Close method.

Dim DOC As AcadDocument

' If there are no open documents, then exit
If Documents.count = 0 Then
MsgBox "There are no open documents!"
Exit Sub
End If

' Close all open documents
For Each DOC In Documents
If MsgBox("Do you wish to close the document: " & DOC.WindowTitle, vbYesNo & vbQuestion) = vbYes Then
If DOC.FullName <> "" Then
DOC.Close
Else
MsgBox DOC.name & " has not been saved yet, so it will not be closed."
End If
End If
Next
End Sub


Примеры из справки к Autocad 2008. Попробуй, может и для 2004 подойдет.
Vildar вне форума  
 
Непрочитано 30.05.2011, 11:48
#5
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


Цитата:
Сообщение от Igor12345 Посмотреть сообщение
У меня форма на VBA 6 работает с чертежом AUtoCAD 2004 и только одно не могу прописать это приблизить, отдалить, сохранить, и закрыть чертеж
Из какого приложения ты загружаешь автокад?
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 30.05.2011, 18:42
#6
Igor12345


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


Код VBA 6.0 Создал форму и открываю чертеж AutoCAD
Igor12345 вне форума  
 
Непрочитано 30.05.2011, 19:30
1 | #7
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Олег (jr.)
Из какого приложения ты загружаешь автокад?
Цитата:
Сообщение от Igor12345 Посмотреть сообщение
Код VBA 6.0 Создал форму и открываю чертеж AutoCAD
Да... посмеялся, поднял Игорь настроение
Олег, похоже автор тебя не понял, причём у меня смутные подозрения, что он пока не понимает в чём разница между VB и VBA...
Игорь, ты пишешь форму на VBA или всё же на VB 6 (насколько мне известно, VBA 6 не существует)? Это несколько разные вещи... Если на VBA, то в составе какого приложения (именно об этом тебя спрашивает Олег)?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 30.05.2011, 19:56
#8
Igor12345


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


Извиняюсь
Пишу в VB 6 форму - которая открывает чертеж AutoCad и с помощью созданной формы крутит вертит меняет его вид одно не могу прописать чтобы приблизить, отдалить, сохранить чертеж и закрыть AutoCad!!!
Igor12345 вне форума  
 
Непрочитано 30.05.2011, 19:59
1 | #9
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от hwd Посмотреть сообщение
насколько мне известно, VBA 6 не существует
VBA 6 . 3 существует...
gomer вне форума  
 
Непрочитано 30.05.2011, 20:23
1 | #10
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от gomer Посмотреть сообщение
VBA 6 . 3 существует...
Речь шла о версии 6.0 (сообщение #6)... Существует VBA версии и 6.5, но это всё равно не из той сказки...

Игорь, я в VB/VBA не силён, но уж больно смахивает на велосипед... Если я верно понял - ты программно запускаешь новый процесс acad.exe и в нём окрываешь чертёж... Ну так а зачем тогда тебе что-то писать насчёт вращения и зуммирования? Приложение-то уже открыто, выведи "родную" автокадовскую панель зуммирования/вращения и пользуйся ею... Зачем программно лыжи стругать? Или я может чего непонял?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 30.05.2011, 20:37
#11
Igor12345


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


Пишу курсач есть практически все кнопочки в форме которые крутят мой чертеж не пользуясь стандартными кнопками AutoCAD
Методичку дали не совсем дополненную написанные примеры в ней даже не запускали чертеж об остальном даже речи нет
Задача 3 июня решил попросить помощи у всей планеты ПОМОГИТЕ ПОЖАЛУЙСТА!!!
Igor12345 вне форума  
 
Непрочитано 30.05.2011, 20:56
1 | #12
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Igor12345 Посмотреть сообщение
Пишу курсач есть практически все кнопочки в форме которые крутят мой чертеж не пользуясь стандартными кнопками AutoCAD
Методичку дали не совсем дополненную написанные примеры в ней даже не запускали чертеж об остальном даже речи нет
Задача 3 июня решил попросить помощи у всей планеты ПОМОГИТЕ ПОЖАЛУЙСТА!!!
Понял, т.е. велосипедостроение обусловлено заданием по курсовой...Ок.
Тогда смотри, ты же можешь из VB 6.0 работать с консолью автокада, и как следствие можно написать что-то такое (прикидываю на вскидку, повторюсь - на VB/VBA не пишу, потому возможны очепятки):
Код:
[Выделить все]
Set acd = CreateObject("autocad.application") 'запускаем AutoCAD
Set dr = acd.Documents
...
dr.Open ("C:\AutoCAD_23\Stanok.dwg") 'открываем чертеж
acd.Visible = True
...
'А это - собственно нажатие на кнопку твоей формы:
Sub SendACommandToAutoCAD()    
   'Показать всё:
   acd.SendCommand "_zoom _all "   
End Sub
п.с. Рекомендую полистать эту документацию (там в самом низу везде где код, всегда последним приводится и пример на VBA.

Ну и для вращения по аналогии... Чем такой вариант не подходит?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 30.05.2011 в 21:20. Причина: исправил dr на acd, исправил VBA на VB и добавил п.с.
hwd вне форума  
 
Автор темы   Непрочитано 30.05.2011, 21:18
#13
Igor12345


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


Вроде то что надо сейчас буду искать что еще воткнуть в свой велосипед надеюсь за апгрейдю его до безумия или окончательно доламаю свой мозгЪ СПАСИБО за СЫЛОЧУ на САЙТ!!!!
Igor12345 вне форума  
 
Непрочитано 30.05.2011, 21:20
#14
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Igor12345 Посмотреть сообщение
Вроде то что надо сейчас буду искать что еще воткнуть в свой велосипед надеюсь за апгрейдю его до безумия или окончательно доламаю свой мозгЪ СПАСИБО за СЫЛОЧУ на САЙТ!!!!
млин, только сейчас заметил, что ссылку вставил в тело кода поправил - вынес её в текст.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 30.05.2011, 21:37
#15
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Igor12345 Посмотреть сообщение
Пишу курсач есть практически все кнопочки в форме которые крутят мой чертеж не пользуясь стандартными кнопками AutoCAD
Методичку дали не совсем дополненную написанные примеры в ней даже не запускали чертеж об остальном даже речи нет
Задача 3 июня решил попросить помощи у всей планеты ПОМОГИТЕ ПОЖАЛУЙСТА!!!
Цитата:
Сообщение от hwd Посмотреть сообщение
Тогда смотри, ты же можешь из VB 6.0 работать с консолью автокада, и как следствие можно написать что-то такое (прикидываю на вскидку, повторюсь - на VB/VBA не пишу, потому возможны очепятки):
Ой, ну щаз насоветуют... Значит методичку не лень прочитать, а родную справку автокада лень... vb6 и vba как два однояйцевых близнеца... проблем не должно быть по определению...
вот только на формуляре должна быть одна красная кнопка... остальное от лукавого так и скажи преподавателю своему, после сдачи
gomer вне форума  
 
Непрочитано 30.05.2011, 21:41
#16
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от gomer Посмотреть сообщение
Ой, ну щаз насоветуют...
Вообще-то "совет" + сылка были даны на основе как раз таки справки.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 30.05.2011, 22:02
#17
Igor12345


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


'*******Подключение приближения*************
Sub Command22_Click()
Form1.Hide
Set dr = acd.ActiveDocument
acd.Visible = True
dr.SendCommand ("_scale ")
Form1.Show
End Sub

'*******Сохранить*************
Public Sub Command24_Click()
Form1.Hide
Set dr = acd.ActiveDocument
acd.Visible = True
dr.SendCommand ("_qsave _s")
Form1.Show
End Sub
Вроде это должно выглядеть вот так долго до меня доходило но педали у этого велосипеда появились.
Если ошибаюсь поправьте!!!!!
Включается функция приближения и удаления но в последствии работы выскакивает ошибочка кода!!!!!!! SOS

Последний раз редактировалось Igor12345, 30.05.2011 в 22:16.
Igor12345 вне форума  
 
Непрочитано 30.05.2011, 22:13
#18
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Igor12345 Посмотреть сообщение
'*******Подключение приближения*************
Sub Command22_Click()
Form1.Hide
Set dr = acd.ActiveDocument
acd.Visible = True
dr.SendCommand ("_scale ")
Form1.Show
End Sub
вроде это должно выглядеть вот так долго до меня доходило но педали у этого велосипеда появились включается функция приближения и удаления но в последствии работы выскакивает ошибочка кода!!!!!!!
Мне сложно читать длинные предложения, в которых отсутствующие знаки препинания позволяют трактовать прочитанное по разному...
Я так и не понял, у тебя предложенный мною выше код заработал, или нет? То, что ты показал сейчас - это, извини, но... чушь... Похоже что ты не понимаешь, какую команду ты вызвал и как она должна работать, ибо ты её вызвал и не завершил (предполагаю, что отсюда растут ноги у появляющейся у тебя ошибки). Команда _scale - это масштабирование примитива. Ты вызвал её и что? А указать масштабируемые объекты? А указать масштабный коэффициент? А указать базовую точку, относительно которой масштабируешь?
И вообще, ты же вроде собирался только зуммировать и вращать, или уже хочешь всё-всё-всё? Имхо - больно смахивает на изврат...

Вообще, пользоваться SendCommand крайне нежелательно, поскольку вызывается он асинхронно - это уж если в API не нашёл нужного метода, тогда используй SendCommand. Ты не ленись полистать то, на что я тебе дал ссылку. Например по поводу сохранения есть это (и снова внизу там код VBA).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 30.05.2011 в 22:22.
hwd вне форума  
 
Автор темы   Непрочитано 30.05.2011, 22:21
#19
Igor12345


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


в autoCAD есть список COMMAND : 3dorbit ;_shademode _3 ;_shademode _h; _shademode _f и тд я нажимаю на кнопочки в форме а команды назначенные на кнопки крутят вертят чертеж и тд вроде все правильно
на сайте читал код но он мне не очень досконально понятен!!! У меня в методичке код что то на это смахивает но весь код забитый В методичке не работает хотя расписано все поэтапно что да как делать!!! делал крутил вертел даже чертеж не смог запустить!!! есть методичка могу выложить на мыло
И есть вопрос ? почему пользоваться SendCommand крайне нежелательно

Последний раз редактировалось Igor12345, 30.05.2011 в 22:35.
Igor12345 вне форума  
 
Непрочитано 30.05.2011, 22:24
#20
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Igor12345 Посмотреть сообщение
вроде все правильно
я тебе написал по поводу твоего "правильно"(с) относительно команды _scale вызванной тобою выше... Нужно понимать синтаксис команды, а не бездумно копипастить её имя. Всё, я устал...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > программирование на VBA для работы в AutoCAD

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBA в AutoCAD alle Программирование 47 03.12.2014 11:26
AutoCAD VBA -> VB.NET по-русски Александр Ривилис .NET 5 23.05.2011 18:39
В русской версии AutoCAD 2010 SP1 32-bit файл Acad.PGP содержит ошибки. hwd Баги и пожелания в Autodesk 21 21.04.2010 20:27
О создании темы (раздела) для новичков в AutoCAD. Profan Разное 110 23.10.2008 10:01
подскажите кто может где взять литературу по VBA for AutoCad er Программирование 2 28.10.2003 14:08