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

Реализация Grip приложения


alexei-ilin

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

FFF - не проходи мимо!

Предлагается решить интересную задачу средствами UG/OPEN_GRIP:

Необходимо присвоить строковым переменным значения атрибутов Part'а (DB_PART_NAME и FORMAT) и прописать имя Part'а в поле основной надписи на чертеже.

Какие будут предложения, господа?

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


ВНЯВ ВАШЕЙ МОЛЬБЕ, alexei-ilin, ОСТАНОВИЛСЯ, СТРЯХНУЛ ПЫЛЬ с GRIP'а! И вот что наковырял.

Вкратце, это выглядит так:

1) с помощью &ATTVL находим значение нужного атрибута

sDB_PART= &ATTVL(&PARATT,'DB_PART_NAME',IFERR,err_n5:)

(если атрибут не извлеакется, то переходим на метку err_n5:)

2) отрисовываем строку в нужном месте чертежа

nDB_PART= NOTE/X,Y,sDB_PART

внешним видом текста управляете с помощью GPA-символов

&ENSITE, &CSIZE и др.

цвет можно изменить текста так:

&COLOR(nDB_PART)= &RED

Но больше полезен в этом деле будет участник этого же форума Kolesov. Он уже делал (и, наверняка, уже сделал) спецификацию, в которой использовались и атрибуты.

Со своей стороны готов помочь Вам по мере сил.

Если я что-то не так понял и у Вас остались вопросы -- всегда к Вашим услугам.

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

FFF, большое спасибо за поддержку!

К этому моменту доковырял до:

number/wid

string/atv(1,132)

atv(1)=&ATTVL(PART,'DB_PART_NAME') - считывание атрибута из File->Prop...

drawv/,,,,,wid - считывание параметра Length формата чертежа

&TYPCLR(TYPE,25,SUBTYP,1,PROP,0)=3 - задание цвета текста

x=wid-90

y=35

NOTE/x,y,'<C1.8>'+atv(1)

А вот теперь-таки самое интересное!

Допустим переменная atv(1) - простое составное предложение. С разбивкой предложения по словам - проблем нет (FNDSTR(atv(1),' ',1)), а как быть с переносом слов внутри поля штампа?! Я пока придумал вывести на экран окно, в котором пользователь вводит имя part'а с необходимыми знаками переноса (например: обмотка трансфор-матора). Чего будем делать?

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

А вот теперь-таки самое интересное!

Допустим переменная atv(1) - простое составное предложение. С разбивкой предложения по словам - проблем нет (FNDSTR(atv(1),' ',1)), а как быть с переносом слов внутри поля штампа?! Я пока придумал вывести на экран окно, в котором пользователь вводит имя part'а с необходимыми знаками переноса (например: обмотка трансфор-матора). Чего будем делать?

<{POST_SNAPBACK}>

<noindex>http://www.rsdn.ru/Forum/Message.aspx?mid=657080&only=1</noindex>

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

При написании программы по вставки форматики штампа я столкнулся с этой проблемой, кроме этого возникла проблема, а как заполнять спецификацию для стандартных элементов ведь их необходиомо вставлять 3 способами:

1 Болт М12-8gх45.58.016 ГОСТ 7796-70 в одну строку

2 Надпись в две строки

Болт М12-8gх45.58.016

ГОСТ 7796-70

3 Болты ГОСТ 7796-70 (1 строка)

......

М12-8gх45.58.016 (последующие строки)

В связи с тем что значения атрибута не возможно разбить на несколько строк и чтобы в последующем эти значения автоматически обновлялись в спецификации было предложено 3 атрибута

1 DB_PART_DESC ( для значения Болт)

2 DB_PART_DESC_2 ( для значения М12-8gх45.58.016 )

2 DB_PART_DESC_3 ( для значения ГОСТ 7796-70 )

ПО этому принципу происходит заполения и рамки форматки

$$ ПРОВЕРКА НА НАЛИЧИЕ ТРЕТЬЕГО НАИМЕНОВАНИЕ

IFTHEN/name_3(1) <> 'Наименование 3 - пусто'

y38 = y6 + 22

NOTE/x38,y38,'<W@DB_part_desc3>'

y38 = y6 + 28

NOTE/x38,y38,'<W@DB_part_desc2>'

y38 = y6 + 33

NOTE/x38,y38,'<W@DB_part_desc>'

ELSE

$$ ПРОВЕРКА НА НАЛИЧИЕ ВТОРОГО НАИМЕНОВАНИЕ

IFTHEN/name_2(1) <> 'Наименование 2 - пусто'

y38 = y6 + 24

NOTE/x38,y38,'<W@DB_part_desc2>'

y38 = y6 + 31

