Сообщество программистов Autodesk в СНГ

ADN Club => VBA => Тема начата: Vladimir от 09-06-2017, 07:32:48

Название: Добавление / удаление масштаба аннотаций размера
Отправлено: Vladimir от 09-06-2017, 07:32:48
Добрый день!
При вставке блока в чертеж (InsertBlock) нужно у существующих размеров, блока, изменить / удалить / добавить масштаб аннотаций.
Нужен аналог команд  AIOBJECTSCALEADD, AIOBJECTSCALEREMOVE, OBJECTSCALE.
Ссылки, примеры приветствуются.
Название: Re: Добавление / удаление масштаба аннотаций размера
Отправлено: Владимир Шу от 09-06-2017, 09:46:01
С аннотативностью в 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.  
Название: Re: Добавление / удаление масштаба аннотаций размера
Отправлено: Vladimir от 09-06-2017, 20:49:46
Владимир, спасибо за код и совет.
Код запустил, работает, однако применить его не могу.

Придется мигрировать на vb.net Я в него уже одной ногой влез (aspx).
Но если случиться чудо и будет решение, то буду признателен.
Название: Re: Добавление / удаление масштаба аннотаций размера
Отправлено: Александр Ривилис от 10-06-2017, 11:40:57
Но если случиться чудо и будет решение, то буду признателен.
Чуда не будет. В VBA нет средств для работы с ANNOTATIONSCALES.
Название: Re: Добавление / удаление масштаба аннотаций размера
Отправлено: Алексей Кулик от 10-06-2017, 19:01:27
А если напрямую редактировать / создавать / удалять записи соответствующих словарей?
Название: Re: Добавление / удаление масштаба аннотаций размера
Отправлено: Александр Ривилис от 10-06-2017, 19:03:41
А если напрямую редактировать / создавать / удалять записи соответствующих словарей?
Попробуй на VBA сделать аналог (entget)/(entmod)/(entmake) ;)
Название: Re: Добавление / удаление масштаба аннотаций размера
Отправлено: Алексей Кулик от 10-06-2017, 19:13:55
Не, меня на такое не хватит :) Другой вопрос, что словарные записи (если не ошибаюсь) не понимаю варианта "редактирования" - их надо сначала удалять, а потом уже добавлять новую. Головняк тот еще, не спорю. И потом, где VBA, и где я? :)
Название: Re: Добавление / удаление масштаба аннотаций размера
Отправлено: Vladimir от 10-06-2017, 20:03:58
Добрый вечер!
Я правильно понимаю, что акад по сути база данных где у каждого примитива указаны свойства (тип, расположение, слой и т.д.)?
Вопрос. Существует ли возможность подключения к такой базе и редактирование напрямую в таблицах?
Название: Re: Добавление / удаление масштаба аннотаций размера
Отправлено: Александр Ривилис от 10-06-2017, 20:06:25
Я правильно понимаю, что акад по сути база данных где у каждого примитива указаны свойства (тип, расположение, слой и т.д.)?
Это не AutoCAD - база данных, а чертеж (dwg-файл) - база данных.
Существует ли возможность подключения к такой базе и редактирование напрямую в таблицах?
Нет. Только через AutoCAD'овское API. Формат dwg-файла закрыт.