应用程序名称:Journaling

Revit平台:所有

Revit版本:2011.0

首次发布时间:9.1

编程语言:C#

技能水平:中等

类别:基础

类型:ExternalCommand

主题:日志记录机制:日志数据的读取和写入。

摘要:

该示例演示了如何将外部应用程序纳入日志记录机制中。

类:

Autodesk.Revit.UI.IExternalCommand

Autodesk.Revit.DB.Document

Autodesk.Revit.DB.Element

Autodesk.Revit.DB.Creation

Autodesk.Revit.DB.Collections.StringStringMap

项目文件:

Command.cs

该文件包含从IExternalCommand继承的Command类。该类实现了Execute方法,可用于与Revit进行互操作。

 

Journaling.cs

该文件将实现以下功能:获取所有墙类型和所有楼层;在一个窗体中显示所有墙类型和楼层信息;读取和写入日记数据到日记文件;根据用户设置创建一堵墙。

 

JournalingForm.cs

该文件包含Form类,其中包括:两个ComboBox控件,一个列出所有墙类型,另一个用于所有楼层;一个用户控件,用于从用户输入中获取墙面位置。

 

PointUserControl.cs

该文件包含一个用户控件类,用于从用户输入中获取XYZ数据。

描述:

此示例主要使用StringStringMap类来实现以下功能:从/到日记文件中读取和写入用户数据,该数据存在于日记文件中的APIStringStringMapJournalData日记数据部分中。

- 要读取或写入存储在日记文件中的数据,请使用StringStringMap类的方法:get_Item(key)Insert(key, value)

- ExternalCommandData.Data属性可用于获取/设置日记数据(StringStringMap对象)。

- 要获取Revit项目中的所有墙类型,请使用ActiveDocument.WallTypes

- 要通过Id获取现有元素,请使用ActiveDocument.get_Element(ref ElementId)

说明:

1. 为了测试有关读取/写入日记数据的示例功能,首先用户应手动执行此示例一次。

2. 单击外部命令,将弹出对话框;输入新墙的起点和终点,单击“确定”创建新墙,然后不保存关闭Revit

3. Revit安装目录下的Journals文件夹中打开由Revit生成的最新日记文件(在运行此示例之前,请确保有Journals文件夹),你会在APIStringStringMapJournalData部分看到由API添加的日记数据(终点、起点、楼层ID等):

   Jrn.Data "APIStringStringMapJournalData" _

          , 4, "End Point", "(100,0,0)" _

          , "Level Id", "30", "Start Point" _

          , "(0,0,0)", "Wall Type Name", "Curtain Wall 1"

 

4. 当重播此示例日记(将日记直接拖到Revit.exe图标上),你会发现通过读取上述步骤中保留的日记数据值成功创建相同的墙。

5. 然而,如果您注释掉Journaling.cs文件中Run()方法中的WriteJournalData()方法,然后执行步骤1到步骤3;在步骤4中,JournalingForm将弹出并阻止执行,因为在步骤1到步骤3中没有保留任何日记数据。

注意:

1. 因为我们需要将APIStringStringMapJournalData内容写入到日记中,请确保外部命令使用JournalingData.UsingCommandData属性;否则,在手动运行样例时不会将任何内容转储到日记中。

源代码

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

Journaling.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.Collections.ObjectModel;
using System.Text;
using System.IO;
using System.Windows.Forms;
using System.Linq;

using Autodesk.Revit;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Creation = Autodesk.Revit.Creation;

namespace Revit.SDK.Samples.Journaling.CS
{
    public class Journaling
    {
        /// <summary>
        /// Define a comparer which compare WallType by name property
        /// </summary>
        class WallTypeComparer : IComparer<WallType>
        {
            int IComparer<WallType>.Compare(WallType first, WallType second)
            {
                return String.Compare(first.Name, second.Name);
            }
        }

        // Private members
        ExternalCommandData m_commandData;  // Store the reference of command data
        bool m_canReadData;                 // Indicate whether has journal data

        Autodesk.Revit.DB.XYZ m_startPoint;       // Store the start point of the created wall
        Autodesk.Revit.DB.XYZ m_endPoint;         // Store the end point of the created wall
        Level m_createlevel;    // Store the level which the created wall on
        WallType m_createType;  // Store the type of the created wall

