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

Вопрос тем, кто имеет опыт программирования С++ для ТС


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

Есть модуль  Teamcenter 8,написанный С++, 32-битная платформа, который среди прочего выдавал список правил модификаций используя стандартные функции(CFM_list,AOM_ask_value_string) из библиотек /bin.

 

	bool result = true;
	int rCount = 0;     //количество правил правил модификаций
	tag_t *rules = NULL;            //ссылки на правила модификаций

	 //получение количества и ссылок на правила модификаций
	retcode = CFM_list(&rCount, &rules);
	if (retcode != ITK_ok)
	{
		AddToLog("GetRulesList", "CFM_list");
		result = false;
	}

	for (int i = 0; i < rCount; i++)
	{
		char *rName = NULL;
		const char * object_name="object_name";
		//получение имени правила модификаций
		retcode = AOM_ask_value_string(rules[i], object_name, &rName);
		if (retcode != ITK_ok)
		{
			AddToLog("GetRulesList", "CFM_list");
			continue;
		}
		 // запись правила модификаций в  _cbRulesNames
		_cbRulesNames->AddItem(rName, (TObject *)rules[i]);
	}

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

какие должны быть результаты:

Цитата

 

count=4

A

B

C

D

 

как получается:

Цитата

count=4

A

C

Invalid Tag  - the requested object does not exist

Invalid Tag  - the requested object does not exist

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

P.S. 

typedef int* tag_t; //тэги

 

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


4 минуты назад, klongard сказал:

 Если на примере:

какие должны быть результаты:

как получается:

count=4

A

C

Invalid Tag  - the requested object does not exist

Invalid Tag  - the requested object does not exist

 

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

P.S. 

typedef int* tag_t; //тэги

 

А при чем тут разрядность? Судя по результатам у вас два объекта как invalid tag, а которые живые - только A и C,которые и отображены в алфавитном порядке.

Разберитесь с invalid tag и возможно все будет как должно

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

@lexx174Если я Вас правильно понял, то скажу какие мысли у меня, в 64бит выделено в 2 раза больше памяти на указатели, чем на 32бит

Возможно происходит двойная запись:

A|B      Записаны сразу А и В, но функция обрабатывает только первую половину-А

C|D      и так далее остальными

0|0      А тут уже пустые значения, ссылки на не существующие объекты, Invalid Tag  - the requested object does not exist

0|0

 

P.S. Все объекты живые и могут отображаться. Если удалить А в Teamcenter, и запустить модуль, то результаты ты будут:

count=3

B

D

Invalid Tag  - the requested object does not exist

 

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

из-за разрядности ил нет, все равно получается ошибка в API которую нам с вами не исправить.
инвалид тэг - потому что в rules[3] ничего нет, точнее есть но какое то рандомное значение.

кстати  rName надо освобождать

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

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

исходим из того, что по факту у вас эти объекты сущеуствуют, ведь так?

смотрите как все будет себя вести на 11.3, дело не в разрядности.

ну и чего там у вас в сислоге написано?

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

@lexx174Если я Вас правильно понял, то скажу какие мысли у меня, в 64бит выделено в 2 раза больше памяти на указатели, чем на 32бит

Возможно происходит двойная запись:

A|B      Записаны сразу А и В, но функция обрабатывает только первую половину-А

C|D      и так далее остальными

0|0      А тут уже пустые значения, ссылки на не существующие объекты, Invalid Tag  - the requested object does not exist

0|0

 

P.S. Все объекты живые и могут отображаться. Если удалить А в Teamcenter, и запустить модуль, то результаты ты будут:

count=3

B

D

Invalid Tag  - the requested object does not exist

 

проверил в своей базе - все вроде по алфавиту по порядку.

 

Вначале идет перечень правил в английской локализации в верхнем регистре, потом в нижнем, потом русская локализация в алфавитном порядке. TC 10.1.5 64bit

 

Пример вывода:

 

Цитата

Any Status; No Working
Any Status; Working
Approved
B Latest by Alpha Rev Order
Latest Working
Latest by Alpha Rev Order
Latest by Creation Date
Precise Only
Precise; Any Status
Precise; Any Status; Latest Rev Order
Precise; Working
Quick
Simple
Working(Current Group); Any Status
Working(Current User); Any Status
Working; Any Status
a*******
b*******
Окончание******
Утвержденная или *****

 

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

