|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
30.05.2011, 03:52 | #1 | |
программирование на VBA для работы в AutoCAD
Регистрация: 30.05.2011
Сообщений: 8
|
||
Просмотров: 12988
|
|
||||
Эти кнопки уже имеются в AutoCAD.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
|
||||
AutoCAD Регистрация: 26.07.2007
Москва
Сообщений: 1,064
|
Не понимаю, это зачем?
Приблизить! 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 подойдет. |
|||
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813
|
|
|||
|
||||
Цитата:
Олег, похоже автор тебя не понял, причём у меня смутные подозрения, что он пока не понимает в чём разница между VB и VBA... Игорь, ты пишешь форму на VBA или всё же на VB 6 (насколько мне известно, VBA 6 не существует)? Это несколько разные вещи... Если на VBA, то в составе какого приложения (именно об этом тебя спрашивает Олег)?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
|
||||
Речь шла о версии 6.0 (сообщение #6)... Существует VBA версии и 6.5, но это всё равно не из той сказки...
Игорь, я в VB/VBA не силён, но уж больно смахивает на велосипед... Если я верно понял - ты программно запускаешь новый процесс acad.exe и в нём окрываешь чертёж... Ну так а зачем тогда тебе что-то писать насчёт вращения и зуммирования? Приложение-то уже открыто, выведи "родную" автокадовскую панель зуммирования/вращения и пользуйся ею... Зачем программно лыжи стругать? Или я может чего непонял?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
|
||||
Регистрация: 30.05.2011
Сообщений: 8
|
Пишу курсач есть практически все кнопочки в форме которые крутят мой чертеж не пользуясь стандартными кнопками AutoCAD
Методичку дали не совсем дополненную написанные примеры в ней даже не запускали чертеж об остальном даже речи нет Задача 3 июня решил попросить помощи у всей планеты ПОМОГИТЕ ПОЖАЛУЙСТА!!! |
|||
|
||||
Цитата:
Тогда смотри, ты же можешь из VB 6.0 работать с консолью автокада, и как следствие можно написать что-то такое (прикидываю на вскидку, повторюсь - на VB/VBA не пишу, потому возможны очепятки): Код:
Ну и для вращения по аналогии... Чем такой вариант не подходит?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 30.05.2011 в 21:20. Причина: исправил dr на acd, исправил VBA на VB и добавил п.с. |
||||
|
||||
млин, только сейчас заметил, что ссылку вставил в тело кода поправил - вынес её в текст.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Цитата:
Цитата:
вот только на формуляре должна быть одна красная кнопка... остальное от лукавого так и скажи преподавателю своему, после сдачи |
|||
|
||||
Вообще-то "совет" + сылка были даны на основе как раз таки справки.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
|
||||
Регистрация: 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. |
|||
|
||||
Цитата:
Я так и не понял, у тебя предложенный мною выше код заработал, или нет? То, что ты показал сейчас - это, извини, но... чушь... Похоже что ты не понимаешь, какую команду ты вызвал и как она должна работать, ибо ты её вызвал и не завершил (предполагаю, что отсюда растут ноги у появляющейся у тебя ошибки). Команда _scale - это масштабирование примитива. Ты вызвал её и что? А указать масштабируемые объекты? А указать масштабный коэффициент? А указать базовую точку, относительно которой масштабируешь? И вообще, ты же вроде собирался только зуммировать и вращать, или уже хочешь всё-всё-всё? Имхо - больно смахивает на изврат... Вообще, пользоваться SendCommand крайне нежелательно, поскольку вызывается он асинхронно - это уж если в API не нашёл нужного метода, тогда используй SendCommand. Ты не ленись полистать то, на что я тебе дал ссылку. Например по поводу сохранения есть это (и снова внизу там код VBA).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 30.05.2011 в 22:22. |
||||
|
||||
Регистрация: 30.05.2011
Сообщений: 8
|
в autoCAD есть список COMMAND : 3dorbit ;_shademode _3 ;_shademode _h; _shademode _f и тд я нажимаю на кнопочки в форме а команды назначенные на кнопки крутят вертят чертеж и тд вроде все правильно
на сайте читал код но он мне не очень досконально понятен!!! У меня в методичке код что то на это смахивает но весь код забитый В методичке не работает хотя расписано все поэтапно что да как делать!!! делал крутил вертел даже чертеж не смог запустить!!! есть методичка могу выложить на мыло И есть вопрос ? почему пользоваться SendCommand крайне нежелательно Последний раз редактировалось Igor12345, 30.05.2011 в 22:35. |
|||
|
||||
я тебе написал по поводу твоего "правильно"(с) относительно команды _scale вызванной тобою выше... Нужно понимать синтаксис команды, а не бездумно копипастить её имя. Всё, я устал...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |