应用程序名称:InPlaceMembers

Revit 平台:结构

Revit 版本:2011.0

首次发布时间:9.0

编程语言:C#

技能水平:中等

类别:

类型:ExternalCommand

主题:显示原地族实例属性。

摘要:

该示例演示了如何获取Revit当前文档中的原地家族实例及其属性。

类:

Autodesk.Revit.UI.IExternalCommand

Autodesk.Revit.DB.FamilyInstance

Autodesk.Revit.DB.Structure.AnalyticalModel

Autodesk.Revit.DB.Curve

项目文件:

Command.cs

该文件包含了一个实现了IExternalCommand的类Command,该类的功能是检索原地族实例属性的值并将数据发送到UI

 

GraphicsData.cs

该文件包含了一个名为GraphicsData的类,该类的功能是存储AnalyticalModel的曲线点,并实现操作几何图形的一些功能,比如旋转、移动等。

 

GraphicsDataFactory.cs

该文件包含了一个名为GraphicsDataFactory的类,该类只有一个静态方法CreateGraphicsData来创建一个GraphicsData对象。

 

PictureBox3D.cs

该文件包含了一个名为PictureBox3D的类,该类的功能是画出保存在GraphicsData对象中的AnalyticalModel的几何曲线。

 

Properties.cs

该文件包含了一个名为Properties的类,该类保存FamilyInstance对象的所有属性值。

 

InPlaceMembersForm.cs

该文件包含了一个名为InPlaceMembersForm的类,该类继承自FormIMessageFilter。它使用一个PictureBox3D来绘制AnalyticalModel的曲线,并使用一个PropertyGrid来显示所选FamilyInstance的属性。

描述:

该示例检索原地族实例的属性值,将原地族实例的 Analytical Model 画在一个 PictureBox 中,并在属性网格中显示其他属性。我们可以通过Curves属性获取AnalyticalModel的轮廓曲线。

指导步骤:

 

1. 打开或新建Revit项目,并确保至少有一个包含Analytical Model的原地族实例被放置。示例项目文件InPlaceMembers.rvt位于示例文件夹中。

2. 选择包含Analytical Model的原地族实例。

3. 运行命令。

4. 窗体将显示所选FamilyInstanceAnalytical Model。可以通过按键旋转、移动和缩放几何形状:

- 旋转(左、右、上、下、PageUpPageDown

- 移动(SWAD

- 缩放(HomeEnd)。

源代码

完整的源代码请加入QQ群649037449,在群文件中下载RevitSDK.exe,解压后在文件夹中搜索本文中应用程序名称即可获得完整源码

GraphicsData.cs

//
// (C) Copyright 2003-2019 by Autodesk, Inc.
//
// Permission to use, copy, modify, and distribute this software in
// object code form for any purpose and without fee is hereby granted,
// provided that the above copyright notice appears in all copies and
// that both that copyright notice and the limited warranty and
// restricted rights notice below appear in all supporting
// documentation.
//
// AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
// AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. AUTODESK, INC.
// DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
// UNINTERRUPTED OR ERROR FREE.
//
// Use, duplication, or disclosure by the U.S. Government is subject to
// restrictions set forth in FAR 52.227-19 (Commercial Computer
// Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
// (Rights in Technical Data and Computer Software), as applicable.
//


using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Drawing.Drawing2D;

using Autodesk.Revit.DB.Structure;
using Autodesk.Revit.DB;

namespace Revit.SDK.Samples.InPlaceMembers.CS
{
    /// <summary>
    /// trigger when view data updated
    /// </summary>
    public delegate void UpdateViewDelegate();

    /// <summary>
    /// interface as the datasource of view, include nececessary members
    /// </summary>
    public interface IGraphicsData
    {
        /// <summary>
        /// 2D lines
        /// </summary>
        /// <returns></returns>
        List<PointF[]> PointCurves();

        /// <summary>
        /// view data update
        /// </summary>
        event UpdateViewDelegate UpdateViewEvent;

        /// <summary>
        /// region of 3D view data
        /// </summary>
        RectangleF Region
        {
            get;
        }
    }

    /// <summary>
    /// abstract class include general members
    /// </summary>
    public abstract class GraphicsDataBase:IGraphicsData
    {
        /// <summary>
        ///3D max point after transfered 
        /// </summary>
        protected Autodesk.Revit.DB.XYZ m_transferedMax;    

        /// <summary>
        ///3D min point after transfered 
        /// </summary>
        protected Autodesk.Revit.DB.XYZ m_transferedMin;    

        /// <summary>
        /// origin max define
        /// </summary>
        protected Autodesk.Revit.DB.XYZ m_originMax = new Autodesk.Revit.DB.XYZ (double.MinValue, double.MinValue, double.MinValue);    

        /// <summary>
        /// origin min define
        /// </summary>
        protected Autodesk.Revit.DB.XYZ m_originMin = new Autodesk.Revit.DB.XYZ (double.MaxValue, double.MaxValue, double.MaxValue);

        /// <summary>
        /// origin define
        /// </summary>
        protected double[,] m_origin = {{ 1.0, 0.0, 0.0 }, { 0.0, 1.0, 0.0 }, { 0.0, 0.0, 1.0 } };

        /// <summary>
        ///minimum value of the region box's edge 
        /// </summary>
        public const float MINEDGElENGTH = 1.0f;

        /// <summary>
        /// default angle when rotate around X,Y,Z axis
        /// </summary>
        public const double ROTATEANGLE = System.Math.PI / 90;    

        /// <summary>
        /// update view event
        /// </summary>
        public virtual event UpdateViewDelegate UpdateViewEvent;
        
        /// <summary>
        /// constructor
        /// </summary>
        public GraphicsDataBase()
        {
            Initialize();
        }

        /// <summary>
        /// initialize some member data
        /// </summary>
        protected virtual void Initialize()
        {    
            double INITANGLE = Math.PI / 4;

            RotateX(ref m_origin, INITANGLE);
            RotateY(ref m_origin, INITANGLE);
            m_transferedMax = new Autodesk.Revit.DB.XYZ (double.MinValue, double.MinValue, double.MinValue);
            m_transferedMin = new Autodesk.Revit.DB.XYZ (double.MaxValue, double.MaxValue, double.MaxValue);
        }

        /// <summary>
        /// trigger updata view event
        /// </summary>
        public virtual void UpdataData()
        {
            UpdateViewEvent();
        }

        /// <summary>
        /// point curves function
        /// </summary>
        /// <returns>the points list of curves</returns>
        public abstract List<PointF[]> PointCurves();

        /// <summary>
        /// rectangular region of 3D view data
        /// </summary>
        public RectangleF Region
        {
            get
            {
                float width = (float)(m_transferedMax.X - m_transferedMin.X);
                float height = (float)(m_transferedMax.Y - m_transferedMin.Y);

                float maxX = (width / 2);
                float maxY = (height / 2);
                float minX = -(width / 2);
                float minY = -(height / 2);

                if (width < 1)
                {
                    width = 1;
                }
                if (height < 1)
                {
                    height = 1;
                }

                RectangleF rec = new RectangleF(minX, minY, width, height);
                return rec;
            }
        }

        /// <summary>
        /// rotate around Z axis with default angle
        /// </summary>
        /// <param name="direction">minus or positive angle</param>
        public void RotateZ(bool direction)
        {
            double angle = ROTATEANGLE;
            if (!direction)
            {
                angle = -ROTATEANGLE;
            }

            RotateZ(ref m_origin, angle);
            UpdataData();
        }

        /// <summary>
        /// rotate 3*3 matrix around Z axis 
        /// </summary>
        /// <param name="origin">matrix to rotate</param>
        /// <param name="angle"></param>
        private void RotateZ(ref double[,] origin, double angle)
        {
            double sin = Math.Sin(angle);
            double cos = Math.Cos(angle);

            double[,] rotate = { { cos, sin, 0.0 }, { -sin, cos, 0.0 }, { 0.0, 0.0, 1.0 } };
            origin = MatrixArith.MultiCross(m_origin, rotate);
        }

        /// <summary>
        /// rotate around Y axis with default angle
        /// </summary>
        /// <param name="direction">minus or positive angle</param>
        public void RotateY(bool direction)
        {
            double angle = ROTATEANGLE;
            if (!direction)
            {
                angle = -ROTATEANGLE;
            }

            RotateY(ref m_origin, angle);
            UpdataData();
        }

        /// <summary>
        /// rotate 3*3 matrix around Y axis 
        /// </summary>
        /// <param name="origin">matrix to rotate</param>
        /// <param name="angle"></param>
        private void RotateY(ref double[,] origin, double angle)
        {
            double sin = Math.Sin(angle);
            double cos = Math.Cos(angle);

            double[,] rotate = { { cos, 0.0, -sin }, { 0.0, 1.0, 0.0 }, { sin, 0.0, cos } };
            origin = MatrixArith.MultiCross(m_origin, rotate);
        }

        /// <summary>
        /// rotate around X axis with default angle
        /// </summary>
        /// <param name="direction">minus or positive angle</param>
        public void RotateX(bool direction)
        {
            double angle = ROTATEANGLE;
            if (!direction)
            {
                angle = -ROTATEANGLE;
            }

            RotateX(ref m_origin ,angle);
            UpdataData();
        }

        /// <summary>
        /// rotate 3*3 matrix around X axis 
        /// </summary>
        /// <param name="origin">matrix to rotate</param>
        /// <param name="angle"></param>
        private void RotateX(ref double[,] origin, double angle)
        {
            double sin = Math.Sin(angle);
            double cos = Math.Cos(angle);

            double[,] rotate = { { 1.0, 0.0, 0.0 }, { 0.0, cos, sin }, { 0.0, -sin, cos } };
            origin = MatrixArith.MultiCross(m_origin, rotate);
        }
    }

    /// <summary>
    /// datasource that can bind to PictureBox3D
    /// </summary>
    public class GraphicsData : GraphicsDataBase
    {
        List<List<XYZ>> m_originCurves;
        List<List<XYZ>> m_transferedCurves;
        List<PointF[]> m_curves2D;

        /// <summary>
        /// update view event
        /// </summary>
        public override event UpdateViewDelegate UpdateViewEvent;

        /// <summary>
        /// constructor to initialize member data
        /// </summary>
        public GraphicsData() : base()
        {
            m_originCurves = new List<List<XYZ>>();
            m_transferedCurves = new List<List<XYZ>>();
            m_curves2D = new List<PointF[]>();
        }

        /// <summary>
        /// curves array
        /// </summary>
        /// <returns></returns>
        public override List<PointF[]> PointCurves()
        {
            return m_curves2D;
        }

        /// <summary>
        /// insert curves array into datasource
        /// </summary>
        /// <param name="points">points compose the curve</param>
        public void InsertCurve(List<XYZ> points)
        {
            m_originCurves.Add(points);
            foreach (Autodesk.Revit.DB.XYZ point in points)
            {
                m_originMin = UpdateMinRange(point);
                m_originMax = UpdateMaxRange(point);
            }
        }

        /// <summary>
        /// update 3D view data
        /// </summary>
        public override void UpdataData()
        {
            m_transferedMin = TransferRotate(m_originMin);
            m_transferedMax = TransferRotate(m_originMax);    
        
            m_transferedCurves.Clear();
            m_curves2D.Clear();

            foreach (List<XYZ> points in m_originCurves)
            {
                SynChroData(points);
            }

            if (null != UpdateViewEvent)
            {
                UpdateViewEvent();
            }
        }

        /// <summary>
        /// update 3D view curve data with origin data and transfer matrix
        /// </summary>
        /// <param name="points"></param>
        private void SynChroData(List<XYZ> points)
        {
            int size = points.Count;
            PointF[] points2D = new PointF[size];
            List<XYZ> transferedPoints = new List<XYZ>();
            for(int i = 0; i<size;i++)
            {
                Autodesk.Revit.DB.XYZ point = points[i];
                Autodesk.Revit.DB.XYZ temp = TransferRotate(point);
                Autodesk.Revit.DB.XYZ transferedPoint = TransferMove(temp);
                points2D[i] = new PointF((float)transferedPoint.X, (float)transferedPoint.Y);
            }
            m_transferedCurves.Add(transferedPoints);
            m_curves2D.Add(points2D);
        }

        private XYZ UpdateMaxRange(XYZ pnt)
        {
            return new XYZ(
                pnt.X > m_originMax.X ? pnt.X : m_originMax.X,
                pnt.Y > m_originMax.Y ? pnt.Y : m_originMax.Y,
                pnt.Z > m_originMax.Z ? pnt.Z : m_originMax.Z);
        }

        private XYZ UpdateMinRange(XYZ pnt)
        {
            return new XYZ(
                pnt.X < m_originMin.X ? pnt.X : m_originMin.X,
                pnt.Y < m_originMin.Y ? pnt.Y : m_originMin.Y,
                pnt.Z < m_originMin.Z ? pnt.Z : m_originMin.Z);
        }


        /// <summary>
        /// rotate points with origion matrix
        /// </summary>
        /// <param name="point"></param>
        /// <returns></returns>
        private Autodesk.Revit.DB.XYZ TransferRotate(Autodesk.Revit.DB.XYZ point)
        {
            double x = point.X;
            double y = point.Y;
            double z = point.Z;

            return new XYZ(
                x * m_origin[0, 0] + y * m_origin[0, 1] + z * m_origin[0, 2],
                x * m_origin[1, 0] + y * m_origin[1, 1] + z * m_origin[1, 2],
                x * m_origin[2, 0] + y * m_origin[2, 1] + z * m_origin[2, 2]);

        }

        /// <summary>
        /// move the point so that the center of the curves in 3D view is origin
        /// </summary>
        /// <param name="point">points to be moved</param>
        /// <returns>moved result</returns>
        private Autodesk.Revit.DB.XYZ TransferMove(Autodesk.Revit.DB.XYZ point)
        {
            //transform the origin of the old coordinate system in the new coordinate system
            
            return new XYZ(
                point.X - (m_transferedMax.X + m_transferedMin.X) / 2,
                point.Y - (m_transferedMax.Y + m_transferedMin.Y) / 2,
                point.Z - (m_transferedMax.Z + m_transferedMin.Z) / 2);
        }
    }

    /// <summary>
    /// utility class provide arithmetic of matrix
    /// </summary>
    public class MatrixArith
    {
        /// <summary>
        /// multiply cross two matrix
        /// </summary>
        /// <param name="m1">left matrix</param>
        /// <param name="m2">right matrix</param>
        /// <returns>result matrix</returns>
        public static double[,] MultiCross(double[,] m1, double[,] m2)
        {
            double[,] result = new double[3, 3];

            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    for (int k = 0; k < 3; k++)
                    {
                        result[i, j] += m1[i, k] * m2[k, j];
                    }                    
                }
            }

            return result;
        }
    }
}

