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

Создание STEP файла в текстовом редакторе


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

Хочу создать В ТЕКСТОВОМ РЕДАКТОРЕ несложный STEP файл, который содержит кубическую кривую безье(заданую через 4 точки... начало , рычаг , рычаг, конец), всего 12 координат, чтобы потом можно было посмотреть созданую модель в просмотрщиках step файлов.

 

Как это сделать? Где прочитать конкретную информацию(синтаксис описания кривой безье для формата STEP)?

 

НЕ НАДО давать сылку на спецификацию глобально, если не знаете конкретного места.

http://www.steptools.com/library/standard/в состоянии найти самостоятельно

 

конкретный синтаксис приветствуется. конечный файл будет содержать только пространственые кубические кривые безье

Если подскажете как задать цвет и толщину, еще лучше, но по минимуму достаточно просто показать кривую.

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


Нарисуйте в CAD системе, сохраните в STEP.

Откройте файл в Блокноте и читайте.

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

могу создать дугу окружности при помощи freecad , потом конвертировать/экспортировать в STEP. файл работает но выглядит он так

ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('FreeCAD Model'),'2;1');
FILE_NAME('D:/_DESKTOP_TRASH/vedit/arc.step','2016-09-29T17:28:03',(
    'Author'),(''),'Open CASCADE STEP processor 6.8','FreeCAD','Unknown'
  );
FILE_SCHEMA(('AUTOMOTIVE_DESIGN_CC2 { 1 2 10303 214 -1 1 5 4 }'));
ENDSEC;
DATA;
#1 = APPLICATION_PROTOCOL_DEFINITION('committee draft',
  'automotive_design',1997,#2);
#2 = APPLICATION_CONTEXT(
  'core data for automotive mechanical design processes');
#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10);
#4 = PRODUCT_DEFINITION_SHAPE('','',#5);
#5 = PRODUCT_DEFINITION('design','',#6,#9);
#6 = PRODUCT_DEFINITION_FORMATION('','',#7);
#7 = PRODUCT('ASSEMBLY','ASSEMBLY','',(#8));
#8 = MECHANICAL_CONTEXT('',#2,'mechanical');
#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design');
#10 = SHAPE_REPRESENTATION('',(#11,#15),#19);
#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14);
#12 = CARTESIAN_POINT('',(0.E+000,0.E+000,0.E+000));
#13 = DIRECTION('',(0.E+000,0.E+000,1.));
#14 = DIRECTION('',(1.,0.E+000,-0.E+000));
#15 = AXIS2_PLACEMENT_3D('',#16,#17,#18);
#16 = CARTESIAN_POINT('',(0.E+000,0.E+000,0.E+000));
#17 = DIRECTION('',(0.E+000,0.E+000,1.));
#18 = DIRECTION('',(1.,0.E+000,0.E+000));
#19 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) 
GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#23)) GLOBAL_UNIT_ASSIGNED_CONTEXT(
(#20,#21,#22)) REPRESENTATION_CONTEXT('Context #1',
  '3D Context with UNIT and UNCERTAINTY') );
#20 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
#21 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
#22 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
#23 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-007),#20,
  'distance_accuracy_value','confusion accuracy');
#24 = PRODUCT_TYPE('part',$,(#7));
#25 = GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION('',(#11,#26),
  #35);
#26 = GEOMETRIC_CURVE_SET('',(#27));
#27 = TRIMMED_CURVE('',#28,(#33,PARAMETER_VALUE(3.314942)),(#34,
    PARAMETER_VALUE(6.86645930718)),.T.,.PARAMETER.);
#28 = CIRCLE('',#29,67.040513);
#29 = AXIS2_PLACEMENT_3D('',#30,#31,#32);
#30 = CARTESIAN_POINT('',(6.688268,1.672045,0.E+000));
#31 = DIRECTION('',(0.E+000,0.E+000,1.));
#32 = DIRECTION('',(1.,0.E+000,-0.E+000));
#33 = CARTESIAN_POINT('',(-59.34748130992,-9.891267517623,0.E+000));
#34 = CARTESIAN_POINT('',(62.644566700236,38.595249344601,0.E+000));
#35 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) 
GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#39)) GLOBAL_UNIT_ASSIGNED_CONTEXT(
(#36,#37,#38)) REPRESENTATION_CONTEXT('Context #1',
  '3D Context with UNIT and UNCERTAINTY') );
#36 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
#37 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
#38 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
#39 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-007),#36,
  'distance_accuracy_value','confusion accuracy');
