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

Профессиональные вопросы => Программирование приложений => Тема начата: Mitya от 19.08.03, 13:57:24

Название: ось по двум точкам
Отправлено: Mitya от 19.08.03, 13:57:24
При постороении оси по двум точкам требуется передать указатели на точки, а где их взять?
За ранее спасибо.
Название: Re:ось по двум точкам
Отправлено: iUnknown от 20.08.03, 14:45:06
ЦитироватьПри постороении оси по двум точкам требуется передать указатели на точки, а где их взять?
За ранее спасибо.

pascal:
var
iCollection_1, iCollection_2: ksEntityCollection;
x1, y1, z1, x2, y2, z2: Double;
iPoint1, iPoint2: ksEntity;

//Получаем iPart (деталь)
...

//Получаем коллекцию вершин
//В неё попадут все вершины, образованные пересечением граней
//и точки в эскизах.
iCollection_1:=ksEntityCollection(iPart.EntityCollection(o3d_vertex);

//Очищаем её, чтобы далее добавлять в неё только нужные нам точки
iCollection_1.Clear;

//Ещё раз получаем коллекцию вершин
iCollection_2:=ksEntityCollection(iPart.EntityCollection(o3d_vertex);

//Исключаем из коллекции все точки, кроме той, координаты которой
//равны (x1,y1,z1)
//Координаты надо предварительно проинициализировать
iCollection_2.SelectByPoint(x1, y1,z1);

//Добавляем в итоговую коллекцию отфильтрованную точку
iCollection_1.Add(ksEntity(iCollection_2.First));

//Ещё раз получаем коллекцию вершин
iCollection_2:=ksEntityCollection(iPart.EntityCollection(o3d_vertex);

//Исключаем из коллекции все точки, кроме той, координаты которой
//равны (x2,y2,z2)
iCollection_2.SelectByPoint(x2, y2,z2);

//Добавляем в итоговую коллекцию отфильтрованную точку
iCollection_1.Add(ksEntity(iCollection_2.First));

//Интерфейс первой точки
iPoint1:=ksEntity(iCollection_1.GetByIndex(0));
iPoint2:=ksEntity(iCollection_1.GetByIndex(1));

//Далее используем их для создания оси по двум точкам



Название: Re:ось по двум точкам
Отправлено: Mitya от 21.08.03, 06:41:18
Спасибо.
Жаль, что по-проще нельзя, например как-нибудь фиксировать точки в процессе создания в эскизе...
Но все равно, огромное спасибо!
Название: Re:ось по двум точкам
Отправлено: Mitya от 29.08.03, 15:03:34
У меня что-то не получается...
Создаю EntityCollection, получаю указатель на нее, в общем, как
выше написано, потом запрашиваю GetCount, но там никак не
отображаются точки в эскизах...
Сколько бы я их не ставил в детали, они не считаются.
Вот такие расстройства.
Название: Re:ось по двум точкам
Отправлено: iUnknown от 01.09.03, 06:10:23
ЦитироватьУ меня что-то не получается...
Создаю EntityCollection, получаю указатель на нее, в общем, как
выше написано, потом запрашиваю GetCount, но там никак не
отображаются точки в эскизах...
Сколько бы я их не ставил в детали, они не считаются.
Вот такие расстройства.

Да..., грустно...
При создании оси по двум точкам "вручную", точки в эскизах подхватываются, а API-шный вариант, получается, не проходит.
Если уж позарез необходимо построить ость по двум точкам, советую
обртиться в техподдержку АСКОН. Может там подскажут другой вариант решения.
Название: Re:ось по двум точкам
Отправлено: Victor от 01.09.03, 14:50:41
В качестве точек в текущий момент могут использоваться только вершины объекта. С помощью функции ksPoint вершину задать нельзя. В дальнейшем планируется дать возможность для использования ksPoint при затании точек для операций по точкам.  
Название: Re:ось по двум точкам
Отправлено: Mitya от 04.09.03, 09:09:10
А с чем связано такое ограничение?
Неудобно очень...
Получается, если не строишь модель с "нуля" программно, то никак не узнаешь координаты того объекта, от которого нужно построить дополнение, никак не добавишь точек, чтобы построить ту же ось или плоскость... Очень неудобно.
И когда наступит время, которое "в дальнейшем"?