Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: Atomohod от 18-07-2018, 22:41:11
-
Здравствуйте!
Прошу подсказать какой вариант реализации на ваш взгляд лучше.
Задача: нужно создать блоки с атрибутами для простановки условных обозначений.
Различия-каждый тип блока позиции должен иметь свою форму(геометрическую), свой слой, разный тип линий, разный набор атрибутов и свое имя для каждого типа(Block1, Block2 ...).
Сходства-каждый из этих типов позиций служит для указания позиции на чертеже и хранения информации.
Я сомневаюсь между двумя вариантами решения:
1 Создать класс ItemMark как базовый. В нем создать поля, общие для всех типов блока позиции, и общие методы GetInsertPointFromUser и SetCurrentItemNumber. Создавать классы для других типов блоков и наследовать в каждом из них ItemMark, используя его поля и методы и расширяя его функциональность специфическими для каждого нового класса методами.
2 Создать единый класс для всех типов позиций, а все различия между типами блоков позиций учесть за счет внутренней логики (много разных if (){}).
Каких-то указаний и рекомендаций в доках по API я не нашел.
-
Каких-то указаний и рекомендаций в доках по API я не нашел
И не найдете. Это не относится к AutoCAD API - это принципы ООП и варианты исполнения. Понятие "лучший вариант" тут может вообще быть неуместно, так как это зависит от опыта и стилистики программиста
-
Я сомневаюсь между двумя вариантами решения:
Ну первый вариант выглядит (IMHO) лучше. Только вот удастся ли это сделать - вот в чем вопрос. Начни с отдельного метода для вставки конкретного блока, затем второго, а дальше уже сможешь сообразить что можно выделить в базовый класс и имеет ли смысл это делать.
-
Atomohod
Забыл написать самое главное. Если пойдёшь по пути программного создания блоков, то код разрастётся неимоверно и никто на этом форуме не сможет тебе с ним помочь - никто не будет тратить кучу времени на чтение полотнищ бессмысленного кода.
Так что блоки должны быть созданы вручную средствами AutoCAD и хранится в отдельном файле (файлах).
-
Использовать Map 3D -> Стили