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

Pro\Toolkit, Java, VBA


VitAl2013

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

Добрый день.

Такой вопрос: настройки конфигурации (MSVC 2005) можно сохранить где-то, чтобы в новом проекте не настраивать все опять?

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


Хочу спросить как программист программистов: написал программу, все нормально работает, ставлю на другой компьютер - выдает "Pro/TOOLKIT regyistry file .. : application failed to start", "Startup of application failed". Все перепробовал, разные ключи компиляции, ничего не помогает :wallbash: . Windows такой же (XP sp3), Pro/E такой же в точности, процессор Intel, правда двухядерный, а не четырех, как на исходном компьютере; в чем дело, не пойму никак, третий день бьюсь, дайте наводку :smile: , что делать???

P.S.

MSVC2005

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

Как и принято в этой теме, сам отвечаю на свой же вопрос :smile:

Почитал что пишут программисты на <noindex>http://www.cyberforum.ru/visual-cpp/thread320477.html</noindex> :

Project -> Properties -> C/C++ -> Code Generation -> Runtime Library -> (/MT) ( у меня было /MDd )

(линкует библиотеки статически, а не динамически),

ну и, соответственно, protk_dll.lib вместо protk_dllmd.lib

Смысл всего этого представляю весьма смутно, если я правильно догадываюсь - с ключом /MDd программа при запуске будет искать какие-то внешние библиотеки, а с /MT все сохраняется в одном файле .dll

В общем, на другом компьютере заработала программа! :drinks_drunk:

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

Всем привет!

Помогите, пожалуйста, разобраться с таким вопросом. В терминах и самих САПР-ах я не силен, поэтому могу тупить. Есть задача - получить из файла (или .asm, или .prt) ProEngineer геометрию и Массово-Инерционные Характеристики солидов. Для начала надо оговориться, что такое солид. Потому что складывается такое впечатление, что в ProEngineer под солидами понимают несколько не то, к чему привык я (и те немногие люди, что меня окружают). Прямого определения в ProE я не нашел. Если опираться на Pro/Toolkit, то ProSilid - это базовый класс для ProPart и для ProAssembly (или что-то типа того). Но под "своим" солидом я понимаю геометрический объект (тело) в составе того же part-а или assembly, который является единым целым. Если выразиться точнее, то это такой солид, который существует в Unigraphics NX. Таким образом, в одном part-е может находиться несколько "независимых" солидов.

Саму геометрию я научился получать через ProSurfaceTessellationData (как в примерах, идущих вместе с ProE). Но получается, что тогда мы не можем разделить "мои" солиды в парте. Пытаюсь как-то подобраться к отдельным солидам, но пока все тщетно. Через перебор фичерсов с помощью ProSolidFeatstatusGet() не получается. Кстати, у фичерсов есть такие типы: PRO_FEAT_RIBBON_SOLID и PRO_FEAT_SOLIDIFY, но они что-то совсем не встречаются. Хотя не факт, что это то, что я думаю.

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

Подскажите, можно ли каким-либо макаром осуществить простой перебор всех солидов, присутствующих в модели? Или в ProE нет солидов?

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

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

В ПроЕ нет многотельных деталей. И реализация сборок и моделей у него отличается от UG. Можно получить массово-инерционные характеристики компонентов сборки...

п.к. Под солидом обычно понимают твердотельный объект имеющий массу.

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

В ПроЕ нет многотельных деталей. И реализация сборок и моделей у него отличается от UG. Можно получить массово-инерционные характеристики компонентов сборки...

п.к. Под солидом обычно понимают твердотельный объект имеющий массу.

О, спасибошки! А то мне пришлось бы мучиться дальше в поисках того, чего нет.

Вопрос не совсем по теме: а почему в ProE сделали реализацию партов немноготельной, а в Unigraphics NX с возможностью "видеть" отдельные солиды? И в чем преимущества подходов?

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

Не знаю, это трудный вопрос.

В UG нет четкого деления на сборки и детали, это один и тот же файл. Схожий принцип еще у T-flex. У остальных что я знаю, сборки и детали это разные файлы (расширения).

Детали отдельно, сборки отдельно с точки зрения реального производства более логично. Исключая конечно моделирование некоторых деталей, оформление которых сборкой трудозатратно (плата печатная с проводниками).

При многотеле меньшее количество рабочих файлов, проще на начальной стадии. Но хуже с заимствованием и повторным использованием. Хотя многое зависит от конкретной реализации.

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

кажется, теперь все ясно ))

Скажите, а есть ли в Pro/Toolkit такая функция, которая бы возвращала бы список всех партов в данной сборке. только не ProSessionMdlList() - она, к сожалению, возвращает только уникальные парты. например, если у меня в сборке есть два компонента с одинаковым прототипом (типа две гайки, которые "ссылаются" на один общий файл .prt с этой гайкой), то ProSessionMdlList() вернет мне одну гайку. А мне бы хотелось бы все две. В таком случае мне не придется пробегать всю структуру сборки. Есть что-нибудь подобное?

И кстати, сразу вопрос: а как вытянуть из компонента ссылку (по сути, любую зацепку) на его прототип - объект, экземпляром которого он является? Вопрос связан с тем, что мне надо провернуть сброс геометрии в некий файл и хотелось бы предусмотреть в нем возможность использовать ссылки: тогда потребуется сохранить полную информацию только об одном таком объекте (прототипе), а затем в нужных местах просто делать ссылки на него.

Ой, забыл уточнить. Я правильно понял, что в сборке можно только действительно собирать? Как я понимаю, сборка может содержать только фичерсы в виде компонент. И нарисовать свои объекты в ней нельзя. Например, цилиндр. Я попробовал - и вроде бы действительно так. Точнее они рисуются, но обнаружить их можно только через слои Да и на массу они не влияют. но хотелось бы услышать подтверждение от опытных пользователей.

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

Надо смотреть.

ProSessionMdlList здесь вообще не подходит. Она сообщает о всех моделях в памяти, а не в конкретной сборке даже если она только одна открыта (если не почистить от не используемых моделей).

В сборке можно делать только вырезы и поверхности. В зависимости для того зачем Вам добавление материала в сборке, есть свои методы (масса сварки учитывается).

п.к. 45 глава справки. ProAsmcompMdlGet() - модель для компонента, помоему. ProAsmcomppathMdlGet() - откуда подняло. ПроЕ не хранит пути в файлах, только имя файла. Масса модели и компонента может отличаться (обрезка в сборке, гибкие компоненты).

ProOutputFileWrite() константа PRO_BOM_FILE Файл спецификация по компонентам сборки, их количеству. Выводимые параметры настраиваются.

ProElemtreeWrite() - список элементов дерева в XML файл.

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

Ясненько. Плин, все не совсем просто.

А что-нибудь касательно компонентов и их прототипов можете сказать? Как получить ссылку на прототип компонента?

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

Имя компонента и его модели совпадают, как и имя файла (исключение только для моделей являющихся исполнением основной, физически файла на диске нет).

Нахождение компонента, если сборка не загружена, через поиск. Можно по путям прописанным в настройках.

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

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

Нахождение компонента, если сборка не загружена, через поиск.

то есть в ПроЕ можно как бы делать отложенную загрузку модели партов? ))

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

вы имеете в виду посмотреть в самом CAD-е? так не катит. суть в том, чтобы сформировать файл со своим форматом описания открытой модели, где помимо прочего для партов должны указывается МиХ-и.

ладно, сейчас буду пробовать...

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

то есть в ПроЕ можно как бы делать отложенную загрузку модели партов? ))

Да. Предварительную загрузку в память можно ProMdlRetrieve().

А ProSessionMdlList() как раз показывает что сейчас в памяти.

По мимо создания Спецификации BOM (настраиваемой, можно туда добавить и масс-инерционные).

Есть еще одна стандартная возможность для вывода листинга масс-инерционных характеристик сборки с компонентами, надо глянуть какая это будет функция...

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

то есть в ПроЕ можно как бы делать отложенную загрузку модели партов? ))

если имеется в виду загрузка сборки без загрузки входящих компонентов - то нет, загружается все сразу

загружена - значит в наличии в памяти, но может иметь свое окно для отображения а может и не иметь

вручную: файл - открыть - выбрать и открыть модель - зарыть текущее окно - окна с моделью нет, но в памяти она есть, отслеживает все изменения и сохраняет их на диск при сохранении сборки

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

если имеется в виду загрузка сборки без загрузки входящих компонентов - то нет, загружается все сразу

Это не совсем так. Есть вариации при открытии упрощенных представлений сборки. Геометрическое представление не грузит компоненты, но масс-инерционные просмотреть можно.

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

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

void getObjects(ProMdl mdl)

{



ProSolidFeatstatusGet((ProPart)mdl, &pFeatIdArray, &pStatusArray, &nFeatures );

for(int iF=0; iF < nFeatures; ++iF )

{



  ProFeature		feature;

  error = ProFeatureInit((ProPart)mdl, pFeatIdArray[iF], &feature );

   ...

  ProMatrix	transformation;

  ProAsmcompPositionGet((ProAsmcomp*)&feature, transformation);

   ...



  ProMdl prototype;

  ProAsmcompMdlGet((ProAsmcomp*)&feature, &prototype);

  getObjects(prototype);

  ...

  // где-то здесь заполняю структуру с описанием: transformation + данные после вызова getObjects(prototype);

  ...



}
Функция getObjects() соответственно вызывается рекурсивно. Где-то на каждом этапе работы этой функции я формирую свою структуру с описанием ее содержимого. В описание входит и матрица трансформаций.

Структуры также обладают вложенностью. После прохождения по всей модели получаю итоговую структуру. Загоняю ее куда надо и на экране выводится странная картина. Скрин из ПроЕ - файл 111. так должно быть. у меня же получается следующее: оба объекта в каждой группе (выделены цветом на 111) сливаются в один - скрин из "куда надо" в файле 222.

когда делаю экспорт из файла с парой, то оба объекта выводятся нормально.

получается, что после второго вложения, что-то у меня происходит с матрицами трансформациями. Может я не так их использую?

Попробовал еще вот такой вариант:

ProAsmcomppath comp_path;

ProIdTable c_id_table;

c_id_table [0] = -1;

ProAsmcomppathInit (rootAsm, c_id_table, 0, &comp_path);

ProMatrix	transformation;

ProAsmcomppathTrfGet (&comp_path,PRO_B_TRUE,transformation);
но тут все объекты вообще в один слились. здесь я явно не так Asmcomppath нашел. кстати, как его правильно получить через ProFeature?

Но больше волнует вопрос, что с матрицами ))