        List<Level> m_levelList;        // Store all levels in revit
        List<WallType> m_wallTypeList;  // Store all wall types in revit


        // Properties
        /// <summary>
        /// Give all levels in revit, and this information can be showed in UI
        /// </summary>
        public ReadOnlyCollection<Level> Levels
        {
            get
            {
                return new ReadOnlyCollection<Level>(m_levelList);
            }
        }


        /// <summary>
        /// Give all wall types in revit, and this information can be showed in UI
        /// </summary>
        public ReadOnlyCollection<WallType> WallTypes
        {
            get
            {
                return new ReadOnlyCollection<WallType>(m_wallTypeList);
            }
        }


        // Methods
        /// <summary>
        /// The default constructor
        /// </summary>
        /// <param name="commandData">the external command data which revit give RevitAPI</param>
        public Journaling(ExternalCommandData commandData)
        {
            // Initialize the data members
            m_commandData = commandData;
            m_canReadData = (0 < commandData.JournalData.Count) ? true : false;

            // Initialize the two list data members
            m_levelList = new List<Level>();
            m_wallTypeList = new List<WallType>();
            InitializeListData();
        }


        /// <summary>
        /// This is the main deal method in this sample.
        /// It invoke methods to read and write journal data and create a wall using these data
        /// </summary>
        public void Run()
        {
            // According to it has journal data or not, this sample create wall in two ways
            if (m_canReadData)      // if it has journal data
            {
                ReadJournalData();  // read the journal data
                CreateWall();       // create a wall using the data
            }
            else                    // if it doesn't have journal data
            {
                if (!DisplayUI())   // display a form to collect some necessary data
                {
                    return;         // if the user cancels the form, only return
                }

                CreateWall();       // create a wall using the collected data
                WriteJournalData(); // write the journal data
            }

        }


        /// <summary>
        /// Set the necessary data which support the wall creation
        /// </summary>
        /// <param name="startPoint">the start point of the wall</param>
        /// <param name="endPoint">the end point of the wall</param>
        /// <param name="level">the level which the wall base on</param>
        /// <param name="type">the type of the wall</param>
        public void SetNecessaryData(Autodesk.Revit.DB.XYZ startPoint, Autodesk.Revit.DB.XYZ endPoint, Level level, WallType type)
        {
            m_startPoint = startPoint;  // start point
            m_endPoint = endPoint;      // end point
            m_createlevel = level;      // the level information
            m_createType = type;        // the wall type
        }


        /// <summary>
        /// Get the levels and wall types from revit and insert into the lists
        /// </summary>
        private void InitializeListData()
        {
            // Assert the lists have been constructed
            if (null == m_wallTypeList || null == m_levelList)
            {
                throw new Exception("necessary data members don't initialize.");
            }

            // Get all wall types from revit
            Document document = m_commandData.Application.ActiveUIDocument.Document;
            FilteredElementCollector filteredElementCollector = new FilteredElementCollector(document);
            filteredElementCollector.OfClass(typeof(WallType));
            m_wallTypeList = filteredElementCollector.Cast<WallType>().ToList<WallType>();

            // Sort the wall type list by the name property
            WallTypeComparer comparer = new WallTypeComparer();
            m_wallTypeList.Sort(comparer);

            // Get all levels from revit 
            FilteredElementIterator iter = (new FilteredElementCollector(document)).OfClass(typeof(Level)).GetElementIterator();
            iter.Reset();
            while (iter.MoveNext())
            {
                Level level = iter.Current as Level;
                if (null == level)
                {
                    continue;
                }
                m_levelList.Add(level);
            }
        }


