Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2010, 20:54   #1
bablzz
Пользователь
 
Регистрация: 28.04.2010
Сообщений: 40
По умолчанию Excel и AutoCAD Electrical

Здравствуйте
Есть файл екселя с кнопкой. при нажатии кнопки должно выполняться следующее:
1) Открыться автокад с новым чертежом(новый файл)
2) Есть папка готовых файлов автокада(.dwg). в 1 файле - 1 блок(ну то что там я начертил). нужно, желательно, не открывая эти файлы, скопировать то что хранится в них в открытый автокад, исходя из данный в екселе.
3) Данные в экселе:


попроще, а то я сам не особо понял что написал)
при нажатии кнопки открывается автокад. идет считывание с таблицы эксель. и если напротив названия чертежа стоит не 0, то с того файла(чертежа) копируется в новый автокад то, что там есть. чертежи лежат в одной папке.
bablzz вне форума Ответить с цитированием
Старый 18.06.2010, 22:55   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

А теперь еще раз и помедленнее.
У вас открыт -создан новый файл dwg.
В него вы собираетесь вставить блоки,или то что начерчено,это большие две разницы.
Это выполнимо.
А как задать точку вставки( координаты X,Y,Z)?.Без нее ничего не получится.Можно все сделать проще макросом из Автокада загрузить данные с Екселя и произвести вставку чертежей.
Если у вас начерченый блок-то у него есть имя,это все упростит задачу.
Можете загрузить пару чертежей и файл Екселя.На пальцах объяснение не поможет
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 18.06.2010 в 23:14.
doober вне форума Ответить с цитированием
Старый 19.06.2010, 11:12   #3
bablzz
Пользователь
 
Регистрация: 28.04.2010
Сообщений: 40
По умолчанию

В чертежах начерчен блок- в каждом файле по 1.
при нажатии кнопки нужно открыть автокад с новым чертежом и на него выкинуть те самые блоки.
То есть:
нажал кнопку->открылся автокад->выкинулись блоки.
а с точками вставки я где то видел. как найду, отпишусь

вот нашел на форуме
Цитата:
Sub InsertBlocksFromBook(name As String)

Dim rng As Range
Dim attData()
Dim acadApp As AcadApplication
Dim acadDocs As AcadDocuments
Dim acadDoc As AcadDocument
Dim Util As AcadUtility
Dim i As Long, j As Long, cnt As Integer, n As Integer, num As Integer
Dim pt As Variant
Dim blockName As String
Dim blkRef As AcadBlockReference
Dim varAttributes As Variant
Dim oAttribute As AcadAttributeReference

On Error GoTo Error_Control

exHwnd = Application.hwnd
Set rng = Application.Application.InputBox(Pr ompt:="Выберите диапазон ячеек", Title:="Вставка блоков в Autocad", Type:=8)

rng.Select

ReDim attData(0 To rng.Rows.Count - 1, 0 To rng.Columns.Count - 1)
For i = 1 To rng.Rows.Count
For j = 1 To rng.Columns.Count
attData(i - 1, j - 1) = rng.Cells(i, j)
Next
Next


Set acadApp = ConnectToAcad
acHwnd = acadApp.HWND32
Putfocus acHwnd
Set acadDocs = acadApp.Documents
Set acadDoc = acadDocs.Open(name)

acadApp.WindowState = acMax
acadDoc.Activate
acadDoc.ActiveSpace = acModelSpace
MsgBox "Вставьте блоки в автокад"
For i = 0 To UBound(attData)
num = CInt(attData(i, 0))
blockName = CStr(attData(i, 1))

For cnt = 0 To num - 1

Set Util = acadDoc.Utility

pt = acadDoc.Utility.GetPoint(, vbCr & "Выбирете точку вставки блока >>")

Set blkRef = acadDoc.ModelSpace.InsertBlock(pt, blockName, 1, 1, 1, 0)
varAttributes = blkRef.GetAttributes
For n = 0 To UBound(varAttributes)
Set oAttribute = varAttributes(n)
Dim tag As String
If oAttribute.TagString = "TYPE" Then
oAttribute.TextString = CStr(attData(i, 2))
oAttribute.Update
ElseIf oAttribute.TagString = "VOLT" Then
oAttribute.TextString = CStr(attData(i, 3))
oAttribute.Update
ElseIf oAttribute.TagString = "CAT" Then
oAttribute.TextString = CStr(attData(i, 4))
oAttribute.Update
End If
Next n
blkRef.Update
Next cnt
Next i

acadApp.ZoomExtents
Set acadDoc = Nothing
Set acadDocs = Nothing
Set acadApp = Nothing

Putfocus exHwnd

Inserts_Exit:
If Err.Number <> 0 Then
MsgBox Err.Description
Else
MsgBox "ок!"
End If
On Error GoTo 0
Exit Sub

Error_Control:
Resume Inserts_Exit

End Sub
Вложения
Тип файла: rar тест.rar (23.7 Кб, 20 просмотров)

Последний раз редактировалось bablzz; 19.06.2010 в 11:44.
bablzz вне форума Ответить с цитированием
Старый 19.06.2010, 12:12   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Этот код немного не с той оперы.
Открываем чертежи и просто копируем блоки в чертеж,а дальше вы будете их раставлять как надо.
Теперь более менее понятно.
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 19.06.2010, 13:58   #5
bablzz
Пользователь
 
Регистрация: 28.04.2010
Сообщений: 40
По умолчанию

ну так это выполнимо?
bablzz вне форума Ответить с цитированием
Старый 19.06.2010, 18:31   #6
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Конечно выполнимо.Сохраните файлы в формате DXF.Для доступа к ним.Во вложении два варианта
1.сохранение файла.
2.просмотр.
точка вставки одна для всех.можете добавить сдвиг
Если надо соответствующее количество блоков вставлять,копирование поставте в цикл

Не забудьте в Референсах ссылку на библиотеку Autokad добавить.У меня стоит на 2008
Вложения
Тип файла: rar тест1.rar (53.6 Кб, 41 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 19.06.2010, 23:57   #7
bablzz
Пользователь
 
Регистрация: 28.04.2010
Сообщений: 40
По умолчанию

Спасибо большое!
bablzz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AutoCAD AnTe Общие вопросы Delphi 12 14.06.2010 18:12
Работа с AutoCad KarolinaVlad Помощь студентам 1 11.03.2010 09:05
Взаимодействие Excel с САПР (Autocad, SolidsWorks и др.) Tidus Microsoft Office Excel 1 10.02.2010 00:57
Delphi и AutoCAD Roof Общие вопросы Delphi 3 28.07.2007 23:04