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

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


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

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

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




  • Сообщения

    • Барс
      Вы утверждаете, что положение гидроцилиндра (или правильнее сказать - точек его крепления относительно центра масс кузова и груза) никак на расчёт не повляиет?
    • maxx2000
      @areg потому что у него всего 1 публикация и не может вообще писать ЛС. сам ему напиши
    • gudstartup
      это безопасность чтобы вас в ручном режиме на шпиндель не намотало прописывается станкостроителем в plc правда у нас 500 а 54 это прям совсем мало
    • areg
      Написал в личку. А почему в личку цены не можете скинуть?
    • Kelny
      Посмотрите свойтсва файлов из Explorer Windows, на закладке ПОДРОБНО, там может быть строчка ПОСЛЕДНЕЕ СОХРАНЕНИЕ В...   или создайте макрос, добавьте пример из справки (в замен того что имеется в новом макросе) и запустите выполнение макроса, который покажет не только последнюю версию файла, но и историю файла по разным версиям (в каких вообще версиях файл редактировался): https://help.solidworks.com/2022/english/api/sldworksapi/Get_Version_History_of_Future_Version_Document_Example_VB.htm   Текст макроса из справки (если файл уже открыт в Soildworks, то в макросе ни чего менять не надо, а если открытых документов нет и надо макросом открыть документ, то поменяйте путь к файлу в тексте макроса "strFileName = swApp.GetCurrentMacroPathFolder & "\Part1.sldprt""):  
    • lem_on
      Но комп от интернета отключен. 
    • Anat2015
      Так было всегда, или "я неделю тут работаю"? Механизм возникновения проблемы даст полезную инфу.
    • Shoker
      Насколько я понял Ваш вопрос, результат будет зависеть от типа закрепления, приложенного к проушине. Если вы используете "фиксированную геометрию", тогда все точки поверхности этой поверхности будут иметь нулевые перемещения, что фактически означает запрет на вращение вокруг оси (т.к. поворот вокруг оси будет приводить к вращению-перемещению всех точек, не лежащих строго на самой оси вращения). В SW должны быть другие виды закрепления, которые будут позволять поворачиваться, при этом у точек будет нулевые радиальные и осевые перемещения. Но это нужно будет применять, только если этот ГЦ будет входить в другую расчетную схему, как элемент, воспринимающий только осевую силу (остальные будут нулевые как раз изза этого поворота), отдельный расчет с таким закреплением вам ничего не даст и ничего он не посчитает вам.
    • laytermen
      Добрый день. Нет. Стабильно 54 оборота и все. 
    • KSVSVK
      С одного дистрибутива на 2 компьютера несколько лет назад поставлен Солид. Обновления отключены.   Последнее время начались "чудеса":   1. Файл, созданный на первом компе, не открывается на втором, утверждая, что он из "будущей версии"   2. Проверка сборки эвольвентного зубчатого редуктора в "будущей версии" находит интерференции, отсутствующие в старой.   3. Расчет данного редуктора (Motion) при одних и тех же исходных данных приводит к разным результатам. Причем, на мой не очень искушенный взгляд, правильный результат у "старой" версии.   4. В контексте сборки создаю плоский эскиз, к которому привязываю размеры деталей (системное "Расположение" не использую). В какой-то момент (не отследил точно) часть размеров в эскизе пропадают. Причем эскиз остается определенным, и соответствующие взаимосвязи в нем есть. Похоже на "скрыть размер", но данный пункт не вызывался. При попытке посмотреть размеры через уравнения (режим ) Solid сообщает об ошибке и предлагает его перезапустить.   Кто-нибудь с такими "чудесами" сталкивался?
×
×
  • Создать...