• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Как получить ссылки на все компоненты сборки (ksPart)?

Автор once, 28.01.16, 20:52:37

« назад - далее »

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

once

Здравствуйте. Столкнулся с такой проблемой. Не могу получить ссылки на все компоненты сборки. Написал нижеследующий код, казалось бы все ок, но вот получить таким образом ссылки на компоненты, созданные массивами не получается. Помогите разобраться, что не так.

public void ExternalRunCommand([In] short command, [In] short mode, [In, MarshalAs(UnmanagedType.IDispatch)] object kompas_)
{        
        _kompas = (KompasObject)kompas_;           
        if (_kompas == null)
            return;
        _doc3D = (ksDocument3D)_kompas.ActiveDocument3D();
        if (_doc3D != null && _doc3D.reference != 0)
        {
            if (_doc3D.IsDetail())
            {
                _kompas.ksError("Текущий документ должен быть сборкой");
                return;
            }
            _mainkPart = (ksPart)_doc3D.GetPart(-1);
            var pc = (ksPartCollection)_doc3D.PartCollection(true);
            ksPart part = pc.First();               
            while (part != null)
            {
                Recurse(part);
                part = pc.Next();
            }
        }
        else
        {
            _kompas.ksError("Текущий документ должен быть сборкой");
            return;
        }           
    }

private void Recurse(ksPart kp)
    {
        bool b = false;
        short iter = 0;
        var pp = (ksPart)kp.GetPart(iter);
        while (pp != null)
        {
            Recurse(pp);
            ++iter;
            pp = (ksPart)kp.GetPart(iter);
        }
    }


once

Спасибо, ошибка была в том, что я использовал API5, а надо было API7  :)