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

Nxopen


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

Решил попрограммировать и почти сразу столкнулся с проблевой - не получается создать Extrude.

До создания Extrude в общем то и не доходит, не получается создать Section.

Проблема видимо в создании CurveFeatureRule (так я и не понял в точности что же это такое), оно то и не создается. Привожу один их вариантов

NXOpen::Point3d point3d1(x,y,z);

NXOpen::Point3d point3d2(40,40,z);

Point *point1;

point1 = workPart->Points()->CreatePoint(point3d1);

NXOpen::Line *line1;

line1 = workPart->Curves()->CreateLine(point3d1, point3d2);

NXOpen::Features::ExtrudeBuilder *Extrude1;

Extrude1=workPart->Features()->CreateExtrudeBuilder(NULL);

Point *point0 = workPart->Points()->CreatePoint(NXOpen::Point3d(0,0,0));

Direction *Direction1=workPart->Directions()->CreateDirection(point0,NXOpen::Vector3d(0,0,1));

Extrude1->SetDirection(Direction1);

NXOpen::Section *Section1=workPart->Sections()->CreateSection(0.00095, 0.001, 0.5);

std::vector<NXOpen::SelectionIntentRule *> rules;

std::vector<NXOpen::Features::Feature *> Feature1;

CurveFeatureRule curveFeatureRule1(line1); //?????????????????

curveFeatureRule1.GetData(Feature1); //проверка Feature1 нулевой, зачит не получилось

rules.insert(rules.end(),&curveFeatureRule1); //?????????????????

Section1>AddToSection(rules,line1,NULL,NULL,NXOpen::Point3d(x,y,z),NXOpen::Section::ModeCreate); //?????????????????

Extrude1->SetSection(Section1);

Extrude1->CommitFeature();

Extrude1->SetVisibility(NXOpen::SmartObject::VisibilityOptionVisible);

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


Ух, UGSPLMовцы, панимаешь, наворотили в NX4 классов :).

Попробуй так ( для NX4 ) ( правда, обработку ошибок / проверки в коде я не делал вообще никакие - лень :) ) :

#include <vector>



#include <uf.h>



#include <NXOpen/session.hxx>

#include <NXOpen/nxexception.hxx>

#include <NXOpen/listingwindow.hxx>



#include <NXOpen/ugmath.hxx>

#include <NXOpen/section.hxx>

#include <NXOpen/line.hxx>



#include <NXOpen/features_extrudefeaturebuilder.hxx>

#include <NXOpen/features_featurecollection.hxx>



#include <NXOpen/directioncollection.hxx>

#include <NXOpen/sectioncollection.hxx>

#include <NXOpen/partcollection.hxx>

#include <NXOpen/curvecollection.hxx>

#include <NXOpen/linecollection.hxx>



#include <NXOpen/scrulefactory.hxx>

#include <NXOpen/curvedumbrule.hxx>







//--------------------------------------------------------------------

extern DllExport void ufusr( char *parm, int *returnCode, int rlen ) {



	//// initialize license environment

	NXOpen::Session * sess = NXOpen::Session::GetSession();

	try {



		//// obtain work part

		NXOpen::Part * wp = sess->GetParts()->GetWork();



		//// create lines and push them into vector

		std::vector <NXOpen::Curve*> section_curves;

		{

			NXOpen::Line * l1 = wp->Curves()->CreateLine ( NXOpen::Point3d ( 0,   0, 0 ), NXOpen::Point3d (100,   0, 0) );

			NXOpen::Line * l2 = wp->Curves()->CreateLine ( NXOpen::Point3d ( 100, 0, 0 ), NXOpen::Point3d (100, 100, 0) );



			section_curves.push_back( l1 );

			section_curves.push_back( l2 );

		}



		//// create extrude feature builder

		NXOpen::Features::ExtrudeFeatureBuilder * efb = wp->Features()->CreateExtrudeFeatureBuilder ( NULL );

		{ //// fill extrude feature builder data



			//// extrude direction 

			NXOpen::Direction * dir = 

				wp->

					Directions()->

						CreateDirection ( 

							NXOpen::Point3d  (0, 0, 0), 

							NXOpen::Vector3d (0, 0, 1), 

							NXOpen::SmartObject::UpdateOptionAfterModeling 

							);

			efb->SetDirection  ( dir   );



			//// start / end limits

			efb->SetStartLimit ( "0"   );

			efb->SetEndLimit   ( "100" );



			//// rules of the section

			//// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ->

			std::vector <NXOpen::SelectionIntentRule*> rules;

			{

				NXOpen::ScRuleFactory rule_factory ( wp );

				NXOpen::CurveDumbRule * rule = rule_factory.CreateRuleCurveDumb ( section_curves );

				rules.push_back( rule );

			}

			//// <- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!



			//// section

			NXOpen::Section * section = NULL;

			{

				section = wp->GetSections()->CreateSection();

				section->AddToSection ( rules, NULL, NULL, NULL, NXOpen::Point3d(0, 0, 0), NXOpen::Section::ModeEdit );

			}

			efb->SetSection ( section );

		}





		//// finally :)

		efb->CommitFeature();



	}

	catch ( const NXOpen::NXException & erc ) {

		sess->GetListingWindow()->Open();

		sess->GetListingWindow()->WriteLine ( erc.what() );

	}

	catch (...) {

		sess->GetListingWindow()->Open();

		sess->GetListingWindow()->WriteLine ( "Unhandled exception" );

	}

}