#40 = SHAPE_DEFINITION_REPRESENTATION(#41,#25);
#41 = PRODUCT_DEFINITION_SHAPE('','',#42);
#42 = PRODUCT_DEFINITION('design','',#43,#46);
#43 = PRODUCT_DEFINITION_FORMATION('','',#44);
#44 = PRODUCT('Sketch','Sketch','',(#45));
#45 = MECHANICAL_CONTEXT('',#2,'mechanical');
#46 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design');
#47 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#48,#50);
#48 = ( REPRESENTATION_RELATIONSHIP('','',#25,#10) 
REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#49) 
SHAPE_REPRESENTATION_RELATIONSHIP() );
#49 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15);
#50 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#51);
#51 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('1','=>[0:1:1:2]','',#5,#42,$);
#52 = PRODUCT_TYPE('part',$,(#44));
#53 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#54),
  #35);
#54 = STYLED_ITEM('color',(#55),#26);
#55 = PRESENTATION_STYLE_ASSIGNMENT((#56,#62));
#56 = SURFACE_STYLE_USAGE(.BOTH.,#57);
#57 = SURFACE_SIDE_STYLE('',(#58));
#58 = SURFACE_STYLE_FILL_AREA(#59);
#59 = FILL_AREA_STYLE('',(#60));
#60 = FILL_AREA_STYLE_COLOUR('',#61);
#61 = COLOUR_RGB('',0.800000011921,0.800000011921,0.800000011921);
#62 = CURVE_STYLE('',#63,POSITIVE_LENGTH_MEASURE(0.1),#61);
#63 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
ENDSEC;
END-ISO-10303-21;

это отягощяет... :)


Нарисуйте в CAD системе, сохраните в STEP.

Откройте файл в Блокноте и читайте.

чуть выше посмотрите на что это похоже... где там кривая... и в частности... кубическая кривая безье? возможна ли она там

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

А как вы хотели? Вообще с точки зрения пользователя есть много не обязательных параметров, но некоторые CAD потом отказываются без них открывать.

 

 

 

НЕ НАДО давать сылку на спецификацию глобально, если не знаете конкретного места. http://www.steptools...brary/standard/всостоянии найти самостоятельно

Чем вас конкретно не устраивает? Сам по нему учился создавать STEP.

Там есть бисплайновые кривые. А можно ли задавать так как вы хотите, это надо изучать.

Там есть описания всех элементов и их параметров (http://www.steptools.com/support/stdev_docs/stpcad/html/index.html внизу переключиться на Entity).

 

 

где там кривая

 

Вы же сами написали что у вас дуга:

 

#28 = CIRCLE('',#29,67.040513);

 

Тип (Имя, Ссылка на ось, Угловой размер)

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

А как вы хотели? Вообще с точки зрения пользователя есть много не обязательных параметров, но некоторые CAD потом отказываются без них открывать.

 

 

 

Чем вас конкретно не устраивает? Сам по нему учился создавать STEP.

Там есть бисплайновые кривые. А можно ли задавать так как вы хотите, это надо изучать.

хотелось бы как нибудь вот так чтобы выглядело

box=createbox(width,length,height)

list=[x0,...,x11]=[12,...,12.5]

curve=createcurve(beziercubic,list)

box.add(curve)

box.show

а не эта героиновая стоэтажная разметка :)

видимо у меня слабый ум, и мне кажется что создавать такие, КАК ПОКАЗАНО ВЫШЕ В КОДЕ ИЗ ФАЙЛА, способы отображения одной кривой(еще и плоской, части окружности)... яркий пример нездорового ума. Ну или просто ребата хотят чтобы кроме них никто не понимал как это сделать удобно.

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

Почему вы не хотите просто создавать кривую в CAD и сразу видеть результат.

Зачем собирать такой файл вручную?

 

box=createbox(width,length,height) list=[x0,...,x11]=[12,...,12.5] curve=createcurve(beziercubic,list) box.add(curve) box.show

Это уже похоже на программу, а не на геометрию. Если так нужно может стоит все таки потратить время и написать ее? 

 

Есть кривая базье:

Entity bezier_curve has the following local and inherited explicit attributes:
Attribute Type Defined By
name label (STRING) representation_item
degree INTEGER b_spline_curve
control_points_list LIST OF cartesian_point (ENTITY) b_spline_curve
curve_form b_spline_curve_form (ENUM) b_spline_curve
closed_curve LOGICAL b_spline_curve
self_intersect LOGICAL

 

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

А как вы хотели? Вообще с точки зрения пользователя есть много не обязательных параметров, но некоторые CAD потом отказываются без них открывать.

 

 

 

Чем вас конкретно не устраивает? Сам по нему учился создавать STEP.

Там есть бисплайновые кривые. А можно ли задавать так как вы хотите, это надо изучать.

