This commit is contained in:
GG Z
2021-06-22 19:15:17 +08:00
parent 22d84126bc
commit 49f7cbddc0
5 changed files with 100 additions and 64 deletions

View File

@@ -30,7 +30,7 @@ namespace RookieStation
GeometryInstance geometryInstance = geomObj as GeometryInstance;
if (geometryInstance != null)
{
foreach (var instObj in geometryInstance.GetInstanceGeometry())
foreach (var instObj in geometryInstance.GetSymbolGeometry())
{
Curve curve = instObj as Curve;
if (curve == null)
@@ -41,71 +41,103 @@ namespace RookieStation
}
}
}
//doc.Invoke(ts =>
//{
// foreach (var curve in curves)
// {
// SketchPlane plane = SketchPlane.Create(doc, Plane.CreateByNormalAndOrigin(XYZ.BasisZ, XYZ.Zero));
// doc.FamilyCreate.NewModelCurve(curve, plane);
// }
//});
CurveArrArray arrArray = new CurveArrArray();
CurveArray array = new CurveArray();
do
{
Curve curve = curves.Last();
array.Clear();
Curve tempcurve = curve;
var endxyz = tempcurve.GetEndPoint(1);
for (int j = curves.Count - 1; j >= 0; j--)
{
Curve cur = curves[j];
if (cur.Equals(tempcurve))
{
array.Append(cur);
curves.Remove(cur);
continue;
}
if (cur.GetEndPoint(0).IsAlmostEqualTo(endxyz))
{
tempcurve = cur;
endxyz = cur.GetEndPoint(1);
array.Append(cur);
curves.Remove(cur);
continue;
}
if (cur.GetEndPoint(1).IsAlmostEqualTo(endxyz))
{
tempcurve = cur;
endxyz = cur.GetEndPoint(0);
array.Append(cur);
curves.Remove(cur);
continue;
}
}
arrArray.Append(array);
} while (curves.Count > 0);
using (Transaction trans = new Transaction(doc, "cmd"))
{
try
{
trans.Start();
//foreach (var item in curves)
//{
//}
//doc.FamilyCreate.NewModelCurve()
SketchPlane plane = SketchPlane.Create(doc, Plane.CreateByNormalAndOrigin(XYZ.BasisZ, XYZ.Zero));
foreach (CurveArray arr in arrArray)
{
doc.FamilyCreate.NewModelCurveArray(arr, plane);
}
SearchCurveConnected(curves, curves.FirstOrDefault(), array, arrArray);
//do
//{
// Curve baseCurve = curves.Last();
// var tempEndXyz = baseCurve.GetEndPoint(1);
// array.Clear();
// array.Append(baseCurve);
// curves.Remove(baseCurve);
trans.Commit();
}
catch (Exception ex)
// for (int j = curves.Count - 1; j >= 0; j--)
// {
// Curve tempCurve = curves[j];
// if (tempCurve.GetEndPoint(0).IsAlmostEqualTo(tempEndXyz))
// {
// baseCurve = tempCurve;
// tempEndXyz = tempCurve.GetEndPoint(1);
// array.Append(tempCurve);
// curves.Remove(tempCurve);
// continue;
// }
// else if (tempCurve.GetEndPoint(1).IsAlmostEqualTo(tempEndXyz))
// {
// baseCurve = tempCurve;
// tempEndXyz = tempCurve.GetEndPoint(0);
// array.Append(tempCurve);
// curves.Remove(tempCurve);
// continue;
// }
// }
// arrArray.Append(array);
//} while (curves.Count > 0);
doc.Invoke(ts =>
{
SketchPlane plane = SketchPlane.Create(doc, Plane.CreateByNormalAndOrigin(XYZ.BasisZ, XYZ.Zero));
foreach (CurveArray arr in arrArray)
{
Log.WriteLog(ex.Message);
if (trans.GetStatus() == TransactionStatus.Started)
var ml = doc.FamilyCreate.NewModelCurveArray(arr, plane);
}
//foreach (CurveArray arr in arrArray)
//{
// doc.FamilyCreate.NewExtrusion(true, arrArray, plane, 5.0 / 304.8);
// //var ml = doc.FamilyCreate.NewModelCurveArray(arr, plane);
//}
});
return Result.Succeeded;
}
/// <summary>
/// 找到所有连接在一起的线圈并分好组
/// </summary>
/// <param name="curves">所有线</param>
/// <param name="initcurve">用于查找与其连接的初始线</param>
/// <param name="initCurveArray">初始的线串</param>
/// <param name="curveArrArray">所有线串的集合</param>
private void SearchCurveConnected(List<Curve> curves, Curve initcurve, CurveArray initCurveArray, CurveArrArray curveArrArray)
{
for (int i = 0; i < curves.Count; i++)
{
Curve tempCurve = curves[i];
var baseEndXyz = initcurve.GetEndPoint(0);
if (tempCurve.GetEndPoint(0).IsAlmostEqualTo(baseEndXyz) || tempCurve.GetEndPoint(1).IsAlmostEqualTo(baseEndXyz))
{
initCurveArray.Append(tempCurve);
curves.Remove(tempCurve);
SearchCurveConnected(curves, tempCurve, initCurveArray, curveArrArray);
return;
}
else if (i == curves.Count() - 1)
{
curveArrArray.Append(initCurveArray);
//array.Clear();
initCurveArray = new CurveArray();
SearchCurveConnected(curves, curves.FirstOrDefault(), initCurveArray, curveArrArray);
////由于最后一轮运行完递归后所有线段均成串只执行上面的if内容所以没办法将剩余线加到集合中。
if (curves.Count() == 0)
{
trans.RollBack();
curveArrArray.Append(initCurveArray);
}
return Result.Cancelled;
return;
}
}
return Result.Succeeded;
}
}
}

