Jump to content

Изучаем Toolkit


Sergey___1978

Recommended Posts

components_id - это таблица путь из id до компонента от главной сборки (по аналогии с ProAsmcomppath).

 

1) В вашем коде функция ProBomballoonByComponentCreate должна выполняться в теле цикла для каждого компонента.

 

2) строка components_id = p_mdl_item.id;

аналогична записи components_id [0]= p_mdl_item.id;

будет работать если компонент, на который ставится поиpия, находится на верхнем уровне сборки. Если компонент входит во вложенные подсборки, то необходимо формировать путь до него в components_id. Но по логике такого случая не должно быть, так как позиции ставятся только на верхнем уровне.

 

Те должен работать код

ProArrayAlloc(1, sizeof(int), 1, (ProArray*)&components_id);
    for (i = 0; i < n_sel; i++)
    {
        ProSelectionModelitemGet(p_sel, &p_mdl_item);
        components_id[0] = p_mdl_item.id;
      	ProBomballoonByComponentCreate(drawing1, &tables[region_table], region_id, view, components_id); 
    }
    

 

  • Нравится 1
Link to post
Share on other sites


Sergey___1978

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

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

Попробую, отпишусь.

Жаль, что в тулките нет функции замены вида символа позиции с одного на другой (на случай если хотим сделать вывод позиций как на скриншоте).

Для этого придется по старинке выбирать каждый раз регион.

Может конечно и есть где-нибудь в функциях для символов, но я не нашел подходящей.

1.jpg

Link to post
Share on other sites
  • 1 month later...
Sergey___1978

Добрый день.

С простановкой позиций на чертеже сборки без выбора региона  каждый раз (аналогично позиция по  компоненту и виду) вроде разобрался.

Теперь стоит другая задача.

Бывает необходимость вместо стандартного символа для некоторых позиций делать альтернативный.

Раньше в WF5 это делалось нормально, без выбора каждый раз региона.

Сейчас перешли на Creo4 и необходимо каждый раз тыкать на регион при замене символа.

У кого какие мысли по этому поводу, как можно реализовать через toolkit?

Необходимо реализовать следующий алгоритм:

- выбрал несколько позиций на чертеже (с реализацией этого проблем нет);

- заменить текущий символ  каждой позиции на символ с нужным именем;

 

Либо может есть какой то параметр в опциях конфигурации, который делает простановку позиций как в WF5 и ранее?

 

Link to post
Share on other sites
  • 4 months later...

Всем доброго времени суток.

Прошу помочь с задачей, с которой не могу сам справится:

Нужно в СП вывести для каждой детали ее габарит по всем координатам [X , Y , Z]

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

Главное максимальные пределы детали вывести и записать их в параметры - на пример [XlenghtMax, YlenghtMax, ZlenghtMax].

Идеальный вариант если разделить еще этот расчет на вписываемую заготовку ПЛИТА или КРУГ - но это не обязательно. Таким образом добавив еще 2 поля для расчета габарита, если деталь вписывается в круг, а именно: [Dmax, Lmax]

 

В приложении на фото пример СПЕЦИФИКАЦИИ.

Screenshot_3.png

Link to post
Share on other sites
Ветерок
16 минут назад, Z@K сказал:

Нужно что бы пересчет был автоматическим

Для этого достаточно сделать фичер анализа, который и будет вычислять размеры "автоматически". Ничего "запускать" вообще не надо будет.

А вот какие именно измерения производить - это действительно вопрос.

16 минут назад, Z@K сказал:

для всей сборки

Ещё раз повторяю: это надо делать не на уровне сборки, а на уровне каждой детали.

16 минут назад, Z@K сказал:

заготовку ПЛИТА или КРУГ

Предполагается, что все детали вообще плоские? Если деталь плоская, то есть один лайфхак.

Edited by Ветерок
Link to post
Share on other sites
17 часов назад, Ветерок сказал:

Для этого достаточно сделать фичер анализа, который и будет вычислять размеры "автоматически". Ничего "запускать" вообще не надо будет.

А вот какие именно измерения производить - это действительно вопрос.

Ещё раз повторяю: это надо делать не на уровне сборки, а на уровне каждой детали.

Предполагается, что все детали вообще плоские? Если деталь плоская, то есть один лайфхак.

Что за лайфхак. Подскажите

Link to post
Share on other sites
  • 1 month later...

