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

Изучаем Toolkit


Sergey___1978

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

Я так понимаю, что данным кодом Вы меняете текст в заметки на &xsec_name (&view_scale)?

Мне кажется, что этого не достаточно.

Насколько я помню, у заметок с именем вида нужно отключить опцию  Перенос текста и изменить ее размер, чтобы текст влазил в одну строку. Думаю, что это и надо пытаться делать в программе/макросе.

Про эту опцию наверно у Onizuka лучше спросить.

Я понял пока только одно, что такая заметка это не одна строка, даже если ее расположить в одну линию, а набор текстов.

Типа этого:

{1:&xsec_name}{2: (}{3:&view_scale}{4:)}

Даже если у них один и тот же стиль текста.

Меня интерисует что это за опция, может это то что мне нужно:

 

extern ProError ProDtlnotedataElbowlengthSet(

ProDtlnotedata data,

ProBoolean is_default,

double elbow_length);

/*

Purpose: Sets the elbow length for the specified note.

Input Arguments:

data - The note data.

is_default - The default flag.

elbow_length - The note elbow length if is_default == PRO_B_FALSE.

Output Arguments:

None

Return Values:

PRO_TK_NO_ERROR - The function successfully set the note

elbow.

PRO_TK_BAD_INPUTS - Bad one or more arguments.

*/

 

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


Не, Elbow - это, кажется, полка выноски.

Вобщем, я попробывал - тоже не получается. Функция ProDtlnoteModify возвращает -1, что в описании функции означает "Невозможно изменить ноту". Видимо, ноты с именами видов нельзя изменять.

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

Попробуйте выделить имя вида и попереключать эту опцию.

 

  post-25382-0-22120700-1409648291.jpg

 

 

Но что-то мне подсказывает, что это тоже тупиковый вариант. Так и придется похоже делать стандартными макросами через ProMacroLoad, но таким макаром не удасться заменить все заметки по всему черетжу одновременно и без предварительного выделения их. Команда ProMacroLoad почему то срабатывает в самом конце тулкитовской функции, в цикле не получилось ее использовать.

Я имел виду не через макрос - mapkey и не через ProMacroLoad. А именно средствами Toolkit. Но, к сожалению, не знаю есть ли такая функция в API, чтобы изменять эту опцию у заметки.

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

Попробуйте выделить имя вида и попереключать эту опцию.

 

 

 

Но что-то мне подсказывает, что это тоже тупиковый вариант. Так и придется похоже делать стандартными макросами через ProMacroLoad, но таким макаром не удасться заменить все заметки по всему черетжу одновременно и без предварительного выделения их. Команда ProMacroLoad почему то срабатывает в самом конце тулкитовской функции, в цикле не получилось ее использовать.

Я имел виду не через макрос - mapkey и не через ProMacroLoad. А именно средствами Toolkit. Но, к сожалению, не знаю есть ли такая функция в API, чтобы изменять эту опцию у заметки.

Так дело все в том, что в WF5 нет похоже такой кнопки и свойства вообще. По крайней мере в выпадающем меню я его не вижу. Хотя я может чего-то не знаю.

А все увидел во вкладке Формат в меню, правда никогда не пользовался.

Чо-то не врублюсь как этот перенос работает и вообще для чего он нужен?

 

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

Чо-то не врублюсь как этот перенос работает и вообще для чего он нужен?

 

Возможно, я не точно понял, что вы хотите сделать. Я описываю ситуацию, когда имя вида создается в две строки, например:

А

(2:1)

В этом случае, даже если в ручную растянуть заметку и текст станет в одну строку А (2:1), то после повторного открытия чертежа, текст в заметках (имя вида) снова переносится в две строки. Это может происходить из-за включенной опции Перенос текста у этих заметок. Поэтому, нужно эту опцию отключать.

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

 

Чо-то не врублюсь как этот перенос работает и вообще для чего он нужен?

 

Возможно, я не точно понял, что вы хотите сделать. Я описываю ситуацию, когда имя вида создается в две строки, например:

А

(2:1)

В этом случае, даже если в ручную растянуть заметку и текст станет в одну строку А (2:1), то после повторного открытия чертежа, текст в заметках (имя вида) снова переносится в две строки. Это может происходить из-за включенной опции Перенос текста у этих заметок. Поэтому, нужно эту опцию отключать.

 

 

 

 

Чо-то не врублюсь как этот перенос работает и вообще для чего он нужен?

 

Возможно, я не точно понял, что вы хотите сделать. Я описываю ситуацию, когда имя вида создается в две строки, например:

А

(2:1)

