• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

ось по двум точкам

Автор Mitya, 19.08.03, 13:57:24

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

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

Mitya

При постороении оси по двум точкам требуется передать указатели на точки, а где их взять?
За ранее спасибо.

iUnknown

ЦитироватьПри постороении оси по двум точкам требуется передать указатели на точки, а где их взять?
За ранее спасибо.

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));

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




Mitya

Спасибо.
Жаль, что по-проще нельзя, например как-нибудь фиксировать точки в процессе создания в эскизе...
Но все равно, огромное спасибо!

Mitya

У меня что-то не получается...
Создаю EntityCollection, получаю указатель на нее, в общем, как
выше написано, потом запрашиваю GetCount, но там никак не
отображаются точки в эскизах...
Сколько бы я их не ставил в детали, они не считаются.
Вот такие расстройства.

iUnknown

ЦитироватьУ меня что-то не получается...
Создаю EntityCollection, получаю указатель на нее, в общем, как
выше написано, потом запрашиваю GetCount, но там никак не
отображаются точки в эскизах...
Сколько бы я их не ставил в детали, они не считаются.
Вот такие расстройства.

Да..., грустно...
При создании оси по двум точкам "вручную", точки в эскизах подхватываются, а API-шный вариант, получается, не проходит.
Если уж позарез необходимо построить ость по двум точкам, советую
обртиться в техподдержку АСКОН. Может там подскажут другой вариант решения.

Victor

В качестве точек в текущий момент могут использоваться только вершины объекта. С помощью функции ksPoint вершину задать нельзя. В дальнейшем планируется дать возможность для использования ksPoint при затании точек для операций по точкам.  

Mitya

А с чем связано такое ограничение?
Неудобно очень...
Получается, если не строишь модель с "нуля" программно, то никак не узнаешь координаты того объекта, от которого нужно построить дополнение, никак не добавишь точек, чтобы построить ту же ось или плоскость... Очень неудобно.
И когда наступит время, которое "в дальнейшем"?