Поставлена задача: получить для каждого DRW-файла в рабочей директории список связанных с ним моделей. Для этого использую функцию ProDrawingSolidsCollect, а сам чертеж предварительно загружаю с помощью функции ProMdlnameRetrieve. Если все связанные модели есть в рабочей папке, то все проходитЪ нормально. Но если модель детали, либо хоть один из компонентов сборки отсутствует, то ProMdlnameRetrieve возвращает GENERAL_ERROR и загрузки DRW-файла не происходит (так же, кстати, себя ведет и соответствующий пример из pt_examples). Однако Creo как-то справляется с данной ситуацией - для чертежа детали выдает сообщение с именем отсутствующей модели, а чертеж сборки и вовсе загружает - пусть хоть и с "красным" деревом. Как мне добиться такого же эффекта в Toolkit?

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

Link to post
Share on other sites
Sergey___1978

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

Для этого дополнительно делать ничего не надо.

Он сам загружает недостающие файлы с общей области.

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

Все работало нормально.

Насчет использования этой функции при работе без ПДМ ничего сказать не могу.

Думаю у функций Тулкита урезанный функционал. И ничего с этим не поделать.

 

Если Крео не находит какие-то связанные файлы, тогда лучше вообще ничего не переименовывать. Это чревато потерей связей чертеж-модель в дальнейшем!

Когда работал в Интралинке переименование файлов было намного удобнее, чем даже сейчас в Винчиле.

 В общей области почему-то дает переименовывать только по одному файлу. Если выделяешь два файла, меню переименовать уже не выходит (хотя это я может такой криворукий)

Сам подумывал написать свое приложение для переименования, пока руки не доходят.

 

Link to post
Share on other sites
Ветерок
В 04.02.2020 в 11:30, Z@K сказал:

Что за лайфхак. Подскажите

Только сейчас увидел сообщение.

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

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

Link to post
Share on other sites
В 09.03.2020 в 11:04, Sergey___1978 сказал:

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

О! Ради этого ставить дома WindChill смысла нет. :) 

 

В 09.03.2020 в 11:04, Sergey___1978 сказал:

Если Крео не находит какие-то связанные файлы, тогда лучше вообще ничего не переименовывать. Это чревато потерей связей чертеж-модель в дальнейшем!

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

Дабы не сползать уж в самый жуткий оффтоп в рамках данной темы, дополню:
- Есть еще полезная функция ProMdlDependenciesMdlnameList, позволяющая получить список зависимостей для заданной модели;
- Примеры Toolkit - бесконечный кладезь информации о подобных вещах. Можно заглянуть "под капот" для разных команд Creo.
Впрочем, ответ на собственный вопрос я так и не нашел...

Link to post
Share on other sites
Sergey___1978

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

Link to post
Share on other sites
В 08.03.2020 в 17:17, Max999 сказал:

Поставлена задача: получить для каждого DRW-файла в рабочей директории список связанных с ним моделей. Для этого использую функцию ProDrawingSolidsCollect, а сам чертеж предварительно загружаю с помощью функции ProMdlnameRetrieve.....

Нужно исправить ситуацию отсутствия моделей:

а. добавьте их в рабочую папку

б. если это некие библиотечные модели, то добавьте в конфиг путь на нее в опции search_path, чтобы Creo мог найти эти модели

 

Для загрузки чертежа попробуйте использовать функцию ProMdlFiletypeLoad, не исключено, что у нее может оказаться другое поведение на отсутствующие модели.

Link to post
Share on other sites
В 18.03.2020 в 12:17, Onizuka сказал:

Для загрузки чертежа попробуйте использовать функцию ProMdlFiletypeLoad, не исключено, что у нее может оказаться другое поведение на отсутствующие модели.

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

Link to post
Share on other sites
Sergey___1978

Может программу заставить создать в памяти пустые модели, которые отсутствуют, раз уж такая беда с отсутствующими моделями. Если их нет, то ничего страшного не будет наверно. Либо инфообъекты с таким же именем. Потом просто удалить их, если они не нужны. Кстати удалить их можно тем же приложением после переименования.

Link to post
Share on other sites
В 24.03.2020 в 06:42, Sergey___1978 сказал:

