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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как создать связь ячеек таблицы с выносками без СПДС в Autocad 2017

Как создать связь ячеек таблицы с выносками без СПДС в Autocad 2017

Ответ
Поиск в этой теме
Непрочитано 10.10.2016, 12:18 #1
Как создать связь ячеек таблицы с выносками без СПДС в Autocad 2017
Ifclissium
 
Жертва студенческого режима
 
Санкт-Петербург
Регистрация: 22.04.2014
Сообщений: 54

Здравствуйте !

Есть ли способ создания связи между ячейками таблицы и выносками/текстом на чертеже , без СПДС? При этом нужно сохранить связь таблицы в Autocad с таблицей в Exel.
Возникла потребность "автоматизации" перебивания определенной информации на чертеже , без ручного переписывания 215 выносок, а лишь меняя таблицу в exel/autocad.

Как можно это сделать ?
Заранее спасибо!
__________________
"Зачем чинить то, что и так работает ?"
Просмотров: 4077
 
Непрочитано 10.10.2016, 13:44
1 | #2
krok64

Л, ТХ
 
Регистрация: 01.06.2016
Ухта
Сообщений: 38


Недавно решал такую же проблему. Я сделал так. Пусть у нас в экселе хранится спецификация, эта спецификация связывается с таблицей в автокаде. Правее от спецификации (в экселе) заводим столбец и называем его например TAG. В автокаде создаем динамический блок в виде выноски с 2 атрибутами: первый атрибут (NUM) это номер позиции как у обычной выноски, а второй атрибут пихаем на невидимый слой и называем его TAG. Проставляем эти новые выноски по всему чертежу, прописывая только TAG. В экселе также заполняем колонку TAG. Теперь пишем прогу которая будет читать экселевский файл и проставлять атрибут NUM в соответствии с атрибутом TAG.
krok64 вне форума  
 
Автор темы   Непрочитано 10.10.2016, 13:47
#3
Ifclissium

Жертва студенческого режима
 
Регистрация: 22.04.2014
Санкт-Петербург
Сообщений: 54


Цитата:
Сообщение от krok64 Посмотреть сообщение
Недавно решал такую же проблему. Я сделал так. Пусть у нас в экселе хранится спецификация, эта спецификация связывается с таблицей в автокаде. Правее от спецификации (в экселе) заводим столбец и называем его например TAG. В автокаде создаем динамический блок в виде выноски с 2 атрибутами: первый атрибут (NUM) это номер позиции как у обычной выноски, а второй атрибут пихаем на невидимый слой и называем его TAG. Проставляем эти новые выноски по всему чертежу, прописывая только TAG. В экселе также заполняем колонку TAG. Теперь пишем прогу которая будет читать экселевский файл и проставлять атрибут NUM в соответствии с атрибутом TAG.
Есть туториал , как писать прогу ? я в программирование дно чуть меньше чем совсем .
__________________
"Зачем чинить то, что и так работает ?"
Ifclissium вне форума  
 
Непрочитано 10.10.2016, 13:53
1 | #4
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


всё гораздо проще
Цитата:
я в программирование дно чуть меньше чем совсем
поиграй
trir вне форума  
 
Непрочитано 10.10.2016, 13:57
1 | #5
krok64

Л, ТХ
 
Регистрация: 01.06.2016
Ухта
Сообщений: 38


Цитата:
Сообщение от Ifclissium Посмотреть сообщение
Есть туториал , как писать прогу ? я в программирование дно чуть меньше чем совсем .
Наверно есть.
Вот код моей программы для примера.
Код:
[Выделить все]
Public Sub GetBlkRefs(strBlkName As String, objSelSet As AcadSelectionSet)
'  Dim objBlk As AcadBlock
'  Dim colBlks As AcadBlocks  AddCircle
'  Dim objBlkRefs As AcadBlockReference
  Dim varData(0) As Variant
  Dim intData(0) As Integer
  varData(0) = strBlkName
  intData(0) = 2
  objSelSet.Select acSelectionSetAll, , , intData, varData
End Sub

Public Function vbdPowerSet(strName As String) As AcadSelectionSet
  Dim objSelSet As AcadSelectionSet
  Dim objSelCol As AcadSelectionSets
  
  Set objSelCol = ThisDrawing.SelectionSets
  For Each objSelSet In objSelCol
    If objSelSet.Name = strName Then
      ThisDrawing.SelectionSets.Item(strName).Delete
      Exit For
    End If
  Next
  Set objSelSet = ThisDrawing.SelectionSets.Add(strName)
  Set vbdPowerSet = objSelSet
