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; GeometryInstance geometryInstance = geomObj as GeometryInstance;
if (geometryInstance != null) if (geometryInstance != null)
{ {
foreach (var instObj in geometryInstance.GetInstanceGeometry()) foreach (var instObj in geometryInstance.GetSymbolGeometry())
{ {
Curve curve = instObj as Curve; Curve curve = instObj as Curve;
if (curve == null) 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(); CurveArrArray arrArray = new CurveArrArray();
CurveArray array = new CurveArray(); 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")) SearchCurveConnected(curves, curves.FirstOrDefault(), array, arrArray);
{ //do
try
{
trans.Start();
//foreach (var item in curves)
//{ //{
//} // Curve baseCurve = curves.Last();
//doc.FamilyCreate.NewModelCurve() // var tempEndXyz = baseCurve.GetEndPoint(1);
// array.Clear();
// array.Append(baseCurve);
// curves.Remove(baseCurve);
// 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)); SketchPlane plane = SketchPlane.Create(doc, Plane.CreateByNormalAndOrigin(XYZ.BasisZ, XYZ.Zero));
foreach (CurveArray arr in arrArray) foreach (CurveArray arr in arrArray)
{ {
doc.FamilyCreate.NewModelCurveArray(arr, plane); 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;
} }
trans.Commit(); /// <summary>
} /// 找到所有连接在一起的线圈并分好组
catch (Exception ex) /// </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)
{ {
Log.WriteLog(ex.Message); for (int i = 0; i < curves.Count; i++)
if (trans.GetStatus() == TransactionStatus.Started)
{ {
trans.RollBack(); 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;
} }
return Result.Cancelled; 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)
{
curveArrArray.Append(initCurveArray);
}
return;
} }
} }
return Result.Succeeded;
} }
} }
} }

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

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

View File

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