Сообщество программистов Autodesk в СНГ

ADN Club => ObjectARX => Тема начата: alex-63 от 23-11-2022, 11:10:45

Название: форматирования поля AcFdMakeFieldCode
Отправлено: alex-63 от 23-11-2022, 11:10:45
День добрый.
Пример
https://adn-cis.org/programmnoe-dobavlenie-polya-k-tekstu.html

У меня Acad2014 x64  MSVC 2010
Вопрос по формированию поля  :
AcFdMakeFieldCode(id,(AcDbEvalNodeId)0,_T("TextString"),AcFdEval::kObjFieldNone,_T(""),(AcHyperlink*)NULL,(ACHAR*&)strField);
У меня почему то не совсем адекватно работает этот пример т.к :
После выполнения кода поле  получается
%<\AcObjProp Object(%<\_ObjId 140688600620784>%).Backward \f "%bl2">%
И если зайти в редактор текста и просмотреть Field  поле стане No/
А должно быть:
%<\AcObjProp Object(%<\_ObjId 140688600620784>%).TextString>%
Вопрос:  Что обозначает 2 ой аргумент cFdMakeFieldCode  ?( это  номер свойства  ?)
Из helpa
blockParamId   Input block parameter ID if the object is a dynamic block or block reference and the property is a dynamic block property
0   соответствует -> Backward-> Backward
1   соответствует -> Contents-> TextString
Замена  второго аргумента на (AcDbEvalNodeId)2 ничего не  меняет.
Как добиться правильного формирования поля %<\AcObjProp Object(%<\_ObjId 140688600620784>%).TextString>% ?
Как поведение программы в других версиях AutoCad? :o
Название: Re: форматирования поля AcFdMakeFieldCode
Отправлено: Александр Ривилис от 25-11-2022, 07:02:55
Как добиться правильного формирования поля %<\AcObjProp Object(%<\_ObjId 140688600620784>%).TextString>% ?
А почему бы его именно так и не формировать, только подставить правильное значение _ObjId?
Название: Re: форматирования поля AcFdMakeFieldCode
Отправлено: alex-63 от 25-11-2022, 13:43:58
Да типа такого
strField.Format(_T("%%<\\AcObjProp Object(%%<\\_ObjId %I64u>%%).TextString>%%"),id.asOldId());
работает.