Regardzzz ...

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

К сожалению не получилось, на строке

NXOpen::CurveDumbRule * rule = rule_factory.CreateRuleCurveDumb ( section_curves );

Происходит ошибка.

В окне NX пишется:

First parameter is invalid

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

Хм.. забавно ...

Начнём от печки :

1. Какая версия NX установлена?

2. Какой компилятор?

3. Какая STL установлена?

Regardzzz ...

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

Спасибо за пример!

Кажется разобрался, не работает debug версия.

Очень жаль, попытаюсь исправить.

Может что-то посоветуете?

Стоить NX4,пример в сделан в MVS++ 2005.

Работаю в MVS++ 2002, но не уверен что все будет работать(данный пример работает в debug и в release), так как библиотеки в NX cделаны в MVS++ 2003

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

Ааа... понятно в чём дело :)

п.1 RTFM по совместимым с UG-ами компиляторам. И исрользуй только тот, который рекомендован. Например для NX4 ( см аттач ). Если хочешь весёлых и непонятных глюков - можешь использовать любой :)

п.2 Всегда используй Release версию ( #define NDEBUG ) иначе можно получить AV в деструкторах

контейнеров. Память для них аллоцируется UG-ами ( которые сами по себе в Release версии собраны ) - а уничтожается контейнер - у тебя в dll-ке. И если у тебя Debug версия то уничтожение скорее всего и вызовет Access Violation.

Regardzzz ...

post-646-1153917564_thumb.png

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

To niki

По п1. Где же его взять то. А рекомендации эти я читал.

По п2. Без отладки бывает тяжело. Но с MS VC++ 7.0 вроде работает. Но вызыватся по видимому будут библиотеки и MFC70 и MFC71

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • djtim
      Здравствуйте. Еще один вопрос от новичка. Мне кажется что это простая задачка. Есть некая платформа, состоящая из- 1. базы (верх и низ), толщина листа 2.5мм. 2. опоры (4 шт), толщина листа 2.5мм. Швеллер. 3. боковой обшивки (2шт), толщина листа 1мм.   Платформа крепится к фундаменту анкерами. Опоры крепятся к базе болтами. Обшивка по периметру приваривается к базе сверху и снизу). Габариты платформы 700*500*300мм. На платформе стоит изделие (около 300кг).   Прошу подсказать как правильно наложить ограничения для линейного расчета по статике. Хотелось бы выяснить минимальную толщину стенок базы и опор. Про неудачную конструкцию опорных места швеллера знаю, но вопрос не в этом. По ограничениям: - отверстия для анкера жесткой зафиксированы. - как соединить швеллер с базами? -как соединить обшивку с базами?   Спасибо.    
    • Docuk1
      Именно так и делаем. НО если есть возможность дописать пару строк кода и забыть, то было бы вообще хорошо
    • bsaidov
      Они у вас автоматически появились или принудительно добавили в Expressions? У меня вот нет таких. 
    • djtim
      а, так это просто эскиз силовых элементов. В готовом изделии все закрывается декоративной панелью/корпусом
    • Марсель
      Книга Проектирование систем. Диксон. Пылесоса и пр. там нет, но есть  В книге автор разбирает несколько прикольных проектов, напр. воздушно-водяная ракета. Решает производственные задачи. Также посмотрите двухтомник Детали машин М.Н. Иванова. Разбор проекта лебёдки Одегова. Орлов. Основы конструирования. Про насос.
    • Fedor
      Ошибки не вижу. Вижу что некрасиво. Для таких изделий стоит обратиться к архитекторам. Делать красиво их учат :) 
    • djtim
    • AlexKaz
      Спрашивать в интернете бесполезно о таких вещах. Либо Вы конструктор и ручками участвовали в создании изделий для рынка, либо студентов Вы потеряете. Шансы подготовить студентов, не имея минимального опыта, околонулевые. Лучше 10 раз подумать, и по возможности привлечь к преподавательской деятельности конструктора с опытом. За отдельную оплату.
    • AlexKaz
      Странно, что об этой проблеме 8 млрд. чел. не в курсе, но препод ни в зуб ногой. Если в гугле вбить "COFFEE MACHINE patent", находится всё. Это был первый этап. Второй этап - взять любую программу обучения инженеров-конструкторов, например, специальности 15.03.01-15.03.02-15.03.03, и осознать, что подобные чайники без соответствующей подготовки сделать невозможно. Третий этап - КД. Вам её никто никогда не отдаст. Это ноу-хау фирмы. Даже если в КД один единственный чертёж с единственным болтом - в интернет это не выложат. Расчётную часть тоже не выложат. Поэтому лично я всегда отношусь скептически к вузовским инженерам, никогда не работавшим в КБ или в частных фирмах, связанных с прямым производством. Они вообще не понимают, что происходит на производстве.
    • статист
      Reduced Order Modeling of Coupled Domains  
×
×
  • Создать...