Как лучше реализовать создание блоков с атрибутами?

Автор Тема: Как лучше реализовать создание блоков с атрибутами?  (Прочитано 3031 раз)

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

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

  • ADN OPEN
  • ****
  • Сообщений: 453
  • Карма: 1
Здравствуйте!

Прошу подсказать какой вариант реализации на ваш взгляд лучше.

Задача: нужно создать блоки с атрибутами для простановки условных обозначений.

Различия-каждый тип блока позиции должен иметь свою форму(геометрическую), свой слой, разный тип линий, разный набор атрибутов и свое имя для каждого типа(Block1, Block2 ...).
Сходства-каждый из этих типов позиций служит для указания позиции на чертеже и хранения информации.

Я сомневаюсь между двумя вариантами решения:

1 Создать класс ItemMark как базовый. В нем создать поля, общие для всех типов блока позиции, и общие методы GetInsertPointFromUser и SetCurrentItemNumber. Создавать классы для других типов блоков и наследовать в каждом из них ItemMark, используя его поля и методы и расширяя его функциональность специфическими для каждого нового класса методами.

2 Создать единый класс для всех типов позиций, а все различия между типами блоков позиций учесть за счет внутренней логики (много разных if (){}).

Каких-то указаний и рекомендаций в доках по API я не нашел.

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Каких-то указаний и рекомендаций в доках по API я не нашел
И не найдете. Это не относится к AutoCAD API - это принципы ООП и варианты исполнения. Понятие "лучший вариант" тут может вообще быть неуместно, так как это зависит от опыта и стилистики программиста

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Я сомневаюсь между двумя вариантами решения:
Ну первый вариант выглядит (IMHO) лучше. Только вот удастся ли это сделать - вот в чем вопрос. Начни с отдельного метода для вставки конкретного блока, затем второго, а дальше уже сможешь сообразить что можно выделить в базовый класс и имеет ли смысл это делать.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Atomohod
Забыл написать самое главное. Если пойдёшь по пути программного создания блоков, то код разрастётся неимоверно и никто на этом форуме не сможет тебе с ним помочь - никто не будет тратить кучу времени на чтение полотнищ бессмысленного кода.
Так что блоки должны быть созданы вручную средствами AutoCAD и хранится в отдельном файле (файлах).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн trir

  • ADN Club
  • ****
  • Сообщений: 470
  • Карма: 63
Использовать Map 3D -> Стили