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

Узловые точки note (или annotation)


Ug_user

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

Доброго дня!

Очень хочу :wallbash: программно получить координаты узловых точек ломаной полилинии, которой представляется надпись (объект note или annotation), неважно - в Drafting-e, Modeling-e или Manufacturing-e. Вариант с экспортом в CGM и последующим импортом не предлагать...

Была ли у кого-нибудь подобная задачка?

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


Доброго дня!

Очень хочу :wallbash: программно получить координаты узловых точек ломаной полилинии, которой представляется надпись (объект note или annotation), неважно - в Drafting-e, Modeling-e или Manufacturing-e. Вариант с экспортом в CGM и последующим импортом не предлагать...

Была ли у кого-нибудь подобная задачка?

Была сделана

Эта инфа есть в структурах которые возвращают драфтинговые функции

Следует также помнить что полилиний может быть несколько

и может быть все координаты лежат в одном одномерном массиве

В общем давно писал

Посмотри assoc_curve_tag-Это note

UF_DRF_label_info_p_t l_data=NULL;

irc=UF_DRF_ask_label_info(assoc_curve_tag, tmp3, &l_data);

if(irc) throw ug_err(THIS_FILE, __LINE__, irc);

l_data->leader_info->leader_pnts->num_segments;

&l_data->leader_info->leader_pnts->segment_pnts[0];

&l_data->leader_info->leader_pnts->segment_pnts[3];

UF_DRF_free_label(&l_data);

Еще посмотри

UF_DRF_object_assoc_data_p_t a_data=NULL;

UF_VIEW_type_t type; UF_VIEW_subtype_t subtype;

irc=UF_DRF_ask_associativity_data(assoc_curve_tag, &num, &a_data);

if(irc) throw ug_err(THIS_FILE, __LINE__, irc);

irc=UF_VIEW_ask_type(a_data[0].object_view, &type, &subtype);

if(irc) throw ug_err(THIS_FILE, __LINE__, irc);

if(type == UF_VIEW_DRAWING_MEMBER_TYPE)

{

irc=UF_VIEW_map_model_to_drawing(a_data[0].object_view,

a_data[0].assoc_point, a_point);

if(irc) throw ug_err(THIS_FILE, __LINE__, irc);

}

UF_free(a_data);

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

Была сделана

Эта инфа есть в структурах которые возвращают драфтинговые функции

Следует также помнить что полилиний может быть несколько

и может быть все координаты лежат в одном одномерном массиве

В общем давно писал

Посмотри assoc_curve_tag-Это note

UF_DRF_label_info_p_t l_data=NULL;

irc=UF_DRF_ask_label_info(assoc_curve_tag, tmp3, &l_data);

if(irc) throw ug_err(THIS_FILE, __LINE__, irc);

l_data->leader_info->leader_pnts->num_segments;

&l_data->leader_info->leader_pnts->segment_pnts[0];

&l_data->leader_info->leader_pnts->segment_pnts[3];

UF_DRF_free_label(&l_data);

Еще посмотри

UF_DRF_object_assoc_data_p_t a_data=NULL;

UF_VIEW_type_t type; UF_VIEW_subtype_t subtype;

irc=UF_DRF_ask_associativity_data(assoc_curve_tag, &num, &a_data);

if(irc) throw ug_err(THIS_FILE, __LINE__, irc);

irc=UF_VIEW_ask_type(a_data[0].object_view, &type, &subtype);

if(irc) throw ug_err(THIS_FILE, __LINE__, irc);

if(type == UF_VIEW_DRAWING_MEMBER_TYPE)

{

irc=UF_VIEW_map_model_to_drawing(a_data[0].object_view,

a_data[0].assoc_point, a_point);

if(irc) throw ug_err(THIS_FILE, __LINE__, irc);

}

UF_free(a_data);

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

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

К сожалению....

Предложенные процедуры показывают только точки на выносках.. Я слепил пример, с подсветкой points.

Тем не менее, спасибо, Три Восьмерки!

Для объекта типа note выдает 0 ассоциативных объектов. будем искать...

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

Есть такой вариант:

1. Определяешь фонт

2. Определяешь какой символ надо "раздраконить"

3. Разкомпилировать фонт с помощью утилиты ugfontc.exe, получим текстовый файл с координатами точек каждой буквы.

4. В разкомпилированном файле находим нужный CHAR и считываем точки LM LD (Я так понимаю, что они в относительных координатах каких-то сделаны)

5. Ну и чего-нибудь сделать с ними (с координатами)

Сам не проверял, придумал на лету. Если получиться сообщите.

Удачи.

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

Для avd - Это как шутка физиков-ядерщиков - "Предложите самый дорогой способ определения постоянной Планка"..

Спасибо всем, я нашел решение! UF_DRF_render_text.

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

Для avd - Это как шутка физиков-ядерщиков - "Предложите самый дорогой способ определения постоянной Планка"..

