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

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

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

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

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

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

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

Как сделать отверствие с зенковкой с помощью API

Автор Healt, 26.03.15, 01:23:15

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

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

Healt

Здравствуйте! Недавно стало необходимым ознакомиться с API функциями Компас. Была поставлена задача начертить обычную крышку средствами API компас по нажатию на кнопку. В крышке есть 4 отверствия с зенковкой. Как программно проделать отверстие в уже сформированной 3d модели? К примеру, если делать это вручную, то необходимо выделить грань, в которой должно быть проделано отверстие. После выделения грани переходим в "операции/дополнительные элементы/отверстие". Далее включается библиотека отверстий с выбором типа отверстия и его размещением на выделенной грани

Пользуюсь литературой от С.А. Норсеева и пишу на Delphi. К сожалению там этого не объяснено. Буду рад, если подскажете подходящую литературу для начинающих.

Вот сама программа построения крышки.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ksTLB, ComObj, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

CONST
pTop_Part = -1;
o3d_planeXOZ = 2;
o3d_sketch = 5;
o3d_baseRotated = 27;
dtNormal = 0;

VAR
  Form1: TForm1;
kompas: KompasObject;
Document2D : ksDocument2D;
Document3D: ksDocument3D;
Part: ksPart;
EntityPlaneXOZ: ksEntity;
krishka: ksEntity;
SketchDefinition: ksSketchDefinition;
BaseRotatedDefinition: ksBaseRotatedDefinition;
EntityRotated: ksEntity;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
   if Kompas = nil then
    Kompas:= KompasObject( CreateOleObject('Kompas.Application.5') );
    if Kompas <> nil then
    Kompas:=KompasObject(GetActiveOleObject('Kompas.Application.5'));
      Kompas.Visible := true;
Document3D:=ksDocument3D(kompas.Document3D());
     Document3D.Create(FALSE,TRUE);
     Part:=ksPart(Document3D.GetPart(pTop_Part));
EntityPlaneXOZ:=ksEntity(Part.GetDefaultEntity(o3d_planeXOZ));
krishka:=ksEntity(Part.NewEntity(o3d_sketch));
SketchDefinition:=ksSketchDefinition(krishka.GetDefinition());
SketchDefinition.SetPlane(EntityPlaneXOZ);
krishka.Create();
Document2D:=ksDocument2D(SketchDefinition.BeginEdit());
Document2D.ksLineSeg(6.5, 0, 34.5, 0, 1);
Document2D.ksLineSeg(34.5, 0, 34.5, 6, 1);
Document2D.ksLineSeg(34.5, 6, 14, 6, 1);
Document2D.ksLineSeg(14, 6, 14, 12, 1);
Document2D.ksLineSeg(14, 12, 6.5, 12, 1);
Document2D.ksLineSeg(6.5, 12, 6.5, 0, 1);
Document2D.ksLineSeg(0,0,0,12,3);
SketchDefinition.EndEdit();
EntityRotated:=ksEntity(Part.NewEntity(o3d_baseRotated));
BaseRotatedDefinition:=ksBaseRotatedDefinition(EntityRotated.GetDefinition());
BaseRotatedDefinition.directionType:=dtNormal;
BaseRotatedDefinition.SetSideParam(TRUE,360);
BaseRotatedDefinition.SetSketch(krishka);
EntityRotated.Create();
end;
end.

Lito 2

См. главу 57 и 62.
Необходимо построить эскиз отверстия на нужной плоскости и вырезать его вращением.

Также можно сразу сверху построить эскиз с 4 отверстиями, а потом уже снимать фаски.
Все зависит от вида и типа отверстия.

Vitalij Lysanov

Вариант построения крышки.

Аналог кода получен записью Макроса в графическом режиме.
Числа заменяем на переменные.
Добавили входную таблицу с параметрами.

В приложении Макрос и модель крышки.     

Для работы:
Открыть новую деталь.
Включить макрос ( из режима редактирования надежней)
Заполнить данные в таблице
Построить
Выход

_____
Основной вопрос остался:
Предыдущие числа в таблице ?