Freecad lahme Ente
Re: Freecad lahme Ente
Nur so nebenbei:
Was hast du denn für einen Rechner?
CPU, GPU, RAM, OS ?
mfg
Was hast du denn für einen Rechner?
CPU, GPU, RAM, OS ?
mfg
-
- Veteran
- Posts: 7791
- Joined: Tue Jan 07, 2014 11:10 am
- Contact:
Re: Freecad lahme Ente
@polymer
lese bitte noch mal hier, lade die Freecad Datei herunter, setze X auf 8 Array's und Y auf 6 Array's.
Stoppe die Zeit und poste bitte alle Angaben zu Freecad, dem Betriebssystem und Deiner Hardware.
lese bitte noch mal hier, lade die Freecad Datei herunter, setze X auf 8 Array's und Y auf 6 Array's.
Stoppe die Zeit und poste bitte alle Angaben zu Freecad, dem Betriebssystem und Deiner Hardware.
Re: Freecad lahme Ente
Stimmt...kann ich so bestätigen.freecad-heini-1 wrote:Hier die andere Version, leider auch eine lahme Ente.
blister-test.fcstd
Wer damit experimentieren möchte...
Boa das dauert ...
Mein System OS: Debian GNU/Linux 9.0 (stretch), Word size of OS: 64-bit, Word size of FreeCAD: 64-bit, Version: 0.16. ..OCC version: 6.8.0.oce-0.17
mit einem i5-6500 mit 8Gbyte RAM
Die gefühlte Zeit liegt bei knapp vor ewig Real schätze ich so um 2 Minuten, denn ich habs nicht gestoppt.
Interessant wäre nun, ob jemand das auch mit opencascade 7 oder 7.1 testen würde und Unterschiede feststellen kann.
jeno
-
- Veteran
- Posts: 7791
- Joined: Tue Jan 07, 2014 11:10 am
- Contact:
Re: Freecad lahme Ente
Hier ein Test in Pro-Engineer in echtzeit:
Als nächstes werde ich mal den Kerzel-Motor aus Freecad in Pro/E importieren.
Man muss sich vor Augen führen, dass Pro/E nicht native in Windows 7 Pro läuft sondern virtualisiert in VirtualBox. Host Betriebssystem ist ein Xubuntu 16.04, Gastsystem ist Windows 7 Pro.Als nächstes werde ich mal den Kerzel-Motor aus Freecad in Pro/E importieren.
- microelly2
- Veteran
- Posts: 4688
- Joined: Tue Nov 12, 2013 4:06 pm
- Contact:
Re: Freecad lahme Ente
Das Rendern von Parts dauert, aber wenn man statt dessen ein Mesh/eine Point Cloud generiert geht es auch wieder schnell,
viewtopic.php?f=22&t=19559
ich suche da nach alternativen 3D-Darstellungen
in ein paar Spezialfällen geht das ja auchgschon und da kann man optimistisch s.ein
viewtopic.php?f=22&t=19559
ich suche da nach alternativen 3D-Darstellungen
in ein paar Spezialfällen geht das ja auchgschon und da kann man optimistisch s.ein
-
- Veteran
- Posts: 7791
- Joined: Tue Jan 07, 2014 11:10 am
- Contact:
Re: Freecad lahme Ente
Hier das Array in der Darstellung Drahtgitter:
Hier die Darstellung mit Punkten:
Und hier mit Flächen (Original bzw. flache Linien):
Was die Zeit enorm in die Höhe treibt ist die Option Fuse true.- microelly2
- Veteran
- Posts: 4688
- Joined: Tue Nov 12, 2013 4:06 pm
- Contact:
Re: Freecad lahme Ente
Ich glaube, dass die Fusionsalgorithmen für Freiformflächen wie sie bei den Abrundungen oder Kugeln auftreten zu langsam sind.freecad-heini-1 wrote:Whow, Thickness -0,5mm hat geklappt, aber lahm ohne Ende.
Hat jemand eine Idee warum das alles sooo laaange dauert?
blister-thickness-9.gif
Für meinen Testfall geht die Berechnung des Modells im Hintergrund sehr schnell aber für die Ansicht komme ich nur mit einem Mesh in akzeptable
Zeiten.
Mein Mauermesh mit 2,4 Mill Punkten war in einer halben Minute fertig. Meine Idee ist es immer noch, aus einem Hintergrundmodell so ein Mesh zu berechnen Gerade für solche regelmässigen Array-Strukturen würde dann die Berechnung einer Zelle und das Kopieren schnell gehen.
Steht die Frage, wie schnell kommerzielle Programme auf einer so komplizierte Flächen eine boolsche Operation ausführen z.B. den Abdruck eines Schraubengewindes.
-
- Veteran
- Posts: 7791
- Joined: Tue Jan 07, 2014 11:10 am
- Contact:
Re: Freecad lahme Ente
Wer Zugriff auf ein Profi-CAD-System hat, der kann einen Vergleich mit Freecad starten, z.B. mit der Kerzel-Engine:
https://forum.freecadweb.org/viewtopic. ... 37#p128337 Step und / oder Iges Export aus Freecad und dann im anderen CAD-System laden.
https://forum.freecadweb.org/viewtopic. ... 37#p128337 Step und / oder Iges Export aus Freecad und dann im anderen CAD-System laden.
Re: Freecad lahme Ente
FYI:
Die Datei "blister-test.fcstd" mit einen Feld von 7x7:
Flaschenhals 1: Fuse --> ca. 1 min const.
Falschenhals 2: Grafik maximale Abweichung 7,5% und 7° und ohne Antialising --> ab dieser Abweichung halbwegs flott (ca. 5s) und mit 15fps.
Alles was feiner als 3% und 3° kann man vergessen bei meinen Laptop.
Maschine.:
i7-2670QM 64bit (ca. 2,2GHz Quad benutzt aber wegen der Temp. ständig nur einen Kern und das reduziert auf 800MHz)
8GB RAM
Grafikkarte: AMD HD6850M, 1GB VRAM
Ich hoffe die Info zu OCCT7.1 hilft ein wenig.
Grüße user1234
Code: Select all
OS: Debian GNU/Linux 8.7 (jessie)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.17.10085 (Git)
Build type: Unknown
Branch: master
Hash: 89925e21a3a496fefd20aa47f9a974350330b0c9
Python version: 2.7.9
Qt version: 4.8.6
Coin version: 4.0.0a
OCC version: 7.1.0
Flaschenhals 1: Fuse --> ca. 1 min const.
Falschenhals 2: Grafik maximale Abweichung 7,5% und 7° und ohne Antialising --> ab dieser Abweichung halbwegs flott (ca. 5s) und mit 15fps.
Alles was feiner als 3% und 3° kann man vergessen bei meinen Laptop.
Maschine.:
i7-2670QM 64bit (ca. 2,2GHz Quad benutzt aber wegen der Temp. ständig nur einen Kern und das reduziert auf 800MHz)
8GB RAM
Grafikkarte: AMD HD6850M, 1GB VRAM
Ich hoffe die Info zu OCCT7.1 hilft ein wenig.
Grüße user1234
- Attachments
-
- Screenshot.png (259.75 KiB) Viewed 2156 times
Re: Freecad lahme Ente
Ich habe etwas rumgespielt:
Ergab: ===> 83.281689167 seconds
Quelle: https://github.com/FreeCAD/FreeCAD/blob ... t/Draft.py
Das sah mir recht umständlich aus um ein paar Translate zu sparen. Bei großen Arrays habe ich dafür immer die "bedingten Sprünge". Daher habe ich den Code wie folgt geändert. Hat aber leider nichts gebracht.
Nur das auskommentieren von RemoveSplitter hat eine deutliche Verbesserung gebracht.
Code: Select all
import Draft
import time
FreeCAD.open(u"blister-test.fcstd")
App.setActiveDocument("blister_test")
App.ActiveDocument=App.getDocument("blister_test")
Gui.ActiveDocument=Gui.getDocument("blister_test")
FreeCAD.ActiveDocument.recompute()
start_time = time.time()
FreeCAD.getDocument("blister_test").getObject("Array").NumberX = 8
FreeCAD.getDocument("blister_test").getObject("Array").NumberY = 6
FreeCAD.ActiveDocument.recompute()
print("===> %s seconds" % (time.time() - start_time))
Code: Select all
OS: Mac OS X
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.17.9113 (Git)
Build type: Release
Branch: (detached from 04a56fb)
Hash: 04a56fbceb3621e93092f5338b40cbeefd0c5014
Python version: 2.7.12
Qt version: 4.8.7
Coin version: 3.1.3
OCC version: 7.0.0
Quelle: https://github.com/FreeCAD/FreeCAD/blob ... t/Draft.py
Code: Select all
def rectArray(self,shape,xvector,yvector,zvector,xnum,ynum,znum,fuse=False):
import Part
base = [shape.copy()]
for xcount in range(xnum):
currentxvector=Vector(xvector).multiply(xcount)
if not xcount==0:
nshape = shape.copy()
nshape.translate(currentxvector)
base.append(nshape)
for ycount in range(ynum):
currentyvector=FreeCAD.Vector(currentxvector)
currentyvector=currentyvector.add(Vector(yvector).multiply(ycount))
if not ycount==0:
nshape = shape.copy()
nshape.translate(currentyvector)
base.append(nshape)
for zcount in range(znum):
currentzvector=FreeCAD.Vector(currentyvector)
currentzvector=currentzvector.add(Vector(zvector).multiply(zcount))
if not zcount==0:
nshape = shape.copy()
nshape.translate(currentzvector)
base.append(nshape)
if fuse and len(base) > 1:
return base[0].multiFuse(base[1:]).removeSplitter()
else:
return Part.makeCompound(base)
Code: Select all
def rectArray(self,shape,xvector,yvector,zvector,xnum,ynum,znum,fuse=False):
import Part
base = []
for xcount in range(xnum):
currentxvector=Vector(xvector).multiply(xcount)
for ycount in range(ynum):
currentyvector=Vector(yvector).multiply(ycount)
for zcount in range(znum):
currentzvector=Vector(zvector).multiply(zcount)
nshape = shape.copy()
nshape.translate(currentxvector)
nshape.translate(currentyvector)
nshape.translate(currentzvector)
base.append(nshape)
if len(base) == 0:
base = [shape.copy()]
if fuse and len(base) > 1:
return base[0].multiFuse(base[1:]).removeSplitter()
else:
return Part.makeCompound(base)