Добавление / удаление масштаба аннотаций размера

Автор Тема: Добавление / удаление масштаба аннотаций размера  (Прочитано 4817 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн VladimirАвтор темы

  • ADN OPEN
  • Сообщений: 36
  • Карма: 0
Добрый день!
При вставке блока в чертеж (InsertBlock) нужно у существующих размеров, блока, изменить / удалить / добавить масштаб аннотаций.
Нужен аналог команд  AIOBJECTSCALEADD, AIOBJECTSCALEREMOVE, OBJECTSCALE.
Ссылки, примеры приветствуются.

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 611
  • Карма: 155
    • ПГСу Бложик
С аннотативностью в VBA беда... переходите в .NET
Код - Visual Basic [Выбрать]
  1. Sub Example_HasExtensionDictionary()
  2.     Dim DrawingObject As AcadObject
  3.     Dim ExtensionDictionaryResults As String
  4.     If ThisDrawing.ModelSpace.Count = 0 Then
  5.         MsgBox "There are no objects in the current drawing."
  6.         Exit Sub
  7.     End If
  8.    
  9.     For Each DrawingObject In ThisDrawing.ModelSpace
  10.         Select Case DrawingObject.HasExtensionDictionary
  11.             Case True
  12.                 Dim eDictionary As AcadDictionary
  13.                 Set eDictionary = DrawingObject.GetExtensionDictionary
  14.                 Dim sentityObj As Object
  15.                 Set sentityObj = eDictionary.GetObject("AcDbContextDataManager")
  16.                 Set sentityObj = sentityObj.GetObject("ACDB_ANNOTATIONSCALES")
  17.                
  18.                 ' тут в sentityObj содержится список аннототивных масштабов
  19.                ' вот только его не получить
  20.                
  21.                 'добавить в этот список можно как то вот так
  22.                ' но вот что добавлять, не понятно!
  23. '                Dim keyName As String
  24. '                Dim className As String
  25. '                Dim customObj As AcadTableStyle
  26. '                keyName = "NewStyle"
  27. '                className = "AcDbTableStyle"
  28. '                Set customObj = sentityObj.AddObject(keyName, className)
  29.                
  30.                
  31.                 ExtensionDictionaryResults = ExtensionDictionaryResults & _
  32.                                              DrawingObject.ObjectName & _
  33.                                              " has an associated Extension Dictionary" & vbCrLf
  34.             Case False
  35.                 ExtensionDictionaryResults = ExtensionDictionaryResults _
  36.                                              & DrawingObject.ObjectName & _
  37.                                              " does not have an associated Extension Dictionary" & vbCrLf
  38.         End Select
  39.     Next
  40.     MsgBox ExtensionDictionaryResults
  41. End Sub
  42.  

Оффлайн VladimirАвтор темы

  • ADN OPEN
  • Сообщений: 36
  • Карма: 0
Владимир, спасибо за код и совет.
Код запустил, работает, однако применить его не могу.

Придется мигрировать на vb.net Я в него уже одной ногой влез (aspx).
Но если случиться чудо и будет решение, то буду признателен.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Но если случиться чудо и будет решение, то буду признателен.
Чуда не будет. В VBA нет средств для работы с ANNOTATIONSCALES.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1096
  • Карма: 172
А если напрямую редактировать / создавать / удалять записи соответствующих словарей?
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
А если напрямую редактировать / создавать / удалять записи соответствующих словарей?
Попробуй на VBA сделать аналог (entget)/(entmod)/(entmake) ;)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1096
  • Карма: 172
Не, меня на такое не хватит :) Другой вопрос, что словарные записи (если не ошибаюсь) не понимаю варианта "редактирования" - их надо сначала удалять, а потом уже добавлять новую. Головняк тот еще, не спорю. И потом, где VBA, и где я? :)
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн VladimirАвтор темы

  • ADN OPEN
  • Сообщений: 36
  • Карма: 0
Добрый вечер!
Я правильно понимаю, что акад по сути база данных где у каждого примитива указаны свойства (тип, расположение, слой и т.д.)?
Вопрос. Существует ли возможность подключения к такой базе и редактирование напрямую в таблицах?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Я правильно понимаю, что акад по сути база данных где у каждого примитива указаны свойства (тип, расположение, слой и т.д.)?
Это не AutoCAD - база данных, а чертеж (dwg-файл) - база данных.
Существует ли возможность подключения к такой базе и редактирование напрямую в таблицах?
Нет. Только через AutoCAD'овское API. Формат dwg-файла закрыт.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение