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

Изучаем Toolkit


Sergey___1978

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

03.07.2022 в 18:01, davidovka сказал:

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

Конфигурацию при компиляции Debug используете для примера от PTC?

xtop_debug2.png

 

Если в нем отладка запустится, то сравнивать параметры проектов вашего и из примера otk_view_tree_app

 

https://stackoverflow.com/questions/8341686/visual-studio-no-symbols-have-been-loaded-for-this-document

https://docs.microsoft.com/en-us/visualstudio/debugger/troubleshooting-breakpoints?view=vs-2022

 

 

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


После присоединения к процессу зашел Отладка-Окна-Модули. Принудительно "загрузил" символы которые загрузились. И отладка заработала! Спасибо!

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

Можно ли в функции создания кнопки

perr = ProCmdActionAdd("open_drw",
        (uiCmdCmdActFn)open_drw,
        uiProeImmediate, NULL, PRO_B_TRUE,
        PRO_B_TRUE, &cmd_id);

вызывать функцию с аргументами?

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

Можно ли в функции создания кнопки


perr = ProCmdActionAdd("open_drw",
        (uiCmdCmdActFn)open_drw,
        uiProeImmediate, NULL, PRO_B_TRUE,
        PRO_B_TRUE, &cmd_id);

вызывать функцию с аргументами?

Насколько знаю, нет.

А какая цель? Возможно, найдется другой путь.

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

А какая цель?

Сейчас сделал так:

Две кнопки "открыть чертеж", "открыть спец-ю". Каждая вызывает свою функцию "open_drw", "open_drw_sp". А эти функции вызывают одну "open_drw_base", но с разными аргументами. Думал, что можно избавиться от лишнего звена, вызывая сразу с нужными аргументами.

Еще вопрос: можно ли перехватить вызов функции "переименовать"? Для чего: при переименовании модели смотреть есть ли чертеж этой модели и переименовывать и его (чертеж)?

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

А зачем что-то перехватывать? Делаете свою кнопку переименовать. Считываете имя модели. Проверяете если чертеж с таким же именем и переименовываете его тоже, так же со спецификацией. Я работаю в винчиле, если чертеж не открывается значит его нет. При локальной работе всех нюансов не знаю.

Ссылка на сообщение
Поделиться на других сайтах
18.07.2022 в 20:24, davidovka сказал:

Еще вопрос: можно ли перехватить вызов функции "переименовать"?

Посмотрите функцию ProCmdBracketFuncAdd()

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

Можно ли как-то вызвать и использовать окно Creo c выбором папки/файла для указания пути сохранения файла?

Или только через виндосовские SHGetPathFromIDList и т.д.?

Хочу сделать печать чертежа в tif:в настройках приложения выбираем путь для сохранения, сначала печатаем в pdf, потом вызываем ghostscript вот ему этот путь указываем.

 

Снимок.PNG

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

Можно ли как-то вызвать и использовать окно Creo c выбором папки/файла для указания пути сохранения файла?

ProFileOpen()

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

Узнал недавно о существовании Обжект Тулкит. Есть ли у него какие-нибудь преимущества перед классическим тулкитом?

Хочу попробовать написать что-нибудь, стоит ли тратить время на его изучение, есть ли в нем что-то такое чего нет в Pro\Toolkit?

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

Узнал недавно о существовании Обжект Тулкит. Есть ли у него какие-нибудь преимущества перед классическим тулкитом?

Хочу попробовать написать что-нибудь, стоит ли тратить время на его изучение, есть ли в нем что-то такое чего нет в Pro\Toolkit?

Вообще PTC говорили, что это приоритетное направление и будет развиваться (правда такие заявления звучали несколько лет назад).

В целом это c++, Java, объектно-ориентированный подход и тд. Есть возможности, которых нет в Pro\Toolkit. Но и нет того, что есть в Pro\Toolkit.

Хотя можно создать проект под Обжект C++ и если чего-то не хватает, то использовать в нем C Toolkit функции. Так что тема, вроде как, перспективная и изучение скорее полезно, чем нет.

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

Хотя можно создать проект под Обжект C++ и если чего-то не хватает, то использовать в нем C Toolkit функции. Так что тема, вроде как, перспективная и изучение скорее полезно, чем нет.

Спасибо, появиться время, надо посмотреть с чем его едят.

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

Приложение открывает чертеж активной модели, хочу после открытия чертежа в "окне сообщений" писать текст, к примеру, "Открыт файл D:/2022/drw/7411111111.drw", но этот текст пишется в окне модели, а не нового окна (окна чертежа). Как побороть?


 