Там есть описания всех элементов и их параметров (http://www.steptools.com/support/stdev_docs/stpcad/html/index.html внизу переключиться на Entity).

 

 

 

Вы же сами написали что у вас дуга:

 

Тип (Имя, Ссылка на ось, Угловой размер)

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

Почему вы не хотите просто создавать кривую в CAD и сразу видеть результат.

Зачем собирать такой файл вручную?

 

 

 

Это уже похоже на программу, а не на геометрию. Если так нужно может стоит все таки потратить время и написать ее? 

 

Есть кривая базье:

по поводу програмы, уже есть все... внутри кода python , список кривых заданых 12 параметрами каждая... надо бы их выдавить в формат STEP , без постороних модулей, поэтому нужен имено синтаксис создания кривой безье...потом я его как шаблон запихну в код и на выходе будет шаблон + цифры... но нужен костяг, имено четкая последовательность записи... а где она в этом документе?

Почему вы не хотите просто создавать кривую в CAD и сразу видеть результат.

Зачем собирать такой файл вручную?

 

 

 

Это уже похоже на программу, а не на геометрию. Если так нужно может стоит все таки потратить время и написать ее? 

 

Есть кривая базье:

Вот, например, есть запись

CIRCLE('',#29,67.040513);

Как эта строка будет выглядеть для кубической кривой безье? и где я могу это прочитать? вот в чем вопрос :)

по сылке на спецификацию вообще все переменые строчными буквами обозначены и ни одного примера.

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

На сайте есть подключаемые библиотеки для C++

Для других языков придется с порядком разбираться самому.

 

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

 

Мне кажется если какой элемент и подходит, то это B_SPLINE_CURVE_WITH_KNOTS 

#41=CARTESIAN_POINT('',(0.E0,0.E0,0.E0));  Точки на кривой
#43=CARTESIAN_POINT('',(1.E1,0.E0,0.E0)); Точки на кривой
#44=CARTESIAN_POINT('',(0.E0,1.E1,0.E0)); Точки на кривой
#45=CARTESIAN_POINT('',(0.E0,0.E0,1.E1)); Точки на кривой

#46=CARTESIAN_POINT('',(0.E0,0.E0,0.E0));  Узловые точки
#47=CARTESIAN_POINT('',(7.702200572599E0,-2.642977396045E0,5.255016145682E-1));Узловые точки
#48=CARTESIAN_POINT('',(1.373773447853E1,-9.763107293782E-1,0.E0));Узловые точки
#49=CARTESIAN_POINT('',(-1.666666666667E0,1.333333333333E1,-1.666666666667E0));Узловые точки
#50=CARTESIAN_POINT('',(-6.380711874577E0,1.057190958418E1,3.768673124940E0));Узловые точки
#51=CARTESIAN_POINT('',(0.E0,0.E0,1.E1));Узловые точки

#52=B_SPLINE_CURVE_WITH_KNOTS('',3,(#46,#47,#48,#49,#50,#51),.UNSPECIFIED.,.F.,
.F.,(4,1,1,4),(0.E0,2.612038749637E-1,6.306019374819E-1,1.E0),.UNSPECIFIED.);
#53=COMPOSITE_CURVE_SEGMENT(.CONTINUOUS.,.T.,#52);
#54=COMPOSITE_CURVE('',(#53),.F.);
#42=GEOMETRIC_CURVE_SET('',(#41,#43,#44,#45,#54));

С дополнительными координатами в команде сплайна нужно подумать.

 

Естественно что это только сама кривая. Еще нужна шапка и некоторые дополнительные параметры.

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