        /// <summary>
        /// Read the journal data from the journal.
        /// All journal data is stored in commandData.Data.
        /// </summary>
        private void ReadJournalData()
        {
            // Get the journal data map from API
            Document doc = m_commandData.Application.ActiveUIDocument.Document;
            IDictionary<string, string> dataMap = m_commandData.JournalData;

            String dataValue = null;    // store the journal data value temporarily

            // Get the wall type from the journal
            dataValue = GetSpecialData(dataMap, "Wall Type Name"); // get wall type name
            foreach (WallType type in m_wallTypeList)   // get the wall type by the name
            {
                if (dataValue == type.Name)
                {
                    m_createType = type;
                    break;
                }
            }
            if (null == m_createType)   // assert the wall type is exist
            {
                throw new InvalidDataException("Can't find the wall type from the journal.");
            }

            // Get the level information from the journal
            dataValue = GetSpecialData(dataMap, "Level Id");   // get the level id
            Autodesk.Revit.DB.ElementId id = new Autodesk.Revit.DB.ElementId(Convert.ToInt32(dataValue));     // get the level by its id

            m_createlevel = doc.GetElement(id) as Level;
            if (null == m_createlevel)  // assert the level is exist
            {
                throw new InvalidDataException("Can't find the level from the journal.");
            }

            // Get the start point information from the journal
            dataValue = GetSpecialData(dataMap, "Start Point");
            m_startPoint = StirngToXYZ(dataValue);

            // Get the end point information from the journal
            dataValue = GetSpecialData(dataMap, "End Point");
            m_endPoint = StirngToXYZ(dataValue);

            // Create wall don't allow the start point equals end point
            if (m_startPoint.Equals(m_endPoint))
            {
                throw new InvalidDataException("Start point is equal to end point.");
            }
        }


        /// <summary>
        /// Display the UI form to collect some necessary information for create wall.
        /// The information will be write into the journal
        /// </summary>
        /// <returns></returns>
        private bool DisplayUI()
        {
            // Display the form and allow the user to input some information for wall creation
            using (JournalingForm displayForm = new JournalingForm(this))
            {
                displayForm.ShowDialog();
                if (DialogResult.OK != displayForm.DialogResult)
                {
                    return false;
                }
            }
            return true;
        }


        /// <summary>
        /// Create a wall with the collected data or the data read from journal 
        /// </summary>
        private void CreateWall()
        {
            // Get the create classes.
            Creation.Application createApp = m_commandData.Application.Application.Create;
            Creation.Document createDoc = m_commandData.Application.ActiveUIDocument.Document.Create;

            // Create geometry line(curve)
            Line geometryLine = Line.CreateBound(m_startPoint, m_endPoint);
            if (null == geometryLine)           // assert the creation is successful
            {
                throw new Exception("Create the geometry line failed.");
            }

            // Create the wall using the wall type, level and created geometry line
            Wall createdWall = Wall.Create(m_commandData.Application.ActiveUIDocument.Document, geometryLine, m_createType.Id, m_createlevel.Id,
                                    15, m_startPoint.Z + m_createlevel.Elevation, true, true);
            if (null == createdWall)            // assert the creation is successful
            {
                throw new Exception("Create the wall failed.");
            }
        }


        /// <summary>
        /// Write the support data into the journal
        /// </summary>
        private void WriteJournalData()
        {
            // Get the StringStringMap class which can write support into.
            IDictionary<string, string> dataMap = m_commandData.JournalData;
            dataMap.Clear();

            // Begin to add the support data
            dataMap.Add("Wall Type Name", m_createType.Name);    // add wall type name
            dataMap.Add("Level Id", m_createlevel.Id.IntegerValue.ToString());  // add level id
            dataMap.Add("Start Point", XYZToString(m_startPoint));   // add start point
            dataMap.Add("End Point", XYZToString(m_endPoint));   // add end point
        }


        /// <summary>
        /// The helper function which convert a format string to a Autodesk.Revit.DB.XYZ point
        /// </summary>
        /// <param name="pointString">a format string</param>
        /// <returns>the converted Autodesk.Revit.DB.XYZ point</returns>
        private static Autodesk.Revit.DB.XYZ StirngToXYZ(String pointString)
        {
            // Define some temporary data
            double x = 0;   // Store the temporary x coordinate
            double y = 0;   // Store the temporary y coordinate
            double z = 0;   // Store the temporary z coordinate
            String subString;   // A part of the format string 

            // Get the data string from the format string
            subString = pointString.TrimStart('(');
            subString = subString.TrimEnd(')');
            String[] coordinateString = subString.Split(',');
            if (3 != coordinateString.Length)
            {
                throw new InvalidDataException("The point information in journal is incorrect");
            }

            // Return a Autodesk.Revit.DB.XYZ point using the collected data
            try
            {
                x = Convert.ToDouble(coordinateString[0]);
                y = Convert.ToDouble(coordinateString[1]);
                z = Convert.ToDouble(coordinateString[2]);
            }
            catch (Exception)
            {
                throw new InvalidDataException("The point information in journal is incorrect");
            }
            return new Autodesk.Revit.DB.XYZ(x, y, z);
        }