post-32063-1316184229_thumb.png

post-32063-1316185143_thumb.png

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

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

Всем привет!

Ложная тревога. Это внутренний косяк программы, воспринимающей файл.

Кстати, а есть какой-либо способ, чтобы сразу в глобальных координатах получать координаты вершин фасетнйо сетки для компонентов?

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

Фасетная сетка? Так это не имеет отношения к стандартным моделям ПроЕ. Хотя их можно сохранить в STL, где и будут перечислены все вершины...

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

Фасетная сетка? Так это не имеет отношения к стандартным моделям ПроЕ. Хотя их можно сохранить в STL, где и будут перечислены все вершины...

Привет! Ну, скорее всего мы говорим о разных вещах, так как я не особо разбираюсь в понятиях и поэтому употребляю свои термины )). Под фасетной сеткой я имею в виду то, что мы получаем через такую функцию:

ProSurfaceTessellationData *tes_data = NULL;



		//Get the part tessellate

		error = ProPartTessellate ((ProPart)(mdlSolid),

			partFacetParam.chord_ht,

			partFacetParam.angle_cntrl, 

			partFacetParam.include_quilts, 

			&tes_data);
А вы наверное говорите о FEM (для чего, кажется, есть специальный модуль в ПроЕ).

У меня возник очередной вопрос. Как получить экземпляр ProAsmcomppath в такой ситуации:

ProError error;



		int				*pFeatIdArray;

		int				nFeatures;

		ProFeatStatus	*pFeatStatusArray;



		/* Allocate ID and status arrays */

		error = ProArrayAlloc( 0, sizeof(int), 1, (ProArray *)&pFeatIdArray );

		TEST_CALL_REPORT( "ProArrayAlloc()", "ProTestFeatureResume()",

			error, error != PRO_TK_NO_ERROR );

		error = ProArrayAlloc( 0, sizeof(ProFeatStatus), 1, (ProArray *)&pFeatStatusArray );

		TEST_CALL_REPORT( "ProArrayAlloc()", "ProTestFeatureResume()",

			error, error != PRO_TK_NO_ERROR );

		if( error != PRO_TK_NO_ERROR )

			return PRO_TK_GENERAL_ERROR;





		// Get all features in Mdl

		error = ProSolidFeatstatusGet((ProPart)mdl, &pFeatIdArray, &pFeatStatusArray, &nFeatures );

		TEST_CALL_REPORT( "ProSolidFeatstatusGet()", "creo2ECT()",

			error, error != PRO_TK_NO_ERROR );

		if( error != PRO_TK_NO_ERROR )

			return PRO_TK_GENERAL_ERROR;



		for(int iF=0; iF < nFeatures; ++iF )

		{



			ProFeature		feature;

			/* Get a handle to the feature */

			error = ProFeatureInit((ProPart)mdl, pFeatIdArray[iF], &feature );

			TEST_CALL_REPORT( "ProFeatureInit()", "creo2ECT()",

				error, error != PRO_TK_NO_ERROR );

			if( error != PRO_TK_NO_ERROR )

				return error;
Это я перебираю фичерсы внутри Mdl.

Вообще-то, мне это нужно для того чтобы вызвать функцию ProAsmcompVisibilityGet():

extern ProError ProAsmcompVisibilityGet  (ProAsmcomppath *p_comp_path,

					  ProSimprep	 *p_simp_rep,

					  ProBoolean	 *p_visibility);

Но если быть совсем откровенным, то мне надо перебрать все точки внутри Mdl и выяснить какой у них статус типа "hide/show". Сами точки и их координаты я получаю. Пробовал подставлять feature с типом ProFeature в такие функции как:

ProFeatureVisibilityGet(&feature, &isBlanked);

				ProModelitemIsHidden(&feature,&isBlanked);
но одна из них служит не для того, а другая выдает неадекватный результат.

И так, напоминаю вопрос: Как получить экземпляр ProAsmcomppath через ProFeature или как получить статус hide/show для точки?

Подскажите, пожалуйста

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

Добрый день

можно еще раз выложить видео? ( Video 1, Video 2)

Мне очень нужно.

tuanthanhtran279@gmail.com

Огромное спасибо

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

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

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

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

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

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

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

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

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

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

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




×
×
  • Создать...