更新
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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("")]
|
||||
|
||||
BIN
RookieStation/Resources/YTX.ico
Normal file
BIN
RookieStation/Resources/YTX.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
@@ -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>
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user