pfcSession_ptr Session = pfcGetProESession();
....
desc = pfcModelDescriptor::CreateFromFileName(model_name);
Session->OpenFile(desc)->Activate();
Session->UIDisplayLocalizedMessage("message.txt", "openDRW", path);

 

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

А зачем это сообщение вообще нужно?

Чертеж открылся, это и есть сообщение.

Надо писать универсальный макрос. Вдруг чертеж еще не создан.

Тогда надо предварительно его создать с именем модели, прописать программно

все необходимые параметры:  обозначение и наименование, взятые из модели...

Кроме того можно  этим же макросом открывать спецфикацию, ГЧ, технические требования и т.д.,

создав под них отдельные кнопки.

Я на тулките себе такой написал, на с++ как то все логичней и проще пишется.

Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Sergey___1978 сказал:

А зачем это сообщение вообще нужно?

Тоже не понимаю, но пользователи попросили:)

Да и уже в принципе интересно как это сделать, может пригодиться в других ситуациях.

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

пользователи попросили:)

Не повезло вам с пользователями :)

Ссылка на сообщение
Поделиться на других сайтах
28.10.2022 в 20:51, davidovka сказал:

pfcSession_ptr Session = pfcGetProESession(); .... desc = pfcModelDescriptor::CreateFromFileName(model_name); Session->OpenFile(desc)->Activate(); Session->UIDisplayLocalizedMessage("message.txt", "openDRW", path);

Я что то из этого кода вообще не могу понять почему должен открыться чертеж с именем модели

(это как я понял ObjectToolkit).

Тут логика какая должна быть, для самого простого случая только с чертежем:

1) Считываем имя текущей модели;

2) Пытаемся открыть чертеж с именем модели;

3) Далее два варианта:

- если чертеж существует, то он открывается;

- если нет, то создаем новый чертеж с форматом по умолчанию (допустим А4),

  прописываем необходимые параметры для вновь созданного чертежа;

- если чертеж уже открыт, то ничего неделаем;

4) Перед тем как вывести сообщение в окно с чертежом надо его активировать.

5) Послать сообщение.

 

 

 

 

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

На  Тулките это выглядит примерно так: 

 

    //берем данные текущей открытой модели
    status=ProMdlCurrentGet(&mdl1);
    if (status!=PRO_TK_NO_ERROR) {return (status);} //выход из функции, если нет модели
    //берем данные модели
    p_modelitem1.owner=mdl1;
    ProMdldata mdldata1;
    ProMdlDataGet(mdl1,&mdldata1);
    wcscpy(model.name,mdldata1.name);wcscpy(model.type,mdldata1.type);
    switch (mdldata1.type[0])
    {
    case 'A':{p_modelitem1.type=PRO_ASSEMBLY;break;}
    case 'P':{p_modelitem1.type=PRO_PART;break;}
    case 'D':{p_modelitem1.type=PRO_DRAWING;break;}
    default: {return(0);}
    }

 

    ProFamilyName drawing_name1;
    wcscpy(drawing_name1,model.name);
    switch (type_draw)
    {
    case 0: {wcscat(drawing_name1,L""); break;}
    case 1: {wcscat(drawing_name1,L"D"); break;}
    case 2: {wcscat(drawing_name1,L"SP"); break;}
    case 3: {wcscat(drawing_name1,L"GCH"); break;}
    case 4: {wcscat(drawing_name1, L""); break; }
    }
    ProMdl mdl3;
    status=ProMdlRetrieve(drawing_name1,PRO_MDL_DRAWING,&mdl3);
    if (status==PRO_TK_NO_ERROR)
    {    //если в новом окне
        int p_window_id;
        ProObjectwindowCreate (drawing_name1,PRO_DRAWING,&p_window_id);
        ProWindowActivate(p_window_id);
        ProWindowRepaint(p_window_id);
    }    else
    {
        //создание нового чертежа
        int p_window_id;
        ProDrawing created_drawing;
        ProMdl    format1;
        ProSolid    solid1;
        ProDwgcreateErrs errors;
        //задание настроек чертежа из другой папки
        ProDirectoryChange(PRO_TEMPLATES);
        status=ProDrawingFromTmpltCreate(drawing_name1,PRO_DRAWING_TEMPLATE,&model,PRODWGCREATE_DISPLAY_DRAWING,&created_drawing,&errors);

далее  действия для нового чретежа

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

Я что то из этого кода вообще не могу понять почему должен открыться чертеж с именем модели

Все примерно так и работает как вы описали, просто привел лишь небольшую часть кода. 

1 Открывается окно, чертеж

2 Активируется

3 Пишется сообщение

 

За кода спасибо, интересно

 

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

Есть некоторые имена файлов, которые не открываются

xstring model_name;
model_name = L"вер.drw";            // не открывается
model_name = L"1_223_1_v2_вер2.drw";// не открывается

model_name = L"корпус.drw";         // открывается

pfcModelDescriptor_ptr desc = pfcModelDescriptor::CreateFromFileName(model_name);
Session->OpenFile(desc)->Activate();

Пробовал в creopyson, тоже не открывает :)