GraphicsDataFactory.cs

//
// (C) Copyright 2003-2019 by Autodesk, Inc.
//
// Permission to use, copy, modify, and distribute this software in
// object code form for any purpose and without fee is hereby granted,
// provided that the above copyright notice appears in all copies and
// that both that copyright notice and the limited warranty and
// restricted rights notice below appear in all supporting
// documentation.
//
// AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
// AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. AUTODESK, INC.
// DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
// UNINTERRUPTED OR ERROR FREE.
//
// Use, duplication, or disclosure by the U.S. Government is subject to
// restrictions set forth in FAR 52.227-19 (Commercial Computer
// Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
// (Rights in Technical Data and Computer Software), as applicable.
//


using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Drawing.Drawing2D;

using Autodesk.Revit.DB.Structure;
using Autodesk.Revit.DB;
using System.Reflection;

namespace Revit.SDK.Samples.InPlaceMembers.CS
{
    /// <summary>
    /// generate GraphicsData by given geometry object
    /// </summary>
    public class GraphicsDataFactory
    {
        /// <summary>
        /// create GraphicsData of given AnalyticalModel3D
        /// </summary>
        /// <param name="model">AnalyticalModel3D contains geometry data</param>
        /// <returns></returns>
        public static GraphicsData CreateGraphicsData(AnalyticalModel model)
        {
            IList<Curve> curveList = model.GetCurves(AnalyticalCurveType.ActiveCurves);

            if (curveList.Count > 0)
            {
                GraphicsData data = new GraphicsData();

                IEnumerator<Curve> curves = curveList.GetEnumerator();
                curves.Reset();
                while (curves.MoveNext())
                {
                    Curve curve = curves.Current as Curve;

                    try
                    {
                        List<XYZ> points = curve.Tessellate() as List<XYZ>;
                        data.InsertCurve(points);
                    }
                    catch
                    {
                    }
                }

                data.UpdataData();

                return data;
            }
            else
            {
                throw new Exception("Can't get curves.");
            }
        }
    }
}

