--- title: "Математическая кривая в трехмерном пространстве (Интерфейсы ksCurve3D, ICurve3D)" type: interface api: [api7] domain: [3d, assembly] tags: [interface, api7, 3d, assembly, kscurve3d] sources: - kscurve3d.html --- *API интерфейсов. Версия 5 > Документ-модель (Интерфейсы - ksDocument3D, IDocument3D )  > Компонент сборки (деталь или подсборка). Интерфейсы ksPart и IPart * ## Математическая кривая в трехмерном пространстве (Интерфейсы ksCurve3D, ICurve3D) Интерфейс математической кривой в трехмерном пространстве. | ksCurve3D | - интерфейс Automation | | --- | --- | | ICurve3D | - интерфейс COM | Примечание: Данный интерфейс может быть получен с использованием метода интерфейсов ksAxisConefaceDefinition::GetCurve3D, IDefaultObject::GetCurve3D, ksAxisEdgeDefinition::GetCurve3D, ksAxis2PlanesDefinition::GetCurve3D, ksAxisOperationsDefinition::GetCurve3D, ksAxis2PointsDefinition::GetCurve3D, ksEdgeDefinition::GetCurve3D. Параметры отрезка (Интерфейсы ksLineSeg3dParam,ILineSeg3dParam) Параметры окружности (Интерфейсы ksCircle3dParam,ICircle3dParam) Параметры эллипса (Интерфейсы ksEllipse3dParam, IEllipse3dParam) Параметры трехмерной дуги(Интерфейсы ksArc3dParam,IArc3dParam) Параметры трехмерных NURBS (Интерфейсы ksNurbs3dParam,INurbs3dParam) ## CalculatePolygon - Рассчитать полигон Синтаксис Automation: ``` VARIANT CalculatePolygon( double step ); ``` Синтаксис COM: ``` BOOL CalculatePolygon( VARIANT * points, double step ); Входные параметры: step - шаг для расчета полигона. Возвращаемое значение: - массив SafeArray координат точек на кривой, полученных с шагом step. ``` Примечание: 1. Если шаг задан равным 0, то используется шаг применяемый в системе КОМПАС, который рассчитывается с учетом габаритов детали. 2. Если шаг задан -1, то используется шаг применяемый в системе КОМПАС при отрисовке кривых. Он рассчитывается с учетом следующих параметров: •габариты детали и масштаба отображения модели. •тип возвращаемого массива VT_ARRAY | VT_R8 •значения координат в массиве лежат в последовательности x1, y1, z1, x2, y2, z2 ... xn, yn, zn. ## GetCurveParam - Получить параметры линии, окружности, эллипса, NURBS или NULL Синтаксис Automation: ``` LPDISPATCH GetCurveParam(); ``` Синтаксис COM: ``` LPUNKNOWN GetCurveParam(); Возвращаемое значение: - указатель на интерфейс параметра кривой. ``` Примечание: В соответствии с типом объекта метод вернет указатель на интерфейс параметра: | - отрезка | ksILineSeg3dParam или ILineSeg3dParam, | | --- | --- | | - дуги окружности | ksArc3dParam или IArc3dParam, | | - окружности | ks ICircle3dParam или ICircle3dParam, | | - эллипса | ksEllipse3dParam или IEllipse3dParam, | | - NURBS | kIsNurbs3dParam или INurbs3dParam. | Зная тип объекта, можно базовый интерфейс привести к конечному (IDispatch или IUnknown). Для определения типа объекта можно воспользоваться методами IsLineSeg, IsArc, IsCircle, IsEllipse, IsNurbs. ## GetDerivativeT - Получить первую производную по T Синтаксис Automation: ``` BOOL GetDerivativeT (double paramT, double * x, double *y, double *z); ``` Синтаксис COM: ``` BOOL GetDerivativeT (double paramT, double * x, double *y, double *z); Входной параметр: paramT - значение параметра T в параметрическом представлении кривой. Выходные параметры: x, y, z - первая производная по T. Возвращаемое значение: TRUE - в случае успешного завершения, FALSE - в случае неудачи. ``` Примечание: Граничные значения параметра T получаются при помощи методов GetParamMin и GetParamMax. Координата точки возвращается в координатах компонента. ## GetDerivativeTT - Получить вторую производную по T Синтаксис Automation: ``` BOOL GetDerivativeTT (double paramT, double * x, double *y, double *z); ``` Синтаксис COM: ``` BOOL GetDerivativeTT (double paramT, double * x, double *y, double *z); Входной параметр: paramT - значение параметра T в параметрическом представлении кривой. Выходные параметры: x, y, z - вторая производная по T. Возвращаемое значение: TRUE - в случае успешного завершения, FALSE - в случае неудачи. ``` Примечание: Граничные значения параметра T получаются при помощи методов GetParamMin и GetParamMax. Координата точки возвращается в координатах компонента. ## GetDerivativeTTT - Получить третью производную по T Синтаксис Automation: ``` BOOL GetDerivativeTTT (double paramT, double * x, double *y, double *z); ``` Синтаксис COM: ``` BOOL GetDerivativeTTT (double paramT, double * x, double *y, double *z); Входной параметр: paramT - значение параметра T в параметрическом представлении кривой. Выходные параметры: x, y, z - третья производная по T. Возвращаемое значение: TRUE - в случае успешного завершения, FALSE - в случае неудачи. ``` Примечание: Граничные значения параметра T получаются при помощи методов GetParamMin и GetParamMax. Координата точки возвращается в координатах компонента. ## GetGabarit - Получить габаритный параллелепипед кривой Синтаксис Automation: ``` BOOL GetGabarit (double * x1, double *y1, double *z1, double * x2, double *y2, double *z2); ``` Синтаксис COM: ``` BOOL GetGabarit (double * x1, double *y1, double *z1, double * x2, double *y2, double *z2); Выходные параметры: x1, y1, z1, x2, y2, z2 - координаты вершин габаритного параллелепипеда. Возвращаемое значение: TRUE - в случае успешного завершения, FALSE - в случае неудачи. ``` Примечание: Координаты вершин параллелепипеда возвращаются в системе координат компонента. ## GetLength - Получить длину кривой Синтаксис Automation: ``` double GetLength (unsigned long bitVector); ``` Синтаксис COM: ``` double GetLength (unsigned long bitVector); Входные параметры: bitVector - единицы измерения в интервале [ST_MIX_MM..ST_MIX_M]. Возвращаемое значение: длина кривой - в случае успешного завершения, 0 - в случае неудачи. ``` ## GetMetricLength - Получить метрическую длину кривой Синтаксис Automation: ``` double GetMetricLength (double startParam, double endParam); ``` Синтаксис COM: ``` double GetMetricLength (double startParam, double endParam); Входные параметры: startParam - начальное значение параметра T в параметрическом представлении кривой, endParam - конечное значение параметра T в параметрическом представлении кривой. Возвращаемое значение: метрическая длина кривой - в случае успешного завершения, 0 - в случае неудачи. ``` Примечание: Граничные значения параметра T получаются при помощи методов GetParamMin и GetParamMax. ## GetNormal - Получить направление нормали Синтаксис Automation: ``` BOOL GetNormal (double paramT, double * x, double *y, double *z); ``` Синтаксис COM: ``` BOOL GetNormal (double paramT, double * x, double *y, double *z); Входной параметр: paramT - значение параметра T в параметрическом представлении кривой. Выходные параметры: x, y, z - вектор нормали. Возвращаемое значение: TRUE - в случае успешного завершения, FALSE - в случае неудачи. ``` Примечание: Граничные значения параметра T получаются при помощи методов GetParamMin и GetParamMax. Координата точки возвращается в координатах компонента. ## GetNurbs3dParam - Получить NURBS-представление кривой Синтаксис Automation: ``` LPDISPATCH GetNurbs3dParam(); ``` Синтаксис COM: ``` LPNURBS3DPARAM GetNurbs3dParam(); Возвращаемое значение: - указатель на интерфейс ksNurbs3dParam/INurbs3dParam. ``` Примечание: Метод позволяет получить параметры кривой в NURBS-представлении. Для получения параметров кривой в NURBS-представлении создается математическая NURBS-кривая, аналогичная заданной. Если заданная кривая является NURBS-кривой, то возвращаются ее параметры без создания NURBS-представления. ## GetParamMax - Получить конечное значение параметра T в параметрическом представлении кривой Синтаксис Automation: ``` double GetParamMax(); ``` Синтаксис COM: ``` double GetParamMax(); Возвращаемое значение: Значение параметра T - в случае успеха, 0 - в случае неудачи. ``` ## GetParamMin - Получить начальное значение параметра T в параметрическом представлении кривой Синтаксис Automation: ``` double GetParamMin(); ``` Синтаксис COM: ``` double GetParamMin(); Возвращаемое значение: Значение параметра T - в случае успеха, 0 - в случае неудачи. ``` ## GetPoint - Получить координаты точки на кривой Синтаксис Automation: ``` BOOL GetPoint (double paramT, double * x, double *y, double *z); ``` Синтаксис COM: ``` BOOL GetPoint (double paramT, double * x, double *y, double *z); Входной параметр: paramT - значение параметра T в параметрическом представлении кривой. Выходные параметры: x, y, z - координаты точки на кривой. Возвращаемое значение: TRUE - в случае успешного завершения, FALSE - в случае неудачи. ``` Примечание: Граничные значения параметра T получаются при помощи методов GetParamMin и GetParamMax. Координаты точки возвращаются в системе координат компонента. ## GetTangentVector - Получить направление касательного вектора Синтаксис Automation: ``` BOOL GetTangentVector (double paramT, double * x, double *y, double *z); ``` Синтаксис COM: ``` BOOL GetTangentVector (double paramT, double * x, double *y, double *z); Входной параметр: paramT - значение параметра T в параметрическом представлении кривой. Выходные параметры: x, y, z - касательный вектор. Возвращаемое значение: TRUE - в случае успешного завершения, FALSE - в случае неудачи. ``` Примечание: Граничные значения параметра T получаются при помощи методов GetParamMin и GetParamMax. Координата точки возвращается в координатах компонента. ## IsArc - Определить, является ли кривая дугой окружности Синтаксис Automation: ``` BOOL IsArc(); ``` Синтаксис COM: ``` BOOL IsArc(); Возвращаемое значение: TRUE - кривая является дугой окружности, FALSE - кривая не является дугой окружности. ``` Примечание: Данный метод удобно использовать для приведения базового интерфейса (IUnknown в COM и IDispatch в Automation) к конечному интерфейсу трехмерных объектов. Зная тип объекта, можно привести его к соответствующему интерфейсу. Метод GetCurveParam вернет указатель на интерфейс параметра дуги окружности ksArc3dParam или IArc3dParam. ## IsCircle - Определить, является ли кривая окружностью Синтаксис Automation: ``` BOOL IsCircle(); ``` Синтаксис COM: ``` BOOL IsCircle(); Возвращаемое значение: TRUE - кривая является окружностью, FALSE - кривая не является окружностью. ``` Примечание: Данный метод удобно использовать для приведения базового интерфейса (IUnknown в COM и IDispatch в Automation) к конечному интерфейсу трехмерных объектов. Зная тип объекта, можно привести его к соответствующему интерфейсу. Метод GetCurveParam вернет указатель на интерфейс параметра окружности ksCircle3dParam или ICircle3dParam. ## IsClosed - Определить, является ли кривая замкнутой Синтаксис Automation: ``` BOOL IsClosed(); ``` Синтаксис COM: ``` BOOL IsClosed(); Возвращаемое значение: TRUE - кривая замкнута, FALSE - кривая разомкнута. ``` ## IsDegenerate - Определить, является ли кривая вырожденной Синтаксис Automation: ``` BOOL IsDegenerate(); ``` Синтаксис COM: ``` BOOL IsDegenerate(); Возвращаемое значение: TRUE - кривая вырожденная, FALSE - кривая невырожденная. ``` ## IsEllipse - Определить, является ли кривая эллипсом Синтаксис Automation: ``` BOOL IsEllipse(); ``` Синтаксис COM: ``` BOOL IsEllipse(); Возвращаемое значение: TRUE - кривая является эллипсом, FALSE - кривая не является эллипсом. ``` Примечание: Данный метод удобно использовать для приведения базового интерфейса (IUnknown в COM и IDispatch в Automation) к конечному интерфейсу трехмерных объектов. Зная тип объекта, можно привести его к соответствующему интерфейсу. Метод GetCurveParam вернет указатель на интерфейс параметра эллипса ksEllipse3dParam или IEllipse3dParam. ## IsEllipseArc - Является ли кривая дугой эллипса Синтаксис Automation: ``` BOOL IsEllipseArc(); ``` Синтаксис COM: ``` BOOL IsEllipseArc(); Возвращаемое значение: TRUE - кривая является дугой эллипса, FALSE - кривая не является дугой эллипса. Версия КОМПАС v22 ``` ## IsLineSeg - Определить, является ли кривая отрезком Синтаксис Automation: ``` BOOL IsLineSeg(); ``` Синтаксис COM: ``` BOOL IsLineSeg(); Возвращаемое значение: TRUE - кривая является отрезком, FALSE - кривая не является отрезком. ``` Примечание: Данный метод удобно использовать для приведения базового интерфейса (IUnknown в COM и IDispatch в Automation) к конечному интерфейсу трехмерных объектов. Зная тип объекта, можно привести его к соответствующему интерфейсу. Метод GetCurveParam вернет указатель на интерфейс параметра отрезка ksLineSeg3dParam или ILineSeg3dParam. ## IsNurbs - Определить, является ли кривая NURBS Синтаксис Automation: ``` BOOL IsNurbs(); ``` Синтаксис COM: ``` BOOL IsNurbs(); Возвращаемое значение: TRUE - кривая является NURBS, FALSE - кривая не является NURBS. ``` Примечание: Данный метод удобно использовать для приведения базового интерфейса (IUnknown в COM и IDispatch в Automation) к конечному интерфейсу трехмерных объектов. Зная тип объекта, можно привести его к соответствующему интерфейсу. Метод GetCurveParam вернет указатель на интерфейс параметра NURBS ksNurbs3dParam или INurbs3dParam. ## IsPeriodic - Определить, является ли замкнутая кривая периодической Синтаксис Automation: ``` BOOL IsPeriodic(); ``` Синтаксис COM: ``` BOOL IsPeriodic(); Возвращаемое значение: TRUE - кривая периодична, FALSE - кривая не периодична. ``` ## IsPlanar - Определить, является ли кривая плоской Синтаксис Automation: ``` BOOL IsPlanar(); ``` Синтаксис COM: ``` BOOL IsPlanar(); Возвращаемое значение: TRUE - кривая плоская, FALSE - кривая неплоская. ``` ## IsStraight - Является ли кривая прямолинейной Синтаксис Automation: ``` BOOL IsStraight(); ``` Синтаксис COM: ``` BOOL IsStraight(); Возвращаемое значение: TRUE - кривая является прямолинейной, FALSE - кривая не является прямолинейной. Версия КОМПАС v22 ``` ## NearPointProjection - Получить ближайшую проекцию точки на поверхность Синтаксис Automation: ``` BOOL NearPointProjection (double x, double y, double z, double * t, BOOL ext); ``` Синтаксис COM: ``` BOOL NearPointProjection (double x, double y, double z, double * t, BOOL ext); Входные параметры: x, y, z - координаты исходной пространственной точки, ext - если проекция точки вне кривой: - TRUE проецировать на продолжение кривой, - FALSE найти ближайшую граничную точку кривой. Если проекция точки внутри кривой, значение этого параметра не учитывается. Выходные параметры: t - параметрические координаты точки на кривой. Возвращаемое значение: TRUE - если проекция точки попала на саму кривую или если ext равен TRUE, FALSE - если проекция точки не попала на саму кривую. ```