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

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

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

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

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

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

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

Как узнать 3D-координаты точки?

Автор Georg, 14.07.09, 15:48:05

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

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

Georg

Как узнать 3D-координаты точки в пространстве детали, зная ее координаты в эскизе на грани?

Amfaromah

если знаешь размеры данной детали просто включи пространственное мышление и воображение;) самое важное это размеры от них и пляши)) в общем то все просто)

333

У эскиза нужно получить интерфейс поверхности
У поверхности Placement
У Placement-а есть функция PointOn

Georg

Спасибо за ответ 333.
Это решение я сам выяснил к концу июля.

Misha

Доброго времени суток! Я написал приложение, которое собирает определенные детали в сборку и сопрягает их по пространственным точкам (которые предварительно построены в деталях) и сохраняет сборку в файле a3d. По по итогам работы программы мне также нужно получить 3D координаты этих точек в сборке относительно глобальной СК. Подскажите, пожалуйста, каким образом можно получить 3D координаты пространственных точек, которые построены в деталях, относительно глобальной СК? Ниже привожу код, где я пытаюсь получить координаты точек, но функция ksGetObjParam возвращает тут ноль. Помогите плз, а то неделю сижу над этой проблемой.

            if (doc != null) // private ksDocument3D doc;
            {
                ksPart part = (ksPart)doc.GetPart(0); // беру первую деталь

                int partsCount = 0;

                while (part != null)
                {
                    ksEntityCollection entityCollection =
                        (ksEntityCollection)part.EntityCollection((short)Obj3dType.o3d_point3D); // массив точек

                    int pointsCount = entityCollection.GetCount();

                    if (pointsCount != 0)
                    {
                        for (int i = 0; i < pointsCount; i++)
                        {
                            ksEntity k = (ksEntity)entityCollection.GetByIndex(i);

                            ksPointParam pointParam = (ksPointParam)kompas.GetParamStruct((short)StructType2DEnum.ko_PointParam);

                            // получаю ссылку на объект k
                            reference result = 0;
                            object refObj = k.GetType().InvokeMember("reference", BindingFlags.GetProperty, null, doc, null);
                            if (refObj != null)
                                result = Convert.ToInt32(refObj);

                            if (doc.ksGetObjParam(result, pointParam, ldefin2d.VIEW_ALLPARAM) != 0) // !!!!! ОТ ТУТА И ПРОБЛЕМА У МЕНЯ
                            {
                                if (pointParam != null)
                                {
                                    pointParam.Init();
                                    string buf =
                                        string.Format("Name: {0}\n x = {1}\ny = {2}\nstyle = {3}\n", k.name,pointParam.x, pointParam.y, pointParam.style);
                                    kompas.ksMessage(buf);
                                }
                            }

                        }
                        partsCount++;

                        part = (ksPart)doc.GetPart(partsCount); // деталь в сборке
                    }
                }
            }

chelkar

ksGetObjParam с типом ko_PointParam это 2D точка.
Надо после получения объекта в  ksEntity k = (ksEntity)entityCollection.GetByIndex(i);
перейти на интерфейс IPoint3D и у него взять координаты

Misha

спасибо. я уже сам к этому пришел. просто, видать, жара так действует, что думать лень:)