diff --git a/RookieStation/CmdLogoExtrusion.cs b/RookieStation/CmdLogoExtrusion.cs index b18a90c..7afc808 100644 --- a/RookieStation/CmdLogoExtrusion.cs +++ b/RookieStation/CmdLogoExtrusion.cs @@ -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; + } + + /// + /// 找到所有连接在一起的线圈并分好组 + /// + /// 所有线 + /// 用于查找与其连接的初始线 + /// 初始的线串 + /// 所有线串的集合 + private void SearchCurveConnected(List 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; } } } \ No newline at end of file diff --git a/RookieStation/Properties/AssemblyInfo.cs b/RookieStation/Properties/AssemblyInfo.cs index f10f907..c064fa0 100644 --- a/RookieStation/Properties/AssemblyInfo.cs +++ b/RookieStation/Properties/AssemblyInfo.cs @@ -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("")] diff --git a/RookieStation/Resources/YTX.ico b/RookieStation/Resources/YTX.ico new file mode 100644 index 0000000..0a0e25b Binary files /dev/null and b/RookieStation/Resources/YTX.ico differ diff --git a/RookieStation/RookieStation.csproj b/RookieStation/RookieStation.csproj index 1a56ca5..2c4de99 100644 --- a/RookieStation/RookieStation.csproj +++ b/RookieStation/RookieStation.csproj @@ -33,6 +33,9 @@ 4 x64 + + Resources\YTX.ico + ..\packages\Revit_API_x64.2020.0.0\lib\NET470\AdWindows.dll @@ -327,6 +330,7 @@ + Always diff --git a/RookieStationSetup/RookieStationSetup.vdproj b/RookieStationSetup/RookieStationSetup.vdproj index 4def3df..8fb3440 100644 --- a/RookieStationSetup/RookieStationSetup.vdproj +++ b/RookieStationSetup/RookieStationSetup.vdproj @@ -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"