Официальный форум российского программного комплекса T-FLEX PLM


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
Работа со спецификацией через API
 
Здравствуйте!

Подскажите, пожалуйста, каким образом через API можно обратиться к спецификации (получить значение, добавить строку). Если возможно - с кусочком кода.
 
// Document doc - где находится спецификация
foreach (Text text in doc.Texts){
// По идее надо ставить тип спецификации,
// но почему то определяется как TextType.Undefined
if (text.SubType == TextType.Undefined){
BOMObject b = text as BOMObject;
...
...
}
}
Изменено: roand - 06.06.2009 10:25:10
 
По адресу X:\Program Files\T-FLEX\T-FLEX CAD 11\Program\BOMExport\ есть 2 "макроса". Немного можно почерпнуть из них...
Кто ищет - тот всегда найдет!
 
Коды для получения объекта спецификации и его обновления:

Код

class Specification
{
    public static void BOMProcess(BOMObject bom_obj)
    {
        bom_obj.Document.BeginChanges("Обработка спецификации.");

        bom_obj.Refresh(true);//Обновляем все записи из файла сборки

        bom_obj.BeginEdit();

        //тело метода

        bom_obj.EndEdit();

        bom_obj.Refresh(false);//обновляем только спецификацию

        bom_obj.Document.EndChanges();
    }


    public static void Спецификация()
    {
        Document document = TFlex.Application.ActiveDocument;

        if (document == null)
            return;

        foreach (Text textobj in document.Texts)
        {
            if (textobj is BOMObject)
            {
                BOMObject bom_obj = (BOMObject)textobj;

                if (!bom_obj.ReportFileLink.IsEmpty)//bom_obj не принадлежит непосредственно спецификации,
                                                                 //т.е. принадлежит документу сборки
                {
                    //Запуск документа спецификации
                    Document spec_doc = TFlex.Application.OpenDocument(bom_obj.ReportFileLink, true, false);
                    if (spec_doc != null)
                    {
                        ModelObject textobject = spec_doc.GetObjectByID(bom_obj.ReportID);

                        if (textobject is BOMObject)
                        {
                            bom_obj = (BOMObject)textobject;
                            Specification.BOMProcess(bom_obj);
                        }
                    }
                }
                else//bom_obj принадлежит спецификации непосредственно
                {
                    Specification.BOMProcess(bom_obj);
                }
            }
        }
    }
}

Изменено: Brom25 - 22.10.2009 19:13:50
Кто ищет - тот всегда найдет!
Страницы: 1