Определение координат крайних точек оси конической поверхности

Автор YuKa, 02.10.08, 02:44:17

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

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

YuKa

Вот такой код...
//Ось
      iPart := ksPart(doc3D.GetPart(pNew_Part));
      if iPart = nil then exit;
      iAxisConeface := ksEntity(iPart.NewEntity(o3d_axisConeFace));
      if iAxisConeface = nil then exit;
      iAxis := ksAxisConefaceDefinition(iAxisConeface.GetDefinition);
      if iAxis = nil then exit;
      iAxis.SetFace(iEntity1);
      iAxisConeface.Create;

//Параметры оси
      iCurve := ksCurve3D(iAxis.GetCurve3D);
      if iCurve = nil then exit;
      if iCurve.IsLineSeg then
      begin
      iLine := ksLineSeg3dParam(iCurve.GetCurveParam);
        if iLine <> nil then
        begin
          gh := iLine.GetPointFirst(xL1, yL1, zL1);
          if gh = false then Kompas.ksMessage('1 точка - ошибка');
          gh := iLine.GetPointLast(xL2, yL2, zL2);
          if gh = false then Kompas.ksMessage('2 точка - ошибка');
        end;
      end;


Примечания
1) iEntity1 - цилиндрическая поверхность
2) Ось отрисовывается
3) gh в обоих точках false.

Должна же ось иметь координаты крайних точек, ведь их можно (мышью) изменять и в документе они как-то хранятся.
Как к ним добраться?

vmnick

мне стало интересно что такое
1.крайние точки оси    в случае получения поверхности вращением нет требований  к оси в ескизе она может бить где угодно  нарисована
и учитиваете  ли ситуацию получения конической поверхности видавливанием с наклоном ( например провальние отверстия в матрице штампа)


YuKa

Это не в эскизе. Речь об оси в 3D.
Крайние точки отмечены на рисунке красным. Их координаты необходимы для того, чтобы определить наклон оси к плоскостям XOY, XOZ, YOZ.

Или по другому - выяснить параллельны ли проекции двух осей на каждой из плоскостей (XOY, XOZ, YOZ)

vmnick

повторюсь наверное от непонимания
1. Строю коническую поверность видавливанием под углом и невижу никаких осей
2. считаю что идти надо от операции как построена ета поверхность
задаестся плосколть строится ескиз и в нем может бить ось но в случае видавливания ее нет и отсюдда надо подходить думаю

YuKa

Я о другой оси  :)

Она может быть построена к любой конической поверхности, независимо от метода построения последней.

chelkar

Скорее всего такая ось бесконечна. И крайних точек у нее нет. Черные на экране только для визуализации.
Если нужно измерить наклон то можно воспользоваться командами измерения.
Вот пример. Измеряет угол двух выделеных объектов. Работает в том числе для оси и базовой плоскости. Текст на Pyton'e (KOMPAS-macro)
---------
# -*- coding: cp1251 -*-

import Kompas6API5 as KAPI
from win32com.client import Dispatch
import LDefin2D
import LDefin3D

iKompasObject = Dispatch('KOMPAS.Application.5')
iKompasObject = KAPI.KompasObject(iKompasObject)
iDocument3D = iKompasObject.ActiveDocument3D()

SlcMan = iDocument3D.GetSelectionMng()
O1 = SlcMan.GetObjectByIndex (0)
O2 = SlcMan.GetObjectByIndex (1)
Part = iDocument3D.GetPart(-1)
Meas = Part.GetMeasurer()
Meas.SetObject1 (O1)
Meas.SetObject2 (O2)
Meas.Calc ()
angle = Meas.angle
iKompasObject.ksMessage (angle)
--------------
Либо нужно использовать математические объекты. У конической поверхности можно получить Placement и сравнить его с мировым.

YuKa

Цитата: chelkar от 08.10.08, 14:23:36
Скорее всего такая ось бесконечна.
И крайних точек у нее нет. Черные на экране только для визуализации.
Скорее всего с "точки зрения" Компас-Мастер так и есть. Хотя в самом Компасе эти точки можно перемещать и к ним привязываются линии угловых размеров (3D), которые переходят с теми же координатами в 2D  :~

Цитата: chelkar от 08.10.08, 14:23:36Если нужно измерить наклон то можно воспользоваться командами измерения.
Да - это то, что нужно! Спасибо - все получилось!