View File

@@ -8,7 +8,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyTitle("RookieStation")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyCompany("永特新工程")]
[assembly: AssemblyProduct("RookieStation")]
[assembly: AssemblyCopyright("Copyright © 2021")]
[assembly: AssemblyTrademark("")]

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@@ -33,6 +33,9 @@
<WarningLevel>4</WarningLevel>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>Resources\YTX.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="AdWindows, Version=2018.11.1.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Revit_API_x64.2020.0.0\lib\NET470\AdWindows.dll</HintPath>
@@ -327,6 +330,7 @@
</ItemGroup>
<ItemGroup>
<Content Include="Resources\WallFinishes.png" />
<Content Include="Resources\YTX.ico" />
<None Include="Resources\WorkSchedule.png" />
<Content Include="RsLibrary\Texture\免费WiFi.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>

View File

@@ -2239,15 +2239,15 @@
{
"Name" = "8:Microsoft Visual Studio"
"ProductName" = "8:菜鸟驿站工具集"
"ProductCode" = "8:{AFF84E16-0B2D-4AA9-8FB6-270E31E03704}"
"PackageCode" = "8:{BBFE184F-070A-4A8E-9C9D-FF185BB2F5F2}"
"ProductCode" = "8:{3C7C28E4-ABFB-47B5-A2D2-1D3BE24156C2}"
"PackageCode" = "8:{EC98D320-1D7C-47B2-B3C8-9F02E7AE396A}"
"UpgradeCode" = "8:{127EC3EC-7539-468B-84EA-E1ECDD6204E6}"
"AspNetVersion" = "8:2.0.50727.0"
"RestartWWWService" = "11:FALSE"
"RemovePreviousVersions" = "11:TRUE"
"DetectNewerInstalledVersion" = "11:TRUE"
"InstallAllUsers" = "11:TRUE"
"ProductVersion" = "8:1.0.1"
"ProductVersion" = "8:1.0.2"
"Manufacturer" = "8:YTX Engineering"
"ARPHELPTELEPHONE" = "8:"
"ARPHELPLINK" = "8:"
@@ -2255,8 +2255,8 @@
"Subject" = "8:"
"ARPCONTACT" = "8:YTX Engineering"
"Keywords" = "8:"
"ARPCOMMENTS" = "8:"
"ARPURLINFOABOUT" = "8:"
"ARPCOMMENTS" = "8:永特新工程"
"ARPURLINFOABOUT" = "8:https://www.yongtexin.com/"
"ARPPRODUCTICON" = "8:"
"ARPIconIndex" = "3:0"
"SearchPath" = "8:"
@@ -2704,7 +2704,7 @@
{
"{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_FBE461B9D4BD4603919E2821D88FB7CB"
{
"SourcePath" = "8:..\\RookieStation\\obj\\Release\\RookieStation.dll"
"SourcePath" = "8:..\\RookieStation\\obj\\Debug\\RookieStation.dll"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_7C1EF99E309C4A3FB02B902F06BE7F60"