Тема: Помогите запустить автокад...
Я пытаюсь запустить автокад из VB 6.0 и безуспешно. Помогите кто знает как это сделать. И если можете-то напишите как обратится к коммандной строке КАДА
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Помогите запустить автокад...
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Я пытаюсь запустить автокад из VB 6.0 и безуспешно. Помогите кто знает как это сделать. И если можете-то напишите как обратится к коммандной строке КАДА
> Bobby
Если хотите получить помощь, то покажите что вы пытались сделать.
Через вба я могу получить доступ к коммандной строке, а через ВБ не могу даже понять как это сделать.
в ВБА вот так
thisDrawing.Sendcommand "_point" & vbcr & "100,100" & vbcr
А мне нужно тоже самое сделать из ВБ 6.0 а я не магу :(. плизз памагите хтонить
Вобщем проблема была такая:
Мне нужно оформить или программу или макрос которая берёт данные из экселя, обрабатывает их и рисует получившиеся точки с номерами в автокаде. В вба я не стал делать потому, что возникло слишком много непоняток насчёт работы с файлом ЭКСЭЛЯ до этого работал только с файлами (*.тхт) и решил что легче в ВБ вставить свой эксель и с ним работать. Все предыдущие стадии готовы осталось понять как работать с автокадом из ВБ, и как пронумировать.
PS(я смотрел программу уважаемого "kpblc" написанную на LISP, и не смог её даже запустить.Прорыскал в хелпе готовые примеры ВБА-но такого не обнаружил.)
Спасибо за помощь!!!!
> Bobby
В принципе есть вариант доступа к Excel-ному файлу и из-под када :)
Примерно так (если идти хреновым методом создания объекта в памяти и без подключения библиотек):
Dim objExcel As Object, docExcel As Object On Error Resume Next Set objExcel = GetObject(, "Excel.Application") If Err.Number <> 0 Then Err.Clear Set objExcel = CreateObject("Excel.Application") End If Set docExcel = objExcel.workbooks.Open(sFileName)
Ну и дальше работать с docExcel как с обычной книгой Excel'a - то есть обращаться к Worksheet по индексу или имени, получать Cells и так далее. Есть еще вариант попробовать обращаться к xls-файлу через ADO, лисповый вариант делал Евгений Елпанов на dwg.ru, да и здесь в готовых было: https://www.caduser.ru/forum/topic21519.html
На VB(A) я перевести пока (надеюсь, что только пока) не могу, может, профи подключатся?
Кстати, на буржуйском: http://www.cadtutor.net/forum/showthread.php?t=9558
Спасибо огромное за то что уделили мне время. буду разбиратся с данным материалом!!!!
> Bobby
Ыыыы... Меня один...
Кстати, о методе создания объекта. Если не выполнить в конце Set objExcel = Nothing, он так и останется болтаться в памяти.
Спасибо ещё раз. Скоро выложу код проги для работы с экселем. Но и хотелось бы спросить: Как пронумировать точки??? Обидно что в примерах этого нету, а лисп не пойму хоть убейте :(
> Bobby
Ну, наверное, либо создавать текст в текущем пространстве файла, либо создавать блок с одним атрибутом, вставлять его в текущее пространство, и менять значения атрибутов.
Вот код программы которая берёт данные из ячейки Экселя
Dim objExcel As Object 'для открытия экселя
Dim docExcel As Object 'для открытия документа
Dim wsExcel As Object 'для работы с листом
Private Sub cmd1_Click()
Txt1.Text = wsExcel.Range("A1").Value 'берём данные из ячейки
End Sub
Private Sub Form_Load()
Set objExcel = CreateObject("Excel.Application")
Set objExcel = GetObject(, "Excel.Application")
Set docExcel = objExcel.Workbooks.open("C:\\Excel.xls") 'открываем документ
Set wsExcel = docExcel.Worksheets(3) 'указываем на третий лист
End Sub
Private Sub Form_Unload(Cancel As Integer)
docExcel.Close 'выгружаем эксель
Set docExcel = Nothing 'чистим память от
Set objExcel = Nothing 'уже ненужных переменных
Unload Me
End Sub
Это код программы для рисования точки двумя способами из VB(VB6.0+ACAD 2006)
Dim objAcad As Object
Dim docAcad As Object 'Переменная для открытия документа и работы с ним
Dim pointObj As Object 'переменная для построения точки
Private Sub cmd1_Click()
objAcad.Visible = True 'показываем уже открытый автокад
docAcad.SendCommand ("_point" & vbCr & "100,100" & vbCr) 'рисуем точку из коммандной строки
Dim location(0 To 2) As Double 'обьявляем массив для построения точки(это координаты)
location(0) = 100#: location(1) = 100#: location(2) = 0# 'задаём координаты точки
Set pointObj = docAcad.ModelSpace.AddPoint(location) 'строим точку
End Sub
Private Sub Form_Load()
Set objAcad = CreateObject("AutoCad.Application")
Set objAcad = GetObject(, "AutoCad.Application") 'запускаем автокад
Set docAcad = objAcad.documents.open("C:\work.dwg") 'указываем на файл который следует открыть
End Sub
Private Sub Form_Unload(Cancel As Integer)
objAcad.Visible = False 'Переводим автокад в фоновый режим
docAcad.Close (True) 'закрываем документ при этом его сохраняя
objAcad.quit 'выгружаем саму оболочку автокада
Set docAcad = Nothing 'выкидываем из
Set objAcad = Nothing 'памяти переменные
Unload Me
End Sub
Вот стандартная процедура подключения из VB к AutoCAD'у:
Public AcadApplication As Object Sub Main() On Error Resume Next Set AcadApplication = GetObject(, "AutoCAD.Application") If Err Then Set AcadApplication = CreateObject("AutoCAD.Application") AcadApplication.Visible = True Err.Clear End If Dim AcadDoc As Object Set AcadDoc = AcadApplication.Documents.Open("D:\Work\DWG\02-85-1.dwg") AcadDoc.Visible = True AcadDoc.SendCommand ("_point" & vbCr & "100,100" & vbCr)
Она работает, хотя и со скрипом.
Лучше подключить к проекту библиотеку AutoCAD2006 Type Library.
В коде, который выложен> Bobby (2006-10-16 19:08:32):
Set objAcad = CreateObject("AutoCad.Application") Set objAcad = GetObject(, "AutoCad.Application") 'запускаем автокад
одна из функций CreateObject или GetObject излишняя.
А зачем использовать SendCommand, если точка все равно создается объектными методами (это помимо поста LeonidSN)?
Кому как нравится. Я тоже сначала начал учится посылать SendCommand. Но в итоге понял что это для самых элементарных случаев(или просто для обучения).
Ещё раз всем спасибо за помощ.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Помогите запустить автокад...
Форум работает на PunBB, при поддержке Informer Technologies, Inc