应用程序名称: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;
}
}
版权所有 :无锡模信建筑科技有限公司 苏ICP备2021028830号-1 BIM建模|BIM技术应用|BIM软件开发
联系地址:江苏省无锡市新吴区龙山路4号B座705 手机:18761516598