roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 05:20

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 62 ]  На страницу 1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: 3D принтер (СОФТ)
СообщениеДобавлено: 14 окт 2008, 16:24 
Не в сети
Аватара пользователя

Зарегистрирован: 21 дек 2006, 19:56
Сообщения: 4468
Откуда: Украина, г.Одесса
прог. языки: Delphi и С
Я смотрю не многих, но тема принтера тронула, а какой собсна софт буит использоваца?
Я вот накидал программку которая находит пересечение треугольника и отрезка, и на основе этого можно построить сечения модели.
А есть еще второй вариант он мне впринципе очень нравица, но я его ника нимагу асилить, в 3Д максе написать скрипт который буит находить сечения и выводить их на печать одну за одной. Но это для порошкового принтера, в котором порошок слоями наносица и по нему печатаица.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер (СОФТ)
СообщениеДобавлено: 14 окт 2008, 16:33 
Не в сети
Аватара пользователя

Зарегистрирован: 14 май 2008, 15:49
Сообщения: 1585
Откуда: Москва
ФИО: Алексей
Дык, все уже готово и опенсурсно:
http://dev.www.reprap.org/bin/view/Main ... stSoftware

_________________
У меня в голове опилки и длинные слова меня только огорчают.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер (СОФТ)
СообщениеДобавлено: 14 окт 2008, 19:06 
Не в сети
Аватара пользователя

Зарегистрирован: 21 дек 2006, 19:56
Сообщения: 4468
Откуда: Украина, г.Одесса
прог. языки: Delphi и С
Ниасилил, не запускаица.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер (СОФТ)
СообщениеДобавлено: 14 окт 2008, 20:49 
Не в сети
Аватара пользователя

Зарегистрирован: 14 май 2008, 15:49
Сообщения: 1585
Откуда: Москва
ФИО: Алексей
Скачал, поставил кучу зависмостей, запустил... ну, открывает она примеры, идущие в комплекте, но смысла пока с этого - ноль )
Это я к тому, что софт конечно клево, но софт который управляет железкой, имеет мало смысла без железки =(
Если когда-нить дойдем до этой части, напишу мануал - поперевожу доки... пока нафик =)

_________________
У меня в голове опилки и длинные слова меня только огорчают.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер (СОФТ)
СообщениеДобавлено: 14 окт 2008, 23:58 
Не в сети

Зарегистрирован: 29 сен 2008, 20:18
Сообщения: 54
Откуда: Киев, Украина
прог. языки: ...
Цитата:
Master
в 3Д максе написать скрипт который буит находить сечения и выводить их на печать одну за одной. Но это для порошкового принтера, в котором порошок слоями наносица и по нему печатаица.

про этот метод можно почитать здесь.

Если что то будет получатся скажете :cry: ,а? А то для меня это ну головняк ещё тот. :o
Сам пробую с СолидВоркс2007 скрипт сделать, пока что без результата. :sorry:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер (СОФТ)
СообщениеДобавлено: 15 окт 2008, 11:43 
Не в сети
Аватара пользователя

Зарегистрирован: 21 дек 2006, 19:56
Сообщения: 4468
Откуда: Украина, г.Одесса
прог. языки: Delphi и С
Ну в максе я пока только нарезал разные фигуры на сечения, осталось найти как это все безобразие автоматизировать и вывести на печать, желательно в масштабе. По максскрипту очень мало инфы. Пытался скачать официальный учебник по максскрипту, не нашел бесплатный. А так ваще идея мне очень нравица, вот думаю какой лучше принтер прикупить для издевательств.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер (СОФТ)
СообщениеДобавлено: 26 окт 2008, 22:12 
Не в сети

Зарегистрирован: 29 сен 2008, 20:18
Сообщения: 54
Откуда: Киев, Украина
прог. языки: ...
Короче с солидом ничего не получилось. Что интереснол у него во вкладке пуск есть раздел Print3D, но гад никаких файлы при этом не сохраняет. Зато сообщает что у меня не установлен ни сам принтер ни его дрова... :crazy:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер (СОФТ)
СообщениеДобавлено: 26 окт 2008, 22:49 
Не в сети
Аватара пользователя

