Создание Дополнения CAM-системы
  • Создание Дополнения CAM-системы
Search Results for

    Show / Hide Table of Contents
    • Creating a CAM-system Add-in
    • Введение
      • Глоссарий
      • Требования
    • Устройство Панели инструментов
      • Описание компонентов
        • Мастер дополнений
        • Файлы дистрибуции
        • Транслятор
        • Файл XML дополнения
        • Файл CAMInfo.ini
        • Утилита CheckLockToolbar
        • Панель инструментов
      • Сценарии взаимодействия
        • Установка Дополнения
        • Удаление Дополнения
        • Импорт из CAD-системы в CAM-систему
        • Импорт CAD-файла в CAM-систему
    • Импорт геометрии в CAM
      • Структура CAD-модели
      • Интерфейсы импорта
      • Подключение STGeomFile.dll
      • Формирование файла SGF
      • Структуры данных SGF
      • Работа со сборкой
      • Работа с деталью
      • Кривые и точки
        • Точка и аналитические кривые
          • 3D-точка
          • Система координат
          • Отрезок
          • Окружность
          • Дуга окружности
          • Эллипс
          • Дуга эллипса
          • Коническая спираль
          • NURBS-кривая
          • Составная кривая
        • Производные кривые
          • Кривая на поверхности
          • Обрезанная кривая
          • Инвертированная кривая
          • Кривая пересечения
          • Граница скругления
        • Параметризация кривых
      • Грань (обрезанная поверхность)
      • Поверхности
        • Аналитические поверхности
          • Плоскость
          • Цилиндр
          • Конус
          • Сфера
          • Тор
          • NURBS-поверхность
          • Полигональная сетка
        • Производные поверхности
          • Поверхность вращения
          • Поверхность выдавливания
          • Транспонированная UV-поверхность
          • Поверхность скругления
          • Эквидистантная поверхность
        • Параметризация поверхностей
      • PMI (Product Manufacturing Information)
        • IPMIGeomThread
      • Устаревшие и неиспользуемые методы

    Аналитические поверхности

    Поверхности создаются под уникальным ID. У аналитических примитивов (плоскость, цилиндр, конус, сфера, тор) расположение задаётся одинаково тройкой: Location — положение (vT), Axis — ось Z (vZ), RefAxis — ось X (vX); ось Y вычисляется как векторное произведение Axis × RefAxis. Помимо аналитических примитивов в эту группу входят NURBS-поверхность и полигональная сетка (Mesh).

    Часть аналитических поверхностей математически бесконечны — плоскость безгранична, а цилиндр и конус не ограничены по оси. Поэтому при создании их обязательно нужно ограничивать: у плоскости область задаётся прямоугольником xMin…xMax × yMin…yMax, у цилиндра и конуса — границами по оси Hmin…Hmax (и при необходимости угловым сектором Amin…Amax). Если CAD-система не предоставляет явных границ, разумно ограничить поверхность габаритами всей модели. (Сфера и тор замкнуты и в дополнительном ограничении не нуждаются.)

    Примитивы аналитических поверхностей:

    • Плоскость — CreatePlaneP.
    • Цилиндр — CreateCylinderP.
    • Конус — CreateConeP.
    • Сфера — CreateSphereP.
    • Тор — CreateTorusP.
    • NURBS-поверхность — StartNurbsSurface … CloseNurbsSurface.
    • Полигональная сетка — StartMesh … CloseMesh.

    Пример сохранения аналитической поверхности

    SaveSurface — диспетчер: получает поверхность CAD-системы и, в зависимости от её типа, вызывает соответствующий обработчик (SavePlane, SaveCylinder, …). Каждый обработчик пишет геометрию в SGF подходящим вызовом из Поверхности и возвращает флаг успеха. Ниже показаны сам диспетчер и один из обработчиков (SavePlane); остальные устроены аналогично.

    // Сохраняет поверхность любого типа; возвращает признак успеха (Id уже задан в CADSurface)
    bool SaveSurface(CADSurface surf)
    {
        switch (surf.Type)
        {
            case "Plane":    return SavePlane(surf.Id, surf.Param);
            case "Cylinder": return SaveCylinder(surf.Id, surf.Param);    // обработчики остальных
            case "Cone":     return SaveCone(surf.Id, surf.Param);        // типов устроены так же
            case "Sphere":   return SaveSphere(surf.Id, surf.Param);
            case "Torus":    return SaveTorus(surf.Id, surf.Param);
            case "Nurbs":    return SaveNurbsSurface(surf.Id, surf.Param);
            case "Mesh":     return SaveMesh(surf.Id, surf.Param);
            // … прочие типы поверхностей (см. «Поверхности»)
            default:         return false;                  // тип не поддерживается
        }
    }
    
    // Один из обработчиков — сохранение плоскости
    bool SavePlane(string id, CADPlaneParam param)
    {
        // точки-направления CAD приводим к TST3DPoint (Xmin/Ymin/Xmax/Ymax — числа)
        return sgr.CreatePlaneP(id, ToPoint(param.Location), ToPoint(param.Axis), ToPoint(param.RefAxis),
                                param.Xmin, param.Ymin, param.Xmax, param.Ymax);
    }
    
    In this article
    Back to top Generated by DocFX