private void createShapeButton_Click(object sender, EventArgs e)
{
// Make sure the name is not null or empty.
if(string.IsNullOrEmpty(nameTextBox.Text.Trim()))
{
MessageBox.Show("Please give a name to create a rebar shape.");
return;
}
// Make sure the input name is started with letter and
// just contains letters, numbers and underlines.
Regex regex = new Regex("^[a-zA-Z]\\w+$");
if(!regex.IsMatch(nameTextBox.Text.Trim()))
{
MessageBox.Show("Please input the name starting with letter and just containing letters, numbers and underlines. String is " + nameTextBox.Text.ToString());
nameTextBox.Focus();
return;
}
// Create a RebarShapeDefinition.
RebarShapeDef shapeDef = null;
if (byArcradioButton.Checked)
{
// Create arc shape.
RebarShapeDefinitionByArc arcShapeDefinition = null;
RebarShapeDefinitionByArcType arcType = (RebarShapeDefinitionByArcType)Enum.Parse(typeof(RebarShapeDefinitionByArcType), arcTypecomboBox.Text);
if (arcType != RebarShapeDefinitionByArcType.Spiral)
{
arcShapeDefinition = new RebarShapeDefinitionByArc(m_rvtDoc, arcType);
}
else
{
// Set default value for Spiral-Shape definition.
arcShapeDefinition = new RebarShapeDefinitionByArc(m_rvtDoc, 10.0, 3.0, 0, 0);
}
shapeDef = new RebarShapeDefByArc(arcShapeDefinition);
}
else if (bySegmentsradioButton.Checked)
{
// Create straight segments shape.
int segmentCount = 0;
if (int.TryParse(segmentCountTextBox.Text, out segmentCount) && segmentCount > 0)
{
shapeDef = new RebarShapeDefBySegment(new RebarShapeDefinitionBySegments(m_rvtDoc, segmentCount));
}
else
{
MessageBox.Show("Please input a valid positive integer as segments count.");
return;
}
}
int startHookAngle = 0;
int endHookAngle = 0;
RebarHookOrientation startHookOrientation = RebarHookOrientation.Left;
RebarHookOrientation endHookOrientation = RebarHookOrientation.Left;
bool doCreate = false;
using (NewRebarShapeForm form = new NewRebarShapeForm(m_rvtDoc, shapeDef))
{
// Present a form to customize the shape.
if (DialogResult.OK == form.ShowDialog())
{
doCreate = true;
if (form.NeedSetHooks)
{
// Set hooks for rebar shape.
startHookAngle = form.StartHookAngle;
endHookAngle = form.EndHookAngle;
startHookOrientation = form.StartHookOrientation;
endHookOrientation = form.EndHookOrientation;
}
}
}
if (doCreate)
{
// Create the RebarShape.
RebarShape createdRebarShape = RebarShape.Create(m_rvtDoc, shapeDef.RebarshapeDefinition, null,
RebarStyle.Standard, StirrupTieAttachmentType.InteriorFace,
startHookAngle, startHookOrientation,
endHookAngle, endHookOrientation,
0);
createdRebarShape.Name = nameTextBox.Text.Trim();
// Add the created shape to the candidate list.
m_rebarShapes.Add(createdRebarShape);
m_shapesBinding.ResetBindings(false);
shapesComboBox.SelectedItem = createdRebarShape;
}
}