Зарегистрирован: 25 июл 2007, 10:38
Сообщения: 354
Откуда: Москва (Троицк, МО)
ФИО: Антон Миронов
Мало того, еще и просит "обратиться к компании, которая поставляет Вам 3D-принтеры" :crazy:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер (СОФТ)
СообщениеДобавлено: 26 окт 2008, 23:35 
Не в сети

Зарегистрирован: 29 сен 2008, 20:18
Сообщения: 54
Откуда: Киев, Украина
прог. языки: ...
Ага можно подумать что я купил себе парк 3Д принтеров, А ДРОВА ЗАБЫЛ ЗАЛИТЬ. идиоты... :P


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер (СОФТ)
СообщениеДобавлено: 28 окт 2008, 16:07 
Не в сети

Зарегистрирован: 29 сен 2008, 20:18
Сообщения: 54
Откуда: Киев, Украина
прог. языки: ...
Все мучаюсь вопросом нарезки stl файлов на слои. Из полезного нарыл это
Evil Mad Scientist
FreeSteel

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер (СОФТ)
СообщениеДобавлено: 29 окт 2008, 09:23 
Не в сети
Аватара пользователя

Зарегистрирован: 27 ноя 2004, 00:42
Сообщения: 3339
Откуда: совсем Москва
ФИО: Григорий
А в чем траблы со Slice'ом? (вторая ссылка)
Проверить возможности нет, но по мануалам вроде все просто...

3DMax сохраняет в STL?

По файлам SVG рекомендую: Inkscape - OpenSource векторный редактор.

_________________
злой полицейский


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер (СОФТ)
СообщениеДобавлено: 29 окт 2008, 14:10 
Не в сети
Аватара пользователя

Зарегистрирован: 21 дек 2006, 19:56
Сообщения: 4468
Откуда: Украина, г.Одесса
прог. языки: Delphi и С
Цитата:
3DMax сохраняет в STL?

Да, тока там нужно жать не Save, а ниже есть Export и выбираем в каком формате сохронить, там буит 2 варианта бинарный или ASCII. ASCII понятный и простой, но якобы не очень точный, но его можно обычным блокнотом открыть и там все ясно и понятно, а вот бинарный я ниасилил, если блокнотом открыть, то там кракозяблы.

На http://www.mntc.ru/wiki/index.php/%D0%9 ... 0%B8%D0%B5
есть статья про 3Д принтер и софт там у них самописный есть на басике, там они из бинарного STL строят сечения и исходники там есть, я хотел у них на форуме зарегица поспрашивать, но мне вместо активации учетной записи приходит фигня, я писал им на почту они молчат.
Впринципе построить сечение по STL я и сам смогу, уже написал софтинку которая находит точку пересечения отрезка по его координатам и треугольника по его координатам, т. о. пронизывая нашу STL модель отрезками с определенным шагом можно построить сечение, на MNTC они так и делают.
Но опять же софтина вначале должна проверять целостность поверхности модели, для этого нужно сводить в одну точку те вершины треугольников которые расположенны на достаточно малом расстоянии друг от друга (порядка 0,0001 мм). И есть еще заморочки с вектором нормали который при определенных условиях может повлиять на работу алгоритма.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер (СОФТ)
СообщениеДобавлено: 29 окт 2008, 17:37 
Не в сети
Аватара пользователя

Зарегистрирован: 14 май 2008, 15:49
Сообщения: 1585
Откуда: Москва
ФИО: Алексей
Вот, чесслово, не понимаю че вы мучаетесь...
Ради интереса просто, решил написать такую софтинку(благо работать седня ну ооооочень не хотелось :D )
Взял исходники reprap'а, выдрал оттуда кусок отвечавший за разрезание stl'ок, чуток его подправил, чтобы он не был так сильно привязан к остальному коду reprap'а, сделал из него библиотеку под processing, написал на нем программку(тоже нехило позаимственную из кода репрапа)... глючит пока зверски, ибо потрачено на это было часа 3 максимум, и сделано довольно грязно, но какие-то результаты есть:
Сам объект:
Вложение:
Door-handle-aoi.jpg
Door-handle-aoi.jpg [ 25.21 КиБ | Просмотров: 5082 ]

