Создание (изменение) размерного стиля в AutoCad из vba Access

Автор Тема: Создание (изменение) размерного стиля в AutoCad из vba Access  (Прочитано 24454 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

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

  • ADN OPEN
  • Сообщений: 36
  • Карма: 0
Добрый день!
Хочу внести изменения в размерный стиль AutoCad программным путем.
Для опытов использую код взятый на просторах Инета

   
Код - Visual Basic [Выбрать]
  1.     Dim oDict As Variant
  2.     Set oDict = acadDoc.Dictionaries.Item("ACAD_MLEADERSTYLE")
  3.     Dim i As Long
  4.     For i = 0 To oDict.Count - 1
  5.     Dim oObj As Variant
  6.     Set oObj = oDict.Item(i)
  7.     If oObj.ObjectName = "AcDbMLeaderStyle" Then
  8.         Dim oMLS As Object
  9.         Set oMLS = oObj
  10.         MsgBox "Name = " & oMLS.Name & vbCrLf & _
  11.         "Annotative = " & oMLS.Annotative & vbCrLf & _
  12.         "ContentType = " & oMLS.ContentType & vbCrLf & _
  13.         "LeaderLineType = " & oMLS.LeaderLineType, vbInformation, "MLeader Styles"
  14.     End If
  15.     Next i
  16.  
Проблема в следующем ....
через окно сообщений вижу только один размерный стиль "Standard"
В watches наблюдаю следующее:
В Dictionaries не вижу существующих размерных стилей кроме "Standard", а в DimStyles  - есть существующие стили но без свойств, то есть я не могу обращаться к стилю и изменить его свойства.
Подскажите, в чем ошибка и куда копать?
« Последнее редактирование: 22-09-2014, 23:12:16 от Александр Ривилис »

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

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

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
P.S.: Вообще-то DimStyle и MLeaderStyle - это разные вещи. И хранятся они в разных местах. И методы внесения изменений в DimStyle и в MLeaderStyle разные.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 36
  • Карма: 0
Доброго времени суток!
Александр Ривилис,
файл AutoCad во вложении.
(создавал при запущеном каде)

Код - Visual Basic [Выбрать]
  1. Set acadApp = GetObject(, "AutoCAD.Application")
  2.     If Err Then
  3.       Err.Clear
  4.       Set acadApp = CreateObject("AutoCAD.Application")
  5.     If Err Then
  6.       MsgBox Err.Description
  7.       Exit Sub
  8.     End If
  9.      End If
  10.   acadApp.Visible = True
  11.   Set acadDoc = acadApp.ActiveDocument ' Подключение к активному файлу AutoCad
  12.  'Set acadDoc = acadApp.Documents.Add 'Создание нового файла AutoCad


P.S.: Вообще-то DimStyle и MLeaderStyle - это разные вещи. И хранятся они в разных местах. И методы внесения изменений в DimStyle и в MLeaderStyle разные.
Вот с этого места поподробнее...
Ссылку или пример.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Вот с этого места поподробнее...
Ссылку или пример.
DimStyle: http://help.autodesk.com/view/ACD/2015/ENU/?guid=GUID-3227408C-75A9-434C-BD3F-B189A2BE098A



MLeaderStyle: http://help.autodesk.com/view/ACD/2015/ENU/?guid=GUID-14AC2D0B-EBFC-44B9-982D-9112539F8DE8



А теперь уточни что именно ты собираешься из этого менять?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 36
  • Карма: 0
Александр Ривилис, спасибо за ссылки.
По второй ссылке нужно изменить свойство размерного стиля на аннотативный.
Код
Код - Visual Basic [Выбрать]
  1. oMLS.Annotative=True
  oMLS.Annotative изменяет значение  на True но нужного результата нет.
Размерный стиль не становится аннотативным.
И еще....
После перезагрузки ПК ранее приведенный код стал сообщать о наличии еще одного стиля "Аннотативный" см. скриншот
но стиля "ISO-25" нет.
В watches наблюдаю следующее:
В Dictionaries  вижу Item 1 и Item 2 в обоих случаях имя размерного стиля "Standard" см. скриншот.
Александр Ривилис, просьба прокомментировать и направить на  истинный путь.

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

  • ADN OPEN
  • Сообщений: 36
  • Карма: 0
Выявил некую особенность AutoCad.
При запуске акада из меню Пуск  имеем размерные стили "ISO-25"  и "Аннотативный" в MsgBox вижу два размерных стиля "Standard" и "Аннотативный".
При создании нового файла чертежа, из меню асада "Создать новый чертеж",  имеем размерные стили "ISO-25"  и "Annotative" в MsgBox вижу один размерный стиль "Standard".
Этим объясняется "странная" работа кода.
« Последнее редактирование: 23-09-2014, 10:43:13 от Vladimir »

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
oMLS.Annotative изменяет значение  на True но нужного результата нет.
Размерный стиль не становится аннотативным.
А как он может стать аннотативным если ты меняешь не размерный стиль (DimStyle), а стиль мультивыноски (MLeaderStyle). А как я уже говорил это разные вещи.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Выявил некую особенность AutoCad.
При запуске акада из меню Пуск  имеем размерные стили "ISO-25"  и "Аннотативный" в MsgBox вижу два размерных стиля "Standard" и "Аннотативный".
При создании нового файла чертежа, из меню асада "Создать новый чертеж",  имеем размерные стили "ISO-25"  и "Annotative" в MsgBox вижу один размерный стиль "Standard".
Этим объясняется "странная" работа кода.
А это объясняется тем, что при запуске из меню открывается чертеж с пустым шаблоном, а при создании чертежа (скорее всего) с шаблоном acadiso.dwt
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Vladimir, пожалуйста, не вводите в заблуждение: если надо менять стильмультивыноски, то так и говорите. Он никакого отношения к размерному стилю не имеет (см.#2,#4). Стиль мультивыноски STANDARD есть всегда (точно так же, как и текстовый стиль Standard, и табличный стиль Standard, и стиль мультилинии Standard). Как правило, безболезненно эти стили не удалить.
Имя размерного стиля подобным ограничением не страдает.
Все, что сказано - личное мнение.

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

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

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

  • ADN OPEN
  • Сообщений: 36
  • Карма: 0
Доброго времени суток!
Алексей Кулик, я ни кого не хотел вводить в заблуждение...
В теме поста и в первом сообщении,на мой взгляд, я ясно поставил задачу
-"Создание (изменение) размерного стиля в AutoCad из vba Access"
и сообщил о проблеме
Проблема в следующем ....
через окно сообщений вижу только один размерный стиль "Standard"
В watches наблюдаю следующее:
В Dictionaries не вижу существующих размерных стилей кроме "Standard", а в DimStyles  - есть существующие стили но без свойств, то есть я не могу обращаться к стилю и изменить его свойства.
Подскажите, в чем ошибка и куда копать?
Благодарен за расстановку точек над i
Vladimir, пожалуйста, не вводите в заблуждение: если надо менять стильмультивыноски, то так и говорите. Он никакого отношения к размерному стилю не имеет (см.#2,#4). Стиль мультивыноски STANDARD есть всегда (точно так же, как и текстовый стиль Standard, и табличный стиль Standard, и стиль мультилинии Standard). Как правило, безболезненно эти стили не удалить.
Имя размерного стиля подобным ограничением не страдает.

Еще раз уточню...
Нужно, текущему размерному стилю (например ISO-25) поставить галочку "Аннотативный" программно из vba Access. см скриншот.
Буду рад услышать (увидеть ) ответ на свой вопрос в следующем формате....
Для изменения свойств размерного стиля необходимо:
  • посмотреть (почитать) здесь (ссылка);
  • попробовать сделать так (пример кода).



Оффлайн German

  • ADN Club
  • **
  • Сообщений: 84
  • Карма: 13
посмотреть (почитать) здесь (ссылка)
Может поможет статья Бушмана http://bushman-andrey.blogspot.ru/2014/06/autocad.html

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Нужно, текущему размерному стилю (например ISO-25) поставить галочку "Аннотативный" программно из vba Access. см скриншот.
Наконец-то я увидел конкретную постановку задачи. Так вот свойства Annotative у объекта DimStyle нет и поэтому напрямую ты не можешь изменить это свойство у размерного стиля.
« Последнее редактирование: 24-09-2014, 12:49:37 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
В принципе меняя расширенные данные (Xdata) размерного стиля ты можешь сделать его аннотативным. Но это не документировано. Выглядят расширенные данные размерного стиля Annotative приблизительно так:



Для этого используется метод SetXdata. Повторюсь. Это всё не документировано и можно использовать на свой страх и риск.
« Последнее редактирование: 24-09-2014, 13:11:59 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Все, что сказано - личное мнение.

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

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