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

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

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




  • Сообщения

    • Ninja
    • Ninja
      В зимнее время водители устанавливают на колёса специальные цепи против скольжения. В мире разработано множество видов цепей и способов их установки. Японцы применяют "цепи Абэ". Кто этот великий инженер? Это знаменитый японский писатель Кобо Абэ. Для уединенного писательского труда Абэ купил домик в горах. А в горах зима ранняя, снежная, затяжная. Без цепей на колёсах можно и улететь с обрыва. Абэ периодически заводил машину и спускался в долину. Почту получить/отправить, в магазине продукты купить, ящик рисовой водки. (Известное дело: насухую великую книгу не напишешь). В долине приходилось цепи снимать. По правилам цепи запрещается применять при отсутствии на дороге снежного покрова. В те времена для установки/снятия цепи требовалось домкратом поднимать каждое колесо. В машине 4 колеса. Товарищу Абэ приходилось корячиться с домкратом. При этом в самых нелитературных выражениях комментируя политику правящей партии и все домкраты в мире. Купил в магазине бухлишко-закусь. Поехал домой в горы. А там снег, скользко. Цепи требуются. Опять писатель и драматург Абэ домкрат крутит. Всё это насмерть надоело Абэ. Обратился к компаниям-производителям: придумайте способ установки цепей без домкрата! Но производители ничего не придумали. Или не захотели. Тогда Абэ сам придумал способ установки цепей без необходимости поднимать колесо. Послал изобретение на конкурс. И неожиданно получил призовое место и патент. Новый способ установки цепей быстро завоевал популярность. Так и пошло у японцев - "цепи Абэ". Кобо Абэ не получил Нобелевскую премию по литературе. Уже выдвигался, уже все были уверены в том, что он её получит. Но не успели, писатель умер. А это всё дурацкие цепи виноваты. Сколько времени он потерял в установке/снятии цепей? Сколько времени, вместо того чтобы писать, он крутил домкрат? Вот и не успел. https://ru.ruwiki.ru/wiki/Абэ,_Кобо
    • gudstartup
      приемлимо. температуру мотора посмотрите. если вентилятор нормально вращается и его скорость соответствует оригинальному а также контакт в разъеме нормальный а F все равно появляется то даже не знаю что у вас может быть так как привод у вас новый
    • Koels
      Хмм, я думал раз она вылазит даже в простое, то Z координата висит на тормозе и дело не в этом. Спасибо за мысль, щас узнаю. Вообще у нас рядом стоит точно такая же макина, точь в точь и там таким проблем нет. Много заказов и отсутствие специалистов сделало свое дело. :) @gudstartup, 58% нагрузка на координату
    • mrVladimir
      Что-то я немного засомневался. Если решим брать новое ЧПУ, то искать точно такое же необходимо по номеру сзади корпуса (пластикового пластмассового) - так? А если брать только плату (материнскую или как ее лучше назвать...), на которой установлена (запаена) микросхема 1 на моих фото выше, то искать плату необходимо по номеру, который указан на самой плате - так? В моем случае : ЧПУ : A02B-0321-B520. Код на плате : A20B-8201-0081/01A. Если, допустим, мы покупаем ЧПУ A02B-0321-B520 - будет ли это гарантией того, что в нем установлена плата A20B-8201-0081/01A. И можно ли будет его считать таким же. И с отдельно приобретаемой платой тоже самое - если номер на ней полностью совпадает с нашим, значит ли это, что она полностью идентична. P.S. : извиняюсь за , возможно, навязчивые вопросы. Просто не хотелось бы попасть впросак из-за своей некомпетентности. такой файл есть, но мне говорили, что после снятия архивов, его лучше вообще никогда нигде ни использовать. А на каком этапе он нам может понадобиться?. Если, как говорил Виктор, мы зальем архив SRAM на старый модуль (ROM-SRAM), установленный в новое ЧПУ, то и файл OPRMINF не нужен. Правильно же?
    • Slavdos
      Доброе. делюсь 1 внедренным китайцем. купили у ЛЛС MARVEL PRO 6000-3015.HGT , 2 шт , с автоматизацией. станки неплохие, интерфейс русские, достаточно дружелюбен. за автоматизацию зря переплатили, китай похоже в этом сильно уступает европе. из неожиданностей- резка воздухом дает неудаляемый грат, по сути необходимы зачистные станки.
    • Killerchik
      Я 4 комфорки на скоростной шпиндель поставил, в этом же качестве)))))
    • gudstartup
      я предлагал операторам чай кипятить чем больше и интенсивнее работают тем чаще чайку попить можно нельзя же чтобы тормозной кипятильник перегрелся
    • Viktor2004
      и этот человек смеялся когда я использовал кипятильник вместо тормозного резистора
    • gudstartup
      @mrVladimir если у вас нет копии oprminf обязательно сделайте
×
×
  • Создать...