Получение id материала из 3D модели.

Автор stboris, 14.08.08, 08:22:37

« предыдущая - следующая »

0 Пользователей и 1 гость просматривают эту тему.

stboris

Смысл задачи: есть модель детали (материал детали выбираем из МиС), из нее генерируем чертеж (материал передается в чертеж автоматом), далее создаем спецификацию и включаем этот чертеж в спецификацию, далее с помощью утилиты пытаемся получить id материала этой детали - не выходит - id определяется некорректный (каразябликами). Утилита работает корректно в том случае если в спецификацию включаем чертеж который был получен НЕ из модели, а просто нарисован в Компас-График (материал в чертеже был выбран из МиС).
Вот кусок кода для получения id материала может Кто подскажет что не так?
Любой совет тоже подойдет! Заранее спасибо...
{_______________________________________________________________________________________}
DocSpcObj:=ksDynamicArray(SpcObjParam.GetDocArr);
DocSpcParam:=ksDocAttachedSpcParam(kompas.GetParamStruct(ko_DocAttachSpcParam));
for i:=0 to DocSpcObj.ksGetArrayCount-1 do
begin
   DocSpcObj.ksGetArrayItem(i,DocSpcParam);//Получить параметры элемента в массиве.
end;
doc2D:=ksDocument2D(Kompas.Document2D);//создать документ 2Д
if doc2D<>nil then
begin
   doc2D.ksOpenDocument(DocSpcParam.fileName,true);
end;
if DocSpcParam.transmit=0 then //Признак передачи изменений объекта спецификации в подключенный к нему документ.
begin
   DocSpcObj.ksSetArrayItem(i,DocSpcParam);
   DocSpcParam.transmit;
end;
itatr:=ksIterator(kompas.GetIterator); //получить указатель на интерфейс ksIterator для навигации по объектам.
itatr.ksCreateAttrIterator(doc2D.Reference,0,0,0,0,0);//Создать итератор для перебора атрибутов объекта
s:=0;
wide:='F';
col:=itatr.ksMoveAttrIterator(wide,s);
val:=ksAttributeObject(kompas.GetAttributeObject);
if val=nil then
exit;
mas:=ksUserParam(kompas.GetParamStruct(ko_UserParam));
mas.Init();
dyn:=ksDynamicArray(kompas.GetDynamicArray(LTVARIANT_ARR));
lt:=ksLtVariant(kompas.GetParamStruct(ko_LtVariant));
lt.Init();
lt.strVal:='';
dyn.ksAddArrayItem(-1,lt);
mas.SetUserArray(dyn);
val.ksGetAttrRow(col,0,nil,nil,mas);
dyn.ksGetArrayItem(0,lt);
zn:=lt.strVal;
{_______________________________________________________________________________________}