Форум пользователей ПО АСКОН

Профессиональные вопросы => Программирование приложений => Delphi => Тема начата: A-Lex от 26.09.08, 23:36:59

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

Название: Re:Построение резьбы в 3D
Отправлено: YuKa от 29.09.08, 05:25:38
Принцип такой...


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;
Название: Re:Построение резьбы в 3D
Отправлено: A-Lex от 29.09.08, 18:18:43
Спасибо большое! Есть ведь добрые люди на свете!