Properties.cs

//
// (C) Copyright 2003-2019 by Autodesk, Inc.
//
// Permission to use, copy, modify, and distribute this software in
// object code form for any purpose and without fee is hereby granted,
// provided that the above copyright notice appears in all copies and
// that both that copyright notice and the limited warranty and
// restricted rights notice below appear in all supporting
// documentation.
//
// AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
// AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. AUTODESK, INC.
// DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
// UNINTERRUPTED OR ERROR FREE.
//
// Use, duplication, or disclosure by the U.S. Government is subject to
// restrictions set forth in FAR 52.227-19 (Commercial Computer
// Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
// (Rights in Technical Data and Computer Software), as applicable.
//


using System.ComponentModel;
using Autodesk.Revit.DB;
using System;    

namespace Revit.SDK.Samples.InPlaceMembers.CS
{
    /// <summary>
    /// This class is used as PropertyGrid.SelectedObject.   
    /// </summary>
    public class Properties
    {
        private int m_ID;
        private string m_Name;
        private string m_Family;
        private string m_Type;
        private string m_StructuralType;
        private string m_StructuralUsage;
        private string m_Material;

        /// <summary>
        /// the value of the element id as an integer
        /// </summary>
        [CategoryAttribute("Identity")]
        public int ID
        {
            get
            {
                return m_ID;
            }
        }