@lexx174 в чем  запускали? Я пытаюсь в RAD Studio XE6, возможно, как сказали выше, дело в настройках проекта.

 

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

@lexx174 в чем  запускали? Я пытаюсь в RAD Studio XE6, возможно, как сказали выше, дело в настройках проекта.

 

visual studio. никакой экзотики

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

как учил товарищь niki при переходе на новую версию обязательно смотри что изменилось в настройках проекта, использовать правильную версию VS.

Особое внимание надо обращать на ключ /MT
И компилировать в конфигурации release.

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

а тут можно подробней?

т.к. тимцентр скомпилирован в конфигурации release, то и юзеровская длл лучше чтоб тоже была в релизе, иначе есть вероятность каких-нибудь багов которые хер отловишь.
Это конечно не догма и вероятность не велика (ИМХО).
Так учили в сименсе, правда по NX, ну тут думаю тоже самое.


речь конечно о native dll. 

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

т.к. тимцентр скомпилирован в конфигурации release, то и юзеровская длл лучше чтоб тоже была в релизе, иначе есть вероятность каких-нибудь багов которые хер отловишь.
Это конечно не догма и вероятность не велика (ИМХО).
Так учили в сименсе, правда по NX, ну тут думаю тоже самое.


речь конечно о native dll. 

есть же еще и exe

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

@lexx174 в чем  запускали? Я пытаюсь в RAD Studio XE6, возможно, как сказали выше, дело в настройках проекта.

 

Как бы вам сказать, вот эта хреновина - не сертифицирована, как бы банально сие не звучало, убедитесь для начала в используемом вами компиляторе, он должен быть от VC

и простите я вам там про 11.3 говорил, а вы на 10

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

Как бы вам сказать, вот эта хреновина - не сертифицирована, как бы банально сие не звучало, убедитесь для начала в используемом вами компиляторе, он должен быть от VC

Не сертифицирована Siemens? И как расшифровывается VC?

 

2 часа назад, lexx174 сказал:

visual studio. никакой экзотики

Тогда для меня это печально. В visual studio не работал раньше, но слышал есть большие разницы между VS и RAD STUDIO+ насколько я знаю нет прямой возможности проекты из одного в другой переносить

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

нет прямой возможности проекты из одного в другой переносить

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

А прежде чем переносить просто проверьте свой кусок кода с использованием Visual Studio.
Если будет работать то сомнений не останется

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

Не сертифицирована Siemens? И как расшифровывается VC?

 

Тогда для меня это печально. В visual studio не работал раньше, но слышал есть большие разницы между VS и RAD STUDIO+ насколько я знаю нет прямой возможности проекты из одного в другой переносить

Уберите эту RAD студию подальше и не усложняйте себе жизнь

 

Все програмирование exe/dll для TC по умолчанию сертифицировано и рекомендовано именно под Visual studio - (VC - это тоже имелось  виду visual studio)

 

RAD studio - это мутант от некогда популярной BORLAND(если не путаю) - разработчика Delphi,C++ Builder, который видимо решили потом сделать свой аналог MS Visual Studio

 

 В поставке TC есть скрипты для ручной (без IDE) компиляции и линковки, которые если заметите - ориентированы на компилятор от MS VS

 

 

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

@lexx174Тогда такой вопрос, в какой версии VS запускали? Есть VS 2010, я так понимаю принципиальной важности нет какая версия.

И можно Вас попросить попросить скинуть исходники где вы тестили загрузку правил модификаций?

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

 

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

@lexx174Тогда такой вопрос, в какой версии VS запускали? Есть VS 2010, я так понимаю принципиальной важности нет какая версия.

И можно Вас попросить попросить скинуть исходники где вы тестили загрузку правил модификаций?

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

 

А вы документацию читали вообще по кастомизации? Там должно быть написано какая среда нужна для серверной и клиентской кастомизации.

 

Проект - консольное приложение. Чего пугаться то vs студии? Я так понял вы не читали особо документацию все-таки.

 

И какая у вас версия тимцентра?Это тоже важно. У меня 10.1. Visual studio 2010 (возможно с SP1, не помню)

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

