ГОСТ Р ИСО 10303-513—2009
Две смежные оболочки могут бытьопределены простой конической оболочкой с эллиптическим основанием
и более сложной конической формой сплоскими гранями эллиптическойвершины, круглогооснования и гиперболи
ческой и параболической сторонами. У основания есть два прямых ребра, параллельных оси у.
Все границы определены посредством объектов edgejoop с испольэовамием объектов line или conic или
посредством объекта vertexJoop.
*)
CONTEXT cone_shell;
WITH aic_elementary_brep;
PARAMETER
ore: length_measure .= 0.0:
dc. Iength_measure := 200.0;
de: length_measure := 20.0;
(* Примечание, dp и dhдолжны быть больше чем расстояние dc
до базовой окружности. Во избежание пересечений с верхним эллипсом,
должны выполняться соотношения dh> 7.47 de. и dp > 1.27 de *)
dh : length_measure := 300.0;
dp . Iength_measure := 250.0;
emaj: length_measure :®de*<rt3/rt2);
emin: length_measure :®de*(rt2/2.0>;
haxis: length_measure.» 0.5*dh*rt3/rt2;
himag:length_measure := dh*sqrt((rt3 -1 ,0y8.0);
yh: length_measure ,® sqrt((rt3 -1 .0)*((2.5-1,5Vt3)*dh*dh ♦
dc*dh*(3.0*rt3 - 5.0) ♦ 4.0*dc’dc*(2.0 - П3)/3.0»;
(• размещение указано для конуса, базовой окружности, эллипса, параболы и гиперболы, соответственно:
п
1
*)
origin: cartesian_polnt := carteslan_point(’origin’,(orc. ore, ore)),
ebase: cartesian_point .= cartesian_point (’ebase’.
[ore. ore, ore - dc}):
ecent: cartesian_point := cartesian_pomt(’ecent’.
[orc^O.S’de. ore. orc-
1
.5*de]);
hcent:cartesian_pomt:® cartesian_point(’hcent’,
(orc*dh*(rt3 ♦ 1.0)78.0. ore. ore + dh*0.375’<rl3 -1.0)});
ppomt: carteslan_point := саг
1
ез
1
ап_ро
1 1
(’рро пГ,
[(ore- 0.5*dp/rt3). orc,(orc - 0.5’dp)J).
epomt:cartesian_point := cartesian_point(’epolnt",
(ore + 0.5*de*(rt3 * 1.0). ore. ore- 0.5*de’(3.0 ♦ rt3)J);
(• точки пересечения кривых второго порядка с плоскостью основания: *)
ррЫ: cartesian_pomt :* cartesian_pointCppb
1
’, (ore +
(dc - dp)M3. ore - (0.5*dp/rt3)*aqrt(8.0’dc/dp - dp), ore - dc]):
ppb2: carteslan_point := cartesian_point(‘ppb2\(orc + (dc - dp)/rl3.
ore + (0.5*dp/rt3)*sqrt(8.0*dc/dp - dp), ore - dc]);
phb1:carteslan_point := carte
8
lan_polnt(’phb
1
,.
(ore + (dp - dc)*(2.0 - rt3). ore - yh. ore - dcj).
phb
2
: carteslan_point := carteslan_polnt(’phb2•.
(ore + (dp - dc)*(2.0 - rt3). ore + yh. ore - dc]);
pos_x:direction := direction (‘pos_x‘, (1.0.0]);
pos_y :direction:® direction (’pos_y*.(0.1.0]):
vec_y: vector:® vector<‘vec_y\ pos_y. 1.0):
pos_z: direction := direction Cpos_z\ (0.0.1]);
denorm: direction := direction (’denorm1. (1.0.0.1.0]);
dhnorm: direction := direction (’dhnorm’.
((rt3 ♦ 1.0). 0,-(rl3-1.O)]).
dpnorm: direction :» direction {’dpnorm’, (rl3.0.1]);
(* плоскости эллипса, параболы, гиперболы расположены под углами 45а,
30“ и 15“ относительно оси конуса *)
dir_e: direction :® direction (’dir_e\ (1.0.0. -1.0]);
dir_h : direction := direction (ЧИМУ,
(-(ИЗ - 1.0).0.-{rt3 ♦ 1.0)]);
dir_p:direction := direction (’dir_p\ (1.0. -rt3]);
30