Python & ActiveX/COM Autocad

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

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

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Python & ActiveX/COM Autocad
« Ответ #405 : 08-07-2021, 15:32:37 »
Стоп. Я что-то не понял откуда запускается Python? Перечисленные сборки можно использовать только в приложении, загруженном внутрь AutoCAD, но нельзя использовать во внешнем приложении, обращающемся к AutoCAD через COM/ActiveX.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Aleks_199513

  • ADN OPEN
  • Сообщений: 21
  • Карма: 0
Re: Python & ActiveX/COM Autocad
« Ответ #406 : 08-07-2021, 15:38:47 »
Что в IN[0] и в IN[1]? То что у Block есть свойство ObjectID - это 100%.


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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Python & ActiveX/COM Autocad
« Ответ #407 : 08-07-2021, 15:41:20 »
Aleks_199513,
Это мне ничего не говорит.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Aleks_199513

  • ADN OPEN
  • Сообщений: 21
  • Карма: 0
Re: Python & ActiveX/COM Autocad
« Ответ #408 : 08-07-2021, 15:42:24 »
Aleks_199513,
Это мне ничего не говорит.
В IN[0] имя таблицы идет, в IN[1] блок

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Python & ActiveX/COM Autocad
« Ответ #409 : 08-07-2021, 15:45:07 »
Aleks_199513,
Или в IN[1] не блок (объект Block), или какая-то проблема с AutoCAD на твоей стороне.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Aleks_199513

  • ADN OPEN
  • Сообщений: 21
  • Карма: 0
Re: Python & ActiveX/COM Autocad
« Ответ #410 : 09-07-2021, 10:35:11 »
Aleks_199513,
Или в IN[1] не блок (объект Block), или какая-то проблема с AutoCAD на твоей стороне.
Очень странно, но подается же объект типа Block...буду искать дальше проблему тогда, а правильный ли я выбрал метод вставки блока в таблицу(tab.SetBlockTableRecordId(1,1,1928560679024,True))? или может есть другой вариант?

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Python & ActiveX/COM Autocad
« Ответ #411 : 09-07-2021, 10:40:43 »
Aleks_199513,
Метод правильный. Если считать что переданное число - ObjectID блока.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Python & ActiveX/COM Autocad
« Ответ #412 : 09-07-2021, 10:41:51 »
P.S.: Кстати нужно сначала задать тип ячейки.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Aleks_199513

  • ADN OPEN
  • Сообщений: 21
  • Карма: 0
Re: Python & ActiveX/COM Autocad
« Ответ #413 : 09-07-2021, 10:49:43 »
P.S.: Кстати нужно сначала задать тип ячейки.
спасибо, сейчас буду пробовать

Оффлайн Marik

  • ADN OPEN
  • Сообщений: 18
  • Карма: 0
Re: Python & ActiveX/COM Autocad
« Ответ #414 : 10-07-2021, 19:37:49 »
Подскажите, пожалуйста! Как выбрать в чертеже все примитивы начерченные определенным слоем и удалить их.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Python & ActiveX/COM Autocad
« Ответ #415 : 10-07-2021, 19:43:15 »
Подскажите, пожалуйста! Как выбрать в чертеже все примитивы начерченные определенным слоем и удалить их.
Вы недостаточно хорошо понимаете терминологию AutoCAD. У каждого примитива есть свойство - слой (Layer). Для выбора всех примитивов на заданном слое можно воспользоваться методом SelectionSet.Select acSelectionSetAll с фильтром по слою ( группа 8 ).
Альтернативный способ - итерация по пространству модели (или пространству листа) и проверка свойства Layer для каждого из примитивов в итерации.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Re: Python & ActiveX/COM Autocad
« Ответ #416 : 10-07-2021, 21:11:46 »
Я бы проходил по всей коллекции блоков и проверял объекты на слой.
Между прочим, есть команда _.-laydel, правда, она оставляет следы в ком.строке.
Все, что сказано - личное мнение.

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

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

Оффлайн Marik

  • ADN OPEN
  • Сообщений: 18
  • Карма: 0
Re: Python & ActiveX/COM Autocad
« Ответ #417 : 10-07-2021, 22:50:13 »
Можно пример кода? или ссылку на пример? пожалуйста.

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

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Re: Python & ActiveX/COM Autocad
« Ответ #418 : 10-07-2021, 22:54:14 »
Если вопрос ко мне - то я лиспописатель, и не уверен, что мой вариант поможет.
Все, что сказано - личное мнение.

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

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

Оффлайн Electric

  • ADN OPEN
  • **
  • Сообщений: 70
  • Карма: 10
Re: Python & ActiveX/COM Autocad
« Ответ #419 : 11-07-2021, 08:33:40 »
Наиболее простой из вариантов, проход по объектам в пространстве модели, без использования выделения:

Код - Python [Выбрать]
  1. import win32com.client
  2.  
  3. app = win32com.client.Dispatch("AutoCAD.Application")
  4. aDoc = app.ActiveDocument
  5. mSp = aDoc.ModelSpace
  6.  
  7. for obj in mSp:
  8.     if obj.Layer == "Слой_1":
  9.         obj.Delete()