Может программу заставить создать в памяти пустые модели, которые отсутствуют, раз уж такая беда с отсутствующими моделями. Если их нет, то ничего страшного не будет наверно. Либо инфообъекты с таким же именем. Потом просто удалить их, если они не нужны. Кстати удалить их можно тем же приложением после переименования.

В общем, этот вопрос не настолько критичный. Просто интересно узнать, как Creo грузит чертежи.

Link to post
Share on other sites
  • 4 weeks later...

Может, кому-нибудь пригодится.
Не обнаружено особых проблем при попытке вызывать функции Win32 API из приложения toolkit. К примеру, фрагмент кода, вызывающего стандартное диалоговое окно "Открыть файл" (не забыть добавить TestOpenFileDialog.c в make-файл):

// Приложение toolkit
...
#include "TestOpenFileDialog.h"
...
  ProError err;
  int n_offset;
  static ProPath work_dir;
  char szFile[MAXBUFFERSIZE] = { 0 };
...
  	err = ProDirectoryCurrentGet(work_dir);
	err = ProTestOpenFileDialog(work_dir, &szFile, &n_offset);
	if (err || (szFile[0]== s[0]))
		return (-1);
...
  
// TestOpenFileDialog.c
#include <windows.h>
#include <Commdlg.h>
#include "TestOpenFileDialog.h"

int ProTestOpenFileDialog(wchar_t* curr_dir, char *result, int *offset_files)
{
	OPENFILENAMEW ofn;
	HWND hwnd = NULL;
	HANDLE hf;

	ZeroMemory(&ofn, sizeof(OPENFILENAME));
	ofn.lStructSize = sizeof(OPENFILENAME);
	ofn.hwndOwner = hwnd;
	ofn.lpstrFile = result; // Возвращает путь к текущему каталогу, а за ним следуют имена выбранных файлов
	ofn.nMaxFile = MAXBUFFERSIZE; 
	ofn.lpstrFilter = "ASM files(*.asm)\0*.asm.*\0PART files(*.prt)\0*.prt.*\0DRW files(*.drw)\0*.drw.*\0All files(*.*)\0*.*\0\0";
	ofn.nFilterIndex = 3; 
	ofn.lpstrFileTitle = NULL;
	ofn.nMaxFileTitle = 0;
	ofn.lpstrInitialDir = curr_dir;
	ofn.nFileOffset = 0; // Смещение первого файла в списке.
	ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT | OFN_EXPLORER;

	int dialog = GetOpenFileName(&ofn);
	if (dialog == TRUE) {
		*offset_files = ofn.nFileOffset;
	}
	else {
		// Ошибка создания диалога
		DWORD errDlg = CommDlgExtendedError();
		return ((int)errDlg); 
	}
	return (0);
}

// TestOpenFileDialog.h
#define MAXBUFFERSIZE 1024
#define MAXPATHSIZE 80

int ProTestOpenFileDialog(wchar_t* curr_dir, char *result, int *offset_files);

З.Ы: Про стандартные функции toolkit, делающие то же самое (почти) мне известно. ;)

Link to post
Share on other sites
  • 2 years later...
davidovka

Подскажите, как узнать из какой директории запущена dll? Хочется читать настройки из файла лежащего в ./text.  

wfcWSession_ptr ses = wfcWSession::cast(pfcGetProESession());

xstring path = ses->GetApplicationPath();

 

И еще вопрос. Как настроить проект VS для дебага? Сейчас пишет "В настоящий момент попадание в точку останова не произойдет. Нет загруженных символов для этого файла"

Проект из "Common Files\otk\otk_cpp\x86e_win64\obj\otk_view_tree_app\" собирается, но дебаг также не работает.

 

Creo 4, Object TOOLKIT C++

Edited by davidovka
Link to post
Share on other sites
Onizuka
03.07.2022 в 18:01, davidovka сказал:

И еще вопрос. Как настроить проект VS для дебага? Сейчас пишет "В настоящий момент попадание в точку останова не произойдет. Нет загруженных символов для этого файла"

Для начала, в момент присоединения к процессу проверьте, что стоит галочка только Nativextop_debug.png

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.




  • Сообщения

    • Sykes
      К Вам у меня вопросов не было по поводу старой версии - каждый работает как привык и как ему удобно. Вопрос был к товарищу с лампочками на голове, потому как он предлагал мне перейти с версии 2021 на версию 2012 в моей теме, где вопрос был по проблеме переноса свойств профиля в сварную конструкцию, а после высказанного сомнения в целесообразности данного действа - его рассказы о моем уровне. И это при том, что проблема решилась исправлением опечатки в слове "description".   Тема ведь про экспорт, а таск решает эту задачу максимально эффективно, а поскольку известно про него давно - не совсем понятно почему эта тема поднималась много лет с предложениями костылей в виде виртуального принтера или отдельных программ. Так что тему можно закрывать))  
    • Shura762
      Встретились два одиночества  вообще-то тема не о ваших "чуйств" к ТФ, почему каждая тема выливается в "кризис среднего возраста" или в "срач по теме Ветерка, надо бы пожаловаться на вас админу. Последнее китайское предупреждение, да завязывайте уже.  
    • IgorT
      Понятно. Аргументов у тебя больше нету. Агрессия началась.   А вот не свалю.  Дальше что?
    • Tapoky
      Доброго дня,   Требуется смоделировать совместно два процесса: кавитацию и дегазацию (выход растворенного газа из жидкости при понижении давления). Если с кавитацией всё плюс/минус понятно, то как смоделировать дегазацию, и особенно одновременно с процессом кавитации - это вызывает вопросы. На данный момент всё это кажется каким-то нереальным для моделирования. Получается, что имеем кавитацию, как фазовый переход жидкости, и соответственно образование пузырьков с газообразным состоянием данной жидкости, плюс выделяется растворенный газ - имеем пузырьки растворенного газа, и получается, что эти два вида пузырьков также могут взаимодействовать друг с другом.   Поделитесь, пожалуйста, опытом, если кто-то имел практику моделирования дегазации, и особенно совместно с процессом кавитации.
    • Viktor2004
      даже если у кого и есть. Откуда он возьмет параметры привода? Их никто списком или на файлике не поставляет со станком.
    • ev121
      За песнями и плясками - на концерт Льва Лещенко
    • andromed
      Ответ тот же самый, что и когда я пытался менять кодировку построчно "unknown encoding"  Как я говорил ранее по команде получить кодировку в ответ только три кодировки и в них нет cp1251. Может дело в версии NX (тестирую в 10ке) или существует какая то возможность подгрузить системные кодировки, во всех примерах в сети по команде encoding names вылетает целый абзац кодировок.    Вопрос решен! Практически сам себе и ответил.  Действительно в NX10  только 3 кодировки,  начиная с 12шки  есть все нужные кодировки.  Но и тут важно место где разместить команду по смене кодировки.  Поставил сразу после  открытия/создания файла и все получилось. set ofile [open $arhiv_file_name w] fconfigure $ofile -encoding cp1251
    • Krusnik
      Судя по скриншоту  у вас в файле 7КЕ.1004.1000_СБ.SLASM есть свойство Weight. Значение этого свойства 0 (ноль). PDM зачитывает это свойство и записывает в переменную Weight а потом эту переменную отображает в проводнике. Переменную, не свойство файла.   А вот свойства Типоразмер в файле 7КЕ.1004.1000_СБ.SLASM нет, или есть, но пустое. Поэтому и переменная пустая и столбец в проводнике пустой.   И привыкайте всё регистрировать. Переменные обновляются при регистрации файла. А у вас на скриншоте всё разрегистрировано.
    • Anatoly55
      Просмотрел бегло Базовый и Продвинутый курсы. Теперь основательно с конспектом изучаю пока только 3-ий урок Базового курса.  Да, сделано профессионально. Есть чему поучиться. 
    • oleg96i
      станок HAAS TL1 всем привет подскажите , при рассточке вн. диаметра резцом близким диаметру начального отверстия, после первого прохода отводит слижком низко, по проге не должно опускаться ниже 20мм, он опускается до 18, на новом хаасе такого нет. может параметр какой надо включить!? симка показывает норм. то есть первый проход идет на D20.6 , дойдя до нужной Z опускается не до 20, а до 18.   N4 (RASTOCHNOY)  G54  T404  G00 X40. Z20.  M08  G96 S1000 M03 (!!!)  G01 X20. Z2. F1.  G71 P300 Q310 D0.5 W0.05 U-0.4 F0.2  N300 G00 X23. Z2.  G01 Z0.  G01 X22. Z-0.5 F0.1  Z-55.  N310 X20.  G70 P300 Q310  G00 Z20. M09 
×
×
  • Create New...