Срез на уровне примерно 10 мм:
Вложение:
layer1.png
layer1.png [ 8.47 КиБ | Просмотров: 6220 ]

Срез на уровне 15 мм:
Вложение:
layer2.png
layer2.png [ 8.85 КиБ | Просмотров: 6185 ]

_________________
У меня в голове опилки и длинные слова меня только огорчают.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер (СОФТ)
СообщениеДобавлено: 29 окт 2008, 17:45 
Не в сети
Аватара пользователя

Зарегистрирован: 21 дек 2006, 19:56
Сообщения: 4468
Откуда: Украина, г.Одесса
прог. языки: Delphi и С
Кинь исходники позырить, твои и рапа.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер (СОФТ)
СообщениеДобавлено: 29 окт 2008, 18:14 
Не в сети
Аватара пользователя

Зарегистрирован: 14 май 2008, 15:49
Сообщения: 1585
Откуда: Москва
ФИО: Алексей
Вот тут можно посмотреть исходники репрапа:
http://reprap.svn.sourceforge.net/viewv ... prap/host/

Вот тут их можно скачать целиком:
https://sourceforge.net/project/showfil ... _id=179179

Мои(ну, условно мои.. моих там строк 30 кода, остальное - издевательство над исходниками репрапа) исходники вот:
Код:
import org.reprap.*;
import org.reprap.geometry.polygons.*;
import org.reprap.gui.*;
import org.reprap.utilities.*;

STLObject stl;
STLSlice stlsl;
RrCSGPolygonList slice;
RrGraphics rr;

void setup()
{
  size(640,640);
  background(0);
  stroke(0,255,0);
  stl = new STLObject();
  stl.addSTL("file:/c:/test.stl");
  stlsl = new STLSlice(stl);
 
  println(stlsl.maxZ());
  slice = stlsl.slice(15); 
  rr = new RrGraphics(slice.get(0));
/*  for(int i=0;i<20;i++){
    slice = stlsl.slice(i); 
    println(slice.size());
  }
  */
}

void draw(){
  point(mouseX,mouseY);
  rr.plot();
}

public class RrGraphics
{
   final color background = color (0,0,0);
   final color boxes = color(0,255,0);
   final color polygon1 = color(0,255,0);
   final color polygon0 = color(0,255,0);
   final color infill = color(0,255,120);
   final color hatch1 = color(120,255,0);
   final color hatch0 = color(120,255,120);   

   private final int frame = 600;
   private int frameWidth;
   private int frameHeight;
   private RrCSGPolygon csg_p = null;
   private boolean csgSolid = true;
   private double scale;
   private Rr2Point p_0;
   private Rr2Point pos;
   private RrBox scaledBox, originalBox;
   private boolean plot_box = false;
   
   private void setScales(RrBox b)
   {
      scaledBox = b.scale(1.2);
      
      double width = scaledBox.x().length();
      double height = scaledBox.y().length();
      if(width > height)
      {
         frameWidth = frame;
         frameHeight = (int)(0.5 + (frameWidth*height)/width);
      } else
      {
         frameHeight = frame;
         frameWidth = (int)(0.5 + (frameHeight*width)/height);
      }
      double xs = (double)frameWidth/width;
      double ys = (double)frameHeight/height;
      
      if (xs < ys)
         scale = xs;
      else
         scale = ys;   
      p_0 = new Rr2Point((frameWidth - (width + 2*scaledBox.x().low())*scale)*0.5,
            (frameHeight - (height + 2*scaledBox.y().low())*scale)*0.5);
      
      pos = new Rr2Point(width*0.5, height*0.5);
   }
   

   private void init(RrBox b)
   {
      originalBox = b;
      setScales(b);                  
   }
   
   public RrGraphics(RrCSGPolygon cp)
   {
      csg_p = cp;      
      init(csg_p.box());
   }
   

   public RrGraphics()
   {
      csg_p = null;
   }

   private Rr2Point transform(Rr2Point p)
   {
      return new Rr2Point(p_0.x() + scale*p.x(), (double)frameHeight -
            (p_0.y() + scale*p.y()));
   }

