Jump to content

BMIDE CDT - custom extension


Recommended Posts

Всем привет.

Уже всю голову сломал, перекурил документ Business Modeler IDE Best Practices Guide (стр 220-226 и не только), выучил и повторил все примеры от https://www.learnteamcenter.com/post/building-custom-extension-with-example до https://teamcenter-open-gate.blogspot.com/2016/12/teamcenter-itk-api-bom-creation-with.html

 

И даже раскопал пример scribd

 

В общем, хочу сделать проект с кастомным обработчиком, выполняемым  PostAction.

.

Причем именно в BMIDE.

 

TC10.1

VC10

 

cсоздал проект

настроил Build, path and symbols

создал library (активная)

создал 'extension (активное)

добавил extension availibility 

перешел на объект, к операции настроил extension attachment

выполнил Code Generation - C++ Classes

 

в Navigation tab появляется src/server/...

там 3 файла, среди который один схх, второй рхх

 

В схх файле создается метод-заглушка

#include...
int MyExtension(METHOD_message_t * msg, va_list args)

{

return 0;

}

 

все шикарно.

но если добавляю код

#include <fclasses/tc_string.h>
#include <tc/tc.h>
#include <tccore/grm.h>
#include <tccore/aom.h>
#include <tccore/aom_prop.h>
#include <tccore/grm_msg.h>
#include <property/prop.h>
#include <fclasses/tc_stdio.h>
#include <fclasses/tc_stdlib.h>
#include <fclasses/tc_string.h>
#include <fclasses/tc_stdarg.h>
#include <fclasses/iman_stdarg.h>
#include <iostream>
#include <stdarg.h>
using namespace std;

int MyExtension(METHOD_message_t * msg, va_list args)

{
printf("Hello, this is first message");
return 0;

}

Project - Build Project

Все ОК

Упаковываю проект, устанавливаю

 

через cmd VS проверяю dumpbin /EXPORTS %path%\%mylibrary%.bin

все ок - выводит имя метода (правда во всех примерах с _перед именем, а у меня без _ - но и в hxx тоже  extern без _)

 

Выполняю действия (например, создал проект по реакции PostAction на Item - create)

в консоль ничего не выводится.

 

Пробовал повторить проект с https://www.learnteamcenter.com/post/building-custom-extension-with-example

вместо DesignItemRevision взял ItemRevision (n3_property1)

DocumentRevision (n3_DocProperty1)

 

при специальной вставке (IMAN-SPecification) DocumentRevision в ItemRevision с должно выполняться

ItemRevision.n3_property1 = DocumentRevision.n3_DocProperty1 (да, это не из С++, я раньше только на С# немного программировал)

 

#include <N3library/N3extenstion.hxx>
#include <fclasses/tc_string.h>
#include <tc/tc.h>
#include <tccore/grm.h>
#include <tccore/aom.h>
#include <tccore/aom_prop.h>
#include <tccore/grm_msg.h>
#include <property/prop.h>
#include <fclasses/tc_stdio.h>
#include <fclasses/tc_stdlib.h>
#include <fclasses/tc_string.h>
#include <fclasses/tc_stdarg.h>
#include <fclasses/iman_stdarg.h>
#include <iostream>
#include <stdarg.h>
using namespace std;

int N3extenstion( METHOD_message_t * msg, va_list args )
{
	tag_t tPObject = va_arg(args,tag_t);
	tag_t tSObject = va_arg(args,tag_t);
	char* pPropertyValue = NULL;
	AOM_ask_value_string(tSObject, "n3_DocProperty1", &pPropertyValue);
	//cout << "pPropertyValue = " + pPropertyValue;
	AOM_lock(tPObject);
	AOM_set_value_string(tPObject,"n3_property1",pPropertyValue);
	AOM_save(tPObject);
	AOM_unlock(tPObject);
	std::cout << "my first console message";
 
	return 0;

}

 

и ничего не происходит

Ни cout, ни printf не выводят в консоль ничего. 

 

еще одна странность - раз 6 Build проекта сделаешь без изменений - пойдет какая нибудь ошибка, которую исправить нельзя, даже удали код (привязана к строке, удаление кода не удаляет ошибку)

 

P.S. Как понял - при разработке через BMIDE кастомные бибилотеки, экстеншены автоматом регитсрируются. Т.е. прописывать допом в preferences не нужно.

 

Может кто имел опыт - подскажет. Буду признателен. 

 

 

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


UnPinned posts
Krusty

Соберите сами свой бизнес моделлер 

т.е возьмите правильной версии чистый эклипс с cdt 

а потом впрысните туда бмидешные жарки, в манах описано 

  • Нравится 1
Link to post
Share on other sites
11 часов назад, Krusty сказал:

Соберите сами свой бизнес моделлер 

т.е возьмите правильной версии чистый эклипс с cdt 

а потом впрысните туда бмидешные жарки, в манах описано 

 

т.е. если взять дистриб ТС10.1, из него поставить также BMIDE и установить VC 10, то даже при правильных настройках и безошибочной сборке проекта кастомный код работать не будет?

 

P.S.

Пошел изучать 

Business Modeler IDE Guide

Server_Customization_Best_Practices_Guide

Business Modeler IDE Best Practices Guide

 

в Business Modeler IDE Guide

есть такой раздел

Цитата

Install the Business Modeler IDE to an existing Eclipse environment

 

я подозреваю, это оно :-)

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