        /// <summary>
        /// The helper function which convert a Autodesk.Revit.DB.XYZ point to a format string
        /// </summary>
        /// <param name="point">A Autodesk.Revit.DB.XYZ point</param>
        /// <returns>The format string which store the information of the point</returns>
        private static String XYZToString(Autodesk.Revit.DB.XYZ point)
        {

            String pointString = "(" + point.X.ToString() + "," + point.Y.ToString() + ","
                                                    + point.Z.ToString() + ")";
            return pointString;
        }


        /// <summary>
        /// Get the data which is related to a special key in journal
        /// </summary>
        /// <param name="dataMap">the map which store the journal data</param>
        /// <param name="key">a key which indicate which data to get</param>
        /// <returns>The gotten data in string format</returns>
        private static String GetSpecialData(IDictionary<string, string> dataMap, String key)
        {
            String dataValue = dataMap[key];

            if (String.IsNullOrEmpty(dataValue))
            {
                throw new Exception(key + "information is not exist in journal.");
            }
            return dataValue;
        }
    }
}

JournalingForm.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.Journaling.CS
{
    partial class JournalingForm
    {
        /// <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.typeLabel = new System.Windows.Forms.Label();
            this.typeComboBox = new System.Windows.Forms.ComboBox();
            this.levelLabel = new System.Windows.Forms.Label();
            this.levelComboBox = new System.Windows.Forms.ComboBox();
            this.locationGroupBox = new System.Windows.Forms.GroupBox();
            this.endPointUserControl = new Revit.SDK.Samples.ModelLines.CS.PointUserControl();
            this.startPointUserControl = new Revit.SDK.Samples.ModelLines.CS.PointUserControl();
            this.endPointLabel = new System.Windows.Forms.Label();
            this.startPointLabel = new System.Windows.Forms.Label();
            this.okButton = new System.Windows.Forms.Button();
            this.cancelButton = new System.Windows.Forms.Button();
            this.locationGroupBox.SuspendLayout();
            this.SuspendLayout();
            // 
            // typeLabel
            // 
            this.typeLabel.AutoSize = true;
            this.typeLabel.Location = new System.Drawing.Point(34, 19);
            this.typeLabel.Name = "typeLabel";
            this.typeLabel.Size = new System.Drawing.Size(58, 13);
            this.typeLabel.TabIndex = 0;
            this.typeLabel.Text = "Wall Type:";
            // 
            // typeComboBox
            // 
            this.typeComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.typeComboBox.FormattingEnabled = true;
            this.typeComboBox.Location = new System.Drawing.Point(99, 16);
            this.typeComboBox.Name = "typeComboBox";
            this.typeComboBox.Size = new System.Drawing.Size(205, 21);
            this.typeComboBox.TabIndex = 0;
            // 
            // levelLabel
            // 
            this.levelLabel.AutoSize = true;
            this.levelLabel.Location = new System.Drawing.Point(56, 59);
            this.levelLabel.Name = "levelLabel";
            this.levelLabel.Size = new System.Drawing.Size(36, 13);
            this.levelLabel.TabIndex = 2;
            this.levelLabel.Text = "Level:";
            // 
            // levelComboBox
            // 
            this.levelComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.levelComboBox.FormattingEnabled = true;
            this.levelComboBox.Location = new System.Drawing.Point(99, 56);
            this.levelComboBox.Name = "levelComboBox";
            this.levelComboBox.Size = new System.Drawing.Size(205, 21);
            this.levelComboBox.TabIndex = 1;
            // 
            // locationGroupBox
            // 
            this.locationGroupBox.Controls.Add(this.endPointUserControl);
            this.locationGroupBox.Controls.Add(this.startPointUserControl);
            this.locationGroupBox.Controls.Add(this.endPointLabel);
            this.locationGroupBox.Controls.Add(this.startPointLabel);
            this.locationGroupBox.Location = new System.Drawing.Point(15, 83);
            this.locationGroupBox.Name = "locationGroupBox";
            this.locationGroupBox.Size = new System.Drawing.Size(289, 86);
            this.locationGroupBox.TabIndex = 4;
            this.locationGroupBox.TabStop = false;
            this.locationGroupBox.Text = "Wall Location Line";
            // 
            // endPointUserControl
            // 
            this.endPointUserControl.Location = new System.Drawing.Point(70, 51);
            this.endPointUserControl.Name = "endPointUserControl";
            this.endPointUserControl.Size = new System.Drawing.Size(213, 28);
            this.endPointUserControl.TabIndex = 1;
            // 
            // startPointUserControl
            // 
            this.startPointUserControl.Location = new System.Drawing.Point(70, 19);
            this.startPointUserControl.Name = "startPointUserControl";
            this.startPointUserControl.Size = new System.Drawing.Size(213, 28);
            this.startPointUserControl.TabIndex = 0;
            // 
            // endPointLabel
            // 
            this.endPointLabel.AutoSize = true;
            this.endPointLabel.Location = new System.Drawing.Point(19, 57);
            this.endPointLabel.Name = "endPointLabel";
            this.endPointLabel.Size = new System.Drawing.Size(29, 13);
            this.endPointLabel.TabIndex = 1;
            this.endPointLabel.Text = "End:";
            // 
            // startPointLabel
            // 
            this.startPointLabel.AutoSize = true;
            this.startPointLabel.Location = new System.Drawing.Point(19, 29);
            this.startPointLabel.Name = "startPointLabel";
            this.startPointLabel.Size = new System.Drawing.Size(32, 13);
            this.startPointLabel.TabIndex = 0;
            this.startPointLabel.Text = "Start:";
            // 
            // okButton
            // 
            this.okButton.Location = new System.Drawing.Point(142, 175);
            this.okButton.Name = "okButton";
            this.okButton.Size = new System.Drawing.Size(79, 23);
            this.okButton.TabIndex = 2;
            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(227, 175);
            this.cancelButton.Name = "cancelButton";
            this.cancelButton.Size = new System.Drawing.Size(77, 23);
            this.cancelButton.TabIndex = 3;
            this.cancelButton.Text = "&Cancel";
            this.cancelButton.UseVisualStyleBackColor = true;
            this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click);
            // 
            // JournalingForm
            // 
            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(319, 204);
            this.Controls.Add(this.cancelButton);
            this.Controls.Add(this.okButton);
            this.Controls.Add(this.locationGroupBox);
            this.Controls.Add(this.levelComboBox);
            this.Controls.Add(this.levelLabel);
            this.Controls.Add(this.typeComboBox);
            this.Controls.Add(this.typeLabel);
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
            this.MaximizeBox = false;
            this.MinimizeBox = false;
            this.Name = "JournalingForm";
            this.ShowIcon = false;
            this.ShowInTaskbar = false;
            this.Text = "Journaling";
            this.locationGroupBox.ResumeLayout(false);
            this.locationGroupBox.PerformLayout();
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

        private System.Windows.Forms.Label typeLabel;
        private System.Windows.Forms.ComboBox typeComboBox;
        private System.Windows.Forms.Label levelLabel;
        private System.Windows.Forms.ComboBox levelComboBox;
        private System.Windows.Forms.GroupBox locationGroupBox;
        private System.Windows.Forms.Label endPointLabel;
        private System.Windows.Forms.Label startPointLabel;
        private System.Windows.Forms.Button okButton;
        private System.Windows.Forms.Button cancelButton;
        private Revit.SDK.Samples.ModelLines.CS.PointUserControl endPointUserControl;
        private Revit.SDK.Samples.ModelLines.CS.PointUserControl startPointUserControl;
    }
}

