Загрузка, изменение размера и перемещение объекта, импортированного из файла COLLADA (*.dae) в Sketchup Ruby API

Я создал класс DaeImporter (он унаследован от интерфейса Importer) для импорта файла *.dae. И в функции load_file класса импортера. Я получил путь к файлу, который я импортировал

Но мне нужно открыть его и отобразить 3D-изображение, изменить его размер и поместить в заданную позицию, и эта функция должна быть реализована в классе DaeImporter.

Я вижу с объектами изображения, класс Entities имеет метод add_image для добавления изображения в объекты, изменения размера и размещения его в заданной позиции. Имеет ли класс Entites тот же метод, что и для файла dae. Если бы этого не было, что я мог бы сделать в этой ситуации.

Спасибо за помощь !


person Beginner    schedule 10.01.2014    source источник
comment
Почему вы реализуете класс Importer для того, что выглядит как DAE, когда вы ожидаете, что SketchUp загрузит формат? Класс IMporter предназначен для добавления импортеров, которые SketchUp не поддерживает по умолчанию.   -  person thomthom    schedule 10.01.2014
comment
Я предполагаю, что под 3D-изображением вы имеете в виду 3D-модель? Изображение — это 2D-элемент.   -  person thomthom    schedule 10.01.2014
comment
Да, я имею в виду 3D-изображение для 3D-модели, а изображение — это 2D-элемент. Извиняюсь. Мое требование заключается в том, что когда пользователь импортирует файл dae (точно пользователь импортирует 2D-элемент в файл dae), он автоматически меняет размер с заданным размером и автоматически перемещается в заданную позицию. Поэтому я думаю, что мне нужно создать собственный класс импортера, потому что он унаследован от интерфейса импортера и имеет функцию обратного вызова load_file (она вызывается автоматически, когда пользователь импортирует файл). В этой функции я буду обрабатывать чтение файла, изменение размера и перемещение 2D-элемента. Это верный способ? У вас есть альтернативный метод?   -  person Beginner    schedule 11.01.2014
comment
Если вы реализуете класс Importer, вы несете ответственность за чтение, декодирование и создание объектов SketchUp. Итак, я думаю, что вы действительно ищете уведомление, когда пользователь импортирует файл DAE? Нет уведомления о действиях импортера, вы можете отслеживать добавление новых компонентов или объектов, но нет никакого способа узнать, что они происходят из импорта DAE.   -  person thomthom    schedule 11.01.2014
comment
Да, я понял. Спасибо за ваше руководство, я нашел, как слушать, когда добавляются новые компоненты или сущности, и как их перемещать.   -  person Beginner    schedule 11.01.2014


Ответы (1)


Если вы хотите импортировать файл, отличный от SKP, используйте Model.import: http://www.sketchup.com/intl/en/developer/docs/ourdoc/model.php#import

Класс Importer предназначен для добавления дополнительных форматов, которые SketchUp не поддерживает по умолчанию.

person thomthom    schedule 10.01.2014
comment
Я использовал Model.import для импорта файла Dae, но у меня было 2 проблемы: 1) Параметр в функции Model.import — это путь к файлу, но этот путь получается, когда пользователь выбирает файл в диалоговом окне импорта модели 2) я не знаю т знаю, как изменить размер и переместить его. Я читаю в API и использую группу для перемещения одного элемента в заданную позицию. Но мне нужно создать новый объект в группе, и я не знаю, что мне нужно добавить в новые объекты, прежде чем перемещать эту группу. sketchup.com/intl/en/developer/docs/ наш документ/group.php#move - person Beginner; 11.01.2014
comment
1. Почему это проблема? Вам нужно больше указывать, что вы пробовали, что дает ошибки, и какую общую концепцию вы пытаетесь решить. - person thomthom; 11.01.2014
comment
2. Это еще один вопрос. Пожалуйста, опубликуйте это как новый пост. Также, пожалуйста, ознакомьтесь с руководством пользователя для этого сайта, так как если вы продолжите объединять такие вопросы, модератор закроет их. - person thomthom; 11.01.2014
comment
Извините за мою ошибку, пожалуйста, посочувствуйте мне - person Beginner; 11.01.2014
comment
Не беспокойтесь — продолжайте спрашивать, но придерживайтесь рекомендаций. Этот сайт не форум. - person thomthom; 13.01.2014