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

Создать точки по координатам из файла


Politechnik

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

Здравствуйте все!

У меня есть координаты 4000 точек в файле. Мне надо их передать в UG.

Как это сделать? :smile:

Заранее благодарен.

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


можно получить сплайн путем импортирования координат из текстового файла insert\curve\spline\throuch points\points from file - , а уже по сплайну получить точки insert\curve\poin set ... ну или не получать точки :)

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

по быстрому набросал кусок кода ...

Координаты точек - по абсолютн системе координат

формат файла с данными :

x y z

разделитель - пробел

в каждой строчке - по точке

Пример:

10.0 20.0 30.0

12.0 50.0 80.0

ЗЫ Если лень ковыряться с кодом - в аттаче готовая dll для NX1

Запускать File->execute UgOpen->User Function или Ctrl+U

// source на с/с++

// *** cut here ***

#include <iostream>

#include <string>

#include <vector>

#include <fstream>

#include <sstream>

using std::vector;

using std::string;

using std::stringstream;

using std::fstream;

using std::cerr;

using std::endl;

using std::ios_base;

using std::getline;

#include <uf.h>

#include <uf_ui.h>

#include <uf_cfi.h>

#include <ug_session.hxx>

#include <ug_exception.hxx>

#include <ug_point.hxx>

#include <point3.hxx>

// error reporter ...

void report_error(const string &error_text) {

try {

UgSession sess(true);

UgException::throwOnFailure(UF_UI_display_nonmodal_msg("Error",(char*)error_text.c_str(), UF_UI_MSG_POS_CURSOR));

}

catch(...) { cerr<<"shit happened!"<<endl; }

}

string get_data_file (void) {

try {

UgSession sess(true);

char filter[uF_CFI_MAX_PATH_NAME_SIZE+1]="*.dat;*.bin",

filename[uF_CFI_MAX_PATH_NAME_SIZE+1]="\0";

int rsp;

UgException::throwOnFailure(

UF_UI_create_filebox ("select data file", "select data file", filter,

NULL, filename, &rsp));

if (rsp != UF_UI_OK ) return string();

fstream f(filename, ios_base::in);

if (!f.is_open()) {

report_error(string("unable to open file ... ") + filename);

return string();

}

f.close();

return filename;

}

catch(const UgException &err) { report_error(err.askErrorText()); }

catch(...) { report_error("unhandled error"); }

return string();

}

void read_data (vector <Point3> &data, const string &fname) {

try {

fstream f(fname.c_str(), ios_base::in);

while (f.good()) {

string s;

stringstream ss;

ss.fixed;

getline(f, s);

ss<<s;

double xyz[3];

ss>>xyz[0]>>xyz[1]>>xyz[2];

data.push_back(Point3(xyz[0],xyz[1],xyz[2]));

}

f.close();

}

catch(const UgException &err) { report_error(err.askErrorText()); }

catch(...) { report_error("unhandled error"); }

}

// entry point ...

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

{

try {

UgSession sess(true);

// get data file name

string data_file = get_data_file();

if (data_file.size() == 0) return;

vector <Point3> points;

read_data(points, data_file);

for (int i=0; i<points.size(); i++) UgPoint::create(points);

}

catch(const UgException &err) { report_error(err.askErrorText()); }

catch(...) { report_error("unhandled error"); }

}

// *** cut here ***

points_from_file_nx1.dll

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

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

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

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

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

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

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

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

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

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

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




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