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

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


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 пользователей

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




  • Сообщения

    • maxx2000
      ну так посмотри что у тебя в настройках, включена подсветка выбора или нет
    • maxx2000
      очень мелко, но по-моему хрен ты его достанешь, там нет уклона. При остывании даст усадку и останется там на веки вечные, пока кувалда обрубщика не разлучит их 
    • Renovatio
    • Ветерок
      Свои настройки есть у ноута. У него наверняка кроме Квадры есть ещё своя встроенная. И в настройках надо указать, что задействовать Квадру, а не встроенную. Можно указать для каждой программы индивидуально.  
    • FPG93
      Приветствую всех. Интересует: получение навыков в написание постпроцессора в среде NX. За образец хотелось бы взять токарно-фрезерный станок с осью Y и контршпинделем.(Fanuc 0-TF). Итогом работы хочеться видеть рабочий пост, написанный мной с вашими ценными советами Важно:это не приобретение поста,а покупка времени человека который грамотно расскажет про его написание. Формат/время для общения такой какой будет удобен лично вам(онлайн/запись вашего видео с отправкой мне) Тех кого заинтересовало просьба отписаться на почту PF3011@YANDEX.RU.  С указанием стоимости за 1 академ час,или полной стоимости до конечного результата.        
    • maxx2000
      Тарантина и у своих не гнушается тырить
    • maxx2000
      мне мясо положено -положено ешь но оно мне не положено - не положено не ешь А так страшно, очень страшно, если бы мы знали что это такое но мы не знаем что это такое.   Единственное что я понял, у тебя в дереве не подсвечиваются элементы по которым ты тыкаешь в рабочем окне. Так?
    • Renovatio
      Доброе время суток, коллеги. Имеются сборки в которых элементы размножаются массивами. Так вот, в некоторых сборках при выборе элемента в графической части, он выделяется в дереве построения, а в некоторых не выделается. Не выделяется элемент массива, при этом если выбирать деталь/подсборку, которая является родителем массива, то она выделяется в любой сборке. Сборки могут быть равные по нагрузке, но в одной все работает, а в другой нет. Может кто-то сталкивался с такой проблемой и знает как избавиться от нее?   Пользуюсь Solidworks 2017 SP5.0
    • pescarbon
      В Санкт-Петербурге. Я перекидывал так программы обработки, проблем не возникло. А именно данные пусконаладки, когда опускаюсь в меню к ним, все меню зависает
    • Dordenis
      Добрый день.   В форме для литья алюминия необходимо вытащить знак на длину 130 мм. Остановились на том, чтобы знак извлекать с помощью гидроцилиндра.  Как примерно рассчитать усилие для извлечения знака с отливки, чтобы подобрать ГЦ с нужным усилием. 
×
×
  • Создать...