End Function

 
Public Sub ImportLeadersFromExcel()
  Dim objSS As AcadSelectionSet
  Dim objblkRef As AcadBlockReference
  Dim objExcel As Excel.Application
  Dim list As New Scripting.Dictionary
  Dim i As Integer, j As Integer, numbers As Boolean, value As String, key As String
  Dim varAtts As Variant, intCnt As Integer, intCnt2 As Integer, found As Boolean
  
  Const MAXROW = 1000
  Const MAXCOL = 256
  
  On Error GoTo Err_Control
  'Excel MUST be running for this sample
  Set objExcel = GetObject(, "Excel.Application")

  With objExcel
    'Ищем строку с надписью Поз. в первой колонке
    For i = 1 To MAXROW
        If .Cells(i, 1) = "Поз." Then
            Exit For
        End If
    Next i
    If i >= MAXROW Then
        MsgBox ("Откройте документ эксель с надписью Поз. в первой колонке")
        Exit Sub
    End If
    
    'в найденной строке ищем ячейку со значением TAG
    For j = 1 To MAXCOL
        If .Cells(i, j) = "TAG" Then
            Exit For
        End If
    Next j
    If j >= MAXCOL Then
        MsgBox ("Не найдена надпись TAG в одной строке с Поз.")
        Exit Sub
    End If
    
    While i < MAXROW
        i = i + 1
        If .Cells(i, j).value <> "" Then
            value = .Cells(i, 1).value
            key = .Cells(i, j).value
            If list.Exists(key) Then
                MsgBox ("В строке " + str(i) + " найден повторяющийся TAG")
                Exit Sub
            End If
            list(key) = value
        End If
    Wend
  End With
  
'  MsgBox (str(list.Count))
  
  Set objSS = vbdPowerSet("mdv3")
  
  GetBlkRefs "mdv,`*U*", objSS
  
'  MsgBox ("Найдено " & str(objSS.Count) & " блоков")
  
  For Each objblkRef In objSS
   If objblkRef.HasAttributes And objblkRef.EffectiveName = "mdv" Then
      varAtts = objblkRef.GetAttributes
      For intCnt = LBound(varAtts) To UBound(varAtts)
        If varAtts(intCnt).TagString = "TAG" Then
            For intCnt2 = LBound(varAtts) To UBound(varAtts)
                If varAtts(intCnt2).TagString = "NUM" Then
                    If list.Exists(varAtts(intCnt).TextString) Then
                        varAtts(intCnt2).TextString = list(varAtts(intCnt).TextString)
                    Else
                        varAtts(intCnt2).TextString = "TAG не найден"
                    End If
                    Exit For
                End If
            Next intCnt2
        End If
      Next
   End If
  Next objblkRef
  
Exit_Here:
  Exit Sub
Err_Control:
  MsgBox err.Description
  Resume Exit_Here
  
End Sub
krok64 вне форума  
 
Автор темы   Непрочитано 10.10.2016, 14:33
#6
Ifclissium

Жертва студенческого режима
 
Регистрация: 22.04.2014
Санкт-Петербург
Сообщений: 54


Цитата:
Сообщение от krok64 Посмотреть сообщение
Наверно есть.
Вот код моей программы для примера.


[/code]
Программа должна быть - лиспом ?
__________________
"Зачем чинить то, что и так работает ?"
Ifclissium вне форума  
 
Непрочитано 10.10.2016, 14:35
#7
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848


Раздел - "AutoCAD", а не "Программирование". Так что ищем и предлагаем штатные варианты!
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.10.2016, 15:05
#8
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


Цитата:
Программа должна быть - лиспом ?
почему?
trir вне форума  
 
Автор темы   Непрочитано 10.10.2016, 15:21
#9
Ifclissium

Жертва студенческого режима
 
Регистрация: 22.04.2014
Санкт-Петербург
Сообщений: 54


Цитата:
Сообщение от trir Посмотреть сообщение
почему?
Как я ранее писала , я не разбираюсь в программирование. Я предположила что программа должна быть лиспом , ибо до этого применяла их в связке с кадом.

Но хотелось бы найти решение без программирования чего-то , может команда/набор команд какой есть ? или комбинация программ-лиспов?
__________________
"Зачем чинить то, что и так работает ?"
Ifclissium вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как создать связь ячеек таблицы с выносками без СПДС в Autocad 2017

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
СПДС Graphics. Интеграция с AutoCAD. Нет панелек СПДС Sn4ke ПО от CSoft 40 31.07.2020 11:52
Не отображаются панели инструментов в меню СПДС в AutoCAD 2013 nata_mara Вертикальные решения на базе AutoCAD 2 31.10.2018 11:42
Программное создание таблицы AutoCAD. Муки творчества. Do$ Программирование 46 03.08.2016 16:48
Проблемы при установке СПДС 7 на AutoCAD 2009 Win7 64 bit Baurzhan_971 ПО от CSoft 8 14.11.2015 21:38
Связь своей программы с AutoCad через OpenGL Golem-iq Программирование 31 15.05.2015 14:03