import creopyson

c = creopyson.Client()
c.connect()

c.file_open("вер.drw", display=True)
D:\creo\creopyson>test.py
Traceback (most recent call last):
  File "D:\creo\creopyson\test.py", line 6, in <module>
    c.file_open("вер.drw", display=True)
  File "D:\creo\creopyson\creopyson\file.py", line 797, in open_
    return client._creoson_post("file", "open", data)
  File "D:\creo\creopyson\creopyson\connection.py", line 75, in _creoson_post
    raise RuntimeError(error_msg)
RuntimeError: Could not open file 'вер.drw' in directory D:\test\2023\

 

В чем может быть причина?

Файл есть и через Creo открывается.

Creo 4 M150

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

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

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

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

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

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

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

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

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

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

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



  • Сообщения

    • The_22nik
      Добрый день, функцией изолировать. В дереве построение нажмите правой кнопкой мыши, после выбора нужных компонентов. Лично для себя настроил через две клавиши, в настройках. Войти в этот режим на одну, выйти на другую.
    • Maik812
      abviewer 15 вариант есть без заморочек и можно как вьювер прицепить к тоталу. вопрос какие версии смотрит не знаю. но сомтрит что то можно крутит и сечения и тд. Вариант разобраться https://web.archive.org/web/20180322180055/http://www.streamdivision.com/prosmotr-3d-modeley/ Использовать Драйвинг как прогу просмотр https://rutube.ru/video/8dd0d1e3f1893e7108cca3d5265552e6/?ysclid=m1y68uvxem237840511   думаю твой вариант https://vmasshtabe.ru/blog/chem-prosmatrivat-fajly-solidworks
    • Bot
      Группа компаний «Национальная компьютерная корпорация» (НКК) совместно с Госкорпорацией «Росатом» провела первую демонстрацию PLM-системы САРУС+. Разработка системы осуществляется на базе платформы САРУС, созданной ранее в ГК «Росатом», и направлена на развитие российских технологических решений в области управления жизненным циклом изделий. Мероприятие прошло в рамках форума «ИТ ОПК-2024» в Архангельске. В соответствии со стратегическим соглашением о партнерстве с ГК «Росатом» НКК приступила к реализации программы разработки PLM-системы САРУС+. Разработка ведется с использованием современных технологических принципов организации сложного ПО на основе импортонезависимого технологического стека, обеспечивается поддержка мультиплатформенности системы, особое внимание уделяется защите обрабатываемой информации. Учитываются также основные архитектурные и технические тенденции, применяемые в ведущих мировых PLM-системах. В настоящее время НКК продолжает создание функционала [...] View the full article
    • Maik812
      Скорее всего не будет.. Вы бы еще 2025 sp0 поставили и просили :) Есть такая бибилиотека SW_ExtractBitmap64.dll она шла с СВехплоурер и потом он был отменен как софт м нужно найти бибилотеку которая  по сути тоже самое но называется по другому. подставляешь ее как SW_ExtractBitmap64.dll в папку плагина и он ее юзает SLDPreview.rar   Просмотр или тебе эскизы ??? Эскизы методом проводником, а просомтр по ф3 это можно внешним вьювером юзать. \Вот IEView.zip
    • lowboard
      Как кнопкой ТАБ скрывать деталь а тут наоборот, оставлять и скрывать все остальные разом? 
    • Danil Danilich
      Доброго времени суток, уважаемые знатоки, подскажите, пожалуйста, где или как настроить коррекцию на радиус ? Инструмент токарный, в стратегии ставлю галочки на Коррекцию РИ у чистового и чернового в итоге  в УП нет коррекции на черн. И есть на чист, если убираю галочки, то есть на черновом и нет на чистовом. Версия 2023, а вот 2014 все в порядке. Как прикреплять фото?  Благодарю за уделённое время. 
    • BSV1
    • Kasper
      Кто то может подсказать как просматривать файлы SolidWorks в ТС, может есть какой-то плагин?
    • Павлуха
      Опыт проектирования более 25 лет, а до сих пор бестолковый...
    • Павлуха
      Временная ось - это ось цилиндрической геометрии тела. Где есть цилиндр, там есть ось.
×
×
  • Создать...