SheetMetal Biegung mit nichtparallelen Seiten

In diesem Forum Fragen und Diskussionen in Deutsch
Forum rules
Foren-Regeln und hilfreiche Informationen

WICHTIG: Bitte zuerst lesen, bevor Sie posten
wega
Posts: 255
Joined: Mon Nov 11, 2013 3:13 pm

Re: SheetMetal Biegung mit nichtparallelen Seiten

Postby wega » Wed Feb 20, 2019 11:12 am

Hallo zusammen,

ich weiß nicht, ob ich die Biegungsproblematik richtig verstanden habe.
Aber ich habe mir einmal die DXF-Datei heruntergeladen und die Geometrie
über DRAFT in denSketcher geholt,
Dort habe ich die einzelnen Sketcherdateien zu einem Sketcherfile zusammengeführt.
Den Rest kann man dann löschen.
Über PARTDESIGN habe ich ein Volumenmodell (5 mm) erzeugt.
Mit der Sketcher-WB auf der Oberfläche eine neue Sketcheranwahl getroffen und
darin dann die Biegelinie positioniert.
Die SheetMetal-WB habe ich mir nach dem Vorschlag von "https://github.com/JMG1/FreeCAD_SheetMetal"
angepaßt und mir dazu ein Icon geschaffen (siehe Pfeilmarkierung).

Ich finde den Vorschalg von Wilfried hervorragend dies die SheetMetal-WB einzubinden.

Gruß Werner
Forumsfrage-01.jpg
Forumsfrage-01.jpg (14.16 KiB) Viewed 568 times
Forumsfrage-02.jpg
Forumsfrage-02.jpg (23.96 KiB) Viewed 568 times
Forumsfrage.FCStd
(28.27 KiB) Downloaded 19 times
freecad-heini-1
Posts: 7494
Joined: Tue Jan 07, 2014 11:10 am
Contact:

Re: SheetMetal Biegung mit nichtparallelen Seiten

Postby freecad-heini-1 » Wed Feb 20, 2019 11:20 am

wega wrote:
Wed Feb 20, 2019 11:12 am
Die SheetMetal-WB habe ich mir nach dem Vorschlag von "https://github.com/JMG1/FreeCAD_SheetMetal"
angepaßt und mir dazu ein Icon geschaffen (siehe Pfeilmarkierung).
Hallo Werner,
sehr gut, d.h. dieses Tool war enthalten?
Bitte sei so nett und erkläre genau wie Du zu diesem Ergebnis gekommen bist.

Bitte prüfe das Modell nochmal. Mit den Bohrungen stimmt etwas nicht. Das muss so aussehen:
blech_gebogen_wf5.FCStd
(17.03 KiB) Downloaded 25 times
blech_gebogen.png
blech_gebogen.png (31.73 KiB) Viewed 562 times
Viele Grüße
Wilfried
wega
Posts: 255
Joined: Mon Nov 11, 2013 3:13 pm

Re: SheetMetal Biegung mit nichtparallelen Seiten

Postby wega » Wed Feb 20, 2019 11:29 am

Hallo Wilfried und alle andere auch,

im Anhang die gesammelten Aussagen des Forums zum
"Thema Bending along Line", zusammengefaßt in einer
LibreOffice-Datei.
Ebenso im Anhang die Modifikationen der Python-Dateien der Sheet-Metal-WB
und das dazugehörige Icon.

Mit Gruß Werner
Sheet-Metal-Biegen-entlang-einer-Linie.odt
(44.09 KiB) Downloaded 55 times
InitGui.py
(2.71 KiB) Downloaded 35 times
SheetMetalCmd.py
(33.5 KiB) Downloaded 33 times
SMFoldWall.svg
(5.43 KiB) Downloaded 83 times
freecad-heini-1
Posts: 7494
Joined: Tue Jan 07, 2014 11:10 am
Contact:

Re: SheetMetal Biegung mit nichtparallelen Seiten

Postby freecad-heini-1 » Wed Feb 20, 2019 11:53 am

wega wrote:
Wed Feb 20, 2019 11:29 am
Hallo Wilfried und alle andere auch,

im Anhang die gesammelten Aussagen des Forums zum
"Thema Bending along Line", zusammengefaßt in einer
LibreOffice-Datei.
Ebenso im Anhang die Modifikationen der Python-Dateien der Sheet-Metal-WB
und das dazugehörige Icon.

Mit Gruß Werner
Sheet-Metal-Biegen-entlang-einer-Linie.odt
InitGui.py
SheetMetalCmd.py
SMFoldWall.svg
Hallo Werner,
vielen lieben Dank. Bin gespannt, ob die Experten das in die Sheetmetal Workbench integrieren.

Sei bitte so nett und prüfe warum mit den Bohrungen etwas nicht stimmt.
Viele Grüße
Wilfried
wega
Posts: 255
Joined: Mon Nov 11, 2013 3:13 pm

Re: SheetMetal Biegung mit nichtparallelen Seiten

Postby wega » Wed Feb 20, 2019 2:49 pm

Hallo Wilfried,

ja, da hast Du recht, so ganz fehlerfrei ist die Lösung bzw. Anwendung
nicht. Daher ist sie wahrscheinlich auch noch nicht in der offiziellen Version
der SheetMetal-WB aufgenommen.
Ich finde die Anwendung aber spannend genug, um sie bei dünnen Materialien,
wie z.B. im Modellbau (Karton, Sperrholz bis ca. 3mm) einzusetzen.
Vielleicht wird in Zukunft noch die eine oder andere Verbesserung vom Autor
dazukommen, wenn seine bisherige Leistung im Expertenkreis aufgenommen wird.

Ach so, wenn einem der Biegungsansatz nicht gefällt, dann braucht man in Sketcher
nur die Referenzline zu verschieben und schon ändert sich auch das 3D-Modell.

Also, das ganze ist schon recht flexiebel, wenn man dann auch noch den Biegeradius
verändert.

Mit Gruß
Werner
freecad-heini-1
Posts: 7494
Joined: Tue Jan 07, 2014 11:10 am
Contact:

Re: SheetMetal Biegung mit nichtparallelen Seiten

Postby freecad-heini-1 » Wed Feb 20, 2019 3:08 pm

Hallo Werner,
da ich mich mit Programmierung und Python nicht auskenne frage ich lieber nochmal.
In folgendem Ordner habe ich eine Sicherung der Datei sheetmetal.py mit anderem Namen angelegt und die von Dir hochgeladene Datei in den Ordner kopiert:
.FreeCAD/Mod/sheetmetal/InitGui.py

Aus der ODT habe ich folgende Zeilen heraus kopiert in einen Editor:

Code: Select all

from __future__ import division # allows floating point division from integers
import FreeCAD, FreeCADGui
from FreeCAD import Base
import Part
import math

def getPointOnCylinder(ax, ay, Radius):
  angle = math.pi/2 - (ay/Radius)
  result = (ax, math.cos(angle)*Radius, Radius-math.sin(angle)*Radius)
  return result

def WrapBSpline(bspline, Radius, XScale):
  poles = bspline.getPoles()
  #print poles
  newpoles=[]
for pp in poles:
    newpoles.append(getPointOnCylinder(pp[0]*XScale, pp[1], Radius))
  #print newpoles
  newbspline = bspline
  newbspline.buildFromPolesMultsKnots(newpoles, bspline.getMultiplicities(), bspline.getKnots(), bspline.isPeriodic(), bspline.Degree, bspline.getWeights())
  return newbspline.toShape()

def WrapSketch(Sketch, Radius, XScale):
  print Radius
  Edges = []
  for edge in Sketch.Edges:
    print str(type(edge.Curve))
    if str(type(edge.Curve)) == "<type 'Part.Circle'>":
      sp = edge.valueAt(edge.FirstParameter)
      ep = edge.valueAt(edge.LastParameter)
      mp =  edge.valueAt((edge.FirstParameter + edge.LastParameter)/2)
      arc = Part.Arc(sp,mp,ep)
      bspline = arc.toNurbs()
      Edges.append(WrapBSpline(bspline, Radius, XScale, edge.FirstParameter, edge.LastParameter))
    elif str(type(edge.Curve)) == "<type 'Part.Line'>":
      sp = edge.valueAt(edge.FirstParameter)
      ep = edge.valueAt(edge.LastParameter)
      print sp, ep
      if (sp.y > ep.y):
        tt = sp
        sp = ep
        ep = tt

      sp.y = sp.y*XScale
      ep.y = ep.y*XScale
      if (abs(sp.y - ep.y) < 0.001):
        p1 = getPointOnCylinder(sp.x, sp.y, Radius) 
        p2 = getPointOnCylinder(ep.x, ep.y, Radius)
        Edges.append(Part.makeLine(p1, p2))
      elif (abs(sp.x - ep.x) < 0.001):
        sp = edge.valueAt(edge.FirstParameter)
        ep = edge.valueAt(edge.LastParameter)
        mp =  edge.valueAt((edge.FirstParameter + edge.LastParameter)/2)
        p1 = getPointOnCylinder(sp.x, sp.y, Radius) 
        p2 = getPointOnCylinder(ep.x, ep.y, Radius)
        p3 = getPointOnCylinder(mp.x, mp.y, Radius)
        arc = Part.Arc(Base.Vector(p1), Base.Vector(p3), Base.Vector(p2)).toShape()
        Edges.append(arc)
      else:
        Pitch = 2 * math.pi * Radius * abs(ep.x - sp.x)/abs(ep.y - sp.y)
        Height =  abs(ep.x - sp.x)
        hh = Part.makeHelix(Pitch, Height, Radius, 0, (sp.x > ep.x))
        angle = 90 - sp.y/Radius * 180/math.pi
        if (sp.x > ep.x):
          hh.Placement =  FreeCAD.Placement(Base.Vector(sp.x, 0, Radius), FreeCAD.Rotation(90,angle,-90))
        else:
          hh.Placement =  FreeCAD.Placement(Base.Vector(sp.x, 0, Radius), FreeCAD.Rotation(90,angle,90))
        print Pitch, ",",Height, ",", sp.x, ",",ep.x,",", sp.y, ",",ep.y, ",",angle
        Edges.append(hh)
  return Edges

def makeWrappedSketch():
  selections = FreeCAD.Gui.Selection.getSelectionEx()
  Face = selections[0].Object.Shape.getElement(selections[0].SubElementNames[0])
  sketch = Face.copy()
#  pl = sketch.Placement.Base
#  sketch.Placement.Base = Base.Vector(0, 0, 0)
  BendAngle = 90
  Radius = ( 40.0 * 180 )/ ( math.pi * BendAngle )

  Edges = WrapSketch(sketch, Radius, 1.0)
  Shape = Part.makeCompound(Edges)
  Face1 = Part.makeFilledFace(Part.__sortEdges__(Shape.Edges))
#  Face1.Placement.Base = pl
#  Face1.translate(Base.Vector(0,-Radius,0))
#  Face1.rotate(Base.Vector(0,0,0), Base.Vector(1,0,0), -90)
  Bend = Face1.makeOffsetShape(2.0,0.001,fill=True)
  Shape = Bend.removeSplitter()
  Part.show(Shape)

FreeCAD.Console.PrintMessage("makeWrappedSketch Start"+"\n")
makeWrappedSketch()
FreeCAD.Console.PrintMessage("makeWrappedSketch End"+"\n")
Was soll ich damit machen? Speichern?
Wo hin und mit welchem Namen und welcher Dateiendung?

In der ODT steht weiter unten, dass man folgende Zeile in die InitGUI.py anfügen soll:

Code: Select all

self.list = ["SMMakeWall", "SMExtrudeFace", "SMUnfold", "SMFoldWall"]
Was fehlt sonst noch?
Steht die Funktion ab dann zur Verfügung und braucht nur noch ein Icon?

Bitte helfe mir.

Viele Grüße
Wilfried
wega
Posts: 255
Joined: Mon Nov 11, 2013 3:13 pm

Re: SheetMetal Biegung mit nichtparallelen Seiten

Postby wega » Wed Feb 20, 2019 3:22 pm

Hallo Wilfried,

die LibreofficeDatei gibt eigentlich nur die Quelle wieder, in der ich
die Anregungen zu den Pythondateien gefunden habe.

Du brauchst nur die Originaldateien zu Sichern, damit der Weg
zurück wieder gelingt.

Einfach die schon angepaßten Pythondateien meines Anhangs nehmen
und in den "SheetMetal"-Ordner kopieren.
Die gleichnamigen *.pyc - Datien sollten auch gelöscht werden, da diese beim
Aufruf der WB über die *.py - Dateien neu erzeugt werden und den compelierten
Inhalt der *.py - Dateien wiedergeben.

Unter dem Ordner "Recources" gibt es einen Ordner mit den Icons. Dahinein das neue zusätzlich Icon.

Schon sollte alles funktionieren.

Achtung, bei einenm neuen FreeCAD-Update werden die modifizierten Dateien
wieder überschrieben. Dann einfach wieder die modifizierten Dateien wie oben
beschrieben neu hineinkopieren.

Ich hoffe, das gelingt, sonst noch einmal nachfragen.

Gruß Werner
Last edited by wega on Wed Feb 20, 2019 3:31 pm, edited 1 time in total.
bavariaSHAPE
Posts: 375
Joined: Tue Jun 10, 2014 8:31 am

Re: SheetMetal Biegung mit nichtparallelen Seiten

Postby bavariaSHAPE » Wed Feb 20, 2019 3:24 pm

wega wrote:
Wed Feb 20, 2019 11:12 am
Hallo zusammen,


Mit der Sketcher-WB auf der Oberfläche eine neue Sketcheranwahl getroffen und
darin dann die Biegelinie positioniert.


Gruß Werner
Ich würde eine Abwicklung nicht als Ausgangsbasis für die Biegung verwenden. Den K-Faktor und der Biegeradius ist sonst nicht korrekt integriert.

Mein Beispiel ist mit willkürlichen Maßen erstellt. Es geht ja auch nur um den Workflow.
Normalerweise werden keine Bohrungen vor und im Biegebereich vor dem eigentlichen Biegen konstruiert.

blech_gebogen.jpg
blech_gebogen.jpg (84.05 KiB) Viewed 510 times

Einen Überblick der Parameter für die Sheet Metal WB.
Dazu habe ich noch ein Beipiel mit zusätzlichen Infos.

:idea: Achim
Attachments
blech_gebogen_.FCStd
(75.58 KiB) Downloaded 24 times
reox
Posts: 887
Joined: Sat Aug 13, 2016 10:06 am
Contact:

Re: SheetMetal Biegung mit nichtparallelen Seiten

Postby reox » Wed Feb 20, 2019 6:41 pm

wega wrote:
Wed Feb 20, 2019 11:29 am
Hallo Wilfried und alle andere auch,

im Anhang die gesammelten Aussagen des Forums zum
"Thema Bending along Line", zusammengefaßt in einer
LibreOffice-Datei.
Danke fürs Ausgraben! Das Repo vom JMG1 hatte ich gesehen aber da ist ja nicht viel drin...

Ich würde das durchaus als PR an shaise senden, vllt kann man so das Tool schneller integrieren, wenn sich noch andere finden die daran mitarbeiten wollen.
Du hast in SheetMetalCmd.py relativ viel andere Dinge auch noch geändert, oder? bzw welcher commit war die basis von den änderungen?

btw original eintrag: https://forum.freecadweb.org/viewtopic. ... 70#p245071
wega
Posts: 255
Joined: Mon Nov 11, 2013 3:13 pm

Re: SheetMetal Biegung mit nichtparallelen Seiten

Postby wega » Wed Feb 20, 2019 7:02 pm

Nein, geändert habe ich eigentlich garnicht so viel.

Ich habe das ICON erstellt, denn das den Ausführungen nicht bei.

Die Datei "InitGui.py" habe ich der Anweisung folgend geändert.
Die letztendlich modifizierte "InitGui.py" liegt im Anhang bei.

In der Datei "SheetMetalCmd.py" habe ich länger suchen müssen
um den Einstieg in die Biegeanweisung zu finden und um das ICON
zu platzieren.
Aber auch die letzendlich modifizierte "SheetMetalCmd.py" liegt dem
Anhang bei.

Mit Gruß
Werner