        /// <summary>
        /// a human readable name for the Element.
        /// </summary>
        [CategoryAttribute("Identity")]
        public string Name
        {
            get
            {
                return m_Name;
            }
        }

        /// <summary>
        /// a human readable name for the family name.
        /// </summary>
        [CategoryAttribute("Category")]
        public string Family
        {
            get
            {
                return m_Family;
            }
        }

        /// <summary>
        /// a human readable name for the family type name.
        /// </summary>
        [CategoryAttribute("Category")]
        public string Type
        {
            get
            {
                return m_Type;
            }
        }

        /// <summary>
        /// the primary structural type of the instance, such as beam or column etc.
        /// </summary>
        [CategoryAttribute("Structural")]
        public string StructuralType
        {
            get
            {
                return m_StructuralType;
            }
        }

        /// <summary>
        /// the primary structural usage of the instance, such as brace, girder etc.
        /// </summary>
        [CategoryAttribute("Structural")]
        public string StructuralUsage
        {
            get
            {
                return m_StructuralUsage;
            }
        }

        /// <summary>
        /// the physical material from which the instance is made.
        /// </summary>
        [CategoryAttribute("Structural")]
        public string Material
        {
            get
            {
                return m_Material;
            }
        }

        /// <summary>
        /// get this family instance's properties to display.
        /// </summary>
        /// <param name="f">a In-Place family instance</param>
        public Properties(FamilyInstance f)
        {
            m_ID = f.Id.IntegerValue;
            m_Name = f.Name;
            m_Family = f.Symbol.Family.Name;
            m_Type = f.Symbol.Name;
            m_StructuralType = f.StructuralType.ToString();
            try
            {
                m_StructuralUsage = f.StructuralUsage.ToString();
            }
            catch(Exception)
            {
                m_StructuralUsage = null;
            }            
            m_Material = f.StructuralMaterialType.ToString();
        }

    }
}

