Сообщество программистов Autodesk в СНГ
ADN Club => ObjectARX => Тема начата: 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
-
Как добиться правильного формирования поля %<\AcObjProp Object(%<\_ObjId 140688600620784>%).TextString>% ?
А почему бы его именно так и не формировать, только подставить правильное значение _ObjId?
-
Да типа такого
strField.Format(_T("%%<\\AcObjProp Object(%%<\\_ObjId %I64u>%%).TextString>%%"),id.asOldId());
работает.