Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамичное передавание точек GeometryModel3D 
:(
    Опции темы
Nasty333
Дата 16.9.2009, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 26.8.2009

Репутация: нет
Всего: нет



Привет.
Ребята, подскажите как передавать динамично точки для Meshgeometry3D Positions=""

Мне надо выдать на экран одну деталь, параметры которой стоят в xaml файле, причём каждый раз файл загружается новый и параметры меняются. 
Код

<Viewport3D>
                   
                    <ModelVisual3D>
                       
                        <ModelVisual3D.Content>
                    
                            <Model3DGroup>
                                
                                <GeometryModel3D x:Name="Gurtoben">
                                    
                                    <GeometryModel3D.Geometry>
                                        <MeshGeometry3D Positions="................................. (в этом месте всегда меняются точки) " 
                                                        TriangleIndices="2 1 4, 4 3 2, 15 16 13, 13 14 15, 14 13 1, 1 2 14, 3 4 16, 16 15 3, 3 15 14, 14 2 3, 1 13 16, 16 4 1, 0 11 6, 6 5 0, 17 18 23, 23 12 17, 12 23 11, 11 0 12, 5 6 18, 18 17 5, 10 9 8, 8 7 10, 19 20 21, 21 22 19, 22 21 9, 9 10 22, 6 8 20, 20 19 6, 7 19 22, 22 10 7, 9 21 20, 20 8 9" />
                                                    
                                    
                                    </GeometryModel3D.Geometry>
                                    
                                    <GeometryModel3D.Material>
                                        <DiffuseMaterial Brush="Gray" />
                                    </GeometryModel3D.Material>
                                    
                                    <GeometryModel3D.BackMaterial>
                                        <DiffuseMaterial Brush="Red" />
                                    </GeometryModel3D.BackMaterial>


А точки для  <MeshGeometry3D Positions=""  я решаю в с # таким образом 
Код

 public tpoint a0, a51, a52, a01, a02, a03, a21, a002, a003, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11;

// параметры считаные с xml файла
public SeitenGurtOben(tpoint _a0, double TW, double TT, double BT, double BW, double MT, double Height, double beta, double TWU, double TTU, double MTU, double BTU, double HeightU, double L1, double L2) 

        {
            double R5 = 200;//Rest füt Type5
            double R1 = 400;//Rest für Type1
            double Cos_beta = Math.Cos(Math.PI / 180 * beta);
            double Sin_beta = Math.Sin(Math.PI / 180 * beta);

            a0 = _a0;

            a1 = new tpoint(a0.x, a0.y, a0.z + ((TW - MT) / 2));
            a2 = new tpoint(a1.x + Sin_beta * TT, a1.y + Cos_beta * TT, a1.z);
            a3 = new tpoint(a2.x, a2.y, a2.z - TW);
            a4 = new tpoint(a3.x - Sin_beta * TT, a3.y - Cos_beta * TT, a3.z);
            a5 = new tpoint(a4.x, a4.y, a4.z +(TW - MT)/2);
            a6 = new tpoint(a5.x - Sin_beta * (Height -(TT + BT)), a5.y - Cos_beta * Height -((TT + BT)), a5.z);
            a7 = new tpoint(a6.x, a6.y, a6.z - ((BW - MT) / 2));
            a8 = new tpoint(a7.x - Sin_beta * BT, a7.y - Cos_beta * BT, a7.z);
            a9 = new tpoint(a8.x, a8.y, a8.z + BW);
            a10 = new tpoint(a9.x + Sin_beta * BT, a9.y + Cos_beta * BT, a9.z);
            a11 = new tpoint(a10.x, a10.y, a10.z - ((BW - MT) / 2));

Я теперь не могу догнать, как их в Xaml передать

Пожаааааалуйсто помогите, кто может
Спасибо
PM MAIL   Вверх
Partizan
Дата 16.9.2009, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



Nasty333, обзываете нужный объект MeshGeometry каким-нибудь именем и выставляете его свойство Positions из C#-кода


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Nasty333
Дата 16.9.2009, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 26.8.2009

Репутация: нет
Всего: нет



Партизан, а ты не мог бы мне это по подробнее объяснить, у тебя примера случайно никакого нет? 
PM MAIL   Вверх
Partizan
Дата 16.9.2009, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



Код

...
                                <GeometryModel3D x:Name="Gurtoben">
                                    
                                    <GeometryModel3D.Geometry>
                                        <MeshGeometry3D x:Name = "myMeshGeometry" 
                                                        TriangleIndices="2 1 4, 4 3 2, 15 16 13, 13 14 15, 14 13 1, 1 2 14, 3 4 16, 16 15 3, 3 15 14, 14 2 3, 1 13 16, 16 4 1, 0 11 6, 6 5 0, 17 18 23, 23 12 17, 12 23 11, 11 0 12, 5 6 18, 18 17 5, 10 9 8, 8 7 10, 19 20 21, 21 22 19, 22 21 9, 9 10 22, 6 8 20, 20 19 6, 7 19 22, 22 10 7, 9 21 20, 20 8 9"/>
                                    </GeometryModel3D.Geometry>
...


Код

...
            a11 = new tpoint(a10.x, a10.y, a10.z - ((BW - MT) / 2));
            
 Point3DCollection myPositionCollection = new Point3DCollection();
            myPositionCollection.Add(new Point3D(КООРДИНАТА_Х, КООРДИНАТА_У, КООРДИНАТА_Z));
            myPositionCollection.Add(new Point3D(.................................................................................));
...
            myPositionCollection.Add(new Point3D(.................................................................................));
            myMeshGeometry.Positions = myPositionCollection;
...



--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Nasty333
Дата 17.9.2009, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 26.8.2009

Репутация: нет
Всего: нет



Супер, спасибо
PM MAIL   Вверх
Nasty333
Дата 17.9.2009, 04:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 26.8.2009

Репутация: нет
Всего: нет



Partizan, чего - то мне там не хватает, ошибок не показывает, но и на  <MeshGeometry3D Positions="йлйхлх " > не реагирует, мне в С#е ещё надо что - то передать? Что странно, что я могу любое имя в MeshGeometry3D Positions="йлйхлх " написать, и всё равно ошибок не выдаёт.

Это сообщение отредактировал(а) Nasty333 - 17.9.2009, 04:29
PM MAIL   Вверх
Любитель
Дата 17.9.2009, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 1
Всего: 92



В XAML-е в Positions ничего не надо писать. Привязываешь имя через x:Name в XAML-е, а в code behind обращаешься к полю с этим именем.


--------------------
PM MAIL ICQ Skype   Вверх
Nasty333
Дата 22.9.2009, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 26.8.2009

Репутация: нет
Всего: нет



Людиииииииииии я не догоняю как это дело передавать, всё сделала так как показано в примере. Понимаю, что там не хватает этой передачи, но я туплю, подскажите как это сделать, пожалуйста
PM MAIL   Вверх
Partizan
Дата 22.9.2009, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



что у вас получилось в итоге?


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Nasty333
Дата 23.9.2009, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 26.8.2009

Репутация: нет
Всего: нет



В итоге получилось так

Код


  MeshGeometry3D myMeshGeometryGurtOben = new MeshGeometry3D();
            
  Point3DCollection myPositionCollectionGurtOben = new Point3DCollection();

            myPositionCollectionGurtOben.Add(new Point3D(a0.x, a0.y, a0.z));
            myPositionCollectionGurtOben.Add(new Point3D(a1.x, a1.y, a1.z));
            myPositionCollectionGurtOben.Add(new Point3D(a2.x, a2.y, a2.z));
            myPositionCollectionGurtOben.Add(new Point3D(a3.x, a3.y, a3.z));

 myMeshGeometryGurtOben.Positions = myPositionCollectionGurtOben;



Код

<Viewport3D>
                   
                    <ModelVisual3D>
                       
                        <ModelVisual3D.Content>
                    
                            <Model3DGroup>
                                
                                
                                <!--GurtOben-->
                                <GeometryModel3D x:Name="Gurtoben">
                                    
                                    <GeometryModel3D.Geometry>
                                        <MeshGeometry3D x:Name = "myMeshGeometryGurtOben" 
                                                        TriangleIndices="2 1 4, 4 3 2, 15 16 13, 13 14 15, 14 13 1, 1 2 14, 3 4 16, 16 15 3, 3 15 14, 14 2 3, 1 13 16, 16 4 1, 0 11 6, 6 5 0, 17 18 23, 23 12 17, 12 23 11, 11 0 12, 5 6 18, 18 17 5, 10 9 8, 8 7 10, 19 20 21, 21 22 19, 22 21 9, 9 10 22, 6 8 20, 20 19 6, 7 19 22, 22 10 7, 9 21 20, 20 8 9" />
                                                    
                                    
                                    </GeometryModel3D.Geometry>
                                    
                                    <GeometryModel3D.Material>
                                        <DiffuseMaterial Brush="Gray" />
                                    </GeometryModel3D.Material>
                                    
                                    <GeometryModel3D.BackMaterial>
                                        <DiffuseMaterial Brush="Red" />
                                    </GeometryModel3D.BackMaterial>

PM MAIL   Вверх
math64
Дата 23.9.2009, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 2
Всего: 72



Не нужно делать
Код

MeshGeometry3D myMeshGeometryGurtOben = new MeshGeometry3D();

это делается автоматически в InitializeComponent(). А так новые точки присваиваются компоненту, который не отображается, а уйдёт в мусор.  
PM   Вверх
Partizan
Дата 24.9.2009, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



другими словами Вам надо убрать эту строчку


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0532 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.