Попробую объяснить задачу по-операциям:
Объясняю еще раз:
1) Создаётся блок Test()
Он у вас НЕ создается. Блок не появляется из воздуха - он сначала должен быть добавлен к базе чертежа. Именно оттуда вы и пытаетесь его взять в коде в этой строке:
Db.BlockTableRecord btr = (Db.BlockTableRecord)tr.GetObject(bt["Однолинейная"], Db.OpenMode.ForRead);
Но его там нет, так как, повторяю - ВЫ ЕГО НЕ СОЗДАЛИ! Чтобы у вас все заработало вам нужно добавить строчку tr.Commit() в ваш метод TEST()
2) Прилипает к мышке
3) Вставляется в чертёж кликом мышки
Вот это все начнет работать как только вы добавите эту долбанную строчку, про которую вам уже две страницы пишут
Представленный мной код не подходит, т к подразумевает, что блок Test() уже находится на чертеже, отсюда ошибка с отсутствием блока.
И вообще прежде чем писать плагины под автокад нужно научится работать в автокаде! Есть понятие "Описание блока" (BlockTableRecord), а есть понятие "Вставка блока" (
BlockInsert BlockReference). А вы даже не понимаете значение слов "блок уже находится на чертеже"
З.Ы. И если вы не сделаете того, о чем вам говорят (добавить строчку tr.Commit()) и напишите еще одно подобное сообщение, то я уверен, что администрация этого терпеть дальше не будет