c# Динамический блок Изменение наборов объектов

Автор Тема: c# Динамический блок Изменение наборов объектов  (Прочитано 8245 раз)

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

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

  • ADN OPEN
  • Сообщений: 16
  • Карма: 0
День добрый
подскажите пожалуйста,

есть готовый динамический блок (Штамп) с параметром "Растянуть1" к которому добавлена операция "Перемещение"
при изменении размера, част элементов блока(полилинии) перемещаются. Какие объекты должны перемещаться определено в "наборе объектов для операции"

Я программно меняю динамический блок - добавляю простой блок(Подпись) - и переопределяю его вхождения на листе.
Получаю динамический блок(Штамп) уже с внедренным простым блоком(Подпись)

Задача: как добавить новый элемент(Подпись) динамического блока в "наборе объектов для операции"
другими словами, чтобы Подпись была добавлена к операции "Перемещение", когда меняется размер динамического блока, Подпись перескакивала на новое место

в инете нашел варианты чтения параметров динамического блока
Код - C# [Выбрать]
  1. foreach (DynamicBlockReferenceProperty prop in pc)
  2.                     {
  3.                         // Start with the property name, type and description
  4.  
  5.                         ed.WriteMessage(
  6.                           "\nProperty: \"{0}\" : {1}",
  7.                           prop.PropertyName,
  8.                           prop.UnitsType
  9.                          
  10.                         );
  11.  
  12.                         if (prop.Description != "")
  13.                             ed.WriteMessage(
  14.                               "\n  Description: {0}",
  15.                               prop.Description
  16.                             );
  17.  
  18.                        
  19.                         // Is it read-only?
  20.  
  21.                         if (prop.ReadOnly)
  22.                             ed.WriteMessage(" (Read Only)");
  23.  
  24.                         // Get the allowed values, if it's constrained
  25.  
  26.                         bool first = true;
  27.  
  28.                         foreach (object value in prop.GetAllowedValues())
  29.                         {
  30.                             ed.WriteMessage(
  31.                               (first ? "\n  Allowed values: [" : ", ")
  32.                             );
  33.                             ed.WriteMessage("\"{0}\"", value);
  34.  
  35.                             first = false;
  36.                         }
  37.                         if (!first)
  38.                             ed.WriteMessage("]");
  39.  
  40.                         // And finally the current value
  41.  
  42.                         ed.WriteMessage(
  43.                           "\n  Current value: \"{0}\"\n",
  44.                           prop.Value
  45.                         );
  46.                     }


но не смог найти управления "наборами объектов"

или если не очень понятно объяснил, аналогичная похожая задача:
Как в динамическом блоке программно изменить свойство "видимость", например до выполнения команды были видны/невидны три окружности.
После выполнения програмного кода, видимость/невидимость уже  четыре окружности
« Последнее редактирование: 14-07-2017, 13:51:36 от Badim »

Отмечено как Решение Александр Ривилис 20-03-2018, 18:39:06

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Задача: как добавить новый элемент(Подпись) динамического блока в "наборе объектов для операции"
другими словами, чтобы Подпись была добавлена к операции "Перемещение", когда меняется размер динамического блока, Подпись перескакивала на новое место
Увы, но в публичном API нет средств для добавления в "набор объектов для операции". Собственно говоря кроме возможности чтения/модификации свойств динамического блока в публичном API ничего нет. Считается, что динамический блок уже создан средствами самого AutoCAD и им можно управлять только меняя динамические свойства. Так что выбранный вами метод работы с динамическим блоком тупиковый.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Как в динамическом блоке программно изменить свойство "видимость", например до выполнения команды были видны/невидны три окружности.
После выполнения програмного кода, видимость/невидимость уже  четыре окружности
А вот это сделать можно достаточно просто: http://adn-cis.org/kak-poluchit-dostup-i-izmenit-svojstva-dinamicheskogo-bloka-v-arx-i-.net.html
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 16
  • Карма: 0
Увы, но в публичном API нет средств для добавления в "набор объектов для операции"
печалька

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Я программно меняю динамический блок - добавляю простой блок(Подпись) - и переопределяю его вхождения на листе.
Получаю динамический блок(Штамп) уже с внедренным простым блоком(Подпись)

Задача: как добавить новый элемент(Подпись) динамического блока в "наборе объектов для операции"
другими словами, чтобы Подпись была добавлена к операции "Перемещение", когда меняется размер динамического блока, Подпись перескакивала на новое место
Если у Вас уже есть блок "Подпись" в динблоке, так сразу и добавьте его в динамическую операцию при создании блока. А код будет только переопределять его отображение.
П.С. А вообще, странная ситуация. Подпись - элемент чертежа, который должен подтверждать личность лица, имеющего какое-то отношение к чертежу (разработал, проверил...). Она должна проставляться вручную. Если у Вас в динблоке заранее будет уже стоять подпись, то смысл в ней нулевой. Нет, я не вчера родился и знаю о такой практике в проектировании. Но поддерживать ее программными разработками - это уже перебор, на мой взгляд.

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

  • ADN OPEN
  • Сообщений: 16
  • Карма: 0
А код будет только переопределять его отображение.
на этом варианте и состановился,
только вместо подписи вначале будет пустой прямоугольник, по геометрии совпадающий с окошечком где должна быть подпись. И его как будто нет. На этот прямоугольник навешиваются все свойства. И далее прямоугольник при необходимости переопределяется в подпись.

Но поддерживать ее программными разработками - это уже перебор
У на используется вариант и ручной подписи и факсимилье