   private Rr2Point iTransform(int x, int y)
   {
      return new Rr2Point(((double)x - p_0.x())/scale, ((double)(frameHeight - y)
            - p_0.y())/scale);
   }

   private void move(Rr2Point p)
   {
      pos = transform(p);
   }

   private void plot(Rr2Point p)
   {
      Rr2Point a = transform(p);
      line((int)Math.round(pos.x()), (int)Math.round(pos.y()),
            (int)Math.round(a.x()), (int)Math.round(a.y()));
      pos = a;
   }

   private void plot(RrBox b)
   {
      if(RrBox.intersection(b, scaledBox).empty())
         return;
      
      stroke(boxes);
      move(b.sw());
      plot(b.nw());
      plot(b.ne());
      plot(b.se());
      plot(b.sw());
   }

   private void plot(RrPolygon p)
   {
      if(RrBox.intersection(p.getBox(), scaledBox).empty())
         return;
      
      move(p.point(0));
      stroke(polygon1);
      for(int i = 1; i < p.size(); i++)   
            plot(p.point(i));
      stroke(polygon0);
      plot(p.point(0));
   }

   private void plot(RrLine a, RrInterval i)
   {
      if(i.empty()) return;
      move(a.point(i.low()));
      plot(a.point(i.high()));
   }

   private void fillCSG(RrCSGPolygon q)
   {
      if(RrBox.intersection(q.box(), scaledBox).empty())
         return;
      
      if(q.c_1() != null)
      {
         fillCSG(q.c_1());
         fillCSG(q.c_2());
         fillCSG(q.c_3());
         fillCSG(q.c_4());
         return;
      }
      
      if(q.csg().operator() == RrCSGOp.NULL)
         return;
         
      stroke(infill);
      Rr2Point sw = transform(q.box().sw());
      Rr2Point ne = transform(q.box().ne());
      int x0 = (int)Math.round(sw.x());
      int y0 = (int)Math.round(sw.y());
      int x1 = (int)Math.round(ne.x());
      int y1 = (int)Math.round(ne.y());
      
      if(q.csg().operator() == RrCSGOp.UNIVERSE)
      {
         rect(x0, y1, x1 - x0 + 1, y0 - y1 + 1);
         return;
      }
      
      for(int x = x0; x <= x1; x++)
      {
         for(int y = y1; y <= y0; y++)  // Bloody backwards coordinates...
         {
            Rr2Point p = iTransform(x, y);
            double v = q.csg().value(p);
            if(v <= 0)
               rect(x, y, 1, 1);
         }
      }
      
   }
   
   private void boxCSG(RrCSGPolygon q)
   {
      if(RrBox.intersection(q.box(), scaledBox).empty())
         return;
      
      if(q.c_1() != null)
      {
         boxCSG(q.c_1());
         boxCSG(q.c_2());
         boxCSG(q.c_3());
         boxCSG(q.c_4());
         return;
      }
      plot(q.box());
   }

   private void plot(RrCSGPolygon q)
   {
      if(RrBox.intersection(q.box(), scaledBox).empty())
         return;      
      
      if(q.c_1() != null)
      {
         plot(q.c_1());
         plot(q.c_2());
         plot(q.c_3());
         plot(q.c_4());
         return;
      }
      
      stroke(polygon1);
      if(q.csg().complexity() == 1)
         plot(q.csg().plane().pLine(), q.interval1());
      else if (q.csg().complexity() == 2)
      {
         plot(q.csg().c_1().plane().pLine(), q.interval1());
         plot(q.csg().c_2().plane().pLine(), q.interval2());
      }
   }
   
   private void plot()
   {
      if(csg_p != null)
      {
         if(csgSolid)
            fillCSG(csg_p);
         
         if(plot_box)
            boxCSG(csg_p);
         else
            plot(csg_p.box());
         
         plot(csg_p);
      }
      

   }
}


И приложен архив с библиотекой которую я подготовил.


Вложения:
Комментарий к файлу: Библиотека для Processing, вырванная из лап reprap'а
geometry.rar [141.62 КиБ]
Скачиваний: 58

_________________
У меня в голове опилки и длинные слова меня только огорчают.
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 62 ]  На страницу 1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO