Code: Select all
OS: Ubuntu 20.04 LTS (Regolith:GNOME-Flashback:GNOME/regolith) Word size of OS: 64-bit Word size of FreeCAD: 64-bit Version: 0.19.21300 +2313 (Git) AppImage Build type: Release Branch: LinkStage3 Hash: 0f809d2f8f3b8603c0310ffcfb13869710a0ec48 Python version: 3.7.6 Qt version: 5.12.1 Coin version: 4.0.0 OCC version: 7.4.0 Locale: French/France (fr_FR)
Code: Select all
Traceback (most recent call last): File "/home/nic/.FreeCAD/Mod/Curves/gordonFP.py", line 135, in execute obj.Shape = gordon.surface().toShape() File "/home/nic/.FreeCAD/Mod/Curves/gordon.py", line 313, in surface self.perform() File "/home/nic/.FreeCAD/Mod/Curves/gordon.py", line 287, in perform self.gordon_surf = builder.surface_gordon() File "/home/nic/.FreeCAD/Mod/Curves/gordon.py", line 100, in surface_gordon self.perform() File "/home/nic/.FreeCAD/Mod/Curves/gordon.py", line 97, in perform self.create_gordon_surface() #self.profiles, self.guides, self.intersectionParamsU, self.intersectionParamsV) File "/home/nic/.FreeCAD/Mod/Curves/gordon.py", line 167, in create_gordon_surface surfProfiles = bsa.curvesToSurface(self.profiles, self.intersectionParamsV, makeVClosed) File "/home/nic/.FreeCAD/Mod/Curves/BSplineAlgorithms.py", line 312, in curvesToSurface interpPointsVDir[cpVIdx] = compatSplines[cpVIdx].getPole(cpUIdx+1) <class 'Part.OCCError'>: Pole index out of range Recompute failed! Please check report view.
Thanks Hammax. I thought double sets were allowed! I'll check that. For the frames, their location are known from existing cross sections, which are not equally spaced, unfortunatelyhammax wrote: ↑Wed Jun 03, 2020 2:38 pm… you have a double set of rails : rails_top-bottom. => Separate them.
Also your frames are not so clear and self explaining - and their distance is "irregular".
Missing frames BB, CC, DD ?
Try the same procedure with the frames in a loft and you'll see the problem.
Thanks to confirm! I managed to solve it by reworking the last two frames sketches (FF and GG). I still don't know what was the problem.Chris_G wrote: ↑Wed Jun 03, 2020 8:44 pmHi,
Mixing rails and profiles inside a single object is forbidden.
But having a single object representing several rails, or several profiles, shouldn't make any problem.
The file doesn't look bad at first sight. I don't know yet where the bug comes from ...
yes, strange. but the loft looks good.
Code: Select all
def helix_on_face(face, turns=1.0, wire_output=True): """ Create an helix shape on a periodic face. helix_shape = helix_on_face(face, turns=1.0, wire_output=True) If wire_output is False, helix_shape will be a single edge. However, for a high number of turns, OCCT may fail and return some weird result. If wire_output is True, helix_shape will be a wire made of single turn edges. """ u0,u1,v0,v1 = face.ParameterRange if face.Surface.isUPeriodic(): ls = Part.Geom2d.Line2dSegment(FreeCAD.Base.Vector2d(u0, v0), FreeCAD.Base.Vector2d(u0 + ((u1-u0) * turns), v1)) elif face.Surface.isVPeriodic(): ls = Part.Geom2d.Line2dSegment(FreeCAD.Base.Vector2d(u0, v0), FreeCAD.Base.Vector2d(u1, v0 + ((v1-v0) * turns))) else: print("Error: Face is not periodic") return None if not wire_output: return ls.toShape(face.Surface) pts = ls.discretize(Distance=ls.length()/turns) edges =  for i in range(len(pts)-1): edges.append(Part.Geom2d.Line2dSegment(pts[i], pts[i+1]).toShape(face.Surface)) return Part.Wire(edges)