NOTE/x38,y38,'<W@DB_part_desc>'

ELSE

IFTHEN/name_2(1) == 'Наименование 2 - пусто'

y38 = y6 + 28

NOTE/x38,y38,'<W@DB_part_desc>'

ENDIF

ENDIF

ENDIF

PS

Спецификация работает и пользователи довольны

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

Ребята, всем спасибо!

Всё ясно. Кто желает продолжить тему, пишите. Тем более, что скорее всего придётся столкнуться с написанием ряда подобных программ - возможно будут вопросы.

Удачи!

Ссылка на сообщение
Поделиться на других сайтах
  • 2 месяца спустя...

А вот еще вопрос. Модель создается в отдельном файле, чертеж в отдельном. Как поместить ссылку на аттрибуты, которые находятся в файле модели.

<W@DB_part_name> - как я понял атрибут берется с текущего ффайла

<W!partfile@DB_PART_NAME> - атрибут берется с файла "partfile"

А как сделать так, чтобы помещалась ссылка не на определенный файл, а на какойлибо, с которого создается чертеж.

т.е. заранее не известно имя файла "partfile"

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

Для того чтобы выцепить "part attribute" из другого компонента придется писАть следующую конструкцию <W!378@ATTR_NAME> - где 378 - это таг ( tag ) компонента (см документацию по UgOpen API). Если средствами GRIP-a не удастся выцепить этот таг, то тогда я даже не знаю что и посоветовать ...

Regardzzz ...

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

Если уж очень печет именно GRIP а не Си, то можно как бы дописать свои GRIP функции на Cи. Т.е. можно через GRIP вызвать Си и наоборот. А в GRIPe можно оформить что-то типа библиотеки. Правда, вызов всегда через CALL. Например я так диалоговые окошки оформлял, всякие вещи которые GRIP не мог (уж очень он стар). Хотя все равно, если что-то чуть серьезнее - то это Си.

Вот в старых версиях UG на Си (и на моей v17) нет возможности вписать fillet по трем кривым, а на GRIPe - есть. Там я наоборот - вызывал из Си GRIP подпрограммку.

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

to niki

Да не обязательно через таг, можно и через имя instanse (или части, или компонента - не помню). Интерактивно это что-то типа annotation->object attribute -> выбираешь компонент, в данном случае его part attribute интерпретируются как variable string для объекта компонента.

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

2 _oleg

Ух ты! Сколько лет в UG работал, а не знал, что есть такой зацеп за аттрибут ( <Wcomponent_name@attribute_title> ) ... Спасибо! :clap_1:

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

Если уж очень печет именно GRIP а не Си, то можно как бы дописать свои GRIP функции на Cи

<{POST_SNAPBACK}>

Дело в том, что в програмизме, в т.ч. на Си не силен :( (давным-давно в институте имел опыт программирования и то без объектов)

Уверен, что все было бы гораздо проще сделать на Си.

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

вот еще момент, как можно сделать 2-х этажный текст

атрибут name=<TБолт М12-8gх45.58.016!ГОСТ 7796-70>

собс-но ссылка на атрибут <W&@name>

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

2 Z-MAN & _oleg

Вот это да! Что-то я отстал от жизни с атрибутами. Откуда, если не секрет, вот это <W&@name> взято? Неужели из справки?

Regardzzz ..

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

2 Z-MAN & _oleg

Откуда, если не секрет, вот это <W&@name> взято? Неужели из справки?

<{POST_SNAPBACK}>

угу. в хелпе так написано и еще коечто есть. к примеру, мона делать дроби для графы материал

name = Лист <Rчислитель!знаменатель>

<W&@name>

Ссылка на сообщение
Поделиться на других сайтах
Z-MAN большое спасибо за новую информацию по втавки атрибутов в штамп форматки.
Ссылка на сообщение
Поделиться на других сайтах

Перенос текста значения аттрибута на другую строку, причем ассоциативно - наверное через KBE (Class NOTE). С v18 (а может чуть позже) там появилась возможность опрашивать атрибуты части. Т.е . делать через <W...@...> нельзя, надо напрямую опрашивать. Есть правда несколько но... Я KBE в 17 попробовал - уж очень он там глючный - базу части гробил на раз, регенерация частично не проходила, т.е. авторезультаты все равно приходилось перепроверять. Ну а в данном случае, при работе со стрингами, - работал этот KBE только с ACSII. Может сейчас что-то и изменилось.

Была правда одна фишка - ширина теста - задавалась Annotation Editor. Т.е. можно было задать ширину текста (например 80 мм) и системе сама выполняла перенос. Давным-давно это работало только на станции (на NT нет). Может в NX2...4 и на NT такое пройдет.

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

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

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

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

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

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

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

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

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

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

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




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