По поводу выравнивания:
Применительно к лиспу, для начала. Вообще-то тут не только текстовые примитивы ("TEXT"), но и атрибуты тоже немного покатят Smile
Итак, поехали (для начала DXF, потом рассмотрим и ActiveX).
Нарисуем текстовый примитив "от балды" (выравнивание - влево) и сделаем (entget (entlast)) (ненужные данные пропущены):
Код:
((0 . "TEXT") (10 63.078 56.4998 0.0) (40 . 2.5) (1 . "654789") (11 0.0 0.0 0.0) (210 0.0 0.0 1.0))
для ActiveX соответственно будет:
(vlax-dump-Object (vlax-ename->vla-object (entlast)))
; IAcadText2: AutoCAD Text Interface
; Property values:
; Alignment = 0
; Backward = 0
; Height = 2.5
; InsertionPoint = (63.078 56.4998 0.0)
; TextAlignmentPoint = (0.0 0.0 0.0)
; TextGenerationFlag = 0
; TextString = "654789"
Меняем (руками!) выравнивание, например, на "вправо":
_$ (entget (entlast))
((0 . "TEXT") (10 52.8418 56.4998 0.0) (40 . 2.5) (1 . "654789") (11 63.078 56.4998 0.0))
_$ (vlax-dump-Object (vlax-ename->vla-object (entlast)))
; IAcadText2: AutoCAD Text Interface
; Property values:
; Alignment = 2
; Backward = 0
; Height = 2.5
; InsertionPoint = (52.8418 56.4998 0.0)
; TextAlignmentPoint = (63.078 56.4998 0.0)
; TextGenerationFlag = 0
; TextString = "654789"
Как видно, 10 и 11 группы при изменении выравнивания поменяли значения, в частности, в 11 группу ушли значения из 10 (соответственно для ActiveX - InsertionPoint и TextAlignmentPoint).
Этот момент надо учитывать при выполнении программного выравнивания. Для атрибутов все аналогично.