【Revit 二次开发】满应力文件解析
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.Revit.Creation;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Document = Autodesk.Revit.DB.Document;
using System.Windows.Forms;
using System.IO;
using System.Runtime.Remoting.Metadata.W3cXsd2001;
using System.Text.RegularExpressions;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.ApplicationServices;
using System.Windows.Media.Media3D;
using Autodesk.Revit.DB.Electrical;
using SEPD.OverheadTransmission.AppCode;
namespace SEPD.OverheadTransmission.CreateTower
{
[Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.Manual)]
[Journaling(JournalingMode.UsingCommandData)]
class CreateTowerWithAngelSteel : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
Document doc = commandData.Application.ActiveUIDocument.Document;
string rftPath = @"C:\ProgramData\Autodesk\RVT 2018\Family Templates\Chinese\公制常规模型.rft";
Document rfaDocument = commandData.Application.Application.NewFamilyDocument(rftPath);
Autodesk.Revit.ApplicationServices.Application application = doc.Application;
MyFamilyLoadOptions saveOption = new MyFamilyLoadOptions();
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Multiselect = false;
//openFileDialog.InitialDirectory = lastTimeOpenLocation;
openFileDialog.Filter = "myl文件|*.myl|所有文件|*.*";
openFileDialog.RestoreDirectory = true;
string fPathO = null;
string mylFilePath = null;
string mylFileName = null;
if (openFileDialog.ShowDialog() == DialogResult.OK /*&& openFamilyName != null*/)
{
mylFilePath = openFileDialog.FileName.ToString(); //获取用户选择的文件路径
mylFileName = mylFilePath.Substring(mylFilePath.LastIndexOf("\\") + 1); //获取用户选择的文件名称
}
string[] mylFileContent = File.ReadAllLines(mylFilePath, Encoding.UTF8); //文本中的所有行
//MessageBox.Show(mylFileContent.Length.ToString());
//MessageBox.Show(mylFileContent[0]+"\n"+mylFileContent[1]+"\n" + mylFileContent[2]+ "\n"+ mylFileContent[3]);
// MessageBox.Show(mylFileContent[100].Split(new char[] {' '},StringSplitOptions.RemoveEmptyEntries).ToList().Count.ToString());
//string dfe = null;
//foreach (var ff in mylFileContent[3].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries))
//{
// dfe += ff + "\n";
//}
//MessageBox.Show(dfe);
List<XYZ> nodeXyzs = new List<XYZ>();
List<NodeModel> nodeModels = new List<NodeModel>();
List<NodeModel> nodeModels2 = new List<NodeModel>();
List<NodeModel> nodeModelsAll = new List<NodeModel>();
int k = 0;
foreach (var line in mylFileContent)
{
k++;
string[] l = line.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries);
// MessageBox.Show(l.Length.ToString()+"!!!!!");
try
{
#region 0xyz
if (l.Length == 5)
{
if (l[1] == "0" || l[1] == "1" || l[1] == "2" || l[1] == "3" || l[1] == "4")
{
double x = Convert.ToDouble(l[2]);
double y = Convert.ToDouble(l[3]);
double z = Convert.ToDouble(l[4]);
if (l[1] == "0")
{
NodeModel nodeModel = new NodeModel();
nodeModel.nodeID = Convert.ToInt32(l[0]);
nodeModel.nodeCreateMode = l[1];
if (x > 10000 || y > 10000 || z > 10000)
{
double xx = x - 10000;
double yy = y - 10000;
double zz = z - 10000;
if (xx < 0)
{
XYZ st = nodeModels.Where(e => e.nodeID == yy).FirstOrDefault().nodeLoc;
XYZ ed = nodeModels.Where(e => e.nodeID == zz).FirstOrDefault().nodeLoc;
double t = (x - st.X)/(st.X - ed.X);
y = st.Y + t*(st.Y - ed.Y);
z = st.Z + t*(st.Z - ed.Z);
nodeModel.nodeLoc = new XYZ(x, y, z);
}
else if (yy < 0)
{
XYZ st = nodeModels.Where(e => e.nodeID == xx).FirstOrDefault().nodeLoc;
XYZ ed = nodeModels.Where(e => e.nodeID == zz).FirstOrDefault().nodeLoc;
double t = (y - st.Y)/(st.Y - ed.Y);
x = st.X + t*(st.X - ed.X);
z = st.Z + t*(st.Z - ed.Z);
nodeModel.nodeLoc = new XYZ(x, y, z);
}
else if (zz < 0)
{
XYZ st = nodeModels.Where(e => e.nodeID == xx).FirstOrDefault().nodeLoc;
XYZ ed = nodeModels.Where(e => e.nodeID == yy).FirstOrDefault().nodeLoc;
double t = (z - st.Z)/(st.Z - ed.Z);
x = st.X + t*(st.X - ed.X);
y = st.Y + t*(st.Y - ed.Y);
nodeModel.nodeLoc = new XYZ(x, y, z);
}
}
else
{
nodeModel.nodeLoc = new XYZ(x, y, z);
}
nodeModels.Add(nodeModel);
}
else if (l[1] == "1")
{
NodeModel nodeModel = new NodeModel();
nodeModel.nodeID = Convert.ToInt32(l[0]);
nodeModel.nodeCreateMode = l[1];
if (x > 10000 || y > 10000 || z > 10000)
{
double xx = x - 10000;
double yy = y - 10000;
double zz = z - 10000;
if (xx < 0)
{
XYZ st = nodeModels.Where(e => e.nodeID == yy).FirstOrDefault().nodeLoc;
XYZ ed = nodeModels.Where(e => e.nodeID == zz).FirstOrDefault().nodeLoc;
double t = (x - st.X)/(st.X - ed.X);
y = st.Y + t*(st.Y - ed.Y);
z = st.Z + t*(st.Z - ed.Z);
nodeModel.nodeLoc = new XYZ(x, y, z);
}
else if (yy < 0)
{
XYZ st = nodeModels.Where(e => e.nodeID == xx).FirstOrDefault().nodeLoc;
XYZ ed = nodeModels.Where(e => e.nodeID == zz).FirstOrDefault().nodeLoc;
double t = (y - st.Y)/(st.Y - ed.Y);
x = st.X + t*(st.X - ed.X);
z = st.Z + t*(st.Z - ed.Z);
nodeModel.nodeLoc = new XYZ(x, y, z);
}
else if (zz < 0)
{
XYZ st = nodeModels.Where(e => e.nodeID == xx).FirstOrDefault().nodeLoc;
XYZ ed = nodeModels.Where(e => e.nodeID == yy).FirstOrDefault().nodeLoc;
double t = (z - st.Z)/(st.Z - ed.Z);
x = st.X + t*(st.X - ed.X);
y = st.Y + t*(st.Y - ed.Y);
nodeModel.nodeLoc = new XYZ(x, y, z);
}
}
else
{
nodeModel.nodeLoc = new XYZ(x, y, z);
}
nodeModels.Add(nodeModel);
NodeModel nodeModel1 = new NodeModel();
if (Convert.ToInt32(l[0])%10 == 1 || Convert.ToInt32(l[0])%10 == 3)
{
nodeModel1.nodeID = Convert.ToInt32(l[0]) - Convert.ToInt32(l[1]);
}
else if (Convert.ToInt32(l[0])%10 == 2 || Convert.ToInt32(l[0])%10 == 0)
{
nodeModel1.nodeID = Convert.ToInt32(l[0]) + Convert.ToInt32(l[1]);
}
nodeModel1.nodeCreateMode = l[1];
nodeModel1.nodeLoc = new XYZ(-nodeModel.nodeLoc.X, y, z);
nodeModels.Add(nodeModel1);
}
else if (l[1] == "2")
{
NodeModel nodeModel = new NodeModel();
nodeModel.nodeID = Convert.ToInt32(l[0]);
nodeModel.nodeCreateMode = l[1];
if (x > 10000 || y > 10000 || z > 10000)
{
double xx = x - 10000;
double yy = y - 10000;
double zz = z - 10000;
if (xx < 0)
{
XYZ st = nodeModels.Where(e => e.nodeID == yy).FirstOrDefault().nodeLoc;
XYZ ed = nodeModels.Where(e => e.nodeID == zz).FirstOrDefault().nodeLoc;
double t = (x - st.X)/(st.X - ed.X);
y = st.Y + t*(st.Y - ed.Y);
z = st.Z + t*(st.Z - ed.Z);
nodeModel.nodeLoc = new XYZ(x, y, z);
}
else if (yy < 0)
{
XYZ st = nodeModels.Where(e => e.nodeID == xx).FirstOrDefault().nodeLoc;
XYZ ed = nodeModels.Where(e => e.nodeID == zz).FirstOrDefault().nodeLoc;
double t = (y - st.Y)/(st.Y - ed.Y);
x = st.X + t*(st.X - ed.X);
z = st.Z + t*(st.Z - ed.Z);
nodeModel.nodeLoc = new XYZ(x, y, z);
}
else if (zz < 0)
{
XYZ st = nodeModels.Where(e => e.nodeID == xx).FirstOrDefault().nodeLoc;
XYZ ed = nodeModels.Where(e => e.nodeID == yy).FirstOrDefault().nodeLoc;
double t = (z - st.Z)/(st.Z - ed.Z);
x = st.X + t*(st.X - ed.X);
y = st.Y + t*(st.Y - ed.Y);
nodeModel.nodeLoc = new XYZ(x, y, z);
}
}
else
{
nodeModel.nodeLoc = new XYZ(x, y, z);
}
nodeModels.Add(nodeModel);
NodeModel nodeModel1 = new NodeModel();
if (Convert.ToInt32(l[0])%10 == 2 || Convert.ToInt32(l[0])%10 == 3)
{
nodeModel1.nodeID = Convert.ToInt32(l[0]) - Convert.ToInt32(l[1]);
}
else if (Convert.ToInt32(l[0])%10 == 1 || Convert.ToInt32(l[0])%10 == 0)
{
nodeModel1.nodeID = Convert.ToInt32(l[0]) + Convert.ToInt32(l[1]);
}
//nodeModel1.nodeID = Convert.ToInt32(l[0]) +Convert.ToInt32(l[1]);
nodeModel1.nodeCreateMode = l[1];
nodeModel1.nodeLoc = new XYZ(x, -nodeModel.nodeLoc.Y, z);
nodeModels.Add(nodeModel1);
}
else if (l[1] == "3")
{
NodeModel nodeModel = new NodeModel();
nodeModel.nodeID = Convert.ToInt32(l[0]);
nodeModel.nodeCreateMode = l[1];
if (x > 10000 || y > 10000 || z > 10000)
{
double xx = x - 10000;
double yy = y - 10000;
double zz = z - 10000;
if (xx < 0)
{
XYZ st = nodeModels.Where(e => e.nodeID == yy).FirstOrDefault().nodeLoc;
XYZ ed = nodeModels.Where(e => e.nodeID == zz).FirstOrDefault().nodeLoc;
double t = (x - st.X)/(st.X - ed.X);
y = st.Y + t*(st.Y - ed.Y);
z = st.Z + t*(st.Z - ed.Z);
nodeModel.nodeLoc = new XYZ(x, y, z);
}
else if (yy < 0)
{
XYZ st = nodeModels.Where(e => e.nodeID == xx).FirstOrDefault().nodeLoc;
XYZ ed = nodeModels.Where(e => e.nodeID == zz).FirstOrDefault().nodeLoc;
double t = (y - st.Y)/(st.Y - ed.Y);
x = st.X + t*(st.X - ed.X);
z = st.Z + t*(st.Z - ed.Z);
nodeModel.nodeLoc = new XYZ(x, y, z);
}
else if (zz < 0)
{
XYZ st = nodeModels.Where(e => e.nodeID == xx).FirstOrDefault().nodeLoc;
XYZ ed = nodeModels.Where(e => e.nodeID == yy).FirstOrDefault().nodeLoc;
double t = (z - st.Z)/(st.Z - ed.Z);
x = st.X + t*(st.X - ed.X);
y = st.Y + t*(st.Y - ed.Y);
nodeModel.nodeLoc = new XYZ(x, y, z);
}
}
else
{
nodeModel.nodeLoc = new XYZ(x, y, z);
}
nodeModels.Add(nodeModel);
if (Convert.ToInt32(l[0])%10 == 0)
{
NodeModel nodeModel1 = new NodeModel();
nodeModel1.nodeID = Convert.ToInt32(l[0]) + 3;
nodeModel1.nodeCreateMode = l[1];
nodeModel1.nodeLoc = new XYZ(-nodeModel.nodeLoc.X, -nodeModel.nodeLoc.Y, z);
nodeModels.Add(nodeModel1);
}
else if (Convert.ToInt32(l[0])%10 == 1)
{
NodeModel nodeModel1 = new NodeModel();
nodeModel1.nodeID = Convert.ToInt32(l[0]) + 1;
nodeModel1.nodeCreateMode = l[1];
nodeModel1.nodeLoc = new XYZ(-nodeModel.nodeLoc.X, -nodeModel.nodeLoc.Y, z);
nodeModels.Add(nodeModel1);
}
else if (Convert.ToInt32(l[0])%10 == 2)
{
NodeModel nodeModel1 = new NodeModel();
nodeModel1.nodeID = Convert.ToInt32(l[0]) - 1;
nodeModel1.nodeCreateMode = l[1];
nodeModel1.nodeLoc = new XYZ(-nodeModel.nodeLoc.X, -nodeModel.nodeLoc.Y, z);
nodeModels.Add(nodeModel1);
}
else if (Convert.ToInt32(l[0])%10 == 3)
{
NodeModel nodeModel1 = new NodeModel();
nodeModel1.nodeID = Convert.ToInt32(l[0]) - 3;
nodeModel1.nodeCreateMode = l[1];
nodeModel1.nodeLoc = new XYZ(-nodeModel.nodeLoc.X, -nodeModel.nodeLoc.Y, z);
nodeModels.Add(nodeModel1);
}
// nodeModel1.nodeID = Convert.ToInt32(l[0]) +Convert.ToInt32(l[1]);
}
else if (l[1] == "4")
{
NodeModel nodeModel = new NodeModel();
nodeModel.nodeID = Convert.ToInt32(l[0]);
nodeModel.nodeCreateMode = l[1];
if (x > 10000 || y > 10000 || z > 10000)
{
// MessageBox.Show(k.ToString()+"\n"+x.ToString() + "\n" + y.ToString() + "\n" + z.ToString());
int xx = (int) (x - 10000);
int yy = (int) (y - 10000);
int zz = (int) (z - 10000);
// MessageBox.Show(xx.ToString() + "\n" + yy.ToString() + "\n" + zz.ToString());
if (xx < 0)
{
XYZ st = nodeModels.Where(e => e.nodeID == yy).FirstOrDefault().nodeLoc;
XYZ ed = nodeModels.Where(e => e.nodeID == zz).FirstOrDefault().nodeLoc;
double t = (x - st.X)/(st.X - ed.X);
y = st.Y + t*(st.Y - ed.Y);
z = st.Z + t*(st.Z - ed.Z);
nodeModel.nodeLoc = new XYZ(x, y, z);
}
else if (yy < 0)
{
XYZ st = nodeModels.Where(e => e.nodeID == xx).FirstOrDefault().nodeLoc;
XYZ ed = nodeModels.Where(e => e.nodeID == zz).FirstOrDefault().nodeLoc;
double t = (y - st.Y)/(st.Y - ed.Y);
x = st.X + t*(st.X - ed.X);
z = st.Z + t*(st.Z - ed.Z);
nodeModel.nodeLoc = new XYZ(x, y, z);
}
else if (zz < 0)
{
XYZ st = nodeModels.Where(e => e.nodeID == xx).FirstOrDefault().nodeLoc;
XYZ ed = nodeModels.Where(e => e.nodeID == yy).FirstOrDefault().nodeLoc;
double t = (z - st.Z)/(st.Z - ed.Z);
//MessageBox.Show(k.ToString()+"\n"+ st.X.ToString() + "\n" + st.Y.ToString() + "\n" + st.Z.ToString()+"\n"+ ed.X.ToString() + "\n" + ed.Y.ToString() + "\n" + ed.Z.ToString());
x = st.X + t*(st.X - ed.X);
y = st.Y + t*(st.Y - ed.Y);
nodeModel.nodeLoc = new XYZ(x, y, z);
nodeModel.nodeID = Convert.ToInt32(l[0]);
nodeModel.nodeCreateMode = l[1];
// MessageBox.Show(k.ToString());
// MessageBox.Show(k.ToString()+"\n"+x.ToString() + "\n" + y.ToString() + "\n" + z.ToString());
//MessageBox.Show(nodeModel.nodeLoc.X.ToString() + "\n" + nodeModel.nodeLoc.Y.ToString() + "\n" + nodeModel.nodeLoc.Z.ToString());
}
}
else
{
nodeModel.nodeLoc = new XYZ(x, y, z);
}
nodeModels.Add(nodeModel);
if (Convert.ToInt32(l[0])%10 == 0)
{
NodeModel nodeModel1 = new NodeModel();
nodeModel1.nodeID = Convert.ToInt32(l[0]) + 1;
nodeModel1.nodeCreateMode = l[1];
nodeModel1.nodeLoc = new XYZ(-nodeModel.nodeLoc.X, y, z);
nodeModels.Add(nodeModel1);
NodeModel nodeModel2 = new NodeModel();
nodeModel2.nodeID = Convert.ToInt32(l[0]) + 2;
nodeModel2.nodeCreateMode = l[1];
nodeModel2.nodeLoc = new XYZ(x, -nodeModel.nodeLoc.Y, z);
nodeModels.Add(nodeModel2);
NodeModel nodeModel3 = new NodeModel();
nodeModel3.nodeID = Convert.ToInt32(l[0]) + 3;
nodeModel3.nodeCreateMode = l[1];
nodeModel3.nodeLoc = new XYZ(-nodeModel.nodeLoc.X, -nodeModel.nodeLoc.Y, z);
nodeModels.Add(nodeModel3);
}
else if (Convert.ToInt32(l[0])%10 == 1)
{
NodeModel nodeModel1 = new NodeModel();
nodeModel1.nodeID = Convert.ToInt32(l[0]) - 1;
nodeModel1.nodeCreateMode = l[1];
nodeModel1.nodeLoc = new XYZ(-nodeModel.nodeLoc.X, y, z);
nodeModels.Add(nodeModel1);
NodeModel nodeModel2 = new NodeModel();
nodeModel2.nodeID = Convert.ToInt32(l[0]) + 2;
nodeModel2.nodeCreateMode = l[1];
nodeModel2.nodeLoc = new XYZ(x, -nodeModel.nodeLoc.Y, z);
nodeModels.Add(nodeModel2);
NodeModel nodeModel3 = new NodeModel();
nodeModel3.nodeID = Convert.ToInt32(l[0]) + 1;
nodeModel3.nodeCreateMode = l[1];
nodeModel3.nodeLoc = new XYZ(-nodeModel.nodeLoc.X, -nodeModel.nodeLoc.Y, z);
nodeModels.Add(nodeModel3);
}
else if (Convert.ToInt32(l[0])%10 == 2)
{
NodeModel nodeModel1 = new NodeModel();
nodeModel1.nodeID = Convert.ToInt32(l[0]) + 1;
nodeModel1.nodeCreateMode = l[1];
nodeModel1.nodeLoc = new XYZ(-nodeModel.nodeLoc.X, y, z);
nodeModels.Add(nodeModel1);
NodeModel nodeModel2 = new NodeModel();
nodeModel2.nodeID = Convert.ToInt32(l[0]) - 2;
nodeModel2.nodeCreateMode = l[1];
nodeModel2.nodeLoc = new XYZ(x, -nodeModel.nodeLoc.Y, z);
nodeModels.Add(nodeModel2);
NodeModel nodeModel3 = new NodeModel();
nodeModel3.nodeID = Convert.ToInt32(l[0]) - 1;
nodeModel3.nodeCreateMode = l[1];
nodeModel3.nodeLoc = new XYZ(-nodeModel.nodeLoc.X, -nodeModel.nodeLoc.Y, z);
nodeModels.Add(nodeModel3);
}
else if (Convert.ToInt32(l[0])%10 == 3)
{
NodeModel nodeModel1 = new NodeModel();
nodeModel1.nodeID = Convert.ToInt32(l[0]) - 1;
nodeModel1.nodeCreateMode = l[1];
nodeModel1.nodeLoc = new XYZ(-nodeModel.nodeLoc.X, y, z);
nodeModels.Add(nodeModel1);
NodeModel nodeModel2 = new NodeModel();
nodeModel2.nodeID = Convert.ToInt32(l[0]) - 2;
nodeModel2.nodeCreateMode = l[1];
nodeModel2.nodeLoc = new XYZ(x, -nodeModel.nodeLoc.Y, z);
nodeModels.Add(nodeModel2);
NodeModel nodeModel3 = new NodeModel();
nodeModel3.nodeID = Convert.ToInt32(l[0]) - 3;
nodeModel3.nodeCreateMode = l[1];
nodeModel3.nodeLoc = new XYZ(-nodeModel.nodeLoc.X, -nodeModel.nodeLoc.Y, z);
nodeModels.Add(nodeModel3);
}
}
}
}
#endregion
}
catch (Exception ex)
{
MessageBox.Show("1:" + ex.ToString());
continue;
}
}
nodeModels.ForEach(
n => n.nodeLoc = new XYZ(n.nodeLoc.X*1000/304.8, n.nodeLoc.Y*1000/304.8, n.nodeLoc.Z*1000/304.8));
MessageBox.Show(nodeModels.Count.ToString());
foreach (var line in mylFileContent)
{
string[] l = line.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries);
try
{
#region 两点计算 中心拟合点
if (l.Length == 5 && k > 20)
{
if (l[4] == "0" || l[4] == "1" || l[4] == "2" || l[4] == "3" || l[4] == "4")
{
//foreach (var nm in nodeModels)
//{
// MessageBox.Show(l[1] +"\n"+ k.ToString());
double x = 0;
double y = 0;
double z = 0;
XYZ st = nodeModels.Where(e => e.nodeID.ToString() == l[1]).First().nodeLoc;
XYZ ed = nodeModels.Where(e => e.nodeID.ToString() == l[2]).First().nodeLoc;
double x1 = nodeModels.Where(e => e.nodeID.ToString() == l[1]).First().nodeLoc.X;
double y1 = nodeModels.Where(e => e.nodeID.ToString() == l[1]).First().nodeLoc.Y;
double z1 = nodeModels.Where(e => e.nodeID.ToString() == l[1]).First().nodeLoc.Z;
double x2 = nodeModels.Where(e => e.nodeID.ToString() == l[2]).First().nodeLoc.X;
double y2 = nodeModels.Where(e => e.nodeID.ToString() == l[2]).First().nodeLoc.Y;
double z2 = nodeModels.Where(e => e.nodeID.ToString() == l[2]).First().nodeLoc.Z;
// int R = 0;
// double r = 0;
if (Convert.ToDouble(l[3]) >= 1.0)
{
double R = Convert.ToDouble(l[3]);
x = x1 + (x2 - x1)/R;
y = y1 + (y2 - y1)/R;
z = z1 + (z2 - z1)/R;
}
else if (Convert.ToDouble(l[3]) <= 1.0)
{
double r = Convert.ToDouble(l[3]);
x = x1 + (x2 - x1)*r;
y = y1 + (y2 - y1)*r;
z = z1 + (z2 - z1)*r;
}
//if (int.TryParse(l[3], out R))
//{
// x = x1 + (x2 - x1) / R;
// y = y1 + (y2 - y1) / R;
// z = z1 + (z2 - z1) / R;
//}
//else if (double.TryParse(l[3], out r))
//{
// x = x1 + (x2 - x1) * r;
// y = y1 + (y2 - y1) * r;
// z = z1 + (z2 - z1) * r;
//}
if (l[4] == "0" && st != null && ed != null)
{
NodeModel nodeModel = new NodeModel();
nodeModel.nodeID = Convert.ToInt32(l[0]);
nodeModel.nodeCreateMode = l[4];
nodeModel.nodeLoc = new XYZ(x, y, z);
nodeModels.Add(nodeModel);
}
else if (l[4] == "1" && st != null && ed != null)
{
NodeModel nodeModel = new NodeModel();
nodeModel.nodeID = Convert.ToInt32(l[0]);
nodeModel.nodeCreateMode = l[4];
nodeModel.nodeLoc = new XYZ(x, y, z);
nodeModels.Add(nodeModel);
NodeModel nodeModel1 = new NodeModel();
if (Convert.ToInt32(l[0])%10 == 1 || Convert.ToInt32(l[0])%10 == 3)
{
nodeModel1.nodeID = Convert.ToInt32(l[0]) - Convert.ToInt32(l[4]);
}
else if (Convert.ToInt32(l[0])%10 == 0 || Convert.ToInt32(l[0])%10 == 2)
{
nodeModel1.nodeID = Convert.ToInt32(l[0]) + Convert.ToInt32(l[4]);
}
nodeModel1.nodeCreateMode = l[4];
nodeModel1.nodeLoc = new XYZ(-x, y, z);
nodeModels.Add(nodeModel1);
}
else if (l[4] == "2" && st != null && ed != null)
{
NodeModel nodeModel = new NodeModel();
nodeModel.nodeID = Convert.ToInt32(l[0]);
nodeModel.nodeCreateMode = l[4];
nodeModel.nodeLoc = new XYZ(x, y, z);
nodeModels.Add(nodeModel);
NodeModel nodeModel1 = new NodeModel();
if (Convert.ToInt32(l[0])%10 == 1 || Convert.ToInt32(l[0])%10 == 0)
{
nodeModel1.nodeID = Convert.ToInt32(l[0]) + Convert.ToInt32(l[4]);
}
else if (Convert.ToInt32(l[0])%10 == 3 || Convert.ToInt32(l[0])%10 == 2)
{
nodeModel1.nodeID = Convert.ToInt32(l[0]) - Convert.ToInt32(l[4]);
}
nodeModel1.nodeCreateMode = l[4];
nodeModel1.nodeLoc = new XYZ(x, -y, z);
nodeModels.Add(nodeModel1);
// if (nodeModel1.nodeID == 2612)
// {
// MessageBox.Show("2610-2612");
// MessageBox.Show(nodeModel1.nodeID.ToString() + "\n" + nodeModel.nodeLoc.X.ToString() + "\n" + nodeModel.nodeLoc.Y.ToString() + "\n" + nodeModel.nodeLoc.Z.ToString() + "\n" + nodeModel1.nodeLoc.X.ToString() + "\n" + nodeModel1.nodeLoc.Y.ToString() + "\n" + nodeModel1.nodeLoc.Z.ToString());
MessageBox.Show(k.ToString() + "\n" + nodeModel1.nodeLoc.X.ToString() + "\n" + nodeModel1.nodeLoc.Y.ToString() + "\n" + nodeModel1.nodeLoc.Z.ToString());
// }
}
else if (l[4] == "3" && st != null && ed != null)
{
NodeModel nodeModel = new NodeModel();
nodeModel.nodeID = Convert.ToInt32(l[0]);
nodeModel.nodeCreateMode = l[4];
nodeModel.nodeLoc = new XYZ(x, y, z);
nodeModels.Add(nodeModel);
if (Convert.ToInt32(l[0])%10 == 0)
{
NodeModel nodeModel1 = new NodeModel();
nodeModel1.nodeID = Convert.ToInt32(l[0]) + 3;
nodeModel1.nodeCreateMode = l[4];
nodeModel1.nodeLoc = new XYZ(-x, -y, z);
nodeModels.Add(nodeModel1);
}
else if (Convert.ToInt32(l[0])%10 == 1)
{
NodeModel nodeModel1 = new NodeModel();
nodeModel1.nodeID = Convert.ToInt32(l[0]) + 1;
nodeModel1.nodeCreateMode = l[4];
nodeModel1.nodeLoc = new XYZ(-x, -y, z);
nodeModels.Add(nodeModel1);
}
else if (Convert.ToInt32(l[0])%10 == 2)
{
NodeModel nodeModel1 = new NodeModel();
nodeModel1.nodeID = Convert.ToInt32(l[0]) - 1;
nodeModel1.nodeCreateMode = l[4];
nodeModel1.nodeLoc = new XYZ(-x, -y, z);
nodeModels.Add(nodeModel1);
}
else if (Convert.ToInt32(l[0])%10 == 3)
{
NodeModel nodeModel1 = new NodeModel();
nodeModel1.nodeID = Convert.ToInt32(l[0]) - 3;
nodeModel1.nodeCreateMode = l[4];
nodeModel1.nodeLoc = new XYZ(-x, -y, z);
nodeModels.Add(nodeModel1);
}
}
else if (l[4] == "4" && st != null && ed != null)
{
NodeModel nodeModel = new NodeModel();
nodeModel.nodeID = Convert.ToInt32(l[0]);
nodeModel.nodeCreateMode = l[4];
nodeModel.nodeLoc = new XYZ(x, y, z);
nodeModels.Add(nodeModel);
if (Convert.ToInt32(l[0])%10 == 0)
{
NodeModel nodeModel1 = new NodeModel();
nodeModel1.nodeID = Convert.ToInt32(l[0]) + 1;
nodeModel1.nodeCreateMode = l[4];
nodeModel1.nodeLoc = new XYZ(-x, y, z);
nodeModels.Add(nodeModel1);
NodeModel nodeModel2 = new NodeModel();
nodeModel2.nodeID = Convert.ToInt32(l[0]) + 2;
nodeModel2.nodeCreateMode = l[4];
nodeModel2.nodeLoc = new XYZ(x, -y, z);
nodeModels.Add(nodeModel2);
NodeModel nodeModel3 = new NodeModel();
nodeModel3.nodeID = Convert.ToInt32(l[0]) + 3;
nodeModel3.nodeCreateMode = l[4];
nodeModel3.nodeLoc = new XYZ(-x, -y, z);
nodeModels.Add(nodeModel3);
}
else if (Convert.ToInt32(l[0])%10 == 1)
{
NodeModel nodeModel1 = new NodeModel();
nodeModel1.nodeID = Convert.ToInt32(l[0]) - 1;
nodeModel1.nodeCreateMode = l[4];
nodeModel1.nodeLoc = new XYZ(-x, y, z);
nodeModels.Add(nodeModel1);
NodeModel nodeModel2 = new NodeModel();
nodeModel2.nodeID = Convert.ToInt32(l[0]) + 2;
nodeModel2.nodeCreateMode = l[4];
nodeModel2.nodeLoc = new XYZ(x, -y, z);
nodeModels.Add(nodeModel2);
NodeModel nodeModel3 = new NodeModel();
nodeModel3.nodeID = Convert.ToInt32(l[0]) + 1;
nodeModel3.nodeCreateMode = l[4];
nodeModel3.nodeLoc = new XYZ(-x, -y, z);
nodeModels.Add(nodeModel3);
}
else if (Convert.ToInt32(l[0])%10 == 2)
{
NodeModel nodeModel1 = new NodeModel();
nodeModel1.nodeID = Convert.ToInt32(l[0]) + 1;
nodeModel1.nodeCreateMode = l[4];
nodeModel1.nodeLoc = new XYZ(-x, y, z);
nodeModels.Add(nodeModel1);
NodeModel nodeModel2 = new NodeModel();
nodeModel2.nodeID = Convert.ToInt32(l[0]) - 2;
nodeModel2.nodeCreateMode = l[4];
nodeModel2.nodeLoc = new XYZ(x, -y, z);
nodeModels.Add(nodeModel2);
NodeModel nodeModel3 = new NodeModel();
nodeModel3.nodeID = Convert.ToInt32(l[0]) - 1;
nodeModel3.nodeCreateMode = l[4];
nodeModel3.nodeLoc = new XYZ(-x, -y, z);
nodeModels.Add(nodeModel3);
}
else if (Convert.ToInt32(l[0])%10 == 3)
{
NodeModel nodeModel1 = new NodeModel();
nodeModel1.nodeID = Convert.ToInt32(l[0]) - 1;
nodeModel1.nodeCreateMode = l[4];
nodeModel1.nodeLoc = new XYZ(-x, y, z);
nodeModels.Add(nodeModel1);
NodeModel nodeModel2 = new NodeModel();
nodeModel2.nodeID = Convert.ToInt32(l[0]) - 2;
nodeModel2.nodeCreateMode = l[4];
nodeModel2.nodeLoc = new XYZ(x, -y, z);
nodeModels.Add(nodeModel2);
NodeModel nodeModel3 = new NodeModel();
nodeModel3.nodeID = Convert.ToInt32(l[0]) - 3;
nodeModel3.nodeCreateMode = l[4];
nodeModel3.nodeLoc = new XYZ(-x, -y, z);
nodeModels.Add(nodeModel3);
}
}
//}
}
}
#endregion
}
catch (Exception ex)
{
MessageBox.Show("2:" + ex.ToString());
continue;
}
}
//---------------------------------------------------------------------//
// nodeModels = nodeModels.Where(g => g.nodeID != 1 || g.nodeID != 2 || g.nodeID != 3).ToList();
nodeModels = nodeModels.Where(g => Math.Abs(g.nodeLoc.X) < 100000/304.8
&& Math.Abs(g.nodeLoc.Y) < 100000/304.8
&& Math.Abs(g.nodeLoc.Z) < 100000/304.8).Select(g => g).ToList();
//---------------------------------------------------------------------//
Family testcube = Assist.LoadFamily1(rfaDocument,
@"C:\ProgramData\Autodesk\Revit\Addins\2018\SepdBuliding\OverheadPlatform\expRFA\TowerNodeCube.rfa");
foreach (var nodeModel in nodeModels)
{
//if (Math.Abs(nodeModel.nodeLoc.X)>100 || Math.Abs(nodeModel.nodeLoc.Y)> 100|| Math.Abs(nodeModel.nodeLoc.Z)> 100 )
//{
// MessageBox.Show("0-0"+"\n"+nodeModel.nodeID.ToString());
//}
Transaction tttttt = new Transaction(rfaDocument, "drop");
tttttt.Start();
FamilySymbol fs = rfaDocument.GetElement(testcube.GetFamilySymbolIds().First()) as FamilySymbol;
// fs.Activate();
fs.Activate();
// MessageBox.Show(fs.Name);
FamilyInstance fi = rfaDocument.FamilyCreate.NewFamilyInstance(nodeModel.nodeLoc, fs,
Autodesk.Revit.DB.Structure.StructuralType.NonStructural);
fi.LookupParameter("nodeID").Set(nodeModel.nodeID.ToString());
tttttt.Commit();
//Document nodeDocument = doc.EditFamily(fi.Symbol.Family);
//FamilyManager familyMgr = nodeDocument.FamilyManager;
//清空族内所有电气工程参数条目
//foreach (FamilyParameter fp in familyMgr.Parameters)
//{
// if (fp.Definition.Name == "nodeID")
// {
// Transaction xxs = new Transaction(nodeDocument, "drop");
// xxs.Start();
// familyMgr.Set(fp, nodeModel.nodeID.ToString());
// xxs.Commit();
// break;
// }
//}
}
//挂点信息
Family suscube = Assist.LoadFamily1(rfaDocument,
@"C:\ProgramData\Autodesk\Revit\Addins\2018\SepdBuliding\OverheadPlatform\expRFA\TowerSusNodeCube.rfa");
List<int> susPoints = new List<int>();
List<string> susPointsNames = new List<string>();
foreach (var line in mylFileContent)
{
string[] l = line.Split(new char[] { ' ', '-' }, StringSplitOptions.RemoveEmptyEntries);
if (l.Length >= 5)
{
if (l[4].Contains("前导") || l[4].Contains("后导")
|| l[4].Contains("前地") || l[4].Contains("后地"))
{
susPoints.Add(Convert.ToInt32(l[0]));
susPointsNames.Add(l[4]);
}
}
}
for (int i = 0; i < susPoints.Count; i++)
{
var susLoc = nodeModels.Where(g => g.nodeID == susPoints[i]).Select(g=>g.nodeLoc).ToList().FirstOrDefault();
Transaction dropSusPoint = new Transaction(rfaDocument, "dropSusPoint");
dropSusPoint.Start();
FamilySymbol fs = rfaDocument.GetElement(suscube.GetFamilySymbolIds().First()) as FamilySymbol;
// fs.Activate();
fs.Activate();
// MessageBox.Show(fs.Name);
FamilyInstance fi = rfaDocument.FamilyCreate.NewFamilyInstance(susLoc, fs,
Autodesk.Revit.DB.Structure.StructuralType.NonStructural);
fi.LookupParameter("nodeID").Set(susPoints[i].ToString());
dropSusPoint.Commit();
Transaction dropConnector = new Transaction(rfaDocument, "dropConnector");
dropConnector.Start();
try
{
Reference refFace = GeometryHelper.FindPlanarFace(rfaDocument, fi, application).Reference;
ConnectorElement.CreateElectricalConnector(doc, ElectricalSystemType.PowerCircuit, refFace);
}
catch (Exception exception)
{
MessageBox.Show(exception.ToString());
dropConnector.Commit();
// return Result.Succeeded;
continue;
}
dropConnector.Commit();
}
//foreach (var nodeModel in nodeModels)
//{
// int susID = -1;
// susID = susPoints.Where(g => g == nodeModel.nodeID).ToList().FirstOrDefault();
// if (susID != -1)
// {
// Transaction ttttttx = new Transaction(rfaDocument, "drop2");
// ttttttx.Start();
// FamilySymbol fs = rfaDocument.GetElement(suscube.GetFamilySymbolIds().First()) as FamilySymbol;
// // fs.Activate();
// fs.Activate();
// // MessageBox.Show(fs.Name);
// FamilyInstance fi = rfaDocument.FamilyCreate.NewFamilyInstance(nodeModel.nodeLoc, fs,
// Autodesk.Revit.DB.Structure.StructuralType.NonStructural);
// fi.LookupParameter("nodeID").Set(nodeModel.nodeID.ToString());
// ttttttx.Commit();
// }
//}
//---------------------------------------------------------------------//
//CreateTowerForm CreateTowerForm = new CreateTowerForm();
//CreateTowerForm.Show();
//FilteredElementCollector collectorx = new FilteredElementCollector(rfaDocument);
//double maxAbsX = collectorx.WherePasses(new ElementClassFilter(typeof(FamilyInstance)))
// .Max(g => ((g as FamilyInstance).Location as LocationPoint).Point.X);
//maxAbsX = Math.Abs(maxAbsX);
//double maxAbsY = collectorx.WherePasses(new ElementClassFilter(typeof(FamilyInstance)))
// .Max(g => ((g as FamilyInstance).Location as LocationPoint).Point.Y);
//maxAbsY = Math.Abs(maxAbsY);
//double maxAbsZ = collectorx.WherePasses(new ElementClassFilter(typeof(FamilyInstance)))
// .Max(g => ((g as FamilyInstance).Location as LocationPoint).Point.Z);
//maxAbsZ = Math.Abs(maxAbsZ);
//nodeModels = nodeModels.Where(g => Math.Abs(g.nodeLoc.X) > 10000/304.8
//|| Math.Abs(g.nodeLoc.Y) > 10000 / 304.8
//|| Math.Abs(g.nodeLoc.Z) > 10000 / 304.8).Select(g=>g).ToList();
// MessageBox.Show(nodeModels.Count.ToString());
k = 0;
nodeModelsAll = nodeModels;
MessageBox.Show("生成角钢路径");
Transaction createModelLine = new Transaction(rfaDocument, "createModelLine");
createModelLine.Start();
foreach (var line in mylFileContent)
{
//if (k > 153)
//{
// break;
//}
k++;
try
{
#region create angelsteel 生成角钢路径 以及角钢
string[] l = line.Split(new char[] {' ','-'}, StringSplitOptions.RemoveEmptyEntries);
if (l.Length >= 14 )
{
//Transaction createModelLine = new Transaction(rfaDocument, "createModelLine");
//createModelLine.Start();
if (l[3] == "0" || l[3] == "1" || l[3] == "2" || l[3] == "3" || l[3] == "4")
{
NodeModel stNode = nodeModelsAll.Where(e => e.nodeID == Convert.ToInt32(l[0])).FirstOrDefault();
NodeModel edNode = nodeModelsAll.Where(e => e.nodeID == Convert.ToInt32(l[1])).FirstOrDefault();
if (stNode.nodeID.ToString().Contains("2230") || edNode.nodeID.ToString().Contains("2250")|| stNode.nodeID.ToString().Contains("2250") || edNode.nodeID.ToString().Contains("2230"))
{
// MessageBox.Show("2230-2250 \n"+ stNode.nodeID.ToString()+ edNode.nodeID.ToString());
//MessageBox.Show(stNode.nodeID.ToString() +"\n"+ edNode.nodeID.ToString()+"\n" +k.ToString());
// MessageBox.Show(stNode.nodeLoc.X.ToString() + "\n" + stNode.nodeLoc.Y.ToString() + "\n" + stNode.nodeLoc.Z.ToString()
// +"\n"+ edNode.nodeLoc.X.ToString() + "\n" + edNode.nodeLoc.Y.ToString() + "\n" + edNode.nodeLoc.Z.ToString());
}
else if( stNode==null || edNode==null )
{
MessageBox.Show(k.ToString());
}
if (stNode != null && edNode != null)
{
string dddd = null;
}
if (l[3] == "0" && stNode != null && edNode != null)
{
XYZ stLoc = nodeModelsAll.Where(e => e.nodeID == Convert.ToInt32(l[0])).FirstOrDefault().nodeLoc;
XYZ edLoc = nodeModelsAll.Where(e => e.nodeID == Convert.ToInt32(l[1])).FirstOrDefault().nodeLoc;
XYZ origin = XYZ.Zero;
Plane goemPlane = Plane.CreateByThreePoints(stLoc, edLoc, origin);
Line geomLine = Line.CreateBound(stLoc, edLoc);
// XYZ normal = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
//Plane goemPlane = Plane.CreateByNormalAndOrigin(normal, origin);
SketchPlane sketch = SketchPlane.Create(rfaDocument, goemPlane);
ModelLine mLine = rfaDocument.FamilyCreate.NewModelCurve(geomLine, sketch) as ModelLine;
//---------------------------
//Sweep swpAngelSteel = null;
//List<Curve> newCurves = new List<Curve>();newCurves.Clear(); newCurves.Add(mLine.GeometryCurve);
//if (!l[10].Contains('Φ')
// && (l[10].Contains('L')
// || l[10].Contains('x')
// || l[10].Contains('H')
// || l[10].Contains('B')
// || l[10].Contains('S')
// ))
//{
// string L = l[10].Split(new char[] { 'L','x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
// string T = l[10].Split(new char[] { 'L','x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
// L = Regex.Replace(L, @"[^0-9]+", "");
// T = Regex.Replace(T, @"[^0-9]+", "");
// double LL = 0;
// double.TryParse(L, out LL);
// double TT = 0;
// double.TryParse(T, out TT);
// if (LL != 0 && TT != 0)
// swpAngelSteel = CreateAngelSteel(rfaDocument, newCurves,LL,TT);
//}
//---------------------------
}
else if (l[3] == "1" && stNode != null && edNode != null)
{
XYZ stLoc = nodeModelsAll.Where(e => e.nodeID == Convert.ToInt32(l[0])).FirstOrDefault().nodeLoc;
XYZ edLoc = nodeModelsAll.Where(e => e.nodeID == Convert.ToInt32(l[1])).FirstOrDefault().nodeLoc;
XYZ origin = XYZ.Zero;
Plane goemPlane = Plane.CreateByThreePoints(stLoc, edLoc, origin);
Line geomLine = Line.CreateBound(stLoc, edLoc);
//XYZ normal = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
//Plane goemPlane = Plane.CreateByNormalAndOrigin(normal, origin);
SketchPlane sketch = SketchPlane.Create(rfaDocument, goemPlane);
ModelLine mLine = rfaDocument.FamilyCreate.NewModelCurve(geomLine, sketch) as ModelLine;
//---------------------------
//Sweep swpAngelSteel = null;
//List<Curve> newCurves = new List<Curve>(); newCurves.Clear(); newCurves.Add(mLine.GeometryCurve);
//if (!l[10].Contains('Φ')
// && (l[10].Contains('L')
// || l[10].Contains('x')
// || l[10].Contains('H')
// || l[10].Contains('B')
// || l[10].Contains('S')
// ))
//{
// string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S' , 'Φ'}, StringSplitOptions.RemoveEmptyEntries)[0];
// string T = l[10].Split(new char[] { 'L', 'x', 'H','B','S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
// // MessageBox.Show(L + "\n" + T);
// L = Regex.Replace(L, @"[^0-9]+", "");
// T = Regex.Replace(T, @"[^0-9]+", "");
// double LL = 0;
// double.TryParse(L, out LL);
// double TT = 0;
// double.TryParse(T, out TT);
// if (LL != 0 && TT != 0)
// swpAngelSteel = CreateAngelSteel(rfaDocument, newCurves, LL, TT);
//}
//---------------------------
if (null != mLine &&
ElementTransformUtils.CanMirrorElement(rfaDocument, mLine.Id))
{
ElementTransformUtils.MirrorElement(rfaDocument,mLine.Id, Plane.CreateByNormalAndOrigin(new XYZ(1, 0, 0), origin));
}
//if (null != mLine && swpAngelSteel != null &&
// ElementTransformUtils.CanMirrorElement(rfaDocument, swpAngelSteel.Id))
//{
// ElementTransformUtils.MirrorElement(rfaDocument, swpAngelSteel.Id, Plane.CreateByNormalAndOrigin(new XYZ(1, 0, 0), origin));
//}
//stLoc = new XYZ(-stLoc.X, stLoc.Y, stLoc.Z);
//edLoc = new XYZ(-stLoc.X, stLoc.Y, stLoc.Z);
//Line geomLine1 = Line.CreateBound(stLoc, edLoc);
//XYZ normal1 = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
//Plane goemPlane1 = Plane.CreateByNormalAndOrigin(normal1, origin);
//SketchPlane sketch1 = SketchPlane.Create(rfaDocument, goemPlane1);
//ModelLine mLine1 = rfaDocument.FamilyCreate.NewModelCurve(geomLine1, sketch1) as ModelLine;
}
else if (l[3] == "2" && stNode != null && edNode != null)
{
XYZ stLoc = nodeModelsAll.Where(e => e.nodeID == Convert.ToInt32(l[0])).FirstOrDefault().nodeLoc;
XYZ edLoc = nodeModelsAll.Where(e => e.nodeID == Convert.ToInt32(l[1])).FirstOrDefault().nodeLoc;
XYZ origin = XYZ.Zero;
Plane goemPlane = Plane.CreateByThreePoints(stLoc, edLoc, origin);
Line geomLine = Line.CreateBound(stLoc, edLoc);
//XYZ normal = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
//Plane goemPlane = Plane.CreateByNormalAndOrigin(normal, stLoc);
SketchPlane sketch = SketchPlane.Create(rfaDocument, goemPlane);
ModelLine mLine = rfaDocument.FamilyCreate.NewModelCurve(geomLine, sketch) as ModelLine;
//---------------------------
//Sweep swpAngelSteel = null;
//List<Curve> newCurves = new List<Curve>(); newCurves.Clear(); newCurves.Add(mLine.GeometryCurve);
//if (!l[10].Contains('Φ')
// && (l[10].Contains('L')
// || l[10].Contains('x')
// || l[10].Contains('H')
// || l[10].Contains('B')
// || l[10].Contains('S')
// ))
//{
// string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
// string T = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
// // MessageBox.Show(L + "\n" + T);
// L = Regex.Replace(L, @"[^0-9]+", "");
// T = Regex.Replace(T, @"[^0-9]+", "");
// double LL = 0;
// double.TryParse(L, out LL);
// double TT = 0;
// double.TryParse(T, out TT);
// if (LL != 0 && TT != 0)
// swpAngelSteel = CreateAngelSteel(rfaDocument, newCurves, LL, TT);
//}
//---------------------------
if (null != mLine &&
ElementTransformUtils.CanMirrorElement(rfaDocument, mLine.Id))
{
ElementTransformUtils.MirrorElement(rfaDocument, mLine.Id, Plane.CreateByNormalAndOrigin(new XYZ(0, 1, 0), origin));
}
//if (null != mLine && swpAngelSteel != null &&
// ElementTransformUtils.CanMirrorElement(rfaDocument, swpAngelSteel.Id))
//{
// ElementTransformUtils.MirrorElement(rfaDocument, swpAngelSteel.Id, Plane.CreateByNormalAndOrigin(new XYZ(1, 0, 0), origin));
//}
//stLoc = new XYZ(stLoc.X, -stLoc.Y, stLoc.Z);
//edLoc = new XYZ(stLoc.X, -stLoc.Y, stLoc.Z);
//Line geomLine1 = Line.CreateBound(stLoc, edLoc);
//XYZ normal1 = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
//Plane goemPlane1 = Plane.CreateByNormalAndOrigin(normal1, stLoc);
//SketchPlane sketch1 = SketchPlane.Create(rfaDocument, goemPlane1);
//ModelLine mLine1 = rfaDocument.FamilyCreate.NewModelCurve(geomLine1, sketch1) as ModelLine;
}
else if (l[3] == "3" && stNode != null && edNode != null)
{
XYZ stLoc = nodeModelsAll.Where(e => e.nodeID == Convert.ToInt32(l[0])).FirstOrDefault().nodeLoc;
XYZ edLoc = nodeModelsAll.Where(e => e.nodeID == Convert.ToInt32(l[1])).FirstOrDefault().nodeLoc;
XYZ origin = XYZ.Zero;
Plane goemPlane = Plane.CreateByThreePoints(stLoc, edLoc, origin);
Line geomLine = Line.CreateBound(stLoc, edLoc);
//XYZ normal = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
//Plane goemPlane = Plane.CreateByNormalAndOrigin(normal, stLoc);
SketchPlane sketch = SketchPlane.Create(rfaDocument, goemPlane);
ModelLine mLine = rfaDocument.FamilyCreate.NewModelCurve(geomLine, sketch) as ModelLine;
//---------------------------
//Sweep swpAngelSteel = null;
//List<Curve> newCurves = new List<Curve>(); newCurves.Clear(); newCurves.Add(mLine.GeometryCurve);
//if (!l[10].Contains('Φ')
// && (l[10].Contains('L')
// || l[10].Contains('x')
// || l[10].Contains('H')
// || l[10].Contains('B')
// || l[10].Contains('S')
// ))
//{
// string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
// string T = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
// L = Regex.Replace(L, @"[^0-9]+", "");
// T = Regex.Replace(T, @"[^0-9]+", "");
// double LL = 0;
// double.TryParse(L, out LL);
// double TT = 0;
// double.TryParse(T, out TT);
// if (LL != 0 && TT != 0)
// swpAngelSteel = CreateAngelSteel(rfaDocument, newCurves, LL, TT);
//}
//---------------------------
// if (null != mLine &&
//ElementTransformUtils.CanMirrorElement(rfaDocument, mLine.Id))
// {
// ElementTransformUtils.MirrorElement(rfaDocument, mLine.Id, Plane.CreateByNormalAndOrigin(new XYZ(1, 1, 0), origin));
// }
stLoc = new XYZ(-stLoc.X, -stLoc.Y, stLoc.Z);
edLoc = new XYZ(-stLoc.X, -stLoc.Y, stLoc.Z);
Line geomLine1 = Line.CreateBound(stLoc, edLoc);
Plane goemPlane1 = Plane.CreateByThreePoints(stLoc, edLoc, origin);
//XYZ normal1 = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
//Plane goemPlane1 = Plane.CreateByNormalAndOrigin(normal1, stLoc);
SketchPlane sketch1 = SketchPlane.Create(rfaDocument, goemPlane1);
ModelLine mLine1 = rfaDocument.FamilyCreate.NewModelCurve(geomLine1, sketch1) as ModelLine;
//---------------------------
//Sweep swpAngelSteel2 = null;
//List<Curve> newCurves2 = new List<Curve>(); newCurves.Clear(); newCurves2.Add(mLine1.GeometryCurve);
//if (!l[10].Contains('Φ')
// && (l[10].Contains('L')
// || l[10].Contains('x')
// || l[10].Contains('H')
// || l[10].Contains('B')
// || l[10].Contains('S')
// ))
//{
// string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
// string T = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
// // MessageBox.Show(L + "\n" + T);
// L = Regex.Replace(L, @"[^0-9]+", "");
// T = Regex.Replace(T, @"[^0-9]+", "");
// double LL = 0;
// double.TryParse(L, out LL);
// double TT = 0;
// double.TryParse(T, out TT);
// if (LL != 0 && TT != 0)
// swpAngelSteel2 = CreateAngelSteel(rfaDocument, newCurves2, LL, TT);
//}
//---------------------------
}
else if (l[3] == "4" && stNode != null && edNode != null)
{
XYZ stLoc = nodeModelsAll.Where(e => e.nodeID == Convert.ToInt32(l[0])).FirstOrDefault().nodeLoc;
XYZ edLoc = nodeModelsAll.Where(e => e.nodeID == Convert.ToInt32(l[1])).FirstOrDefault().nodeLoc;
XYZ origin = XYZ.Zero;
Plane goemPlane = Plane.CreateByThreePoints(stLoc, edLoc, origin);
Line geomLine = Line.CreateBound(stLoc, edLoc);
//XYZ normal = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
//Plane goemPlane = Plane.CreateByNormalAndOrigin(normal, stLoc);
SketchPlane sketch = SketchPlane.Create(rfaDocument, goemPlane);
ModelLine mLine = rfaDocument.FamilyCreate.NewModelCurve(geomLine, sketch) as ModelLine;
//---------------------------
//Sweep swpAngelSteel = null;
//List<Curve> newCurves = new List<Curve>(); newCurves.Clear(); newCurves.Add(mLine.GeometryCurve);
//if (!l[10].Contains('Φ')
// && (l[10].Contains('L')
// || l[10].Contains('x')
// || l[10].Contains('H')
// || l[10].Contains('B')
// || l[10].Contains('S')
// ))
//{
// string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
// string T = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
// L = Regex.Replace(L, @"[^0-9]+", "");
// T = Regex.Replace(T, @"[^0-9]+", "");
// double LL = 0;
// double.TryParse(L, out LL);
// double TT = 0;
// double.TryParse(T, out TT);
// if (LL != 0 && TT != 0)
// {
// swpAngelSteel = CreateAngelSteel(rfaDocument, newCurves, LL, TT);
// }
//}
//---------------------------
if (null != mLine &&
ElementTransformUtils.CanMirrorElement(rfaDocument, mLine.Id))
{
ElementTransformUtils.MirrorElement(rfaDocument, mLine.Id, Plane.CreateByNormalAndOrigin(new XYZ(1, 0, 0), origin));
}
if (null != mLine &&
ElementTransformUtils.CanMirrorElement(rfaDocument, mLine.Id))
{
ElementTransformUtils.MirrorElement(rfaDocument, mLine.Id, Plane.CreateByNormalAndOrigin(new XYZ(0, 1, 0), origin));
}
//if (null != mLine && swpAngelSteel!= null &&
//ElementTransformUtils.CanMirrorElement(rfaDocument, swpAngelSteel.Id))
//{
// ElementTransformUtils.MirrorElement(rfaDocument, swpAngelSteel.Id, Plane.CreateByNormalAndOrigin(new XYZ(1, 0, 0), origin));
//}
//if (null != mLine && swpAngelSteel != null &&
// ElementTransformUtils.CanMirrorElement(rfaDocument, swpAngelSteel.Id))
//{
// ElementTransformUtils.MirrorElement(rfaDocument, swpAngelSteel.Id, Plane.CreateByNormalAndOrigin(new XYZ(0, 1, 0), origin));
//}
// if (null != mLine &&
//ElementTransformUtils.CanMirrorElement(rfaDocument, mLine.Id))
// {
// ElementTransformUtils.MirrorElement(rfaDocument, mLine.Id, Plane.CreateByNormalAndOrigin(new XYZ(1, 1, 0), origin));
// }
//stLoc = new XYZ(-stLoc.X, stLoc.Y, stLoc.Z);
//edLoc = new XYZ(-stLoc.X, stLoc.Y, stLoc.Z);
//Line geomLine1 = Line.CreateBound(stLoc, edLoc);
//XYZ normal1 = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
//Plane goemPlane1 = Plane.CreateByNormalAndOrigin(normal1, stLoc);
//SketchPlane sketch1 = SketchPlane.Create(rfaDocument, goemPlane1);
//ModelLine mLine1 = rfaDocument.FamilyCreate.NewModelCurve(geomLine1, sketch1) as ModelLine;
//stLoc = new XYZ(stLoc.X, -stLoc.Y, stLoc.Z);
//edLoc = new XYZ(stLoc.X, -stLoc.Y, stLoc.Z);
//Line geomLine2 = Line.CreateBound(stLoc, edLoc);
//XYZ normal2 = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
//Plane goemPlane2 = Plane.CreateByNormalAndOrigin(normal2, stLoc);
//SketchPlane sketch2 = SketchPlane.Create(rfaDocument, goemPlane2);
//ModelLine mLine2 = rfaDocument.FamilyCreate.NewModelCurve(geomLine2, sketch2) as ModelLine;
stLoc = new XYZ(-stLoc.X, -stLoc.Y, stLoc.Z);
edLoc = new XYZ(-edLoc.X, -edLoc.Y, edLoc.Z);
Line geomLine3 = Line.CreateBound(stLoc, edLoc);
//XYZ normal3 = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
Plane goemPlane3 = Plane.CreateByThreePoints(stLoc, edLoc,new XYZ(0,0,0));
SketchPlane sketch13 = SketchPlane.Create(rfaDocument, goemPlane3);
ModelLine mLine3 = rfaDocument.FamilyCreate.NewModelCurve(geomLine3, sketch13) as ModelLine;
//---------------------------
//Sweep swpAngelSteel2 = null;
//List<Curve> newCurves2 = new List<Curve>(); newCurves.Clear(); newCurves2.Add(mLine3.GeometryCurve);
//if (!l[10].Contains('Φ')
// && (l[10].Contains('L')
// || l[10].Contains('x')
// || l[10].Contains('H')
// || l[10].Contains('B')
// || l[10].Contains('S')
// ))
//{
// string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
// string T = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S' , 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
// L = Regex.Replace(L, @"[^0-9]+", "");
// T = Regex.Replace(T, @"[^0-9]+", "");
// double LL = 0;
// double.TryParse(L, out LL);
// double TT = 0;
// double.TryParse(T, out TT);
// if (LL != 0 && TT != 0)
// {
// swpAngelSteel2 = CreateAngelSteel(rfaDocument, newCurves2, LL, TT);
// }
//}
//---------------------------
}
}
// createModelLine.Commit();
// MessageBox.Show("!!!!! " + k.ToString());
}
#endregion
}
catch (Exception ex)
{
// MessageBox.Show("3 create:\n" + ex.ToString());
continue;
}
}
createModelLine.Commit();
//----------------------------------------------------------------------------------------------------------------
#region 开始翻转坐标
MessageBox.Show("开始翻转坐标");
FilteredElementCollector collectorCubes = new FilteredElementCollector(rfaDocument);
double maxZ =
collectorCubes.WherePasses(new ElementClassFilter(typeof(FamilyInstance)))
.Max(g => ((g as FamilyInstance).Location as LocationPoint).Point.Z);
XYZ mirrorPoint = new XYZ(0, 0, maxZ / 2);
//------------------------------------------------------------------------------
List<NodeModel> afterMirrorNodeModels = new List<NodeModel>();
foreach (NodeModel nodeModel in nodeModelsAll)
{
NodeModel newNodeModel = new NodeModel();
newNodeModel.nodeID = nodeModel.nodeID;
newNodeModel.nodeCreateMode = nodeModel.nodeCreateMode;
newNodeModel.nodeLoc = new XYZ(nodeModel.nodeLoc.X, nodeModel.nodeLoc.Y, maxZ - nodeModel.nodeLoc.Z);
afterMirrorNodeModels.Add(newNodeModel);
}
//------------------------------------------------------------------------------
Transaction mirrorZ = new Transaction(rfaDocument, "mirrorZ");
mirrorZ.Start();
//---------------------------
FilteredElementCollector collector = new FilteredElementCollector(rfaDocument);
List<FamilyInstance> allFamilyInstances = new List<FamilyInstance>();
allFamilyInstances =
collector.WherePasses(new ElementClassFilter(typeof(FamilyInstance)))
.Cast<FamilyInstance>()
.Select(g => g)
.ToList();
foreach (FamilyInstance allFamilyInstance in allFamilyInstances)
{
ElementTransformUtils.MirrorElement(rfaDocument, allFamilyInstance.Id, Plane.CreateByNormalAndOrigin(new XYZ(0, 0, 1), mirrorPoint));
rfaDocument.Delete(allFamilyInstance.Id);
}
//---------------------------
FilteredElementCollector collector2 = new FilteredElementCollector(rfaDocument);
List<CurveElement> allModelLines = new List<CurveElement>();
allModelLines =
collector2.WherePasses(new ElementClassFilter(typeof(CurveElement)))
.Cast<CurveElement>()
.Select(g => g as CurveElement)
.ToList();
foreach (CurveElement allModelLine in allModelLines)
{
ElementTransformUtils.MirrorElement(rfaDocument, allModelLine.Id, Plane.CreateByNormalAndOrigin(new XYZ(0, 0, 1), mirrorPoint));
rfaDocument.Delete(allModelLine.Id);
}
//---------------------------
//FilteredElementCollector collector3 = new FilteredElementCollector(rfaDocument);
//List<Sweep> allModelLines3 = new List<Sweep>();
//allModelLines3 =
// collector3.WherePasses(new ElementClassFilter(typeof(Sweep)))
// .Cast<Sweep>()
// .Select(g => g as Sweep)
// .ToList();
//foreach (Sweep allModelLine in allModelLines3)
//{
// ElementTransformUtils.MirrorElement(rfaDocument, allModelLine.Id, Plane.CreateByNormalAndOrigin(new XYZ(0, 0, 1), new XYZ(0, 0, 0)));
// rfaDocument.Delete(allModelLine.Id);
//}
//---------------------------
mirrorZ.Commit();
//----------------------------------------
//----------------------------------------
//Transaction moveZ = new Transaction(rfaDocument, "moveZ");
//moveZ.Start();
//FilteredElementCollector collectorMove = new FilteredElementCollector(rfaDocument);
//List<FamilyInstance> allCubes = new List<FamilyInstance>();
//double minZ =
// collectorMove.WherePasses(new ElementClassFilter(typeof (FamilyInstance)))
// .Min(g => ((g as FamilyInstance).Location as LocationPoint).Point.Z);
//allCubes =
// collectorMove.WherePasses(new ElementClassFilter(typeof(FamilyInstance)))
// .Cast<FamilyInstance>()
// .Select(g => g)
// .ToList();
//foreach (FamilyInstance allCube in allCubes)
//{
// ElementTransformUtils.MoveElement(rfaDocument, allCube.Id, new XYZ(0,0,minZ));
// rfaDocument.Delete(allCube.Id);
//}
//moveZ.Commit();
#endregion
//----------------------------------------------------------------------------------------------------------------
MessageBox.Show("开始生成角钢");
Transaction newSweep = new Transaction(rfaDocument, "newSweep");
newSweep.Start();
foreach (var line in mylFileContent)
{
//if (k > 153)
//{
// break;
//}
k++;
try
{
#region create angelsteel 生成角钢路径 以及角钢
string[] l = line.Split(new char[] { ' ', '-' }, StringSplitOptions.RemoveEmptyEntries);
if (l.Length >= 14)
{
//Transaction createModelLine = new Transaction(rfaDocument, "createModelLine");
//createModelLine.Start();
if (l[3] == "0" || l[3] == "1" || l[3] == "2" || l[3] == "3" || l[3] == "4")
{
NodeModel stNode = afterMirrorNodeModels.Where(e => e.nodeID == Convert.ToInt32(l[0])).FirstOrDefault();
NodeModel edNode = afterMirrorNodeModels.Where(e => e.nodeID == Convert.ToInt32(l[1])).FirstOrDefault();
if (stNode.nodeID.ToString().Contains("2230") || edNode.nodeID.ToString().Contains("2250") || stNode.nodeID.ToString().Contains("2250") || edNode.nodeID.ToString().Contains("2230"))
{
// MessageBox.Show("2230-2250 \n"+ stNode.nodeID.ToString()+ edNode.nodeID.ToString());
//MessageBox.Show(stNode.nodeID.ToString() +"\n"+ edNode.nodeID.ToString()+"\n" +k.ToString());
// MessageBox.Show(stNode.nodeLoc.X.ToString() + "\n" + stNode.nodeLoc.Y.ToString() + "\n" + stNode.nodeLoc.Z.ToString()
// +"\n"+ edNode.nodeLoc.X.ToString() + "\n" + edNode.nodeLoc.Y.ToString() + "\n" + edNode.nodeLoc.Z.ToString());
}
else if (stNode == null || edNode == null)
{
MessageBox.Show(k.ToString());
}
if (stNode != null && edNode != null)
{
string dddd = null;
}
if (l[3] == "0" && stNode != null && edNode != null)
{
XYZ stLoc = afterMirrorNodeModels.Where(e => e.nodeID == Convert.ToInt32(l[0])).FirstOrDefault().nodeLoc;
XYZ edLoc = afterMirrorNodeModels.Where(e => e.nodeID == Convert.ToInt32(l[1])).FirstOrDefault().nodeLoc;
//XYZ origin = XYZ.Zero;
//Plane goemPlane = Plane.CreateByThreePoints(stLoc, edLoc, origin);
//Line geomLine = Line.CreateBound(stLoc, edLoc);
XYZ normal = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
Plane goemPlane = Plane.CreateByNormalAndOrigin(normal, origin);
//SketchPlane sketch = SketchPlane.Create(rfaDocument, goemPlane);
//ModelLine mLine = rfaDocument.FamilyCreate.NewModelCurve(geomLine, sketch) as ModelLine;
//---------------------------
Curve sweepPath = Line.CreateBound(stLoc, edLoc) as Curve;
Sweep swpAngelSteel = null;
Sweep swpCircleSteel = null;
List<Curve> newCurves = new List<Curve>(); newCurves.Clear(); newCurves.Add(sweepPath);
//---------------------------
if (!l[10].Contains('Φ')
&& (l[10].Contains('L')
|| l[10].Contains('x')
|| l[10].Contains('H')
|| l[10].Contains('B')
|| l[10].Contains('S')
))
{
string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
string T = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
L = Regex.Replace(L, @"[^0-9]+", "");
T = Regex.Replace(T, @"[^0-9]+", "");
double LL = 0;
double.TryParse(L, out LL);
double TT = 0;
double.TryParse(T, out TT);
if (LL != 0 && TT != 0)
swpAngelSteel = CreateAngelSteel(rfaDocument, newCurves, LL, TT);
}
//else if (l[10].Contains('Φ'))
//{
// string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
// string T = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
// L = Regex.Replace(L, @"[^0-9]+", "");
// T = Regex.Replace(T, @"[^0-9]+", "");
// double LL = 0;
// double.TryParse(L, out LL);
// double TT = 0;
// double.TryParse(T, out TT);
// if (LL != 0 && TT != 0)
// swpCircleSteel = CreateCircleSteel(rfaDocument, newCurves, LL, TT);
//}
//---------------------------
}
else if (l[3] == "1" && stNode != null && edNode != null)
{
XYZ stLoc = afterMirrorNodeModels.Where(e => e.nodeID == Convert.ToInt32(l[0])).FirstOrDefault().nodeLoc;
XYZ edLoc = afterMirrorNodeModels.Where(e => e.nodeID == Convert.ToInt32(l[1])).FirstOrDefault().nodeLoc;
XYZ origin = XYZ.Zero;
//Plane goemPlane = Plane.CreateByThreePoints(stLoc, edLoc, origin);
//Line geomLine = Line.CreateBound(stLoc, edLoc);
XYZ normal = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
Plane goemPlane = Plane.CreateByNormalAndOrigin(normal, origin);
//SketchPlane sketch = SketchPlane.Create(rfaDocument, goemPlane);
//ModelLine mLine = rfaDocument.FamilyCreate.NewModelCurve(geomLine, sketch) as ModelLine;
//---------------------------
Curve sweepPath = Line.CreateBound(stLoc, edLoc) as Curve;
Sweep swpAngelSteel = null;
List<Curve> newCurves = new List<Curve>(); newCurves.Clear(); newCurves.Add(sweepPath);
Sweep swpCircelSteel = null;
if (!l[10].Contains('Φ')
&& (l[10].Contains('L')
|| l[10].Contains('x')
|| l[10].Contains('H')
|| l[10].Contains('B')
|| l[10].Contains('S')
))
{
string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
string T = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
// MessageBox.Show(L + "\n" + T);
L = Regex.Replace(L, @"[^0-9]+", "");
T = Regex.Replace(T, @"[^0-9]+", "");
double LL = 0;
double.TryParse(L, out LL);
double TT = 0;
double.TryParse(T, out TT);
if (LL != 0 && TT != 0)
swpAngelSteel = CreateAngelSteel(rfaDocument, newCurves, LL, TT);
}
//else if (l[10].Contains('Φ'))
//{
// string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
// string T = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
// L = Regex.Replace(L, @"[^0-9]+", "");
// T = Regex.Replace(T, @"[^0-9]+", "");
// double LL = 0;
// double.TryParse(L, out LL);
// double TT = 0;
// double.TryParse(T, out TT);
// if (LL != 0 && TT != 0)
// swpCircelSteel = CreateCircleSteel(rfaDocument, newCurves, LL, TT);
//}
//---------------------------
//if (null != mLine &&
// ElementTransformUtils.CanMirrorElement(rfaDocument, mLine.Id))
//{
// ElementTransformUtils.MirrorElement(rfaDocument, mLine.Id, Plane.CreateByNormalAndOrigin(new XYZ(1, 0, 0), origin));
//}
if ( swpAngelSteel != null &&
ElementTransformUtils.CanMirrorElement(rfaDocument, swpAngelSteel.Id))
{
ElementTransformUtils.MirrorElement(rfaDocument, swpAngelSteel.Id, Plane.CreateByNormalAndOrigin(new XYZ(1, 0, 0), origin));
}
//stLoc = new XYZ(-stLoc.X, stLoc.Y, stLoc.Z);
//edLoc = new XYZ(-stLoc.X, stLoc.Y, stLoc.Z);
//Line geomLine1 = Line.CreateBound(stLoc, edLoc);
//XYZ normal1 = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
//Plane goemPlane1 = Plane.CreateByNormalAndOrigin(normal1, origin);
//SketchPlane sketch1 = SketchPlane.Create(rfaDocument, goemPlane1);
//ModelLine mLine1 = rfaDocument.FamilyCreate.NewModelCurve(geomLine1, sketch1) as ModelLine;
}
else if (l[3] == "2" && stNode != null && edNode != null)
{
XYZ stLoc = afterMirrorNodeModels.Where(e => e.nodeID == Convert.ToInt32(l[0])).FirstOrDefault().nodeLoc;
XYZ edLoc = afterMirrorNodeModels.Where(e => e.nodeID == Convert.ToInt32(l[1])).FirstOrDefault().nodeLoc;
XYZ origin = XYZ.Zero;
//Plane goemPlane = Plane.CreateByThreePoints(stLoc, edLoc, origin);
//Line geomLine = Line.CreateBound(stLoc, edLoc);
XYZ normal = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
Plane goemPlane = Plane.CreateByNormalAndOrigin(normal, stLoc);
//SketchPlane sketch = SketchPlane.Create(rfaDocument, goemPlane);
//ModelLine mLine = rfaDocument.FamilyCreate.NewModelCurve(geomLine, sketch) as ModelLine;
//---------------------------
Curve sweepPath = Line.CreateBound(stLoc, edLoc) as Curve;
Sweep swpAngelSteel = null;
Sweep swpCircleSteel = null;
List<Curve> newCurves = new List<Curve>(); newCurves.Clear(); newCurves.Add(sweepPath);
if (!l[10].Contains('Φ')
&& (l[10].Contains('L')
|| l[10].Contains('x')
|| l[10].Contains('H')
|| l[10].Contains('B')
|| l[10].Contains('S')
))
{
string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
string T = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
// MessageBox.Show(L + "\n" + T);
L = Regex.Replace(L, @"[^0-9]+", "");
T = Regex.Replace(T, @"[^0-9]+", "");
double LL = 0;
double.TryParse(L, out LL);
double TT = 0;
double.TryParse(T, out TT);
if (LL != 0 && TT != 0)
swpAngelSteel = CreateAngelSteel(rfaDocument, newCurves, LL, TT);
}
//else if (l[10].Contains('Φ'))
//{
// string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
// string T = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
// L = Regex.Replace(L, @"[^0-9]+", "");
// T = Regex.Replace(T, @"[^0-9]+", "");
// double LL = 0;
// double.TryParse(L, out LL);
// double TT = 0;
// double.TryParse(T, out TT);
// if (LL != 0 && TT != 0)
// swpCircleSteel = CreateCircleSteel(rfaDocument, newCurves, LL, TT);
//}
//---------------------------
//if (null != mLine &&
// ElementTransformUtils.CanMirrorElement(rfaDocument, mLine.Id))
//{
// ElementTransformUtils.MirrorElement(rfaDocument, mLine.Id, Plane.CreateByNormalAndOrigin(new XYZ(0, 1, 0), origin));
//}
if ( swpAngelSteel != null &&
ElementTransformUtils.CanMirrorElement(rfaDocument, swpAngelSteel.Id))
{
ElementTransformUtils.MirrorElement(rfaDocument, swpAngelSteel.Id, Plane.CreateByNormalAndOrigin(new XYZ(0, 1, 0), origin));
}
//stLoc = new XYZ(stLoc.X, -stLoc.Y, stLoc.Z);
//edLoc = new XYZ(stLoc.X, -stLoc.Y, stLoc.Z);
//Line geomLine1 = Line.CreateBound(stLoc, edLoc);
//XYZ normal1 = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
//Plane goemPlane1 = Plane.CreateByNormalAndOrigin(normal1, stLoc);
//SketchPlane sketch1 = SketchPlane.Create(rfaDocument, goemPlane1);
//ModelLine mLine1 = rfaDocument.FamilyCreate.NewModelCurve(geomLine1, sketch1) as ModelLine;
}
else if (l[3] == "3" && stNode != null && edNode != null)
{
XYZ stLoc = afterMirrorNodeModels.Where(e => e.nodeID == Convert.ToInt32(l[0])).FirstOrDefault().nodeLoc;
XYZ edLoc = afterMirrorNodeModels.Where(e => e.nodeID == Convert.ToInt32(l[1])).FirstOrDefault().nodeLoc;
XYZ origin = XYZ.Zero;
//Plane goemPlane = Plane.CreateByThreePoints(stLoc, edLoc, origin);
//Line geomLine = Line.CreateBound(stLoc, edLoc);
XYZ normal = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
Plane goemPlane = Plane.CreateByNormalAndOrigin(normal, stLoc);
//SketchPlane sketch = SketchPlane.Create(rfaDocument, goemPlane);
//ModelLine mLine = rfaDocument.FamilyCreate.NewModelCurve(geomLine, sketch) as ModelLine;
//---------------------------
Curve sweepPath = Line.CreateBound(stLoc, edLoc) as Curve;
Sweep swpAngelSteel = null;
Sweep swpCircleSteel = null;
List<Curve> newCurves = new List<Curve>(); newCurves.Clear(); newCurves.Add(sweepPath);
if (!l[10].Contains('Φ')
&& (l[10].Contains('L')
|| l[10].Contains('x')
|| l[10].Contains('H')
|| l[10].Contains('B')
|| l[10].Contains('S')
))
{
string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
string T = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
L = Regex.Replace(L, @"[^0-9]+", "");
T = Regex.Replace(T, @"[^0-9]+", "");
double LL = 0;
double.TryParse(L, out LL);
double TT = 0;
double.TryParse(T, out TT);
if (LL != 0 && TT != 0)
swpAngelSteel = CreateAngelSteel(rfaDocument, newCurves, LL, TT);
}
//else if (l[10].Contains('Φ'))
//{
// string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
// string T = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
// L = Regex.Replace(L, @"[^0-9]+", "");
// T = Regex.Replace(T, @"[^0-9]+", "");
// double LL = 0;
// double.TryParse(L, out LL);
// double TT = 0;
// double.TryParse(T, out TT);
// if (LL != 0 && TT != 0)
// swpCircleSteel = CreateCircleSteel(rfaDocument, newCurves, LL, TT);
//}
//---------------------------
// if (null != mLine &&
//ElementTransformUtils.CanMirrorElement(rfaDocument, mLine.Id))
// {
// ElementTransformUtils.MirrorElement(rfaDocument, mLine.Id, Plane.CreateByNormalAndOrigin(new XYZ(1, 1, 0), origin));
// }
stLoc = new XYZ(-stLoc.X, -stLoc.Y, stLoc.Z);
edLoc = new XYZ(-stLoc.X, -stLoc.Y, stLoc.Z);
//Line geomLine1 = Line.CreateBound(stLoc, edLoc);
//Plane goemPlane1 = Plane.CreateByThreePoints(stLoc, edLoc, origin);
XYZ normal1 = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
Plane goemPlane1 = Plane.CreateByNormalAndOrigin(normal1, stLoc);
//SketchPlane sketch1 = SketchPlane.Create(rfaDocument, goemPlane1);
//ModelLine mLine1 = rfaDocument.FamilyCreate.NewModelCurve(geomLine1, sketch1) as ModelLine;
//---------------------------
Curve sweepPath2 = Line.CreateBound(stLoc, edLoc) as Curve;
List<Curve> newCurves2 = new List<Curve>(); newCurves2.Clear(); newCurves2.Add(sweepPath2);
Sweep swpAngelSteel2 = null;
Sweep swpCircleSteel2 = null;
if (!l[10].Contains('Φ')
&& (l[10].Contains('L')
|| l[10].Contains('x')
|| l[10].Contains('H')
|| l[10].Contains('B')
|| l[10].Contains('S')
))
{
string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
string T = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
// MessageBox.Show(L + "\n" + T);
L = Regex.Replace(L, @"[^0-9]+", "");
T = Regex.Replace(T, @"[^0-9]+", "");
double LL = 0;
double.TryParse(L, out LL);
double TT = 0;
double.TryParse(T, out TT);
if (LL != 0 && TT != 0)
swpAngelSteel2 = CreateAngelSteel(rfaDocument, newCurves2, LL, TT);
}
//else if (l[10].Contains('Φ'))
//{
// string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
// string T = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
// L = Regex.Replace(L, @"[^0-9]+", "");
// T = Regex.Replace(T, @"[^0-9]+", "");
// double LL = 0;
// double.TryParse(L, out LL);
// double TT = 0;
// double.TryParse(T, out TT);
// if (LL != 0 && TT != 0)
// swpCircleSteel2 = CreateCircleSteel(rfaDocument, newCurves, LL, TT);
//}
//---------------------------
}
else if (l[3] == "4" && stNode != null && edNode != null)
{
XYZ stLoc = afterMirrorNodeModels.Where(e => e.nodeID == Convert.ToInt32(l[0])).FirstOrDefault().nodeLoc;
XYZ edLoc = afterMirrorNodeModels.Where(e => e.nodeID == Convert.ToInt32(l[1])).FirstOrDefault().nodeLoc;
XYZ origin = XYZ.Zero;
//Plane goemPlane = Plane.CreateByThreePoints(stLoc, edLoc, origin);
//Line geomLine = Line.CreateBound(stLoc, edLoc);
XYZ normal = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
Plane goemPlane = Plane.CreateByNormalAndOrigin(normal, stLoc);
//SketchPlane sketch = SketchPlane.Create(rfaDocument, goemPlane);
//ModelLine mLine = rfaDocument.FamilyCreate.NewModelCurve(geomLine, sketch) as ModelLine;
//---------------------------
Curve sweepPath = Line.CreateBound(stLoc, edLoc) as Curve;
List<Curve> newCurves = new List<Curve>(); newCurves.Clear(); newCurves.Add(sweepPath);
Sweep swpAngelSteel = null;
Sweep swpCircleSteel = null;
if (!l[10].Contains('Φ')
&& (l[10].Contains('L')
|| l[10].Contains('x')
|| l[10].Contains('H')
|| l[10].Contains('B')
|| l[10].Contains('S')
))
{
string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
string T = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
L = Regex.Replace(L, @"[^0-9]+", "");
T = Regex.Replace(T, @"[^0-9]+", "");
double LL = 0;
double.TryParse(L, out LL);
double TT = 0;
double.TryParse(T, out TT);
if (LL != 0 && TT != 0)
{
swpAngelSteel = CreateAngelSteel(rfaDocument, newCurves, LL, TT);
}
}
//else if (l[10].Contains('Φ'))
//{
// string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
// string T = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
// L = Regex.Replace(L, @"[^0-9]+", "");
// T = Regex.Replace(T, @"[^0-9]+", "");
// double LL = 0;
// double.TryParse(L, out LL);
// double TT = 0;
// double.TryParse(T, out TT);
// if (LL != 0 && TT != 0)
// swpCircleSteel = CreateCircleSteel(rfaDocument, newCurves, LL, TT);
//}
//---------------------------
//if (null != mLine &&
//ElementTransformUtils.CanMirrorElement(rfaDocument, mLine.Id))
//{
// ElementTransformUtils.MirrorElement(rfaDocument, mLine.Id, Plane.CreateByNormalAndOrigin(new XYZ(1, 0, 0), origin));
//}
//if (null != mLine &&
//ElementTransformUtils.CanMirrorElement(rfaDocument, mLine.Id))
//{
// ElementTransformUtils.MirrorElement(rfaDocument, mLine.Id, Plane.CreateByNormalAndOrigin(new XYZ(0, 1, 0), origin));
//}
if ( swpAngelSteel != null &&
ElementTransformUtils.CanMirrorElement(rfaDocument, swpAngelSteel.Id))
{
ElementTransformUtils.MirrorElement(rfaDocument, swpAngelSteel.Id, Plane.CreateByNormalAndOrigin(new XYZ(1, 0, 0), origin));
}
if ( swpAngelSteel != null &&
ElementTransformUtils.CanMirrorElement(rfaDocument, swpAngelSteel.Id))
{
ElementTransformUtils.MirrorElement(rfaDocument, swpAngelSteel.Id, Plane.CreateByNormalAndOrigin(new XYZ(0, 1, 0), origin));
}
// if (null != mLine &&
//ElementTransformUtils.CanMirrorElement(rfaDocument, mLine.Id))
// {
// ElementTransformUtils.MirrorElement(rfaDocument, mLine.Id, Plane.CreateByNormalAndOrigin(new XYZ(1, 1, 0), origin));
// }
//stLoc = new XYZ(-stLoc.X, stLoc.Y, stLoc.Z);
//edLoc = new XYZ(-stLoc.X, stLoc.Y, stLoc.Z);
//Line geomLine1 = Line.CreateBound(stLoc, edLoc);
//XYZ normal1 = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
//Plane goemPlane1 = Plane.CreateByNormalAndOrigin(normal1, stLoc);
//SketchPlane sketch1 = SketchPlane.Create(rfaDocument, goemPlane1);
//ModelLine mLine1 = rfaDocument.FamilyCreate.NewModelCurve(geomLine1, sketch1) as ModelLine;
//stLoc = new XYZ(stLoc.X, -stLoc.Y, stLoc.Z);
//edLoc = new XYZ(stLoc.X, -stLoc.Y, stLoc.Z);
//Line geomLine2 = Line.CreateBound(stLoc, edLoc);
//XYZ normal2 = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
//Plane goemPlane2 = Plane.CreateByNormalAndOrigin(normal2, stLoc);
//SketchPlane sketch2 = SketchPlane.Create(rfaDocument, goemPlane2);
//ModelLine mLine2 = rfaDocument.FamilyCreate.NewModelCurve(geomLine2, sketch2) as ModelLine;
stLoc = new XYZ(-stLoc.X, -stLoc.Y, stLoc.Z);
edLoc = new XYZ(-edLoc.X, -edLoc.Y, edLoc.Z);
//Line geomLine3 = Line.CreateBound(stLoc, edLoc);
XYZ normal3 = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
//Plane goemPlane3 = Plane.CreateByThreePoints(stLoc, edLoc, new XYZ(0, 0, 0));
//SketchPlane sketch13 = SketchPlane.Create(rfaDocument, goemPlane3);
//ModelLine mLine3 = rfaDocument.FamilyCreate.NewModelCurve(geomLine3, sketch13) as ModelLine;
//---------------------------
Curve sweepPath2 = Line.CreateBound(stLoc, edLoc) as Curve;
List<Curve> newCurves2 = new List<Curve>(); newCurves2.Clear(); newCurves2.Add(sweepPath2);
Sweep swpAngelSteel2 = null;
Sweep swpCircleSteel2 = null;
if (!l[10].Contains('Φ')
&& (l[10].Contains('L')
|| l[10].Contains('x')
|| l[10].Contains('H')
|| l[10].Contains('B')
|| l[10].Contains('S')
))
{
string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
string T = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
L = Regex.Replace(L, @"[^0-9]+", "");
T = Regex.Replace(T, @"[^0-9]+", "");
double LL = 0;
double.TryParse(L, out LL);
double TT = 0;
double.TryParse(T, out TT);
if (LL != 0 && TT != 0)
{
swpAngelSteel2 = CreateAngelSteel(rfaDocument, newCurves2, LL, TT);
}
}
//else if (l[10].Contains('Φ'))
//{
// string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
// string T = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
// L = Regex.Replace(L, @"[^0-9]+", "");
// T = Regex.Replace(T, @"[^0-9]+", "");
// double LL = 0;
// double.TryParse(L, out LL);
// double TT = 0;
// double.TryParse(T, out TT);
// if (LL != 0 && TT != 0)
// swpCircleSteel2 = CreateCircleSteel(rfaDocument, newCurves, LL, TT);
//}
//---------------------------
}
}
// createModelLine.Commit();
// MessageBox.Show("!!!!! " + k.ToString());
}
#endregion
}
catch (Exception ex)
{
// MessageBox.Show("3 create:\n" + ex.ToString());
continue;
}
}
#region old code
//int kc = 0;
//string strr = null;
//foreach (var line in mylFileContent)
//{
// //if (k > 153)
// //{
// // break;
// //}
// k++;
// try
// {
// #region create angelsteel 生成角钢路径 以及角钢
// string[] l = line.Split(new char[] { ' ', '-' }, StringSplitOptions.RemoveEmptyEntries);
// if (l.Length >= 14)
// {
// //Transaction createModelLine = new Transaction(rfaDocument, "createModelLine");
// //createModelLine.Start();
// if (l[3] == "0" || l[3] == "1" || l[3] == "2" || l[3] == "3" || l[3] == "4")
// {
// NodeModel stNode = nodeModelsAll.Where(e => e.nodeID == Convert.ToInt32(l[0])).FirstOrDefault();
// NodeModel edNode = nodeModelsAll.Where(e => e.nodeID == Convert.ToInt32(l[1])).FirstOrDefault();
// if (l[3] == "0" && stNode != null && edNode != null)
// {
// //XYZ stLoc = nodeModelsAll.Where(e => e.nodeID == Convert.ToInt32(l[0])).FirstOrDefault().nodeLoc;
// //XYZ edLoc = nodeModelsAll.Where(e => e.nodeID == Convert.ToInt32(l[1])).FirstOrDefault().nodeLoc;
// //XYZ origin = XYZ.Zero;
// //Plane goemPlane = Plane.CreateByThreePoints(stLoc, edLoc, origin);
// //Line geomLine = Line.CreateBound(stLoc, edLoc);
// XYZ normal = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
// Plane goemPlane = Plane.CreateByNormalAndOrigin(normal, origin);
// //SketchPlane sketch = SketchPlane.Create(rfaDocument, goemPlane);
// //ModelLine mLine = rfaDocument.FamilyCreate.NewModelCurve(geomLine, sketch) as ModelLine;
// FilteredElementCollector nodeCubeCollector = new FilteredElementCollector(rfaDocument);
// FamilyInstance stNodeFamilyInstance =
// nodeCubeCollector.WherePasses(new ElementClassFilter(typeof(FamilyInstance)))
// .Cast<FamilyInstance>()
// .Where(g => g.LookupParameter("nodeID").AsString() == l[0])
// .ToList().FirstOrDefault();
// FamilyInstance edNodeFamilyInstance =
// nodeCubeCollector.WherePasses(new ElementClassFilter(typeof(FamilyInstance)))
// .Cast<FamilyInstance>()
// .Where(g => g.LookupParameter("nodeID").AsString() == l[1])
// .ToList().FirstOrDefault();
// if (stNodeFamilyInstance ==null || edNodeFamilyInstance==null)
// {
// kc++; /*strr+= stNodeFamilyInstance.LookupParameter("nodeID").AsString()*/
// }
// XYZ stNodeLoc = (stNodeFamilyInstance.Location as LocationPoint).Point;
// XYZ edNodeLoc = (edNodeFamilyInstance.Location as LocationPoint).Point;
// Curve sweepPath = Line.CreateBound(stNodeLoc, edNodeLoc) as Curve;
// //---------------------------
// Sweep swpAngelSteel = null;
// List<Curve> newCurves = new List<Curve>(); newCurves.Clear(); newCurves.Add(sweepPath);
// if (!l[10].Contains('Φ')
// && (l[10].Contains('L')
// || l[10].Contains('x')
// || l[10].Contains('H')
// || l[10].Contains('B')
// || l[10].Contains('S')
// ))
// {
// string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
// string T = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
// L = Regex.Replace(L, @"[^0-9]+", "");
// T = Regex.Replace(T, @"[^0-9]+", "");
// double LL = 0;
// double.TryParse(L, out LL);
// double TT = 0;
// double.TryParse(T, out TT);
// if (LL != 0 && TT != 0)
// swpAngelSteel = CreateAngelSteel(rfaDocument, newCurves, LL, TT);
// }
// //---------------------------
// }
// else if (l[3] == "1" && stNode != null && edNode != null)
// {
// //XYZ stLoc = nodeModelsAll.Where(e => e.nodeID == Convert.ToInt32(l[0])).FirstOrDefault().nodeLoc;
// //XYZ edLoc = nodeModelsAll.Where(e => e.nodeID == Convert.ToInt32(l[1])).FirstOrDefault().nodeLoc;
// //XYZ origin = XYZ.Zero;
// //Plane goemPlane = Plane.CreateByThreePoints(stLoc, edLoc, origin);
// //Line geomLine = Line.CreateBound(stLoc, edLoc);
// XYZ normal = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
// Plane goemPlane = Plane.CreateByNormalAndOrigin(normal, origin);
// //SketchPlane sketch = SketchPlane.Create(rfaDocument, goemPlane);
// //ModelLine mLine = rfaDocument.FamilyCreate.NewModelCurve(geomLine, sketch) as ModelLine;
// XYZ origin = XYZ.Zero;
// FilteredElementCollector nodeCubeCollector = new FilteredElementCollector(rfaDocument);
// FamilyInstance stNodeFamilyInstance =
// nodeCubeCollector.WherePasses(new ElementClassFilter(typeof(FamilyInstance)))
// .Cast<FamilyInstance>()
// .Where(g => g.LookupParameter("nodeID").AsValueString() == l[0])
// .ToList().FirstOrDefault();
// FamilyInstance edNodeFamilyInstance =
// nodeCubeCollector.WherePasses(new ElementClassFilter(typeof(FamilyInstance)))
// .Cast<FamilyInstance>()
// .Where(g => g.LookupParameter("nodeID").AsValueString() == l[1])
// .ToList().FirstOrDefault();
// if (stNodeFamilyInstance == null || edNodeFamilyInstance == null)
// {
// kc++;
// }
// XYZ stNodeLoc = (stNodeFamilyInstance.Location as LocationPoint).Point;
// XYZ edNodeLoc = (edNodeFamilyInstance.Location as LocationPoint).Point;
// Curve sweepPath = Line.CreateBound(stNodeLoc, edNodeLoc) as Curve;
// //---------------------------
// Sweep swpAngelSteel = null;
// List<Curve> newCurves = new List<Curve>(); newCurves.Clear(); newCurves.Add(sweepPath);
// if (!l[10].Contains('Φ')
// && (l[10].Contains('L')
// || l[10].Contains('x')
// || l[10].Contains('H')
// || l[10].Contains('B')
// || l[10].Contains('S')
// ))
// {
// string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
// string T = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
// // MessageBox.Show(L + "\n" + T);
// L = Regex.Replace(L, @"[^0-9]+", "");
// T = Regex.Replace(T, @"[^0-9]+", "");
// double LL = 0;
// double.TryParse(L, out LL);
// double TT = 0;
// double.TryParse(T, out TT);
// if (LL != 0 && TT != 0)
// swpAngelSteel = CreateAngelSteel(rfaDocument, newCurves, LL, TT);
// }
// //---------------------------
// if ( swpAngelSteel != null &&
// ElementTransformUtils.CanMirrorElement(rfaDocument, swpAngelSteel.Id))
// {
// ElementTransformUtils.MirrorElement(rfaDocument, swpAngelSteel.Id, Plane.CreateByNormalAndOrigin(new XYZ(1, 0, 0), origin));
// }
// //stLoc = new XYZ(-stLoc.X, stLoc.Y, stLoc.Z);
// //edLoc = new XYZ(-stLoc.X, stLoc.Y, stLoc.Z);
// //Line geomLine1 = Line.CreateBound(stLoc, edLoc);
// //XYZ normal1 = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
// //Plane goemPlane1 = Plane.CreateByNormalAndOrigin(normal1, origin);
// //SketchPlane sketch1 = SketchPlane.Create(rfaDocument, goemPlane1);
// //ModelLine mLine1 = rfaDocument.FamilyCreate.NewModelCurve(geomLine1, sketch1) as ModelLine;
// }
// else if (l[3] == "2" && stNode != null && edNode != null)
// {
// //XYZ stLoc = nodeModelsAll.Where(e => e.nodeID == Convert.ToInt32(l[0])).FirstOrDefault().nodeLoc;
// //XYZ edLoc = nodeModelsAll.Where(e => e.nodeID == Convert.ToInt32(l[1])).FirstOrDefault().nodeLoc;
// //XYZ origin = XYZ.Zero;
// //Plane goemPlane = Plane.CreateByThreePoints(stLoc, edLoc, origin);
// //Line geomLine = Line.CreateBound(stLoc, edLoc);
// XYZ normal = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
// Plane goemPlane = Plane.CreateByNormalAndOrigin(normal, stLoc);
// //SketchPlane sketch = SketchPlane.Create(rfaDocument, goemPlane);
// //ModelLine mLine = rfaDocument.FamilyCreate.NewModelCurve(geomLine, sketch) as ModelLine;
// XYZ origin = XYZ.Zero;
// FilteredElementCollector nodeCubeCollector = new FilteredElementCollector(rfaDocument);
// FamilyInstance stNodeFamilyInstance =
// nodeCubeCollector.WherePasses(new ElementClassFilter(typeof(FamilyInstance)))
// .Cast<FamilyInstance>()
// .Where(g => g.LookupParameter("nodeID").AsValueString() == l[0])
// .ToList().FirstOrDefault();
// FamilyInstance edNodeFamilyInstance =
// nodeCubeCollector.WherePasses(new ElementClassFilter(typeof(FamilyInstance)))
// .Cast<FamilyInstance>()
// .Where(g => g.LookupParameter("nodeID").AsValueString() == l[1])
// .ToList().FirstOrDefault();
// if (stNodeFamilyInstance == null || edNodeFamilyInstance == null)
// {
// kc++;
// }
// XYZ stNodeLoc = (stNodeFamilyInstance.Location as LocationPoint).Point;
// XYZ edNodeLoc = (edNodeFamilyInstance.Location as LocationPoint).Point;
// Curve sweepPath = Line.CreateBound(stNodeLoc, edNodeLoc) as Curve;
// //---------------------------
// Sweep swpAngelSteel = null;
// List<Curve> newCurves = new List<Curve>(); newCurves.Clear(); newCurves.Add(sweepPath);
// if (!l[10].Contains('Φ')
// && (l[10].Contains('L')
// || l[10].Contains('x')
// || l[10].Contains('H')
// || l[10].Contains('B')
// || l[10].Contains('S')
// ))
// {
// string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
// string T = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
// // MessageBox.Show(L + "\n" + T);
// L = Regex.Replace(L, @"[^0-9]+", "");
// T = Regex.Replace(T, @"[^0-9]+", "");
// double LL = 0;
// double.TryParse(L, out LL);
// double TT = 0;
// double.TryParse(T, out TT);
// if (LL != 0 && TT != 0)
// swpAngelSteel = CreateAngelSteel(rfaDocument, newCurves, LL, TT);
// }
// //---------------------------
// //if (null != mLine &&
// // ElementTransformUtils.CanMirrorElement(rfaDocument, mLine.Id))
// //{
// // ElementTransformUtils.MirrorElement(rfaDocument, mLine.Id, Plane.CreateByNormalAndOrigin(new XYZ(0, 1, 0), origin));
// //}
// if ( swpAngelSteel != null &&
// ElementTransformUtils.CanMirrorElement(rfaDocument, swpAngelSteel.Id))
// {
// ElementTransformUtils.MirrorElement(rfaDocument, swpAngelSteel.Id, Plane.CreateByNormalAndOrigin(new XYZ(1, 0, 0), origin));
// }
// //stLoc = new XYZ(stLoc.X, -stLoc.Y, stLoc.Z);
// //edLoc = new XYZ(stLoc.X, -stLoc.Y, stLoc.Z);
// //Line geomLine1 = Line.CreateBound(stLoc, edLoc);
// //XYZ normal1 = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
// //Plane goemPlane1 = Plane.CreateByNormalAndOrigin(normal1, stLoc);
// //SketchPlane sketch1 = SketchPlane.Create(rfaDocument, goemPlane1);
// //ModelLine mLine1 = rfaDocument.FamilyCreate.NewModelCurve(geomLine1, sketch1) as ModelLine;
// }
// else if (l[3] == "3" && stNode != null && edNode != null)
// {
// //XYZ stLoc = nodeModelsAll.Where(e => e.nodeID == Convert.ToInt32(l[0])).FirstOrDefault().nodeLoc;
// //XYZ edLoc = nodeModelsAll.Where(e => e.nodeID == Convert.ToInt32(l[1])).FirstOrDefault().nodeLoc;
// //XYZ origin = XYZ.Zero;
// //Plane goemPlane = Plane.CreateByThreePoints(stLoc, edLoc, origin);
// //Line geomLine = Line.CreateBound(stLoc, edLoc);
// XYZ normal = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
// Plane goemPlane = Plane.CreateByNormalAndOrigin(normal, stLoc);
// //SketchPlane sketch = SketchPlane.Create(rfaDocument, goemPlane);
// //ModelLine mLine = rfaDocument.FamilyCreate.NewModelCurve(geomLine, sketch) as ModelLine;
// XYZ origin = XYZ.Zero;
// FilteredElementCollector nodeCubeCollector = new FilteredElementCollector(rfaDocument);
// FamilyInstance stNodeFamilyInstance =
// nodeCubeCollector.WherePasses(new ElementClassFilter(typeof(FamilyInstance)))
// .Cast<FamilyInstance>()
// .Where(g => g.LookupParameter("nodeID").AsValueString() == l[0])
// .ToList().FirstOrDefault();
// FamilyInstance edNodeFamilyInstance =
// nodeCubeCollector.WherePasses(new ElementClassFilter(typeof(FamilyInstance)))
// .Cast<FamilyInstance>()
// .Where(g => g.LookupParameter("nodeID").AsValueString() == l[1])
// .ToList().FirstOrDefault();
// if (stNodeFamilyInstance == null || edNodeFamilyInstance == null)
// {
// kc++;
// }
// XYZ stNodeLoc = (stNodeFamilyInstance.Location as LocationPoint).Point;
// XYZ edNodeLoc = (edNodeFamilyInstance.Location as LocationPoint).Point;
// Curve sweepPath = Line.CreateBound(stNodeLoc, edNodeLoc) as Curve;
// //---------------------------
// Sweep swpAngelSteel = null;
// List<Curve> newCurves = new List<Curve>(); newCurves.Clear(); newCurves.Add(sweepPath);
// if (!l[10].Contains('Φ')
// && (l[10].Contains('L')
// || l[10].Contains('x')
// || l[10].Contains('H')
// || l[10].Contains('B')
// || l[10].Contains('S')
// ))
// {
// string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
// string T = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
// L = Regex.Replace(L, @"[^0-9]+", "");
// T = Regex.Replace(T, @"[^0-9]+", "");
// double LL = 0;
// double.TryParse(L, out LL);
// double TT = 0;
// double.TryParse(T, out TT);
// if (LL != 0 && TT != 0)
// swpAngelSteel = CreateAngelSteel(rfaDocument, newCurves, LL, TT);
// }
// //---------------------------
// // if (null != mLine &&
// //ElementTransformUtils.CanMirrorElement(rfaDocument, mLine.Id))
// // {
// // ElementTransformUtils.MirrorElement(rfaDocument, mLine.Id, Plane.CreateByNormalAndOrigin(new XYZ(1, 1, 0), origin));
// // }
// stNodeLoc = new XYZ(-stNodeLoc.X, -stNodeLoc.Y, stNodeLoc.Z);
// edNodeLoc = new XYZ(-edNodeLoc.X, -edNodeLoc.Y, edNodeLoc.Z);
// //Line geomLine1 = Line.CreateBound(stNodeLoc, edNodeLoc);
// //Plane goemPlane1 = Plane.CreateByThreePoints(stNodeLoc, edNodeLoc, origin);
// //XYZ normal1 = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
// //Plane goemPlane1 = Plane.CreateByNormalAndOrigin(normal1, stLoc);
// //SketchPlane sketch1 = SketchPlane.Create(rfaDocument, goemPlane1);
// //ModelLine mLine1 = rfaDocument.FamilyCreate.NewModelCurve(geomLine1, sketch1) as ModelLine;
// Curve sweepPath2 = Line.CreateBound(stNodeLoc, edNodeLoc) as Curve;
// //---------------------------
// Sweep swpAngelSteel2 = null;
// List<Curve> newCurves2 = new List<Curve>(); newCurves.Clear(); newCurves2.Add(sweepPath2);
// if (!l[10].Contains('Φ')
// && (l[10].Contains('L')
// || l[10].Contains('x')
// || l[10].Contains('H')
// || l[10].Contains('B')
// || l[10].Contains('S')
// ))
// {
// string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
// string T = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
// // MessageBox.Show(L + "\n" + T);
// L = Regex.Replace(L, @"[^0-9]+", "");
// T = Regex.Replace(T, @"[^0-9]+", "");
// double LL = 0;
// double.TryParse(L, out LL);
// double TT = 0;
// double.TryParse(T, out TT);
// if (LL != 0 && TT != 0)
// swpAngelSteel2 = CreateAngelSteel(rfaDocument, newCurves2, LL, TT);
// }
// //---------------------------
// }
// else if (l[3] == "4" && stNode != null && edNode != null)
// {
// //XYZ stLoc = nodeModelsAll.Where(e => e.nodeID == Convert.ToInt32(l[0])).FirstOrDefault().nodeLoc;
// //XYZ edLoc = nodeModelsAll.Where(e => e.nodeID == Convert.ToInt32(l[1])).FirstOrDefault().nodeLoc;
// //XYZ origin = XYZ.Zero;
// //Plane goemPlane = Plane.CreateByThreePoints(stLoc, edLoc, origin);
// //Line geomLine = Line.CreateBound(stLoc, edLoc);
// XYZ normal = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
// Plane goemPlane = Plane.CreateByNormalAndOrigin(normal, stLoc);
// //SketchPlane sketch = SketchPlane.Create(rfaDocument, goemPlane);
// //ModelLine mLine = rfaDocument.FamilyCreate.NewModelCurve(geomLine, sketch) as ModelLine;
// XYZ origin = XYZ.Zero;
// FilteredElementCollector nodeCubeCollector = new FilteredElementCollector(rfaDocument);
// FamilyInstance stNodeFamilyInstance =
// nodeCubeCollector.WherePasses(new ElementClassFilter(typeof(FamilyInstance)))
// .Cast<FamilyInstance>()
// .Where(g => g.LookupParameter("nodeID").AsValueString() == l[0])
// .ToList().FirstOrDefault();
// FamilyInstance edNodeFamilyInstance =
// nodeCubeCollector.WherePasses(new ElementClassFilter(typeof(FamilyInstance)))
// .Cast<FamilyInstance>()
// .Where(g => g.LookupParameter("nodeID").AsValueString() == l[1])
// .ToList().FirstOrDefault();
// if (stNodeFamilyInstance == null || edNodeFamilyInstance == null)
// {
// kc++;
// }
// XYZ stNodeLoc = (stNodeFamilyInstance.Location as LocationPoint).Point;
// XYZ edNodeLoc = (edNodeFamilyInstance.Location as LocationPoint).Point;
// Curve sweepPath = Line.CreateBound(stNodeLoc, edNodeLoc) as Curve;
// //---------------------------
// Sweep swpAngelSteel = null;
// List<Curve> newCurves = new List<Curve>(); newCurves.Clear(); newCurves.Add(sweepPath);
// if (!l[10].Contains('Φ')
// && (l[10].Contains('L')
// || l[10].Contains('x')
// || l[10].Contains('H')
// || l[10].Contains('B')
// || l[10].Contains('S')
// ))
// {
// string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
// string T = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
// L = Regex.Replace(L, @"[^0-9]+", "");
// T = Regex.Replace(T, @"[^0-9]+", "");
// double LL = 0;
// double.TryParse(L, out LL);
// double TT = 0;
// double.TryParse(T, out TT);
// if (LL != 0 && TT != 0)
// {
// swpAngelSteel = CreateAngelSteel(rfaDocument, newCurves, LL, TT);
// }
// }
// //---------------------------
// //if (null != mLine &&
// //ElementTransformUtils.CanMirrorElement(rfaDocument, mLine.Id))
// //{
// // ElementTransformUtils.MirrorElement(rfaDocument, mLine.Id, Plane.CreateByNormalAndOrigin(new XYZ(1, 0, 0), origin));
// //}
// //if (null != mLine &&
// //ElementTransformUtils.CanMirrorElement(rfaDocument, mLine.Id))
// //{
// // ElementTransformUtils.MirrorElement(rfaDocument, mLine.Id, Plane.CreateByNormalAndOrigin(new XYZ(0, 1, 0), origin));
// //}
// if ( swpAngelSteel != null &&
// ElementTransformUtils.CanMirrorElement(rfaDocument, swpAngelSteel.Id))
// {
// ElementTransformUtils.MirrorElement(rfaDocument, swpAngelSteel.Id, Plane.CreateByNormalAndOrigin(new XYZ(1, 0, 0), origin));
// }
// if ( swpAngelSteel != null &&
// ElementTransformUtils.CanMirrorElement(rfaDocument, swpAngelSteel.Id))
// {
// ElementTransformUtils.MirrorElement(rfaDocument, swpAngelSteel.Id, Plane.CreateByNormalAndOrigin(new XYZ(0, 1, 0), origin));
// }
// // if (null != mLine &&
// //ElementTransformUtils.CanMirrorElement(rfaDocument, mLine.Id))
// // {
// // ElementTransformUtils.MirrorElement(rfaDocument, mLine.Id, Plane.CreateByNormalAndOrigin(new XYZ(1, 1, 0), origin));
// // }
// //stLoc = new XYZ(-stLoc.X, stLoc.Y, stLoc.Z);
// //edLoc = new XYZ(-stLoc.X, stLoc.Y, stLoc.Z);
// //Line geomLine1 = Line.CreateBound(stLoc, edLoc);
// //XYZ normal1 = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
// //Plane goemPlane1 = Plane.CreateByNormalAndOrigin(normal1, stLoc);
// //SketchPlane sketch1 = SketchPlane.Create(rfaDocument, goemPlane1);
// //ModelLine mLine1 = rfaDocument.FamilyCreate.NewModelCurve(geomLine1, sketch1) as ModelLine;
// //stLoc = new XYZ(stLoc.X, -stLoc.Y, stLoc.Z);
// //edLoc = new XYZ(stLoc.X, -stLoc.Y, stLoc.Z);
// //Line geomLine2 = Line.CreateBound(stLoc, edLoc);
// //XYZ normal2 = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
// //Plane goemPlane2 = Plane.CreateByNormalAndOrigin(normal2, stLoc);
// //SketchPlane sketch2 = SketchPlane.Create(rfaDocument, goemPlane2);
// //ModelLine mLine2 = rfaDocument.FamilyCreate.NewModelCurve(geomLine2, sketch2) as ModelLine;
// stNodeLoc = new XYZ(-stNodeLoc.X, -stNodeLoc.Y, stNodeLoc.Z);
// edNodeLoc = new XYZ(-edNodeLoc.X, -edNodeLoc.Y, edNodeLoc.Z);
// //Line geomLine3 = Line.CreateBound(stNodeLoc, edNodeLoc);
// //XYZ normal3 = FaXiangLiang(stLoc.X, stLoc.Y, stLoc.Z, edLoc.X, edLoc.Y, edLoc.Z, 0, 0, 0);
// //Plane goemPlane3 = Plane.CreateByThreePoints(stNodeLoc, edNodeLoc, new XYZ(0, 0, 0));
// //SketchPlane sketch13 = SketchPlane.Create(rfaDocument, goemPlane3);
// //ModelLine mLine3 = rfaDocument.FamilyCreate.NewModelCurve(geomLine3, sketch13) as ModelLine;
// Curve sweepPath3 = Line.CreateBound(stNodeLoc, edNodeLoc) as Curve;
// //---------------------------
// //---------------------------
// Sweep swpAngelSteel2 = null;
// List<Curve> newCurves2 = new List<Curve>(); newCurves.Clear(); newCurves2.Add(sweepPath3);
// if (!l[10].Contains('Φ')
// && (l[10].Contains('L')
// || l[10].Contains('x')
// || l[10].Contains('H')
// || l[10].Contains('B')
// || l[10].Contains('S')
// ))
// {
// string L = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[0];
// string T = l[10].Split(new char[] { 'L', 'x', 'H', 'B', 'S', 'Φ' }, StringSplitOptions.RemoveEmptyEntries)[1];
// L = Regex.Replace(L, @"[^0-9]+", "");
// T = Regex.Replace(T, @"[^0-9]+", "");
// double LL = 0;
// double.TryParse(L, out LL);
// double TT = 0;
// double.TryParse(T, out TT);
// if (LL != 0 && TT != 0)
// {
// swpAngelSteel2 = CreateAngelSteel(rfaDocument, newCurves2, LL, TT);
// }
// }
// //---------------------------
// }
// }
// // createModelLine.Commit();
// // MessageBox.Show("!!!!! " + k.ToString());
// }
// #endregion
// }
// catch (Exception ex)
// {
// // MessageBox.Show("3 create:\n" + ex.ToString());
// continue;
// }
//}
CreateAngelSteel(rfaDocument,);
#endregion
newSweep.Commit();
//MessageBox.Show("缺失角钢数量 : "+kc.ToString());
//----------------------------------------------------------------------------------------------------------------
// MessageBox.Show(DateTime.UtcNow.ToString());
MessageBox.Show("保存中。。。");
Transaction saveTower = new Transaction(doc, "saveTower");
saveTower.Start();
rfaDocument.SaveAs(Path.GetDirectoryName(mylFilePath) + "\\" + mylFileName +DateTime.UtcNow.ToString().Replace(":","_")+ ".rfa");
rfaDocument.Close();
saveTower.Commit();
//StreamReader sr = new StreamReader(mylFilePath, Encoding.Default);
// string line = sr.ReadLine();
// sr.Close();
-----------------------------------------------//
//Transaction ddd = new Transaction(rfaDocument, "createModelLine1");
//ddd.Start();
//Line geomLine30 = Line.CreateBound(new XYZ(24, 234, 41), new XYZ(21, 98, 443));
//XYZ normal30 = FaXiangLiang(24, 234, 41, 21, 98, 443, 0, 0, 0);
Plane goemPlane30 = rfaDocument.Application.Create.NewPlane(normal30, XYZ.Zero);
//Plane goemPlane30 = Plane.CreateByNormalAndOrigin(normal30, XYZ.Zero);
//SketchPlane sketch130 = SketchPlane.Create(rfaDocument, goemPlane30);
//ModelLine mLine30 = rfaDocument.FamilyCreate.NewModelCurve(geomLine30, sketch130) as ModelLine;
//ddd.Commit();
-----------------------------------------------//
return Result.Succeeded;
throw new NotImplementedException();
}
public XYZ FaXiangLiang(double Px1, double Py1, double Pz1,
double Px2, double Py2, double Pz2, double Px3, double Py3, double Pz3)
{
//double[] newJiaoPoint = new double[3];
平面方程Ax+BY+CZ+d=0 行列式计算
//double A = Py1 * Pz2 + Py2 * Pz3 + Py3 * Pz1 - Py1 * Pz3 - Py2 * Pz1 - Py3 * Pz2;
//double B = -(Px1 * Pz2 + Px2 * Pz3 + Px3 * Pz1 - Px3 * Pz2 - Px2 * Pz1 - Px1 * Pz3);
//double C = Px1 * Py2 + Px2 * Py3 + Px3 * Py1 - Px1 * Py3 - Px2 * Py1 - Px3 * Py2;
//double D = -(Px1 * Py2 * Pz3 + Px2 * Py3 * Pz1 + Px3 * Py1 * Pz2 - Px1 * Py3 * Pz2 - Px2 * Py1 * Pz3 - Px3 * Py2 * Pz1);
//double E = Math.Sqrt(A * A + B * B + C * C);
//newJiaoPoint[0] = A / E;
//newJiaoPoint[1] = B / E;
//newJiaoPoint[2] = C / E;
//XYZ xyz = new XYZ(newJiaoPoint[0], newJiaoPoint[2], newJiaoPoint[3]);
return (newJiaoPoint);
//return xyz;
Vector3D vector1 = new Vector3D(Px1, Py1, Pz1);//向量1=
Vector3D vector2 = new Vector3D(Px2, Py2, Pz2);//向量2=
Vector3D crossProduct = new Vector3D();//叉积结果
crossProduct = Vector3D.CrossProduct(vector1, vector2);//计算向量1×向量2
XYZ xyz = new XYZ(crossProduct.X, crossProduct.Y, crossProduct.Z);
return xyz;
}
/// <summary>
///
/// </summary>
/// <param name="rfaDocument">族文件</param>
/// <param name="allSweepPaths">放样路径</param>
/// <param name="L"></param>
/// <param name="T"></param>
/// <returns></returns>
private Sweep CreateAngelSteel(Document rfaDocument, List<Curve> allSweepPaths, double L ,double T)
{
// Document rfaDocument = commandData.Application.ActiveUIDocument.Document;
//获放样曲线
// MessageBox.Show("_-_" + allSweepPaths.Count.ToString());
FilteredElementCollector collector3 = new FilteredElementCollector(rfaDocument);
// List<Curve> allSweepPaths = new List<Curve>();
Sweep newSweep = null;
CurveArray curves = new CurveArray();
Curve p = allSweepPaths[0];
curves.Append(p);
SketchPlane sketchPlane = SketchPlane.Create(rfaDocument, Plane.CreateByThreePoints(p.GetEndPoint(1), p.GetEndPoint(0), XYZ.Zero));
// ElementTransformUtils.RotateElement(rfaDocument, sketchPlane.Id, p as Line, Math.PI *3/4);
newSweep = CreateSweep(rfaDocument, sketchPlane, curves, L / 304.8, T / 304.8);
//allSweepPaths =
// collector3.WherePasses(new ElementClassFilter(typeof(CurveElement)))
// .Cast<CurveElement>()
// .Select(g => g.GeometryCurve)
// .ToList();
//MessageBox.Show("____"+allSweepPaths.Count.ToString());
//
//for (int i = 0; i < allSweepPaths.Count; i++)
//{
// CurveArray curves = new CurveArray();
// Curve p = allSweepPaths[i];
// curves.Append(p);
// SketchPlane sketchPlane = SketchPlane.Create(rfaDocument, Plane.CreateByThreePoints(p.GetEndPoint(1), p.GetEndPoint(0), XYZ.Zero));
// // ElementTransformUtils.RotateElement(rfaDocument, sketchPlane.Id, p as Line, Math.PI *3/4);
// newSweep = CreateSweep(rfaDocument, sketchPlane, curves,L / 304.8, T / 304.8);
//}
return newSweep;
}
private Sweep CreateSweep(Document document, SketchPlane sketchPlane, CurveArray curves, double L, double T)
{
Sweep sweep = null;
// make sure we have a family document
if (true == document.IsFamilyDocument)
{
// Define a profile for the sweep
CurveArrArray arrarr = new CurveArrArray();
CurveArray arr = new CurveArray();
// Create an ovoid profile
XYZ pnt1 = new XYZ(0, 0, 0);
XYZ pnt2 = new XYZ(L, 0, 0);
XYZ pnt3 = new XYZ(L, T, 0);
XYZ pnt4 = new XYZ(T, T, 0);
XYZ pnt5 = new XYZ(T, L, 0);
XYZ pnt6 = new XYZ(0, L, 0);
// arr.Append(Arc.Create(pnt2, 0.05d, 0.0d, 360.0d, XYZ.BasisX, XYZ.BasisY));
//arr.Append(Arc.Create(pnt1, pnt3, pnt2));
arr.Append(Line.CreateBound(pnt1, pnt2));
arr.Append(Line.CreateBound(pnt2, pnt3));
arr.Append(Line.CreateBound(pnt3, pnt4));
arr.Append(Line.CreateBound(pnt4, pnt5));
arr.Append(Line.CreateBound(pnt5, pnt6));
arr.Append(Line.CreateBound(pnt6, pnt1));
arrarr.Append(arr);
SweepProfile profile = document.Application.Create.NewCurveLoopsProfile(arrarr);
// create a solid ovoid sweep
sweep = document.FamilyCreate.NewSweep(true, curves, sketchPlane, profile, 0, ProfilePlaneLocation.Start);
if (null != sweep)
{
// move to proper place
XYZ transPoint1 = new XYZ(0, 0, 0);
ElementTransformUtils.MoveElement(document, sweep.Id, transPoint1);
}
else
{
throw new Exception("Failed to create a new Sweep.");
}
}
else
{
throw new Exception("Please open a Family document before invoking this command.");
}
return sweep;
}
private Sweep CreateCircleSteel(Document rfaDocument, List<Curve> allSweepPaths, double L, double T)
{
// Document rfaDocument = commandData.Application.ActiveUIDocument.Document;
//获放样曲线
// MessageBox.Show("_-_" + allSweepPaths.Count.ToString());
FilteredElementCollector collector3 = new FilteredElementCollector(rfaDocument);
// List<Curve> allSweepPaths = new List<Curve>();
Sweep newSweep = null;
CurveArray curves = new CurveArray();
Curve p = allSweepPaths[0];
curves.Append(p);
SketchPlane sketchPlane = SketchPlane.Create(rfaDocument, Plane.CreateByThreePoints(p.GetEndPoint(1), p.GetEndPoint(0), XYZ.Zero));
// ElementTransformUtils.RotateElement(rfaDocument, sketchPlane.Id, p as Line, Math.PI *3/4);
newSweep = CreateSweep(rfaDocument, sketchPlane, curves, L / 304.8, T / 304.8);
return newSweep;
}
private Sweep CreateCircleSweep(Document document, SketchPlane sketchPlane, CurveArray curves, double L, double T)
{
Sweep sweep = null;
// make sure we have a family document
if (true == document.IsFamilyDocument)
{
// Define a profile for the sweep
CurveArrArray arrarr = new CurveArrArray();
CurveArray arr = new CurveArray();
// Create an ovoid profile
//XYZ pnt1 = new XYZ(0, 0, 0);
//XYZ pnt2 = new XYZ(L, 0, 0);
//XYZ pnt3 = new XYZ(L, T, 0);
//XYZ pnt4 = new XYZ(T, T, 0);
//XYZ pnt5 = new XYZ(T, L, 0);
//XYZ pnt6 = new XYZ(0, L, 0);
// arr.Append(Arc.Create(pnt2, 0.05d, 0.0d, 360.0d, XYZ.BasisX, XYZ.BasisY));
//arr.Append(Arc.Create(pnt1, pnt3, pnt2));
//arr.Append(Line.CreateBound(pnt1, pnt2));
//arr.Append(Line.CreateBound(pnt2, pnt3));
//arr.Append(Line.CreateBound(pnt3, pnt4));
//arr.Append(Line.CreateBound(pnt4, pnt5));
//arr.Append(Line.CreateBound(pnt5, pnt6));
//arr.Append(Line.CreateBound(pnt6, pnt1));
arr.Append(Arc.Create( XYZ.Zero,L/2 ,0.0d,360.0d,XYZ.BasisX, XYZ.BasisY));
arrarr.Append(arr);
SweepProfile profile = document.Application.Create.NewCurveLoopsProfile(arrarr);
// create a solid ovoid sweep
sweep = document.FamilyCreate.NewSweep(true, curves, sketchPlane, profile, 0, ProfilePlaneLocation.Start);
if (null != sweep)
{
// move to proper place
XYZ transPoint1 = new XYZ(0, 0, 0);
ElementTransformUtils.MoveElement(document, sweep.Id, transPoint1);
}
else
{
throw new Exception("Failed to create a new Sweep.");
}
}
else
{
throw new Exception("Please open a Family document before invoking this command.");
}
return sweep;
}
}
}