Python & ActiveX/COM Autocad

Автор Тема: Python & ActiveX/COM Autocad  (Прочитано 229811 раз)

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

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Python & ActiveX/COM Autocad
« Ответ #450 : 08-10-2021, 18:07:07 »
Добрый день. Подскажите пожалуйста, как можно получить координаты вершин полилинии в Python?
Свойство Coordinates.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн vxv

  • ADN OPEN
  • Сообщений: 18
  • Карма: 0
Re: Python & ActiveX/COM Autocad
« Ответ #451 : 16-10-2021, 17:49:56 »
Доброго времени суток.
Чтобы переопределить текст в линейном размере используется метод:
Код - Python [Выбрать]
  1. object.TextOverride = 'Новый текст'
Запись типа:
Код - Python [Выбрать]
  1. Text = object.TextOverride
  2. print('Text = ', Text)
не выдает ошибку, но ни чего и не выводит в консоль.
Подскажите пожалуйста, как прочитать текст из линейного размера?
Спасибо

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Python & ActiveX/COM Autocad
« Ответ #452 : 16-10-2021, 17:54:05 »
не выдает ошибку, но ни чего и не выводит в консоль.
Ничего не выводит или выводит
Text =как будто текст пустой?
Если да, то это нормально. Значит текст не переопределён.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн vxv

  • ADN OPEN
  • Сообщений: 18
  • Карма: 0
Re: Python & ActiveX/COM Autocad
« Ответ #453 : 16-10-2021, 18:07:15 »
не выдает ошибку, но ни чего и не выводит в консоль.
Ничего не выводит или выводит
Text =как будто текст пустой?
Если да, то это нормально. Значит текст не переопределён.
Выводит:
Text =
А как в таком случае прочитать текст из размера? Все методы уже перепробовал с официального сайта Автокада

Оффлайн vxv

  • ADN OPEN
  • Сообщений: 18
  • Карма: 0
Re: Python & ActiveX/COM Autocad
« Ответ #454 : 16-10-2021, 18:10:15 »
И кстате я ищу не эту строчку
Код - Python [Выбрать]
  1. print('Величина размера = ', object.Measurement)
Она как раз находит величину размера.
А мне нужны данные из "Текстовая строка" в свойстве размера

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Python & ActiveX/COM Autocad
« Ответ #455 : 16-10-2021, 18:11:33 »
А как в таком случае прочитать текст из размера?
Похоже, что средствами COM/ActiveX это сделать не просто. Можно расчленить размер, вытащить текст, отменить изменения.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн vxv

  • ADN OPEN
  • Сообщений: 18
  • Карма: 0
Re: Python & ActiveX/COM Autocad
« Ответ #456 : 16-10-2021, 18:15:04 »
А как в таком случае прочитать текст из размера?
Похоже, что средствами COM/ActiveX это сделать не просто. Можно расчленить размер, вытащить текст, отменить изменения.
Я тоже об этом думал, но это не то чего бы хотелось
Средствами .Net подходит вроде метод DimensionText, но я понятия не имею как с этим работать

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Python & ActiveX/COM Autocad
« Ответ #457 : 16-10-2021, 18:44:51 »
Средствами .Net подходит вроде метод DimensionText, но я понятия не имею как с этим работать
Из Python? Если он не запускается изнутри AutoCAD - то никак. Ибо AutoCAD .NET API можно использовать только изнутри AutoCAD.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Python & ActiveX/COM Autocad
« Ответ #458 : 16-10-2021, 18:48:17 »
И кстате я ищу не эту строчку
Код - Python [Выбрать]
  1. print('Величина размера = ', object.Measurement)
Она как раз находит величину размера.
А мне нужны данные из "Текстовая строка" в свойстве размера
А в чем у тебя разница между этими значениями? Посмотри еще свойства TextPrefix и TextSuffix
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн vxv

  • ADN OPEN
  • Сообщений: 18
  • Карма: 0
Re: Python & ActiveX/COM Autocad
« Ответ #459 : 16-10-2021, 20:44:51 »
Александр Ривилис, большое спасибо за помощь, разобрался, моя вина не доглядел, слишком много было данных для выбора, проглядел. Ответ таков: object.TextOverride собирает данные))))))
Прошу прощения

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Python & ActiveX/COM Autocad
« Ответ #460 : 16-10-2021, 20:55:04 »
Я просто не пойму раз есть метод ввода данных в Текстовую строку, почему нельзя их от туда прочитать
С размером связан блок, внутри которого МТекст, отрезки и т.д. Эту связь можно отследить (и соответственно получить содержимое МТекст) в Lisp/.NET/ObjectARX, но не в COM/ActiveX
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн vxv

  • ADN OPEN
  • Сообщений: 18
  • Карма: 0
Re: Python & ActiveX/COM Autocad
« Ответ #461 : 22-10-2021, 11:28:53 »
Подскажите пожалуйста, как получить количество линий выноски у «Позиционной выноски» элемента Autodesk SPDS Extension? Или где про это можно найти документацию? Методы от стандартной мультивыноски работают не асе.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Python & ActiveX/COM Autocad
« Ответ #462 : 22-10-2021, 15:23:33 »
Или где про это можно найти документацию?
Это не документировано. Все доступные из COM/ActiveX свойства можно получить при помощи метода VisualLisp https://help.autodesk.com/view/OARX/2019/RUS/?guid=GUID-BCE56B30-54A6-42F9-8910-81AF2B7B9AA8
В командной строке AutoCAD набираешь и выбираешь "Позиционную выноску":

Код - Auto/Visual Lisp [Выбрать]
  1. (vlax-dump-object (vlax-ename->vla-object (car (entsel))) t)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн vxv

  • ADN OPEN
  • Сообщений: 18
  • Карма: 0
Re: Python & ActiveX/COM Autocad
« Ответ #463 : 25-10-2021, 16:44:59 »
Подскажите пожалуйста, как узнать есть у меня уже блок или нет в базе данных, с определенным именем . А то постоянно дорисовываю одно и тоже в блоке. Спасибо

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Python & ActiveX/COM Autocad
« Ответ #464 : 25-10-2021, 20:52:07 »
vxv,
ThisDrawing.Blocks.Item("Имя Блока")
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение