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

Изучаем Toolkit


Sergey___1978

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

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.jpg

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

Добрый день.

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

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

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

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

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

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

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

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

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

 

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

 

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

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

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

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

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

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

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

 

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

Screenshot_3.png

Ссылка на сообщение
Поделиться на других сайтах
16 минут назад, Z@K сказал:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

 

Ссылка на сообщение
Поделиться на других сайтах
В 04.02.2020 в 11:30, Z@K сказал:

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

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

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

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

Ссылка на сообщение
Поделиться на других сайтах
В 09.03.2020 в 11:04, Sergey___1978 сказал:

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

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

 

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

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

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

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

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

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

Ссылка на сообщение
Поделиться на других сайтах
В 08.03.2020 в 17:17, Max999 сказал:

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

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

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

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

 

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

Ссылка на сообщение
Поделиться на других сайтах
В 18.03.2020 в 12:17, Onizuka сказал:

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

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

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

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

Ссылка на сообщение
Поделиться на других сайтах
В 24.03.2020 в 06:42, Sergey___1978 сказал:

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

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

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

Может, кому-нибудь пригодится.
Не обнаружено особых проблем при попытке вызывать функции 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, делающие то же самое (почти) мне известно. ;)

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

Подскажите, как узнать из какой директории запущена 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++

Изменено пользователем davidovka
Ссылка на сообщение
Поделиться на других сайтах
03.07.2022 в 18:01, davidovka сказал:

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

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

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

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

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

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

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

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

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

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

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

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

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




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