смещённая плоскость

Автор DVRU, 16.05.10, 21:20:12

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

DVRU

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

Aleksei

Из вопроса непонятно, что именно вам нужно. Вспомогательную плоскость можно строить под углом, для этого есть одноименная команда.
Смутно догадываюсь, что речь идет о вырезе для аксонометрической проекции, тогда смотрите здесь:
http://forum.ascon.ru/index.php/topic,5441.0.html
Если не то - объясняйте подробнее.

DVRU

iOffsetPlaneEntity := ksEntity(iPart.NewEntity(o3d_planeOffset));
if (iOffsetPlaneEntity <> nil) then begin
iOffsetPlaneDef :=ksPlaneOffsetDefinition(iOffsetPlaneEntity.GetDefinition);
if (iOffsetPlaneDef <> nil) then begin
iOffsetPlaneDef.Offset :=20;
iOffsetPlaneDef.SetPlane(PlaneYOZ);
iOffsetPlaneDef.direction := true;
iOffsetPlaneEntity.Hidden := true;
iOffsetPlaneEntity.Create;
end; end;

iSketchEntity := ksEntity( iPart.NewEntity( o3d_sketch ));
if iSketchEntity <> nil then begin
iSketchDef := ksSketchDefinition(iSketchEntity.GetDefinition);
if iSketchDef <> nil then begin
iSketchDef.SetPlane(iOffsetPlaneEntity);
iSketchEntity.Create;
iSketchDocument2D := ksDocument2D(iSketchDef.BeginEdit);
if iSketchDocument2D <> nil then begin
iSketchDocument2D.ksLineSeg(-a-45,0,-a-45,b-1,1);
iSketchDocument2D.ksLineSeg(-a-45,b-1,-a-10,b-1,1);
iSketchDocument2D.ksLineSeg(-a-10,b-1,-a-20,0,1);
iSketchDocument2D.ksLineSeg(-a-20,0,-a-45,0,1);
end; end; end;
iSketchDef.EndEdit;
end;

iCutExtrusionEntity := ksEntity(iPart.NewEntity( o3d_cutExtrusion ));
Color := ksColorParam(iCutExtrusionEntity.ColorParam);
Color.color:=RGB(75,80,95);
if iCutExtrusionEntity <> nil then begin
iCutExtrusionDef := ksCutExtrusionDefinition(iCutExtrusionEntity.GetDefinition);
if iCutExtrusionDef <> nil then begin
iCutExtrusionDef.directionType:=0;
iCutExtrusionDef.SetSideParam(true,etBlind, 40, 0, false);
iCutExtrusionDef.SetSketch( iSketchEntity );
iCutExtrusionEntity.Create;
end;

в этом коде у меня плоскость строится параллельно yoz, затем чертится в плоскости фигура и она вырезает из другой часть, а мне нужно чтобы плоскость построилась под углом относительно yoz. Такое возможно?

Aleksei

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



//создаем новый эскиз в плоскости XОY
iSketchEntity:= ksEntity(iPart.NewEntity(o3d_sketch));
iSketchDef:= ksSketchDefinition(iSketchEntity.GetDefinition);
iPlaneEntity:=ksEntity(iPart.GetDefaultEntity(o3d_planeXOY));
iSketchDef.SetPlane(iPlaneEntity);
iSketchEntity.Name := 'Sketch 1';
iSketchEntity.Create;

//рисуем в эскизе
iSketchDocument2D:= ksDocument2D(iSketchDef.BeginEdit);
iSketchDocument2D.ksLineSeg(0,0,-50,0,2);
iSketchDocument2D.ksLineSeg(0,0,(-1*50*cos(PhiR)),(-1*50*sin (PhiR)),1);
iSketchDocument2D.ksLineSeg(0,0,(50*cos(Pi-(PhiR+BetaR))),(-1*50*sin (Pi - (PhiR+BetaR))),1);
iSketchDocument2D.ksLineSeg(0,0,50*cos(PhiR+BetaR-Pi/2),50*sin(PhiR+BetaR-Pi/2),1);

iSketchDef.EndEdit;

//перебор ребер
iEntityCollection:=ksEntityCollection(iPart.EntityCollection(o3d_edge));
//плоскость под углом
iPlaneAngleDefEntity:=ksEntity(iPart.NewEntity( o3d_planeAngle));
iPlaneAngleDef:=ksPlaneAngleDefinition(iPlaneAngleDefEntity.GetDefinition);
iPlaneAngleDef.SetPlane(iPlaneEntity);
//выбираем ребро по характерной точке
iEntityCollection.SelectByPoint(50*cos(PhiR+BetaR-Pi/2), 50*sin(PhiR+BetaR-Pi/2), 0);
iPlaneAngleDef.SetAxis(iEntityCollection.First);
iPlaneAngleDef.angle:= 20;
iPlaneAngleDefEntity.Name := 'Plane 1';
iPlaneAngleDefEntity.Create;

//создаем новый эскиз в этой плоскости
iSketchEntity1:= ksEntity(iPart.NewEntity(o3d_sketch));
iSketchDef:= ksSketchDefinition(iSketchEntity1.GetDefinition);
iSketchDef.SetPlane(iPlaneAngleDefEntity);
iSketchEntity1.Name := 'Sketch 2';
iSketchEntity1.Create;
//...