В этом случае, даже если в ручную растянуть заметку и текст станет в одну строку А (2:1), то после повторного открытия чертежа, текст в заметках (имя вида) снова переносится в две строки. Это может происходить из-за включенной опции Перенос текста у этих заметок. Поэтому, нужно эту опцию отключать.

 

У меня при повторном открытии чертежа так же открывает, как отредактировал в свойствах заметки. Ничего обратно уже не переносится.

Как сказал VICTOR, похоже для этих заметок заблокировано изменение через тулкит, либо надо копать куда-то глубже.

Пока через ProMacroLoad сделал, потом время покажет, может чо-нибудь придумаю.

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

Здравствуйте!

Я прошу прощения за некомпетентность, я только вчера установил себе CREO 2.0

Нигде не найду ни Тулкит ни VBapi. У конструкторов их тоже нет.

Не подскажете, где его взять можно?

Задача вобщем простая - взять из Creo состав изделия и залить его в 1С.

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

PTN-3119-L

Creo Application Programming Toolkit

956 000

191 000

CPT-3365-L

PTC Creo Java Object Toolkit Development Extension

190 000

38 100

CPT-3366-L

PTC Creo Java Object Toolkit Runtime

21 900

No Charge

PTN-3366-F

PTC Creo Java Object Toolkit Runtime Concurrent

54 700

No Charge

PKG-4325-L

PTC Creo Java Object Toolkit Development Standalone

317 000

63 500

PKG-4326-L

PTC Creo Java Object Toolkit Starter Pack

449 000

89 700

 

Уважаемый  SergJP .

Сумеете разгадать этот кроссворд?

Если нет- вопросы в личку.

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

Доброго всем дня, появился такой вопрос.

Как через тулкит узнать, показана ли в данный момент на чертеже сетка или скрыта?

Что-то в tkuse не могу раскопать.

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

Господа, Есть вопрос по Creo View Jawatoolkit, В гайде по тулкиту есть имена  .jawa с примерами выполнения действий.Может быть кто нибудь мог бы дать парочку из этих файлов на посмотреть ?

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

Вот тут должны быть примеры.

D:\PTC\proew5\jlink\jlink_appls

В крео наверно аналогично, точно не могу сказать.

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

Добрый день.

Пытаюсь вставить в меню разделительную линию (separaror) между пунктами, что-то ничего не могу найти в примерах.

 

//Создание меню для смены форматов в чертеже
 //Добавляем основной пунк меню - Форматы чертежа
 ProMenubarMenuAdd ("MainMenu2","Menu2","Windows",PRO_B_TRUE,MenuFileName1);

 //Подменю "Формат А4"
 ProCmdActionAdd("-Format A4",(uiCmdCmdActFn)Format_A4,uiProe2ndImmediate,TestAccessDefault,PRO_B_TRUE,PRO_B_TRUE,&cmd_id);
 ProCmdIconSet(cmd_id, "format_16x16x8.gif");
 ProMenubarmenuPushbuttonAdd("MainMenu2","Format_A4","-Format A4","-Format A4 Help",NULL,PRO_B_TRUE,cmd_id,MessageFileName1);
 ProCmdDesignate(cmd_id,"-Format A4 Button","-Format A4 Help","-Format A4 Description",MessageFileName1);

 

Допустим хочу поставить линию после этого пункта, как это сделать? Может подскажет кто.

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

Добрый день.

Пытаюсь вставить в меню разделительную линию (separaror) между пунктами, что-то ничего не могу найти в примерах.

 

Допустим хочу поставить линию после этого пункта, как это сделать? Может подскажет кто.

В Pro-e нет такой возможности.

Как вариант создать неактивную кнопку с именем "---------"

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

Тоже думал об этом. Но это не совсем то, и выглядеть будет по другому.

Странно, что не предусмотрели такой примитивной возможности.

В их родном меню эти линии же присутствуют.

 

Только что заметил что в настройках экрана, по ПКМ, выходит всплывающее меню ,где есть пункт "Начать группу", при нажатии которой как раз и появляется эта разделительная линия, попробую в этом направлении покопать.

 

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


Может и в тулките есть что-то наподобие "Начать группу".


Как говорится, ларчик просто открывался.

Вставил через настройку экрана в созданное тулкитом меню Начало группы и вуаля:

post-26163-0-42887200-1439817583.jpg

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