Спасибо всем, я нашел решение! UF_DRF_render_text.

Видимо невнимательно прочитал пост

Такую тоже функцию знаю

Ты видно что-то типа "резиновой нити" пишешь или как это в UG называется Overlay Graphic Primitives

Как по другому эту функцию использовать не очень понятно

В общем тут могу посоветовать не забыть что в фонтах могут быть дуги

Хотя я не одного фонта с дугами так и не встречал

но в спец символах дуги есть

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Марсель
      Прошу прощения. А.С. Иванов Конструируем машины. Шаг за шагом.
    • djrandom
      Что интересно, говорят, что в eDrawings файл открывается....
    • MFS
      Собственно сабж - мне нужно пообщаться, кто работает, работал, имеет знакомых на ЛОМО - большая просьба написать тут или в личку. Заранее спасибо!
    • Девочка_конструктор
      Уважаемые форумчане! Будьте добры, подскажите пожалуйста, на что мне обратить внимание для устранение следующего бага? Настраиваю сетку в FS - глобальную сетку в ручном режиме, базовую сетку, затем локально задаю наиболее тепловыделяющие элементы, маленьких габаритов. Размеры ячеек получаются оптимальными, на каждую толщину твердого тела приходится примерно по 3-4 слоя сетки. При анализе результата - сетка выдает корпус как какой-то тонкостенный элемент. Где-то местами вообще образовываются пропасти, щели, сквозь которые видны поверхности, находящиеся с противоположной стороны.  На рисунке слева - сетка, которая у меня получается. На рисунке справа - сетка + твердое тело.  Пространство, которое должно быть заполнено, почему-то становится пустым. Я проверяла сопряжения между деталями, там все хорошо, интерференции нет. Если у кого-то была похожая проблема, опишите пожалуйста, как вы с ней справлялись.     Рисунок    
    • MFS
      Вот хороший блог: https://blog.bolt.io/category/teardown/. Еще довольно много в английском ютубе, ключевое слово "teardown" - можно найти много всякого интересного.
    • Artem CAD-is
      "Sheduler" - как понятно из названия, запускает проект по таймеру. Куда интереснее работа с   "Folder Watcher". По своей сути это классический файловый обмен между ПО. Суть его заключается в следующем - DW с определенным периодом опрашивает папку, если в ней появляется документ формата XML с определенной структурой, он его читает и если все хорошо и DW может выполнить данный запрос, то этот XML переносится в папку с положительно отработанными документами, иначе в Error. Структура XML документа полностью описана в документации к DW. Она отличается в зависимости от задачи - мы можем запустить новую итерацию проекта, или продолжить выполнение уже запущенного (перевести в другую стадию проект).  Если коротко, то XML должен выглядеть следующим образом:    Такой вид XML имеет если мы создаем новую итерацию проекта (запускаем заново). Про WorkFlow очень много писать, лучше в отдельной заметке опубликую данный материал. Скажу одно – что любой процесс имеет свои стадии. К примеру процесс утверждения:   Каждый этап характеризует состояние данного процесса, и регулирует зависящие объекты процесса согласно прописанным правилам процесса. Основные операции, которые должны совершаться в автоматическом режиме, должны происходить на переходе из одного состояния в другой. Так же и здесь –  в проекте DW пользователь сам определяет процесс утверждения. Он может быть каким угодно, он может останавливаться и ждать пользователя, моет автоматически переходить между состояниями в зависимости от триггеров или событий. В XML я указал что мне нужно создать новую итерацию проекта «Login» и перевести его в состояние «Release»? при этом заполнить пользовательскую форму согласно значениям, в полях данных. Таким образом можно запускать проекты не только из ПО DW, но и из других систем предприятия, к примеру, ПО 1С очень хорошо умеет генерировать и работать с XML документами. Остальную логику и процесс вы сами без труда напишете. Удачи!
    • IgP
    • soulnuun
      @the Devil incarnate действительно так, благодарю!  
    • madalik
      Мне неоднократно помогло для такого случая следующее - в диалоге открытия ЧЕРТЕЖА можно выбрать листы для загрузки, отметив их галочками. Так можно открыть не все листы в документе, а поштучно. И если нормально открылось - удалить в чертеже другие листы и сохранить только текущий лист (ы) в другой документ. Предварительно на сам проблемный документ нужно поставить атрибут "только для чтения", чтобы случайно не затереть его. Обычно оказывается, что битым является 1-2 листа, и их остается перечертить, а остальные можно спасти.   Если речь о модели или сборке - можно попробовать открыть их чертеж, а из него вызвать модель/сборку, иногда прокатывает. Либо открыть сборку в сокращенном режиме, а из нее  модель - пару раз так открылись детали, которые напрямую Солид не открывал. И наоборот - открыть все детали из сборки, потом саму сборку
    • IgP
      Сначала, надо ответить на простой вопрос: SW - 3.14ратский, или нет ?
×
×
  • Создать...