Перейти к публикации

NXOpen 10.0 Enumeration Block Initial Value : Как задать исходное значение в блоке ENUM


Siniy80

Рекомендованные сообщения

Всем доброго времени суток.

 

Давно работал в компании, которая оперировала UG (еще 1 nx кажется только появился, когда я уходил) и мы всем отделом писали нужные мелкие программки C++|UIstyler. Сейчас уже для себя решил дописать/переписать несколько программ уже на C#|UIStyler и столкнулся со следующей проблемкой: не могу выставить нужное мне значение в списке (enum) при инициализации диалога. Вот инициализация:

    public void initialize_cb()
    {
        try
        {
            string str=null;
            bool HasAttr=false;
            bool HasNoAttr = false;
            string[] FormatNames = new string[] { "A4", "A3", "A2", "A1", "A1x3", "A0" };
            DrwTypes = (NXOpen.BlockStyler.Enumeration)theDialog.TopBlock.FindBlock("DrwTypes");
            DrwTypes.Label = "Формат чертежа";
            DrwTypes.SetEnumMembers(FormatNames);

            AlbumOrientationToggle = (NXOpen.BlockStyler.Toggle)theDialog.TopBlock.FindBlock("AlbumOrientationToggle");
            AlbumOrientationToggle.Show = false;

            TxtInsBtn = (NXOpen.BlockStyler.Button)theDialog.TopBlock.FindBlock("TxtInsBtn");
            TxtInsBtn.Label = "Заполнить текст штампа";

            theSession.ListingWindow.Open();
            

            if (theSession.Parts.Display.DrawingSheets.ToArray().Length > 0) theUFSession.Draw.SetDisplayState(2);


            theUFSession.Attr.GetStringUserAttribute(theSession.Parts.Display.Tag, "FT_"+theSession.Parts.Display.DrawingSheets.CurrentDrawingSheet.Name, UFConstants.UF_ATTR_NOT_ARRAY, out str, out HasAttr);
            theSession.ListingWindow.WriteLine("|"+str+"|");
            theSession.ListingWindow.WriteLine(DrwTypes.ValueAsString); // выводит значение по умолчанию заданное при создании dlx


            if (HasAttr)
            {
                theSession.ListingWindow.WriteLine("Setting to "+str);  // готовимся сменить значение на новое
                DrwTypes.ValueAsString = str;  // меняем
                theSession.ListingWindow.WriteLine(DrwTypes.ValueAsString); // Выводит НОВОЕ присвоенное значение! Но в диалоговом окне остается старое значение. Новое значение внутри списка заданных.
                //  theDialog.Show();
                //  update_cb(DrwTypes);
                //theSession.UpdateManager.DoUpdate(id1);
            }
            else
            {
                theUFSession.Attr.GetStringUserAttribute(theSession.Parts.Display.Tag, "FT", UFConstants.UF_ATTR_NOT_ARRAY, out str, out HasAttr);
                if (HasAttr) DrwTypes.ValueAsString = str;
                else HasNoAttr = true;
            }

            if (HasNoAttr)
            {
                SetFormat("A4");
            }

        }
        catch (Exception ex)
        {
            //---- Enter your exception handling code here -----
            theUI.NXMessageBox.Show("Block Styler", NXMessageBox.DialogType.Error, ex.ToString());
        }
    }

В комментариях описал два вывода в "Слуховое Окошко" =). Значение присваивается, но элемент диалога не обновляется, как в случае например DrwTypes.Label = "Формат чертежа", изменение сразу отображаться в диалоге.

Как бы ощущение, что элемент диалога просто не обновился. Поиски аналогий со старых программ через Set  и SetItemList результатов не дали: видимо отмерли. 

public class Enumeration : UIBlock

Вроде получает и возвращает свое значение через 

public string ValueAsString { get; set; }

Получить у меня получается. И вроде по выводу установить тоже. Как обновить?

Изменено пользователем Siniy80
Ссылка на сообщение
Поделиться на других сайтах