InPlaceMembersForm.cs

//
// (C) Copyright 2003-2019 by Autodesk, Inc.
//
// Permission to use, copy, modify, and distribute this software in
// object code form for any purpose and without fee is hereby granted,
// provided that the above copyright notice appears in all copies and
// that both that copyright notice and the limited warranty and
// restricted rights notice below appear in all supporting
// documentation.
//
// AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
// AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. AUTODESK, INC.
// DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
// UNINTERRUPTED OR ERROR FREE.
//
// Use, duplication, or disclosure by the U.S. Government is subject to
// restrictions set forth in FAR 52.227-19 (Commercial Computer
// Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
// (Rights in Technical Data and Computer Software), as applicable.
//


namespace Revit.SDK.Samples.InPlaceMembers.CS
{
    partial class InPlaceMembersForm
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; 
        /// otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.instancePropertyGrid = new System.Windows.Forms.PropertyGrid();
            this.OKbutton = new System.Windows.Forms.Button();
            this.cancelButton = new System.Windows.Forms.Button();
            this.modelPictureBox = new Revit.SDK.Samples.InPlaceMembers.CS.PictureBox3D();
            this.SuspendLayout();
            // 
            // instancePropertyGrid
            // 
            this.instancePropertyGrid.Location = new System.Drawing.Point(12, 12);
            this.instancePropertyGrid.Name = "instancePropertyGrid";
            this.instancePropertyGrid.Size = new System.Drawing.Size(547, 238);
            this.instancePropertyGrid.TabIndex = 2;
            // 
            // OKbutton
            // 
            this.OKbutton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
            this.OKbutton.Location = new System.Drawing.Point(346, 573);
            this.OKbutton.Name = "OKbutton";
            this.OKbutton.Size = new System.Drawing.Size(88, 23);
            this.OKbutton.TabIndex = 0;
            this.OKbutton.Text = "&OK";
            this.OKbutton.UseVisualStyleBackColor = true;
            this.OKbutton.Click += new System.EventHandler(this.OKbutton_Click);
            // 
            // cancelButton
            // 
            this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
            this.cancelButton.Location = new System.Drawing.Point(471, 573);
            this.cancelButton.Name = "cancelButton";
            this.cancelButton.Size = new System.Drawing.Size(88, 23);
            this.cancelButton.TabIndex = 3;
            this.cancelButton.Text = "&Cancel";
            this.cancelButton.UseVisualStyleBackColor = true;
            this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click);
            // 
            // modelPictureBox
            // 
            this.modelPictureBox.Cursor = System.Windows.Forms.Cursors.SizeAll;
            this.modelPictureBox.DataSource = null;
            this.modelPictureBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
            this.modelPictureBox.Location = new System.Drawing.Point(12, 256);
            this.modelPictureBox.Name = "modelPictureBox";
            this.modelPictureBox.Size = new System.Drawing.Size(547, 311);
            this.modelPictureBox.TabIndex = 1;
            this.modelPictureBox.UseVisualStyleBackColor = true;
            // 
            // InPlaceMembersForm
            // 
            this.AcceptButton = this.OKbutton;
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.CancelButton = this.cancelButton;
            this.ClientSize = new System.Drawing.Size(571, 606);
            this.Controls.Add(this.cancelButton);
            this.Controls.Add(this.OKbutton);
            this.Controls.Add(this.modelPictureBox);
            this.Controls.Add(this.instancePropertyGrid);
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
            this.MaximizeBox = false;
            this.MinimizeBox = false;
            this.Name = "InPlaceMembersForm";
            this.ShowInTaskbar = false;
            this.Text = "In-Place Members";
            this.Load += new System.EventHandler(this.InPlaceMembersForm_Load);
            this.ResumeLayout(false);

        }

        #endregion

        private System.Windows.Forms.PropertyGrid instancePropertyGrid;
        private PictureBox3D modelPictureBox;
        private System.Windows.Forms.Button OKbutton;
        private System.Windows.Forms.Button cancelButton;
    }
}