Поделюсь результатами

1. BMIDE нормально работает из коробки (по крайней мере ТС 10.1.6)

Просто установить, установить VS2010 SP1

Создать проект, создать свою библиотеку, экстеншн

 

2. А вот где писать код (казалось бы в Impl - читаем Server Customization Programmer's Guide )

image.png

 

image.png

 

и вот вопрос

после генерации у нас есть 

srv/server

 

а есть 

Generated Source

 

причем в srv/server лежит шаблон  Impl файла.

Казалось бы - его кастомизируй и дело в шляпе.

 

Но какие я туда алгоритмы не загонял - не работает.

 

даже std::cout ничего не выводит

 

А вот наблюдение - если Build без ошибки (именно в части кода), то проект устанавливается. Я подозреваю что дело не в BMIDE и его варианте установке, а в "прокладке" - нужно как кто правильно логику тестовую хотя бы реализовать

буду дальше осваивать.

 

Разберусь во всем - дам инструкцию :-)

 

  • Нравится 1
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.




  • Сообщения

    • soklakov
      10^18 частиц. Да, мощнее имеющихся.
    • Golem
      Спасибо большое, я с таким не сталкивался.
    • VOleg
      Я бы сказал "Странный вопрос". За 40+ лет ни разу на чертеж детали не ставил номера позиций т.к. ни разу не нужно было. Но вот последние несколько лет люди начали спрашивать... Видимо на производство пришли "новые люди"... Вот, помогаю, как могу. Еще надо на листах металла на складе писать на какие детали куплен этот металл... И на трубы, что ли? А на сверлах писать какие отверстия нужно будет просверлить...
    • NGM
      Смотрю стандарт, и понимаю - сколько человек его прочтёт, столько трактовок и будет. Сплошные абстрактные формулировки; целый раздел про аттестацию, начинающийся с того, что она "не носит обязательный характер"... Зато, если буквально читать требования к специалисту к нормоконтролю - какой-то терминатор получается: и национальную систему стандартизации знает (всю!), и опыт по разработке КД/ТД имеет, и английским языком владеет. Вот для чего нужны такие ГОСТ-ы?! Заготовка для локального СТО, не более.  
    • NGM
      В идеальном мире розовых единорогов блюющих радугой подпись "Т. контр" в чертеже должен ставить технолог, который будет разрабатывать техпроцесс на проектируемое изделие. На практике я такого не встречал никогда. Предприятиям, где такое практикуется - моё заочное уважение. @Фарита, расслабьтесь. Лучшее, что Вы можете сделать у себя - организовать собственную группу конструкторов, которые будут: а) перечерчивать полученную КД под требования вашего производства, б) выносить мозги разработчику бесконечными ПИ. Поверьте, так работает абсолютное большинство предприятий промышленности - почти везде есть подразделения "конструкторского сопровождения производства", по факту являющиеся живыми примерами того, что ни ЕСКД, ни ЕСТД не работают и никогда не работали (во всяком случае, первое слово из обеих абревиатур).
    • vad0000
      Только одна клавиша не работает?
    • Fedor
      А может попробовать решить задачу  конструкторской оптимизации, то есть минимизировать величину расхождения с экспериментом... 
    • Metal_Cutter
      Это легко лечится, нужно отключить все Join-Up.
    • wake163
    • nicomed
      ИМХО, до разговора о самой таре как раз и надо определяться: в каком виде будет транспортировка ( собранном частично или подетально) предельные размеры и масса упакованной единицы надо ли сортировка по типам деталей (фасад, стенка) при фасовке (для автоматизации, соответственно, должны быть прописаны свойства в деталях) во что будет упаковываться, есть ли какие наработки по изготовлению тары ( тут я "плаваю" ибо такое не делал никогда ) ....если есть мысли что еще надо - дополняйте..   а потом уже только можно что-то продумывать, по каким размерам сортировать, по каким наименованиям ну и т.д.
×
×
  • Create New...