Похоже надо было просто поспать. Прошу прощения за беспокойство.  Видимо при первых тестах оставил инициализацию в  public void dialogShown_cb(). 

  public void dialogShown_cb()
    {
        try
        {
            string[] PatternNames = new string[]
             {"A4","A3","A2","A1","A1x3","A0"};
            DrwTypes.SetEnumMembers(PatternNames);

        }
        catch (Exception ex)
        {
            //---- Enter your exception handling code here -----
            theUI.NXMessageBox.Show("Block Styler", NXMessageBox.DialogType.Error, ex.ToString());
        }
    }

Ну и все что инициализировал слетало, так как это событие позже.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




  • Сообщения

    • Turgenev
      Спасибо, сейчас буду проверять. Но возникла проблема при экспорте модели. Начертил дроссель. При черчении надо было создать вспомогательную геометрию: Сегмент тороида поверх основного тороида. Он успешно экспортировался в степ модель, что мне совсем не нужно. Скрыл его в солиде и выбрал в параметрам экспорта Сборки->В активном режиме большой сборки->Не показывать скрытые компоненты. Не помогло, наверное, потому что не активировался режим большой сборки. Понизить порог включения большой сборки можно но есть ли еще варианты?
    • Viktor2004
      Разве ваш вопрос был в этом? Вы кажется инструмент привязывать хотели от приспособления
    • Sivolap36
      Нет ли у Fanuc диагностики, где было бы видно, что сейчас  ждёт привод?
    • mamomot
      Сегодня знакомимся с первым Параграфом Раздела 3 Токарная обработка Главы 8 Механическая обработка. ***** Оправка для расточки 8_3_1 Оправка для расточки.pdf
    • gudstartup
      это называется i2t перегрузка которая включает в себя 2 составляющие ток и температуру за единицу времени. не факт что ваш модуль кипит но предположительно если воздействие фактора перегрузки продолжиться то это может случиться и привод отрубается
    • Alexey8107
      Тут ключевое, "привод в сборе". Я же писал что запитывал голую плату  Ну и трактовать английский можно ну очень широко, а если уж писали японцы, да еще на англицком, то вообще трактовка становится безграничной  А если серьезно, то как по мне здесь имеется ввиду перегрузка, вычисленная по температурному датчику на большом радиаторе, ибо сейчас мы точно знаем какая авария возникает именно при токовой перегрузке "1." И кстати. Где то там еще прописано, что "1" это варнинг, а "1." это авария... Вобщем в этом руководстве можно мозг выломать пока поймешь что имеется ввиду 
    • fenics555
      на нормальных гидравлических пинолях стоят регулируемые датчики положения, и при вдавливании они выдадут ошибку, типа "патрон не разжат/зажат" или "пиноль не зажата/разжата". станок не вьедет в пиноль. На сервоприводе просто нагрузка упадет в 0 и все.  Но стойка ничего не выдаст. В авторежиме можно нашинковать много материала зря.
    • Sivolap36
      Обнаружил то, что если ввести G0 g53 A50, то едет. В рабочих не едет, а в машинных едет 
    • gudstartup
      @Alexey8107 изначально написано про перегрузку   у фанука читайте между строк этой ошибки не должно быть если привод в сборе
    • Alexey8107
      Так у меня тоже самое. Просто вы уже полезли в причины и способы устранения "Cause and troubleshooting", а я привел общее описание, что она обозначает "Meaning". А означает она именно перегрев большого радиатора, остальное это причины и способы устранения, например смахнуть пыль  Вот если они глючат, тогда будет большой БАРАБАХ. У меня такое было, сразу замена платы, ибо ну его нафиг всю обвязку перетряхивать. Плата управления, там да, далеко все не очевидно, но очевидно большую часть платы занимает импульсный источник питания на кучу напряжений, остальная часть боюсь что вообще бесполезно разбираться, ибо там на одном большом контроллере стоит страшная надпись "FANUC". Можно сушить весла...
×
×
  • Создать...