Построение резьбы в 3D

Автор A-Lex, 26.09.08, 23:36:59

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

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

A-Lex

Уважаемые конструктора, програмисты по совместительству.
Помогите пожалуйста! Сделал программу генерации твердотельных моделей втулочно-пальцевых муфт. Все хорошо, но не пойму- как сделать генерацию резьбы на пальцах! Читал SDK, логика понятна, но так хотелось бы кода кусочек! Работаю на Delfhi 7. Очень буду признателен любому виду помощи!


YuKa

Принцип такой...


var
  doc3D : ksDocument3D;
  iPart : ksPart;
  iObj, iEdge : ksEntity;
  iThread : ksThreadDefinition;
  iCollection : ksEntityCollection;

{РЕЗЬБА}
    iPart := ksPart(doc3D.GetPart(pNew_Part));
    if iPart = nil then exit;
    iObj := ksEntity(iPart.NewEntity(o3d_thread)); //Новая резьба
    if iObj = nil then exit;
    iThread := ksThreadDefinition(iObj.GetDefinition);
    if iThread = nil then exit;
    with iThread do
    begin
      dr := 10; //Диаметр
      allLength := False; //Не на всю длину
      autoDefinDr := False; //Автоопределение диаметра выключено
      faceValue := True; //Направление построения
      length := 10; //Длина резьбы
      p := 1; //Шаг
    end;
    iCollection := ksEntityCollection(iPart.EntityCollection(o3d_edge)); //Все ребра
    iCollection.SelectByPoint(0,0,5); //Оставить только те ребра, которые имеют точку,
                                   //с координатами, известными из построения эскиза стержня
    iEdge := ksEntity(iCollection.GetByIndex(0)); //Очевидно, что в массиве это 0-й компонент
    iThread.SetBaseObject(iEdge);
    iObj.name := 'Резьба М10х1';
    iObj.Create;

A-Lex

Спасибо большое! Есть ведь добрые люди на свете!