ADN Club > VBA

Вставка блока из другого файла

<< < (7/7)

Дамир:
Результаты экспериментов с подключением к COM-объекту AutoCAD 2013 LT.
Дано: установлены AutoCAD 2014, AutoCAD 2014 VBA Enabler, AutoCAD 2013 LT
Ассоциация с файлами dwg привязана на AutoCAD 2013 LT

Мои попытки:

--- Код - Visual Basic [Выбрать] ---Set AcadApp = CreateObject("C:\Program Files\Autodesk\AutoCAD LT 2013\acadlt.exe")Set AcadApp = CreateObject("C:\Program Files\Autodesk\AutoCAD LT 2013\acadlt.exe","AutoCAD.Application")Set AcadApp = CreateObject(,"AutoCAD.Application")Set AcadApp = CreateObject(,"AutoCAD.Application.**") '** - пробежал по вариантам: 17, 18, LT18, 18LTSet AcadApp = GetObject(,"AutoCAD.Application") ' при открытом AutoCAD 2013 LTSet AcadApp = GetObject(,"AutoCAD.Application.**") '** - пробежал по вариантам: 17, 18, LT18, 18LT

все варианты приводили к различным ошибкам: "Невозможно создание контейнером объекта ActiveX..."
На сторонних сайтах нашел следующую информацию:

http://www.cadtutor.net/forum/showthread.php?30446-vb-code-to-open-drawings-in-autocad-lt

--- Цитировать ---I do not believe the LT version can be accessed with VB in it's present state.
--- Конец цитаты ---

--- Цитировать ---That's right. You have no COM interface in LT, so you have nothing like
Set acadLTApp = CreateObject("AutoCADLT.Application")
--- Конец цитаты ---


http://www.vbaexpress.com/forum/showthread.php?24269-Solved-How-to-control-AutoCad-LT-with-Visual-Basic-6

--- Цитировать ---autocad LT do not support vb in its present version..this is the response i got from the autodesk customer support...
--- Конец цитаты ---

--- Цитировать ---This is correct, you cannot control Autocad LT with the createobject/getobject methods. You can however write a script that will open Autocad LT and insert the drawing(s) that you want and close it.
--- Конец цитаты ---


Все это наводит на мысль, что я никак не смогу обратиться к COM-объекту AutoCAD 2013 LT версии.
Может есть какие идеи на этот счет?

Александр Ривилис:

--- Цитата: Дамир от 15-08-2014, 14:38:23 ---Все это наводит на мысль, что я никак не смогу обратиться к COM-объекту AutoCAD 2013 LT версии.
Может есть какие идеи на этот счет?
--- Конец цитаты ---
Мысль абсолютно правильная. Всё что можно делать с LT я указал здесь: http://adn-cis.org/forum/index.php?topic=917.0


Дамир:
Александр Ривилис, благодарю. Я как новичок не знал об этом. Поэтому и привел лишь результаты своих поисков по этой теме. Благодарю. Значит будем работать на полноценных версиях AutoCAD. Пока эксперименты провел на 14 версии. Планирую проверить на 12, и 15. По результатам отпишу!

art_rrc:
Я в своих программах использую следующий код собственного сочинения. Гуру СНГ программирования он покажется смешным, но для моих потребностей вполне хватает  :)
В программе:

--- Код - Visual Basic [Выбрать] ---On Error Resume NextSet NewBlock = .ModelSpace.InsertBlock(nPnt, nameBlock, 1, 1, 1, 0)If Err Then    Err.Clear    Call art_InsertBaseBlocks(nameBlock)    Set NewBlock = .ModelSpace.InsertBlock(nPnt, nameBlock, 1, 1, 1, 0)End If Сама процедура:

--- Код - Visual Basic [Выбрать] ---Public Sub art_InsertBaseBlocks(strName As String)Dim XRef As AcadExternalReferenceDim insPnt(0 To 2) As Double Dim FileWay As StringDim objDel As AcadBlockDim strDel As StringWith ThisDrawinginsPnt(0) = 1#: insPnt(1) = 1#: insPnt(2) = 0#FileWay = "D:\All_For_Acad_2015\Acad_Blocks\Blocks.dwg"Set XRef = .ModelSpace.AttachExternalReference(FileWay,  "БазаДанныхБлоков", insPnt, 1, 1, 1, 0, False).Blocks.Item(XRef.Name).Bind TrueXRef.DeleteFileWay = "ВаляКоля"'On Error Resume NextSet XRef = .ModelSpace.AttachExternalReference(FileWay, "Шило", insPnt, 1, 1, 1, 0, False).Blocks.Item("БазаДанныхБлоков").DeleteFor Each objDel In .Blocks    strDel = objDel.Name    If strDel <> strName Then        .Blocks.Item(strDel).Delete    End IfNextEnd WithEnd Sub

Дамир:
Здорово! Спасибо. Моя проблема заключалась в том, что я пишу на VBS, а не на VBA. На основании чего столкнулся с массой проблем связанной с восприятием типов данных VBS'ом.

Навигация

[0] Главная страница сообщений

[*] Предыдущая страница

Перейти к полной версии