Чтобы тема не зачахла в виду непонимания того, о чём я спросил, привожу более развёрнутую информацию...
Когда пользователь создаёт в графическом интерфейса менеджера подшивок новое пользовательское свойство уровня подшивки или листа, то оно добавляется в набор пользовательских свойств объекта AcSmSheetSet. Однако аналогичный набор имеется и у групп листов IAcSmSubset, а так же непосредственно у листов AcSmSheet подшивки. Это обусловлено тем, что все перечисленные выше классы наследуются от IAcSmComponent. Соответственно имеется возможность создавать пользовательские свойства групп листов, а так же дополнительные, индивидуальные пользовательские свойства, специфичные для конкретного листа (в случае такой необходимости). Программно всё это выполняется успешно. Но, как говорится, вернёмся к нашим баранам: поля (Fields)...
Когда пользователь создаёт в графическом интерфейса менеджера подшивок новое пользовательское свойство уровня подшивки (Sheet), AutoCAD генерирует для поля (Field) такой код:
%<\AcSm SheetSet.PropertyName>%
где вместо PropertyName подставляется имя конкретного пользовательского свойства уровня подшивки.
Когда пользователь создаёт в графическом интерфейса менеджера подшивок новое пользовательское свойство уровня листа (Sheet), AutoCAD генерирует для поля (Field) такой код:
%<\AcSm Sheet.PropertyName>%
где вместо PropertyName подставляется имя конкретного пользовательского свойства уровня листа.
Поскольку в подшивке присутствует множество групп листов (AsSmSubset), то в коде поля должен быть как-то указан конкретный AsSmSubset. Логично предположить, что идентификация должна выполняться при помощи идентификатора IAcSmObjectId, по аналогии тому, как в AutoCAD происходит считывание значения некоторого свойства для конкретного примитива: там для этого используется ObjectId.
Например, для того, чтобы сослаться в поле на значение длины некоторой линии, AutoCAD создаёт примерно такое поле:
%<\AcObjProp Object(%<\_ObjId 2128461592>%).Length \f "%lu2%pr2">%
где 2128461592 - это конкретное числовое значение идентификатора ObjectId, а Length - имя искомого свойства (\f "%lu2%pr2" - это форматирование, которое пока не представляет интереса для пользовательских свойств).
Руководствуясь некоторой логикой, я могу предположить, что для группы листов (AsSmSubset) код поля должен был бы выглядеть примерно так:
%<\AcSmObjProp Object(%<\_ObjId 2128461592>%).PropertyName>%
где 2128461592 - это конкретное числовое значение идентификатора IAcSmObjectId, а PropertyName - имя искомого свойства.
Объекты класса IAcSmObjectId имеют такие идентификаторы: HashCode, представленный целым числом, и Handle, записанный в виде GUID. Например, для одного из пользовательских свойств, добавленных мною к группе листов, их значения были такими:
HashCode = 47463329
Handle = g57EF20E1-B173-4F1E-8C88-0EBA806AFCB5
Имя добавленного в группу листов пользовательского свойства было таким: sh_prop_2. Соответственно код поля, должен был бы быть примерно таким:
%<\AcSmObjProp Object(%<\_ObjId 47463329>%).sh_prop_2>%
ну, или на крайний случай (что весьма маловероятно), таким:
%<\AcSmObjProp Object(%<\_ObjId g57EF20E1-B173-4F1E-8C88-0EBA806AFCB5>%).sh_prop_2>%
Однако оба варианта показывают вместо значений ####.
Варианта два: либо предположенный мною синтаксис поля групп листов не верен (тогда прошу указать правильный варинат), либо в AutoCAD вовсе не предусмотрена возможность создавать поля ни для произвольных пользовательских свойств подшивки, ни для групп листов в частности (самый хреновый варинат).