PointUserControl.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.ModelLines.CS
{
    partial class PointUserControl
    {
        /// <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 Component 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.secondBracketLabel = new System.Windows.Forms.Label();
            this.secondCommaLabel = new System.Windows.Forms.Label();
            this.firstCommaLabel = new System.Windows.Forms.Label();
            this.zCoordinateTextBox = new System.Windows.Forms.TextBox();
            this.yCoordinateTextBox = new System.Windows.Forms.TextBox();
            this.xCoordinateTextBox = new System.Windows.Forms.TextBox();
            this.firstBracketLabel = new System.Windows.Forms.Label();
            this.SuspendLayout();
            // 
            // secondBracketLabel
            // 
            this.secondBracketLabel.AccessibleRole = System.Windows.Forms.AccessibleRole.None;
            this.secondBracketLabel.AutoSize = true;
            this.secondBracketLabel.Location = new System.Drawing.Point(203, 8);
            this.secondBracketLabel.Name = "secondBracketLabel";
            this.secondBracketLabel.Size = new System.Drawing.Size(10, 13);
            this.secondBracketLabel.TabIndex = 37;
            this.secondBracketLabel.Text = ")";
            // 
            // secondCommaLabel
            // 
            this.secondCommaLabel.AutoSize = true;
            this.secondCommaLabel.Location = new System.Drawing.Point(134, 7);
            this.secondCommaLabel.Name = "secondCommaLabel";
            this.secondCommaLabel.Size = new System.Drawing.Size(10, 13);
            this.secondCommaLabel.TabIndex = 36;
            this.secondCommaLabel.Text = ",";
            // 
            // firstCommaLabel
            // 
            this.firstCommaLabel.AutoSize = true;
            this.firstCommaLabel.Location = new System.Drawing.Point(66, 8);
            this.firstCommaLabel.Name = "firstCommaLabel";
            this.firstCommaLabel.Size = new System.Drawing.Size(10, 13);
            this.firstCommaLabel.TabIndex = 35;
            this.firstCommaLabel.Text = ",";
            // 
            // zCoordinateTextBox
            // 
            this.zCoordinateTextBox.Location = new System.Drawing.Point(152, 3);
            this.zCoordinateTextBox.Name = "zCoordinateTextBox";
            this.zCoordinateTextBox.Size = new System.Drawing.Size(45, 20);
            this.zCoordinateTextBox.TabIndex = 3;
            this.zCoordinateTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.CoordinateTextBox_Validating);
            // 
            // yCoordinateTextBox
            // 
            this.yCoordinateTextBox.Location = new System.Drawing.Point(83, 3);
            this.yCoordinateTextBox.Name = "yCoordinateTextBox";
            this.yCoordinateTextBox.Size = new System.Drawing.Size(45, 20);
            this.yCoordinateTextBox.TabIndex = 2;
            this.yCoordinateTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.CoordinateTextBox_Validating);
            // 
            // xCoordinateTextBox
            // 
            this.xCoordinateTextBox.Location = new System.Drawing.Point(15, 4);
            this.xCoordinateTextBox.Name = "xCoordinateTextBox";
            this.xCoordinateTextBox.Size = new System.Drawing.Size(45, 20);
            this.xCoordinateTextBox.TabIndex = 1;
            this.xCoordinateTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.CoordinateTextBox_Validating);
            // 
            // firstBracketLabel
            // 
            this.firstBracketLabel.AutoSize = true;
            this.firstBracketLabel.Location = new System.Drawing.Point(-1, 6);
            this.firstBracketLabel.Name = "firstBracketLabel";
            this.firstBracketLabel.Size = new System.Drawing.Size(10, 13);
            this.firstBracketLabel.TabIndex = 34;
            this.firstBracketLabel.Text = "(";
            // 
            // PointUserControl
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.Controls.Add(this.secondBracketLabel);
            this.Controls.Add(this.secondCommaLabel);
            this.Controls.Add(this.firstCommaLabel);
            this.Controls.Add(this.zCoordinateTextBox);
            this.Controls.Add(this.yCoordinateTextBox);
            this.Controls.Add(this.xCoordinateTextBox);
            this.Controls.Add(this.firstBracketLabel);
            this.Name = "PointUserControl";
            this.Size = new System.Drawing.Size(213, 28);
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

        private System.Windows.Forms.Label secondBracketLabel;
        private System.Windows.Forms.Label secondCommaLabel;
        private System.Windows.Forms.Label firstCommaLabel;
        private System.Windows.Forms.TextBox zCoordinateTextBox;
        private System.Windows.Forms.TextBox yCoordinateTextBox;
        private System.Windows.Forms.TextBox xCoordinateTextBox;
        private System.Windows.Forms.Label firstBracketLabel;
    }
}