B_SPLINE_CURVE_WITH_KNOTS('',3,(#46,#47,#48,#49,#50,#51),.UNSPECIFIED.,.F.,
.F.,(4,1,1,4),(0.E0,2.612038749637E-1,6.306019374819E-1,1.E0),.UNSPECIFIED.);

 

3  - Степень

#46,#47,#48,#49,#50,#51  - узловые точки

UNSPECIFIED - тип кривой (polyline_form,     circular_arc,     elliptic_arc,     parabolic_arc,     hyperbolic_arc,     unspecified)

F - false, не закрытая кривая

F - false, не самопересекается

(4,1,1,4)  - кратности узлов

0.E0,2.612038749637E-1,6.306019374819E-1,1.E0  - значение узлов?

UNSPECIFIED - тип узлов (uniform_knots,     unspecified,     quasi_uniform_knots,     piecewise_bezier_knots)

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

Зачем создавать СТЕП? Сам по себе этот файл нигде не используется.

Чтобы открыть его в каком-то САПР?

Но если есть уравнение линии, то можно построить кривую по уравнению прямо в этой САПР (если это нормальный трехмерный САПР). Никакой СТЕП для этого не нужен.

 

Кстати, есть и другие форматы обмена...

Ссылка на сообщение
Поделиться на других сайтах
Зачем создавать СТЕП?

 

в целом все выглядит так:

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

helpmedraw.pythonanywhere.com

Написано вообще с нуля, нет библиотек никаких стороних... функции созданы из формул википедии, форумов итд.

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

 

Подумываю дописать код , питон3, для того чтобы желающие могли экспортировать модель из базы даных или созданую лично модель, в формат STEP , так как для него вроде есть небольшие виверы бесплатные, повертеть посмотреть.

По сути модель это набор кубических кривых безье, и ничего больше... но чтото я не нахожу способа удобного, запихнуть их куда то чтобы вертелось в 3D

уже поглядываю на Pyopengl но там тоже муть мутная, или на webgl , но везде нет инфы...все очень секретно, только для професионалов.

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


На сайте есть подключаемые библиотеки для C++

Для других языков придется с порядком разбираться самому.

 

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

 

Мне кажется если какой элемент и подходит, то это B_SPLINE_CURVE_WITH_KNOTS 

#41=CARTESIAN_POINT('',(0.E0,0.E0,0.E0));  Точки на кривой
#43=CARTESIAN_POINT('',(1.E1,0.E0,0.E0)); Точки на кривой
#44=CARTESIAN_POINT('',(0.E0,1.E1,0.E0)); Точки на кривой
#45=CARTESIAN_POINT('',(0.E0,0.E0,1.E1)); Точки на кривой

#46=CARTESIAN_POINT('',(0.E0,0.E0,0.E0));  Узловые точки
#47=CARTESIAN_POINT('',(7.702200572599E0,-2.642977396045E0,5.255016145682E-1));Узловые точки
#48=CARTESIAN_POINT('',(1.373773447853E1,-9.763107293782E-1,0.E0));Узловые точки
#49=CARTESIAN_POINT('',(-1.666666666667E0,1.333333333333E1,-1.666666666667E0));Узловые точки
#50=CARTESIAN_POINT('',(-6.380711874577E0,1.057190958418E1,3.768673124940E0));Узловые точки
#51=CARTESIAN_POINT('',(0.E0,0.E0,1.E1));Узловые точки

#52=B_SPLINE_CURVE_WITH_KNOTS('',3,(#46,#47,#48,#49,#50,#51),.UNSPECIFIED.,.F.,
.F.,(4,1,1,4),(0.E0,2.612038749637E-1,6.306019374819E-1,1.E0),.UNSPECIFIED.);
#53=COMPOSITE_CURVE_SEGMENT(.CONTINUOUS.,.T.,#52);
#54=COMPOSITE_CURVE('',(#53),.F.);
#42=GEOMETRIC_CURVE_SET('',(#41,#43,#44,#45,#54));

С дополнительными координатами в команде сплайна нужно подумать.

 

Естественно что это только сама кривая. Еще нужна шапка и некоторые дополнительные параметры.

у меня только 4 точки 12 координат... а здесь нужно 10 точек... тут явно лишнее движения есть... непохоже что это кривые безье. А конвертировать из безье в куб сплайн , нездоровая ситуация получится. да я не потяну конвертирование... этот то алгоритм струдом получился, и то на форуме(на другом) разжевал тот кто писал статью, и он рус говорящий, это был дополнительный плюс)

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

3D PDF и вообще не надо никаких вьюеров кроме обычного бесплатного Адоб Ридера.

 

чтобы желающие могли экспортировать модель

а есть хоть кто-то "желающий" этого?

 

Какие-то немотивированные девичьи фантазии. Типа сферического коня в вакууме.

Изменено пользователем Ветерок
Ссылка на сообщение
Поделиться на других сайтах
а здесь нужно 10 точек... тут явно лишнее движения есть... непохоже что это кривые безье.

 

Это только пример. Кривой имеющей 4 точки и 6 точек полигона. Отсюда и 10.  Для двух точек и двух точек полигона (4 на самом деле в вашем случае) будет короче. Степень кривой (квадратичная, кубичная кривая базье или более высоких порядков) задается тоже. Я же расписал ключи функции...

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

 

вот, чего мне достаточно вполне. а если еще удастся в экзешник запихнуть то и питон не надо устанавливать... если это понадобится кому то еще кроме меня)

https://youtu.be/Zv9a_wMJMe4?t=5m53s

этого функционала достаточно в моем случае

всем спасибо за терпение... надо теперь присмотреться к найденому

Я же расписал ключи функции
  благодарю за старание)
:worthy:

:poster_dont:

https://youtu.be/Zv9a_wMJMe4?t=5m53sдумаю это подойдет, если разобраться

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

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

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

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

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

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

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

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

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

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

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




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