Сделайте скидку на мой опыт в программировании в пол года на шарпе (пара часов видеоуроков по программированию в автокаде а дальше как-то сам по примерам с форумов) и пара месяцев на дельфи лет 10 назад)
var я вообще не использую, задаю предпочитаю сразу задавать нужный тип
Зачем Gem и Db? Вроде программа простейшая и мне хватило этого
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using System;
using System.Collections.Generic;
using System.Linq;
Разница как я понял вместо использования списков с координатами они просто вытаскиваются из точек через линк но с линком я знаком крайне поверхностно и такие конструкции пока не делал
var ext = new Db.Extents3d();
ext.AddPoint(point.Project(plane, Vector3d.ZAxis));
ext.AddPoint((point + vx * w + vy * h).Project(plane, Vector3d.ZAxis));
ext.AddPoint((point + vx * w).Project(plane, Vector3d.ZAxis));
ext.AddPoint((point + vx * w).Project(plane, Vector3d.ZAxis));
return ext;
тут границы определятся конечно правильно, но только в плане - вид сверху, так как по оси Z граница не лежит в плоскости текста но немного переделанный вариант вполне прошел, вот так выдает все вполне корректно
var ext = new Extents3d();
ext.AddPoint(point);
ext.AddPoint((point + vx * w + vy * h));
ext.AddPoint((point + vx * w));
ext.AddPoint((point + vy * h));
return = new Extents3d(ext.MinPoint.Project(plane, Vector3d.ZAxis), ext.MaxPoint.Project(plane, Vector3d.ZAxis));
по поводу - И я бы еще избавился от скобочек в if (mText != null) {} заменил бы на if (mText == null) return null;
тут у меня уже привычка использовать именно такой вариант, поскольку очень много используется транзакций, которые я все же предпочитаю коммитить, так как был у меня пример где я забывал коммитить и программу подвешивало, хотя там был цикл и видимо внутри него транзакция открывалась слишком много раз без закрытия, так что если вариант if (mText == null) return null использовать, то предпочитаю делать так if (mText == null){ tr.commit(); return null;} а что бы не вспоминать внутри транзакции я или снаружи просто начал везде использовать первый вариант, может зря конечно, в программах не автокадовских обычно да, использую твой вариант с ретурном.