А вы документацию читали вообще по кастомизации? Там должно быть написано какая среда нужна для серверной и клиентской кастомизации.

 

Проект - консольное приложение. Чего пугаться то vs студии? Я так понял вы не читали особо документацию все-таки.

 

И какая у вас версия тимцентра?Это тоже важно. У меня 10.1. Visual studio 2010 (возможно с SP1, не помню)

Да, Вы правы, документацию не читал, то что программа в RAD Studio, это досталось мне в наследство от предыдущих работников по принципу "вот тут мы работаем, вот тут так и так, дальше по обстоятельствам".

Работаю в в версии 10.1.7

 

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Anton Born
      Добрый день! Подскажите, пожалуйста, почему неактивна кнопка "Изменить"? Хотел поменять цвет материала по умолчанию, чтобы каждый раз не лезть в свойства детали. И не могу.
    • IgP
      Красиво написали ... пустой, но не совсем ...
    • Мрачный
      Верно, по кубу. Значит не на порядок, а раз в 5.   
    • jtok
      Если быть точным, то только в третьей.
    • ДОБРЯК
      Вы две недели писали много букв и слов, что-то доказывали, чтобы в итоге сказать, что всё давно забыли. Мудро...
    • Максим Пядов
      Здравствуйте. Помогите кто чем может. Есть листогиб FINN POWER B 125-3060 с ЧПУ Cybelec dnc 900.  ЧПУ запускается но в нем не прописаны параметры машинный.  Мануалов и инструкций нет. 
    • Мрачный
      2014SP0 Заменил макрос на более свежий, как советовал, все стало как должно быть. Спасибо тебе, мил-человек, сохранил мне чутка нервных клеток!
    • Мрачный
      1. Прочность балки (момент сопротивления) вырастет при утолщении, может и существенно (в швеллере не в 10 раз толщина изменится). Жесткость - обычно несущественно. Момент инерции зависит от высоты в 4ой степени. Увеличили высоту в 2 раза - жесткость выросла в 16 раз (на порядок примерно). 2. Сталь ст3 или 09Г2С - модуль Юнга и там и там одинаковый 2.1*10^11Па примерно. Речь же идет о металлоконструкции, а не о стропилах крыши?  3. Ребро жесткости усиливает локально конструкцию. Общая жесткость от них не увеличится почти. Ну налепишь этих ребер и что? Раму после приварки ребер в бараний рог скрутит, да еще наплодишь кучу концентраторов для трещин. Швеллер заменить на трубу - я про это выше писал.   Для м/к машиностроительной прогиб должен быть не больше 1/400-1/600 пролета, очень грубое соотношение. На 6 метрах 1-2 см это норма, не 10 см, это уже падение.
    • Snake 60
      Как вариант усилить ребрами жесткости, где это возможно , не попадая на отверстия. или использовать трубу вместо швеллера. А вообще по уму считать надо, статический расчет в том же симулейшене, если мы говорим про SW. Если нет необратимых (пластических деформаций) и допускаются получаемые перемещения, то и пусть себе прогибается.
    • luffyfuffy
      Друзья, Вновь подниму данный вопрос. Если с инструкцией по прошивке и замой прошивкой в виде бинарника или HEX всё понятно, как сказал ранее @Niki85:   Но возникает вопрос, как добавляется в КД (и добавляется ли вообще?), исходный код на прошивку? В прекрасном РД 107.2.1002 есть документ с кодом Д40, с отсылкой к загадочному понятию «конструкторская документация программного обеспечения», которое помимо РД 107.2.1002 встречается только в достаточно свежем ГОСТ Р 58711-2019 по авиационной технике: При этом возникает противоречие КД на ПО составные части которого «необходимые и достаточные для загрузки программного обеспечения в память изделия», т.е. фактически идёт речь именно про прошивку)   Понимаю, что можно махнуть на всё и добавить свой собственный код для документа ДХХХ, но хотелось бы оставаться хоть в каком-то регламентированном поле. Или для исходного кода всё же создаётся вообще отдельная программная документация в соответствии с ЕСПД, которая в КД на изделие с микросхемой и прошивкой не попадает?
×
×
  • Создать...