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

Создание надписи на чертеже (NX OPEN)


Gostus

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

Привет форумчане! Возникла необходимость создавать ассоциативные надписи на чертеже (NOTE), которые находятся под другими надписями.

Стандартный функционал предлагает:

1. Задать саму надпись

gallery_33849_191_37488.jpg

 

2. Задать параметры отступов от базовой надписи (которые не  сохраняются при повторном вызове)

gallery_33849_191_44383.jpg

 

3. Выбирать базовую надпись, при перемещении которой будет перемещаться и созданная.

 

Чтобы не повторять по сто раз одни и те же действия попробовал написать программу, которая сама вставляет нужную надпись с требуемыми отступами, после выбора базовой.

Но возникла проблема: вставляемая надпись стала единой с базовой, т.е. при изменении базовой меняются обе.

Был бы Вам признателен за хоть какие-нибудь мысли по этому поводу.

Текст проги (NX OPEN API)

 

#include <NXSigningResource.c>
#include <uf.h>
#include <uf_ui.h>
#include <uf_obj.h>
#include <uf_draw.h>
#include <uf_draw.h>
#include <uf_drf.h>
void ufusr(char *param, int *retcode, int paramLen)
{
    
    tag_t note_sel, note_ins, view;//определяем переменные
    double cursor[3], note_pos[3], upper_left[3], length, height;
    char *note_text[1] = {"OPPO.SIDE"};


    UF_UI_selection_options_t opts;//структура выбора
    
    UF_UI_mask_t mask = {UF_drafting_entity_type, 1&2, UF_UI_SEL_NOT_A_FEATURE};//задание параметров выбора
    
    int response = 0, error = 0;//начальные параметры ф-ций
    
    opts.num_mask_triples = 1;//выбор ТОЛЬКО одного типа элементов
    
    opts.mask_triples = &mask;
    
    opts.scope = UF_UI_SEL_SCOPE_WORK_PART;
            (  UF_initialize () );
        
    error = UF_UI_select_single("Выберите надпись NOTE или Identification Symbol", &opts, &response, &note_sel, cursor,    &view) ;
        
    if (!error &&response != 1 && response != 2) //Если не нажата кнопка CANCEL or BACK

            //записываем координаты верхнего левого угла, длину и высоту выбранного NOTE
        UF_DRF_ask_annotation_text_box(note_sel, upper_left, &length, &height);
            
            //Задаем координаты надписи OPPO.SIDE относительно выбранных нотесов
        note_pos[0] = upper_left[0];
        note_pos[1] = upper_left[1]-6;
        note_pos[2] = upper_left[2];
        

            //Вставляем OPPO.SIDE
        UF_DRF_create_note (1, note_text, note_pos, 0, &note_ins);

            //Задаем ассоциативность
        UF_DRF_add_assortpart_to_ann(note_sel, 1, &note_ins);
            //Тушим подсветку    
        UF_DISP_set_highlight(note_ins,0);
        UF_DISP_set_highlight(note_sel,0);
    
        UF_terminate();
        
}  

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


Может поможет примеры:

ufd_drw_assoc_note.c

Также есть пример с UDO - тяжелая артиллерия (надо внимательно прочитать как создавать проект и осуществлять линковку)

ufx_udo_application.c

ufx_udo_methods.c

который позволяет создать ассоциативную надпись к виду

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

Может поможет примеры:

ufd_drw_assoc_note.c

Также есть пример с UDO - тяжелая артиллерия (надо внимательно прочитать как создавать проект и осуществлять линковку)

ufx_udo_application.c

ufx_udo_methods.c

который позволяет создать ассоциативную надпись к виду

 

Благодарю!  Буду изучать.

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

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

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

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

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

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

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

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

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

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

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




×
×
  • Создать...