' ' (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 ITS 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. ' Imports System.Windows.Forms Public Class CreateBeamsColumnsBracesForm Inherits System.Windows.Forms.Form #Region " Windows Form Designer generated code " Public Sub New() MyBase.New() 'This call is required by the Windows Form Designer. InitializeComponent() 'Add any initialization after the InitializeComponent() call End Sub Private m_dataBuffer As Command = Nothing Public Sub New(ByVal dataBuffer As Command) ' ' Required for Windows Form Designer support ' InitializeComponent() m_dataBuffer = dataBuffer End Sub 'New 'Form overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub 'Required by the Windows Form Designer Private components As System.ComponentModel.IContainer 'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. Friend WithEvents floornumberTextBox As System.Windows.Forms.TextBox Friend WithEvents DistanceTextBox As System.Windows.Forms.TextBox Friend WithEvents YTextBox As System.Windows.Forms.TextBox Friend WithEvents XTextBox As System.Windows.Forms.TextBox Friend WithEvents braceComboBox As System.Windows.Forms.ComboBox Friend WithEvents beamComboBox As System.Windows.Forms.ComboBox Friend WithEvents columnComboBox As System.Windows.Forms.ComboBox Friend WithEvents OKButton As System.Windows.Forms.Button Friend WithEvents cancelButton1 As System.Windows.Forms.Button Friend WithEvents floornumberLabel As System.Windows.Forms.Label Friend WithEvents XLabel As System.Windows.Forms.Label Friend WithEvents YLabel As System.Windows.Forms.Label Friend WithEvents DistanceLabel As System.Windows.Forms.Label Friend WithEvents braceLabel As System.Windows.Forms.Label Friend WithEvents beamLabel As System.Windows.Forms.Label Friend WithEvents columnLabel As System.Windows.Forms.Label Friend WithEvents unitLabel As System.Windows.Forms.Label Private Sub InitializeComponent() Me.cancelButton1 = New System.Windows.Forms.Button Me.floornumberLabel = New System.Windows.Forms.Label Me.XLabel = New System.Windows.Forms.Label Me.YLabel = New System.Windows.Forms.Label Me.DistanceLabel = New System.Windows.Forms.Label Me.floornumberTextBox = New System.Windows.Forms.TextBox Me.DistanceTextBox = New System.Windows.Forms.TextBox Me.YTextBox = New System.Windows.Forms.TextBox Me.XTextBox = New System.Windows.Forms.TextBox Me.braceLabel = New System.Windows.Forms.Label Me.beamLabel = New System.Windows.Forms.Label Me.columnLabel = New System.Windows.Forms.Label Me.braceComboBox = New System.Windows.Forms.ComboBox Me.beamComboBox = New System.Windows.Forms.ComboBox Me.columnComboBox = New System.Windows.Forms.ComboBox Me.OKButton = New System.Windows.Forms.Button Me.unitLabel = New System.Windows.Forms.Label Me.SuspendLayout() ' 'cancelButton1 ' Me.cancelButton1.DialogResult = System.Windows.Forms.DialogResult.Cancel Me.cancelButton1.Location = New System.Drawing.Point(376, 207) Me.cancelButton1.Name = "cancelButton1" Me.cancelButton1.Size = New System.Drawing.Size(75, 23) Me.cancelButton1.TabIndex = 9 Me.cancelButton1.Text = "&Cancel" ' 'floornumberLabel ' Me.floornumberLabel.Location = New System.Drawing.Point(16, 183) Me.floornumberLabel.Name = "floornumberLabel" Me.floornumberLabel.Size = New System.Drawing.Size(144, 23) Me.floornumberLabel.TabIndex = 33 Me.floornumberLabel.Text = "Number of Floors:" ' 'XLabel ' Me.XLabel.Location = New System.Drawing.Point(16, 71) Me.XLabel.Name = "XLabel" Me.XLabel.Size = New System.Drawing.Size(200, 23) Me.XLabel.TabIndex = 32 Me.XLabel.Text = "Number of Columns in the X Direction:" ' 'YLabel ' Me.YLabel.Location = New System.Drawing.Point(16, 127) Me.YLabel.Name = "YLabel" Me.YLabel.Size = New System.Drawing.Size(200, 23) Me.YLabel.TabIndex = 31 Me.YLabel.Text = "Number of Columns in the Y Direction:" ' 'DistanceLabel ' Me.DistanceLabel.Location = New System.Drawing.Point(16, 15) Me.DistanceLabel.Name = "DistanceLabel" Me.DistanceLabel.Size = New System.Drawing.Size(152, 23) Me.DistanceLabel.TabIndex = 10 Me.DistanceLabel.Text = "Distance between Columns:" ' 'floornumberTextBox ' Me.floornumberTextBox.Location = New System.Drawing.Point(16, 207) Me.floornumberTextBox.Name = "floornumberTextBox" Me.floornumberTextBox.Size = New System.Drawing.Size(112, 20) Me.floornumberTextBox.TabIndex = 4 Me.floornumberTextBox.Text = "1" ' 'DistanceTextBox ' Me.DistanceTextBox.Location = New System.Drawing.Point(16, 39) Me.DistanceTextBox.Name = "DistanceTextBox" Me.DistanceTextBox.Size = New System.Drawing.Size(136, 20) Me.DistanceTextBox.TabIndex = 1 Me.DistanceTextBox.Text = 20.0.ToString("0.0") ' 'YTextBox ' Me.YTextBox.Location = New System.Drawing.Point(16, 151) Me.YTextBox.Name = "YTextBox" Me.YTextBox.Size = New System.Drawing.Size(136, 20) Me.YTextBox.TabIndex = 3 Me.YTextBox.Text = "2" ' 'XTextBox ' Me.XTextBox.Location = New System.Drawing.Point(16, 95) Me.XTextBox.Name = "XTextBox" Me.XTextBox.Size = New System.Drawing.Size(136, 20) Me.XTextBox.TabIndex = 2 Me.XTextBox.Text = "2" ' 'braceLabel ' Me.braceLabel.Location = New System.Drawing.Point(240, 127) Me.braceLabel.Name = "braceLabel" Me.braceLabel.Size = New System.Drawing.Size(120, 23) Me.braceLabel.TabIndex = 28 Me.braceLabel.Text = "Type of Braces:" ' 'beamLabel ' Me.beamLabel.Location = New System.Drawing.Point(240, 71) Me.beamLabel.Name = "beamLabel" Me.beamLabel.Size = New System.Drawing.Size(120, 23) Me.beamLabel.TabIndex = 27 Me.beamLabel.Text = "Type of Beams:" ' 'columnLabel ' Me.columnLabel.Location = New System.Drawing.Point(240, 15) Me.columnLabel.Name = "columnLabel" Me.columnLabel.Size = New System.Drawing.Size(120, 23) Me.columnLabel.TabIndex = 26 Me.columnLabel.Text = "Type of Columns:" ' 'braceComboBox ' Me.braceComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.braceComboBox.Location = New System.Drawing.Point(240, 151) Me.braceComboBox.Name = "braceComboBox" Me.braceComboBox.Size = New System.Drawing.Size(288, 21) Me.braceComboBox.TabIndex = 7 ' 'beamComboBox ' Me.beamComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.beamComboBox.Location = New System.Drawing.Point(240, 95) Me.beamComboBox.Name = "beamComboBox" Me.beamComboBox.Size = New System.Drawing.Size(288, 21) Me.beamComboBox.TabIndex = 6 ' 'columnComboBox ' Me.columnComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.columnComboBox.Location = New System.Drawing.Point(240, 39) Me.columnComboBox.Name = "columnComboBox" Me.columnComboBox.Size = New System.Drawing.Size(288, 21) Me.columnComboBox.TabIndex = 5 ' 'OKButton ' Me.OKButton.DialogResult = System.Windows.Forms.DialogResult.OK Me.OKButton.Location = New System.Drawing.Point(280, 208) Me.OKButton.Name = "OKButton" Me.OKButton.Size = New System.Drawing.Size(75, 23) Me.OKButton.TabIndex = 8 Me.OKButton.Text = "&OK" ' 'unitLabel ' Me.unitLabel.Location = New System.Drawing.Point(158, 40) Me.unitLabel.Name = "unitLabel" Me.unitLabel.Size = New System.Drawing.Size(24, 16) Me.unitLabel.TabIndex = 34 Me.unitLabel.Text = "feet" ' 'CreateBeamsColumnsBracesForm ' Me.AcceptButton = Me.OKButton Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.CancelButton = Me.cancelButton1 Me.ClientSize = New System.Drawing.Size(544, 244) Me.Controls.Add(Me.unitLabel) Me.Controls.Add(Me.cancelButton1) Me.Controls.Add(Me.floornumberLabel) Me.Controls.Add(Me.XLabel) Me.Controls.Add(Me.YLabel) Me.Controls.Add(Me.DistanceLabel) Me.Controls.Add(Me.floornumberTextBox) Me.Controls.Add(Me.DistanceTextBox) Me.Controls.Add(Me.YTextBox) Me.Controls.Add(Me.XTextBox) Me.Controls.Add(Me.braceLabel) Me.Controls.Add(Me.beamLabel) Me.Controls.Add(Me.columnLabel) Me.Controls.Add(Me.braceComboBox) Me.Controls.Add(Me.beamComboBox) Me.Controls.Add(Me.columnComboBox) Me.Controls.Add(Me.OKButton) Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog Me.MaximizeBox = False Me.MinimizeBox = False Me.Name = "CreateBeamsColumnsBracesForm" Me.ShowInTaskbar = False Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen Me.Text = "Create Beams Columns and Braces" Me.ResumeLayout(False) Me.PerformLayout() End Sub #End Region Private Sub CreateBeamsColumnsBracesForm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim notLoadSymbol As Boolean = False If 0 = m_dataBuffer.ColumnMaps.Count Then Autodesk.Revit.UI.TaskDialog.Show("Revit", "No Structural Columns family is loaded in the project, please load one firstly.") notLoadSymbol = True End If If 0 = m_dataBuffer.BeamMaps.Count Then Autodesk.Revit.UI.TaskDialog.Show("Revit", "No Structural Framing family is loaded in the project, please load one firstly.") notLoadSymbol = True End If If notLoadSymbol Then Me.Close() Return End If Me.columnComboBox.DataSource = m_dataBuffer.ColumnMaps Me.columnComboBox.DisplayMember = "SymbolName" Me.columnComboBox.ValueMember = "ElementType" Me.beamComboBox.DataSource = m_dataBuffer.BeamMaps Me.beamComboBox.DisplayMember = "SymbolName" Me.beamComboBox.ValueMember = "ElementType" Me.braceComboBox.DataSource = m_dataBuffer.BraceMaps Me.braceComboBox.DisplayMember = "SymbolName" Me.braceComboBox.ValueMember = "ElementType" End Sub ''' ''' accept use's input and create columns, beams and braces ''' ''' ''' ''' Private Sub OKButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles OKButton.Click 'check whether the input is correct and create elements Try Dim xNumber As Integer = Integer.Parse(Me.XTextBox.Text) Dim yNumber As Integer = Integer.Parse(Me.YTextBox.Text) Dim distance As Double = Double.Parse(Me.DistanceTextBox.Text) Dim columnType As Object = columnComboBox.SelectedValue Dim beamType As Object = beamComboBox.SelectedValue Dim braceType As Object = braceComboBox.SelectedValue Dim floorNumber As Integer = Integer.Parse(floornumberTextBox.Text) m_dataBuffer.CreateMatrix(xNumber, yNumber, distance) m_dataBuffer.AddInstance(columnType, beamType, braceType, floorNumber) Catch Autodesk.Revit.UI.TaskDialog.Show("Revit", "Please input datas correctly.") End Try End Sub ''' ''' cancel the command ''' ''' ''' ''' Private Sub cancelButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cancelButton1.Click End Sub ''' ''' verify the distance ''' ''' ''' ''' Private Sub DistanceTextBox_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles DistanceTextBox.Validating Try Dim distance As Double = Double.Parse(DistanceTextBox.Text) If distance <= 5 Then Autodesk.Revit.UI.TaskDialog.Show("Revit", "Please enter a value larger than 5.") DistanceTextBox.Text = "" DistanceTextBox.Focus() End If If distance > 30000 Then Autodesk.Revit.UI.TaskDialog.Show("Revit", "Please enter a value less than 30000.") DistanceTextBox.Text = "" DistanceTextBox.Focus() End If Catch ex As Exception Autodesk.Revit.UI.TaskDialog.Show("Revit", "Please enter a value larger than 5 and less than 30000.") DistanceTextBox.Text = "" DistanceTextBox.Focus() End Try End Sub ''' ''' verify the number of X direction ''' ''' ''' ''' Private Sub XTextBox_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles XTextBox.Validating Try Dim xNumber As Integer = Integer.Parse(XTextBox.Text) If xNumber < 1 Or xNumber > 20 Then Autodesk.Revit.UI.TaskDialog.Show("Revit", "Please input an integer for X direction between 1 to 20.") XTextBox.Text = "" End If Catch ex As Exception Autodesk.Revit.UI.TaskDialog.Show("Revit", "Please input an integer for X direction between 1 to 20.") XTextBox.Text = "" End Try End Sub ''' ''' verify the number of Y direction ''' ''' ''' ''' Private Sub YTextBox_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles YTextBox.Validating Try Dim yNumber As Integer = Integer.Parse(YTextBox.Text) If yNumber < 1 Or yNumber > 20 Then Autodesk.Revit.UI.TaskDialog.Show("Revit", "Please input an integer for Y direction between 1 to 20.") YTextBox.Text = "" End If Catch ex As Exception Autodesk.Revit.UI.TaskDialog.Show("Revit", "Please input an integer for Y direction between 1 to 20.") YTextBox.Text = "" End Try End Sub ''' ''' verify the number of floors ''' ''' ''' ''' Private Sub floornumberTextBox_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles floornumberTextBox.Validating Try Dim floorNumber As Integer = Integer.Parse(floornumberTextBox.Text) If floorNumber < 1 Or floorNumber > 10 Then Autodesk.Revit.UI.TaskDialog.Show("Revit", "Please input an integer for the number of floors between 1 to 10.") floornumberTextBox.Text = "" End If Catch ex As Exception Autodesk.Revit.UI.TaskDialog.Show("Revit", "Please input an integer for the number of floors between 1 to 10.") floornumberTextBox.Text = "" End Try End Sub End Class