Атрибуты документа для чертежа.cdw

Автор anton.gorschnev, 20.02.25, 16:31:23

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

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

anton.gorschnev

Более года назад тема уже поднималась. Остановились на том что для получения массива атрибутов необходимо указывать ссылку на документ:
object[] IAttributes_ = IKompasDocument1_.Attributes[0, 0, 0, 0, 0, IKompasDocument_];
без указания на документ работает только для моделей
object[] IAttributes_ = IKompasDocument1_.Attributes[0, 0, 0, 0, 0, null];И того какие только варианты я не использовал для того чтобы прочесть атрибуты с документа чертежа результат один null, при этом через пользовательский интерфейс я атрибут вижу. Кто знает как это победить, поделитесь информацией, Компас v22.


anton.gorschnev

Делаю все вроде тоже самое,но получаю null.
IKompasDocument IKompasDocument_ = Globals.g_IApplication.ActiveDocument;
            IKompasDocument2D IKompasDocument2D_ = (IKompasDocument2D)IKompasDocument_;
           
            if (IKompasDocument2D_ != null)

            {
                IKompasDocument1 IKompasDocument1_ = (IKompasDocument1)IKompasDocument_;
                object[] IAttributes_ = IKompasDocument1_.Attributes[0, 0, 0, 0, 0, IKompasDocument_];
                if(IAttributes_!=null)
                { Debug.Print(IAttributes_.Length.ToString()); }
}


Хотя тот же самый код с документа модели читает все атрибуты.

anton.gorschnev

Итоговые костыли. С документа чертежа Компас V22 прочесть атрибуты не удалось, поэтому атрибуты перекочевали на системный вид, судя по описанию он живет всегда, на всякий случай проверяю. С вида читает и пишет атрибутику без проблем. Пробовал закинуть атрибут на связанною с чертежом модель, пишет нормально читает как правило если документ модели открыт и видимом состоянии, хотя с другими атрибутами, которые я тоже читаю с связанной модели, таких проблем не возникло. Создание своей библиотеки типов атрибутов также не помогло с чтением назначенных атрибутов на документ чертежа.
IKompasDocument2D IKompasDocument2D_ = (IKompasDocument2D)IKompasDocument_;
            IViewsAndLayersManager IViewsAndLayersManager_ = IKompasDocument2D_.ViewsAndLayersManager;
            IViews IViews_ = IViewsAndLayersManager_.Views;
            if (IViewSystem_ == null)
            {
                foreach (IView IView_ in IViews_)
                {
                    if (IView_.ViewType == LtViewType.vt_System)
                    { IViewSystem_ = IView_; break; }
                }
            }
            object[] IAttributes_ = null;
            IAttribute IAttribute_ = null;
            WeldingStructureTabl WeldingStructureTabl_ = new WeldingStructureTabl();

            if (IViewSystem_ != null)
            {
                IKompasDocument1 IKompasDocument1_ = (IKompasDocument1)IKompasDocument_;
                IAttributeType type = CreateWeldingAttributeTablType();
               IAttributes_ = IKompasDocument1_.Attributes[Key1, Key2, Key3, Key4, type.UniqueNumb, IViewSystem_];
            }