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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как получить список стилей таблиц на VBA?

Как получить список стилей таблиц на VBA?

Ответ
Поиск в этой теме
Непрочитано 07.03.2022, 13:21 #1
Как получить список стилей таблиц на VBA?
МишаИнженер
 
Регистрация: 14.12.2008
Сообщений: 1,079

Как получить список стилей таблиц на VBA?
Для текстовых стилей существует метод TextStyles. А какой метод надо использовать чтобы получить список стилей таблиц?
Просмотров: 2159
 
Непрочитано 07.03.2022, 14:16
1 | #2
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,587


Код:
[Выделить все]
Sub Example_Dictionaries()
    Dim dict As AcadDictionary
    Set dict = ThisDrawing.Dictionaries("ACAD_TABLESTYLE")
End Sub
Boxa вне форума  
 
Автор темы   Непрочитано 07.03.2022, 14:31
#3
МишаИнженер


 
Регистрация: 14.12.2008
Сообщений: 1,079


Спасибо Воха!
Удалось сделать функцию:
Код:
[Выделить все]
Public Function НаличиеСтиляТаблицы(objAcadDoc As AcadDocument, НазваниеСтиляТаблицы As String) As Boolean
Dim Dictionary As Object, I As Integer, J As Integer
   On Error GoTo ОбработкаОшибок

   Set Dictionary = objAcadDoc.Database.Dictionaries.Item("ACAD_TableStyle")
'1. Проверить: имеется ли стиль nf,kbw c заданным названием
   НаличиеСтиляТаблицы = False
   J = Dictionary.Count
   For I = 1 To J
      If Dictionary(I - 1).Name = НазваниеСтиляТаблицы Then
'2. Если да, то вывести соответствующий ответ и завершить функцию
         НаличиеСтиляТаблицы = True
         Exit Function
      End If
   Next I
'3. Если стиль не найден, то вывести соответствующий ответ и завершить функцию
   Exit Function
ОбработкаОшибок:
   MsgBox "При проверке наличия стиля таблицы """" & НазваниеСтиляТаблицы & """" произошла ошибка:" & vbLf & vbLf & _
          "номер = " & Err.Number & vbLf & vbLf & _
          "с описанием: " & Err.Description, vbExclamation, gsНазваниеПрограммы
   Resume Next
End Function
МишаИнженер вне форума  
 
Непрочитано 07.03.2022, 14:58
#4
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 10,959


Цитата:
Сообщение от Boxa Посмотреть сообщение
Dim dict As AcadDictionary
Цитата:
Сообщение от МишаИнженер Посмотреть сообщение
Dim Dictionary As Object
зачем на объект поменяли?

----- добавлено через ~3 мин. -----
и зачем вообще перебирать в цикле? Пробуете получить по ключу стиль таблицы, если не удалось - там или ошибка вылетит, или Nothing вернет, имхо
Сергей812 вне форума  
 
Автор темы   Непрочитано 07.03.2022, 16:53
#5
МишаИнженер


 
Регистрация: 14.12.2008
Сообщений: 1,079


Поменял:
Код:
[Выделить все]
Public Function НаличиеСтиляТаблицы(objAcadDoc As AcadDocument, НазваниеСтиляТаблицы As String) As Boolean
Dim Dictionary As AcadDictionary, I As Integer, J As Integer
On Error GoTo ОбработкаОшибок
   Set Dictionary = objAcadDoc.Database.Dictionaries.Item("ACAD_TableStyle")
'1)Проверить: имеется ли стиль таблицы c заданным названием
   НаличиеСтиляТаблицы = False
   J = Dictionary.Count
   For I = 1 To J
      If Dictionary(I - 1).Name = НазваниеСтиляТаблицы Then
'2)Если да, то вывести соответствующий ответ и завершить функцию
         НаличиеСтиляТаблицы = True
         Exit Function
      End If
   Next I
'3)Если стиль не найден, то вывести соответствующий ответ и завершить функцию
   Exit Function
ОбработкаОшибок:
   MsgBox "При проверке наличия стиля таблицы """" & НазваниеСтиляТаблицы & """" произошла ошибка:" & vbLf & vbLf & _
          "номер = " & Err.Number & vbLf & vbLf & _
          "с описанием: " & Err.Description, vbExclamation, gsНазваниеПрограммы
   Resume Next
End Function

Последний раз редактировалось МишаИнженер, 07.03.2022 в 17:01.
МишаИнженер вне форума  
 
Непрочитано 07.03.2022, 17:22
1 | #6
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 10,959


object - если тип объекта заранее неизвестен, либо, например, позднее связывание через COM-интерфейс. А так это лишь неудобство и некоторый перерасход ресурсов.

А другой вариант, написан на коленке, но должен работать вроде
Код:
[Выделить все]
On error goto ErrCheckETS
Dim Dictionary As AcadDictionary
Set Dictionary = objAcadDoc.Database.Dictionaries.Item("ACAD_TableStyle")
Dictionary.GetObject(НазваниеСтиляТаблицы)
НаличиеСтиляТаблицы = true
Exit function
ErrCheckETS:
НаличиеСтиляТаблицы = false
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как получить список стилей таблиц на VBA?

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP Можно ли получить список выделенных листов (Layuot)? Krieger LISP 1 01.06.2018 09:45
Как получить список координат ЦТ и площадей всех пластинчатых КЭ из модели? eilukha SCAD 2 02.07.2017 22:52
Редактор VLIDE. Как получить список всех описанных функций открытого в редакторе файла. Kirill_Ja Программирование 18 26.06.2013 02:03
Как получить Список файлов в директории (поддиректорий) VBA sf Программирование 2 17.12.2010 12:06
Можно ли получить список реакторов объекта? kos Программирование 1 13.01.2005 13:28