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

Изучаем 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 пользователей

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



  • Сообщения

    • Snake 60
      Скорее всего исправляли в конкретной сборке, для конкретных тел. Насколько я помню, надо в самом эскизе профиля заполнить свойство Description
    • Snake 60
      Делаете дырку в свае - вставляете в нее трубу и 2 человеко-силы крутят сваю ) Дёшево и сердито и не нужен никакой планетарный редуктор ))
    • gudstartup
      вы всегда ищите свой путь или будете делать то что вам советуют? с самого начала прежде чем приступать к экспериментам вам нужно было вынуть носитель и сделать образ. diskcopy делает копию гибкого диска на другой а вам надо сделать образ жесткого диска или карты памяти. делайте как советует @Viktor2004 иначе еще чего нибудь сломаете или вам станок не нужен и вы его приобрели для экспериментов ? вот а печатной машинке из прошлого нельзя а вот на синумерике можно - удивительные вещи в настоящем происходят!! на 100 % уверен что там не модуль а либо писимиси ай либо жд @mircomax81 хотите работать в дос почитайте помощь по командам 
    • PuKoLLleT
      Доброго дня всем. Поделитесь опытом,раньше такое не доводилось делать. На торце фланца нужно сделать  восемь отверстий ф17H7 на токарно-фрезерном станке с осью Y ,имеется ManualGuide.В моем понимании нужно просверлить,а затем торцевой фрезой расточить нужный диаметр.Получится такой фокус,или надо разверткой доводить нужный размер?  Стойка Fanuc 0i-Tf.
    • Snake 60
      Всё верно, я даже русификатор делал для него (ушло на это где-то около года). Хороший софт был, я всех знакомых на него подсадил в свое время :) У меня даже где-то образ на виртуалке лежит с SW2014+MechSoft, Жаль, что автодеск его поглотил, а не DS :( А по сути вопроса, проектировал двухступенчатый планетарный редуктор в свое время. Что было нужно: Справочник по планетаркам (автора не помню, если надо поищу), из софта MathCAD + GearTeq (софтина идет вместе с GearTrax, только рассчитывает и моделирует несколько зацеплений согласно выбранной схеме, в том числе планетарки) Ой и ошибаетесь. Звездочки - не равно зубчатые колеса в планетарке) Мы намучились с малой точностью изготовления на эл.эрозии, а Вы лазером ))) Был собран опытный образец редуктора с незакаленными деталями, чисто проверить геометрию, отладить сборку. Так потом начальство этот редуктор сказало испытать в бою, как я не противился)) Помер за пару дней интенсивных нагрузок ))) Материал, термообработка и точности изготовления решают )
    • Snake 60
      @Тихоход  Ещё один вариант - изучать программирование и писать свою программу/макрос. Вот пример конфигуратора двери: https://www.youtube.com/watch?v=wv4HryWQBSk
    • mircomax81
      Посредством Diskcopy можно сделать адекватную копию на флоппи диск?
    • Andrey_kzn
      Да, ведь советовали автору вытащить жёсткий диск и сделать образ. Неужели самому не интересно, как устроен этот старый промкомпьютер? Там может стоять как жёсткий диск, так и CF-карта, или же Disc-on-chip или Disc-on-module.  Как-то очень давно, на подобном промышленном оборудовании (большая печатная машина) я не смог перенести  ПО с родной CF - карты на другую, такого же размера но другой фирмы. Была также станочная оболочка под досом.  Образ я делал Нортон гостом, развернул его на другую CF-карту без проблем. Машина загрузилась нормально и работала ровно 2 дня, на неродной CF-карте,  потом зависла, и отказалась загружаться. Пришлось вызывать сервисника. От него мы узнали, что нельзя просто так взять и заменить карту  - носитель системного ПО, на другую. А полезли мы туда, так как руководство захотело печатать отчёты по работе машины. В станочном ПО такая функция была. Вот только принтер надо было купить у фирмы - производителя этой самой машины. В попытках заставить работать другой принтер мы редактировали файл  AUTOEXEС.BAT, на предмет загрузки драйвера принтера, ничего не получилось, зато перестали открываться некоторые страницы станочного ПО.  Образ у нас был давно снят, и мы развернули его на другую карту памяти. Родную карту я трогать не стал (как чувствовал, что нельзя ). Сервисник восстановил ПО с архивной дискеты на родную карту памяти, и всё заработало. Дискеты с архивами ПО шли вместе с документацией к машине.  Там были дискеты с Досом, станочной оболочкой, параметрами приводов, программой ПЛК. Он же и предупредил нас о предельно аккуратном обращении с родной картой памяти, и посоветовал немедленно сделать образы с архивных дискет, что мы сразу и проделали.. Вот такой сюрприз от машины эпохи Дос.
    • Борман
    • gudstartup
      а ведь все работало...
×
×
  • Создать...