Обсуждение видеоуроков AutoCAD VBA

Автор Тема: Обсуждение видеоуроков AutoCAD VBA  (Прочитано 6073 раз)

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

Оффлайн FocusNIK

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0
Re: Обсуждение видеоуроков AutoCAD VBA
« Ответ #120 : 26-04-2017, 20:47:10 »
Насколько я понял из этого : http://vbamodel.narod.ru/AutoCAD/idh_insertionpoint.htm
object.InsertionPoint применяется для:  Attribute, AttributeReference, BlockRef, ExternalReference, MInsertBlock, MText, Shape, Text, Tolerance Symbol

У меня не получилось это побороть. Был бы признателен, если приложили пример использования с атрибутами блока. Применил бы в своей практике.
А еще бы не отказался от книги по данному направлению... А то после VBA для Excel был крайне дезориентирован структурированием построения кода.
PS. Я по профессии инженер по вентиляции. Поэтому изучаю по мере возможности и прошу не ругать за глупые вопросы.

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

  • Administrator
  • *****
  • Сообщений: 548
  • Карма: 86
Re: Обсуждение видеоуроков AutoCAD VBA
« Ответ #121 : 26-04-2017, 23:33:32 »
Судя по тому, что я вижу, InsertionPoint есть как для многострочных, так и для однострочных атрибутов (равно как и TextAlignmentPoint).

Кстати, что GetAttributes, что GetConstantAttributes возвращают массив указателей на обычные атрибуты и постоянные атрибуты. Разницы в этом между ними никакой. Для примера (заранее прошу прощения за качество кода - на VBA уже очень давно ничего не писал):
Код - Visual Basic [Выбрать]
  1. Option Explicit
  2.  
  3. Public Sub test()
  4. Dim ent As AcadEntity, blkRef As AcadBlockReference
  5. Dim pt As Variant, arAttr As Variant, arConstAttr As Variant
  6.   ThisDrawing.Utility.GetEntity ent, pt
  7.   If ent.ObjectName = "AcDbBlockReference" Then
  8.     Set blkRef = ent
  9.     arAttr = blkRef.GetAttributes
  10.     arConstAttr = blkRef.GetConstantAttributes
  11.   End If
  12. End Sub
Пошаговая отладка многое покажет :)
Все, что сказано - личное мнение.

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

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

Оффлайн Владимир П

  • ADN OPEN
  • Сообщений: 45
  • Карма: 3
Re: Обсуждение видеоуроков AutoCAD VBA
« Ответ #122 : 27-04-2017, 07:47:43 »
если приложили пример использования с атрибутами блока
Ну, вот если из моего примера, то вот так заработало
Код - Visual Basic [Выбрать]
  1. '    Dim att As Variant
  2.    Dim att As AcadAttributeReference
  3.     Dim LB(0 To 2) As Double
  4.     Dim blokObj As AcadBlockReference
  5.     Set blokObj = elem
  6.     Dim varAttributes As Variant
  7.     ' Получение атрибутов
  8.    If blokObj.HasAttributes = True Then
  9.         varAttributes = blokObj.GetAttributes
  10. '        varAttributes = blokObj.GetConstantAttributes
  11.        For i = LBound(varAttributes) To UBound(varAttributes)
  12.             Set att = varAttributes(i)
  13.             If att.TagString = "ШИФР" Then
  14.                  LB(0) = att.InsertionPoint(0)
  15.                 MsgBox (LB(0))
  16.             End If
  17.         Next
  18.     End If
  19.  
Но! в вашем изначальном блоке я исправил с свойствах атрибута постоянный на "НЕТ".
Вам конечно виднее, но уверен, что постоянный не нужен. Сам решал эту задачку со штампом давненько и как-то обошелся без GetConstantAttributes.
Больше того, если тупо заменить
       
Код - Visual Basic [Выбрать]
  1. varAttributes = blokObj.GetAttributes
на
'       
Код - Visual Basic [Выбрать]
  1. varAttributes = blokObj.GetConstantAttributes
возникнет ошибка связанная с тем, что все-таки Attribute и AttributeReference - разные вещи.
Можно конечно переделать все объявления правильно и наверное заработает и с GetConstantAttributes, но... зачем?


« Последнее редактирование: 27-04-2017, 21:02:16 от Александр Ривилис »

Оффлайн wavaw

  • ADN OPEN
  • Сообщений: 15
  • Карма: 0
Re: Обсуждение видеоуроков AutoCAD VBA
« Ответ #123 : 10-05-2017, 18:17:33 »
здравствуйте.
код со второго урока ошибку выдаёт :"user-defined type not defined"
сам код -

   
Код - Visual Basic [Выбрать]
  1.  Dim AP As Excel.Application
  2.     Dim WB As Excel.Workbook
  3.     Dim WS As Excel.Worksheet
  4.     Dim pp As Variant
с первой же строчки ошибка

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

  • Administrator
  • *****
  • Сообщений: 5933
  • Карма: 617
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Обсуждение видеоуроков AutoCAD VBA
« Ответ #124 : 10-05-2017, 18:46:31 »
wavaw
Библиотека Microsoft Excel подключена?



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

Оффлайн wavaw

  • ADN OPEN
  • Сообщений: 15
  • Карма: 0
Re: Обсуждение видеоуроков AutoCAD VBA
« Ответ #125 : 21-05-2017, 11:16:52 »
да, действительно галочка "слетела".