Может сталкивался кто-то, функция создания набора ProSelectionAlloc(), где первым параметром идет ProAsmcomppath:

  ProError ProSelectionAlloc (   ProAsmcomppath* p_cmp_path     /* (In)   The component path (can be NULL)   */   ProModelitem* p_mdl_itm     /* (In)   The model item (can be NULL)   */   ProSelection* p_selection     /* (Out)   The allocated selection object   */

работает только для одного уровня сборки. Если на вход даем ProAsmcomppath не единичной вложенности, то выдает ошибку. А как создать набор, например, для фитчера компонента третьего уровня сборки?

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

Нашел! Если будет интересно...

Помогла ф-ция ProFeatureGeomitemVisit() и ProModelitemInit(). В моем случае необходимо было выбрать ModelItem базовой плоскости, созданной в результате программного создания фитчера.

 

Модель содержит ModelItem’ы. К ModelItem относятся не только фитчеры, а и геометрические объекты, которые содержатся в фитчерах.

ProFeatureGeomitemVisit пробежался по геометрии только что созданного фитчера - на выходе получил массив GeomItem'ов. Затем по нужному GeomItem'у ф-цией ProModelitemInit сделал ModelItem. Его и дал на вход ProSelectionAlloc. Asmcomppath оказался ни при чем.

 

 

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

Добрый день!

Написал функцию, которая формирует массив всех компонентов сборки, все остальное отфильтровывается.

 

status=ProSolidFeatVisit((ProSolid)mdl3,UsrFeatAction,NULL,&features);

 

Все нормально работает, массив создается.

Теперь необходимо вытащить имена этих компонентов  (деталей и подсборок).

Пробовал разными способами, всегда выходит пустая строка вместо имени.

 

Может подскажет кто, как нужно?

Прогу пишу для автоматического формирования спецификации.

 

Заранее спасибо.

 

Вот кусок кода:

//Действие функции, вызываемое при посещении фичеров
ProError UsrFeatAction(ProFeature *feature,ProError filter_status,ProAppData data)
{
    int n_feats, max;
    ProBoolean visible;
    ProFeatStatus status;
    //Если функция внутренняя, пропускаем ее
    ProFeatureVisibilityGet(feature, &visible);
    if(!visible) return(PRO_TK_NO_ERROR);
    //Если фичер не активен в данный момент, пропускаем его (допустим если он подавлен)
    ProFeatureStatusGet(feature, &status);
    if(status != PRO_FEAT_ACTIVE) return(PRO_TK_NO_ERROR);
    //Проверяем является фичер деталью, сборкой или инфообъектом (ftype=1000)
    ProFeattype ftype;
    ProFeatureTypeGet(feature, &ftype);
    if (ftype!=1000) return(PRO_TK_NO_ERROR);
    //Проверяем, есть ли еще место для массива
    ProArraySizeGet(*(ProArray*)data, &n_feats);
    ProArrayMaxCountGet(sizeof(ProFeature), &max);
    if(n_feats == max) return(PRO_TK_OUT_OF_MEMORY);
    //Добавляем фичер в массив фичеров
    ProArrayObjectAdd((ProArray*)data, -1, 1, feature);
    return(PRO_TK_NO_ERROR);
}

 

//пробегаем по всем локальным компонентам и фичерам
    ProFeature *features;
    int f, n_features, num;
    ProFeattype ftype;
    ProModelitem component_item1;

    ProArrayAlloc(0,sizeof(ProFeature),1,(ProArray*)&features);
    status=ProSolidFeatVisit((ProSolid)mdl3,UsrFeatAction,NULL,&features);
    ProArraySizeGet(features,&n_features);
    //MessageInt(n_features);
    ProName component_name;
    wcscpy(component_name,L"name");
    for(f=0;f<n_features;f++)
    {

 

//Здесь нужно получать имена фичеров (компонентов)

 

}

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

ProModelitemNameGet(feature, name);

 

Эта функция, как я понял из описания, работает только для фичеров построения.

Имена компонентов с помощью нее вытащить не получится.

Ссылка на сообщение
Поделиться на других сайтах
все остальное отфильтровывается.   status=ProSolidFeatVisit((ProSolid)mdl3,UsrFeatAction,NULL,&features);   Все нормально работает, массив создается. Теперь необходимо вытащить имена этих компонентов  (деталей и подсборок). Пробовал разными способами, всегда выходит пустая строка вместо имени.

Не совсем понятно зачем програмно, если то чно написано решается стандартной спецификацией. Или вы генерируете собственную?

Часть задач можно решить созданием упрощенного представления в том числе по правилу.

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

Не совсем понятно зачем програмно, если то чно написано решается стандартной спецификацией. Или вы генерируете собственную?

Часть задач можно решить созданием упрощенного представления в том числе по правилу.

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

Есть еще другие ньюансы, которые не решаются стандартными средствами. поэтому хочу написать свое, что-то наподобие как у ЛЕОНА.

Сейчас это решено с помощью ВЕБ интерфейса, хочу на ТУЛКИТЕ реализовать.

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

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

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

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

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

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

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

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

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

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

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




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