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

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

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




  • Сообщения

    • maxx2000
      Причина того - Кроилово. Кроилово всегда приводит к попадалову. Месяц простоял сколько мильонов деревянных потеряли? Вопрос риторический. И ещё будет стоять. Как памятник человеческой глупости и жадности.
    • AlexKaz
      "9 июля 1968 года на мышах был проведен самый знаменитый эксперимент американского ученого-этолога Джона Кэлхуна «Вселенная-25». Суть опыта заключалась в создании идеальных условий, где мыши могли бы жить и размножаться, не ведая никаких забот, вдали от хищников и в отсутствие эпидемий и заболеваний. Для этих целей ученый построил специальный загон, куда были помещены четыре пары белых мышей (самцов и самок). В распоряжении мышей всегда была чистая вода и еда в изобилии, специальные гнезда, где можно обустроить себе жилище ― гнезд в загоне хватало для проживания нескольких тысяч мышей. Температура в загоне в среднем составляла около 20 ℃ и была комфортной для мышей. Животные не подвергались никаким влияниям извне и жили в идеальных условиях в свое удовольствие. А дальше началось самое интересное. На первом этапе эксперимента мыши хорошо размножались, вели активный образ жизни, охотно играли. На следующей фазе эксперимента мыши стали есть меньше, перестали наедаться до отвала. На третьей фазе эксперимента, когда в загоне были уже сотни мышей, произошло распределение социальных ролей, стала ярко выраженной иерархия, клановость. Появились так называемые отверженные ― молодые особи, которых другие, взрослые мыши сгоняли в центр загона, не давали им вести нормальный образ жизни, причиняли физический вред. В природе такое, наверное, было бы невозможно, ведь эти мыши-агрессоры просто не дожили бы до старости: их бы съели хищники. Но в загоне Кэлхуна хищников не было, и взрослые мыши начали попросту издеваться над молодняком. Образовались две большие группировки: самцы-одиночки и самки-одиночки. При этом самки-одиночки отказывались спариваться <с менее статусными многочисленными молодыми самцами и с оставшимися старыми статусными> и отвергали ухаживания самцов. У мышей стал проявляться тотальный индивидуализм, мыши не стремились создать семью. На последней, четвертой стадии мышиная популяция стала сокращаться. Появились самцы, которых сам Кэлхун назвал «красивыми» (англ. beautiful ones), из-за отсутствия ран и рубцов. <В оригинале: They never engaged in sexual approaches toward females, and they never engaged in fighting, and so they had no wound or scar tissue. Thus their pelage remained in excellent condition. - Дословный перевод: Они никогда не прибегали к сексуальным подходам к самкам, и они никогда не участвовали в боях, и поэтому у них не было ран или рубцовой ткани. Таким образом, их шерсть сохранилась в отличном состоянии.> Эти мыши не вступали в борьбу за самок и территорию, не проявляли активности к размножению и только питались, спали и чистили шёрстку. У мышей стали проявляться различные формы девиантного поведения, вспышки агрессии. Самки стали проявлять агрессию, защищать себя сами, стали умерщвлять своих детенышей, а затем окончательно отказались размножаться. На пике эксперимента в загоне одновременно проживало чуть более двух тыс. мышей. Еды и гнезд было достаточно для дальнейшего роста популяции, но через четыре года после начала эксперимента Кэлхун остановил свой опыт, потому что в загоне осталось чуть более сотни мышей, и все они уже вышли из репродуктивного возраста. По итогам эксперимента Кэлхун пришел к выводу, что достижение определенной плотности населения и заполнение социальных ролей в популяции приводит к распаду общества" https://physicsoflife.pl/dict/pic/calhoun/calhoun.. https://scientificrussia.ru/articles/utopiya-dlya-mys.. https://ru.wikipedia.org/wiki/Кэлхун,_Джон_(этолог)
    • gudstartup
      @Koels вот в чем дело пока ds609 это предупреждение поэтому F может и не появится если sv601 это значит ошибка. возможно при нагреве радиатора серво определяет это как предупреждение или ваш вентилятор крутиться медленнее чем оригинальный и серва думает что он встал хотяпри этом обычно на экране в строке состояния FAN.мигает больше у меня вариантов нет....  
    • ДОБРЯК
      Решите любым алгоритмом. Тогда будет конструктивный разговор. :=)
    • Fedor
      https://en.wikipedia.org/wiki/List_of_numerical_analysis_topics#Eigenvalue_algorithms     :) 
    • Юрий К.Ф.
      Добрый день. Не нашёл тут тему по стойке Китайско Китайской)) Lynuc N3ME. Видать мне так повезло с её наличием)) Приобрели 5-ти осевой Китаец. В б/у состоянии после удара по оси Z. Отремонтировали по механике, заменили батареи на драйверах, выставили лимиты. Всё Ок. Пригласили со стороны людей которые бы разобрались по операторской части. Те два выходных ковырялись, после сказали покажут расскажут, но за огромные деньги. Не сошлись. После месяц станок простоял, когда включили перестал реагировать на регулировку скорости шпинделя. То есть в режиме Jog, включаем обороты, которые стандартно 2140-2149 об/мин. При регулировке процетности не меняются (сама процентность показывает на мониторе). Так же при включении оборотов через команду M03S300 или другое значение, скорость так же показывает 2140-2149 об/мин. Грешить на тех товарищей с которыми не сошлись по деньгам для обучения, как то не хочется. Поковырялся в настройках шпинделя, вроде всё в норме. Проводку на шпинделе прозвонил, целая. В чём причина, не понятна. Кто нибудь сталкивался с подобным, или с подобной стойкой? Может подсказать варианты причины подобного?
    • ДОБРЯК
    • Fedor
      https://en.wikipedia.org/wiki/Eigenvalue_algorithm   Вот , кстати, важное свойство которое раньше встречал у Стренга. :)    http://elibrary.bsu.edu.az/files/kitablar/1022.pdf   
    • ДОБРЯК
      Вы ысё чаще напоминаете телевизор, который случайным образом переключает программы...:=)
    • sssdos
      сочувствую бедности(Дома на ноуте стоит Windows XP С PM 6.). Или другие причины?
×
×
  • Создать...