• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

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

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

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

Автор 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;
//...