Hüllfläche eines Gebäudes

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

WICHTIG: Bitte zuerst lesen, bevor Sie posten
Chri1
Posts: 86
Joined: Wed Oct 17, 2018 9:00 am

Hüllfläche eines Gebäudes

Post by Chri1 »

Hi

Im Endeffekt möchte ich Freecad „Embed“ in QT verwenden, zunächst möchte ich den geplanten 3D-Modelierunsflow unter der FreeCAd-GUI ausprobieren und ersuche Euch um Feedback, ob ich auf dem richtigen Weg bin, bzw. einige Fragen:

Ich möchte ein Gebäude modellieren, allerdings interessiert nur die Außenhülle.
Und jeder Fläche der Außenhülle soll eine physikalische Eigenschaft (U-Wert) zugeordnet werden.
Das Gebäude soll aus Grundelementen wie Quader modelliert werden.
Würde zwar gut mit „Part“ und Bool-Union funktionieren, aber soweit ich es verstanden habe, ist es nicht möglich, den einzelnen Flächen Eigenschaften zuzuordnen.

Also „ARCH“, weil da kann man den einzelnen Flächen (Wänden) unterschiedliche Eigenschaften zuordnen.
Das heißt: z.B. Ein Quader besteht aus 4 Wänden, Boden und Dach.
Vom Handling her möchte ich es jedoch nur mit einem Quader zu tun haben (Eingabe von Länge, Breite, Höhe):
??? Ich nehme an, dass ich dazu ein Makro machen muss. (Oder gibt es eine Möglichkeit, per Befehl einen Part-Quader in einen Wall-Quader mit 4 Seitenwänden und oben/unten-Wand umzuwandeln?)

Weitere Gebäudeteile: Indem weitere Wand-Quader an die bereits bestehende Geometrie angedockt werden:
Ich brauche im Endeffekt die Wände, die die Hüllfläche des Gebäudes bilden
(Und nicht die Flächen, an der sich 2 Quader berühren, die also Innen sind)
???Wie erzeuge ich diese Hüllwände?

LG
Chri
User avatar
bernd
Veteran
Posts: 12849
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland
Contact:

Re: Hüllfläche eines Gebäudes

Post by bernd »

Chri1 wrote: Tue Oct 23, 2018 10:59 am Würde zwar gut mit „Part“ und Bool-Union funktionieren, aber soweit ich es verstanden habe, ist es nicht möglich, den einzelnen Flächen Eigenschaften zuzuordnen.
Es müsste sich schon programmiertechnisch umsetzen lassen, dass jede fläche eines Körpers eigene Eigenschaften hat. Das problem ist aber bekannt unter Topological Naming. Eine boolsche operation und die Flächen werden anders indexiert und schon ist alles wieder durcheinander. Genau aus dem grund kann ein sketch von linien auch nur eine Wanddicke haben, wenn daraus wände erstellt werden.


Chri1 wrote: Tue Oct 23, 2018 10:59 am Oder gibt es eine Möglichkeit, per Befehl einen Part-Quader in einen Wall-Quader mit 4 Seitenwänden und oben/unten-Wand umzuwandeln?)

- mit Part Module eine Box erstellen
- in Arch workbench die Box selektieren und auf Wandicon klicken und schon ist die box eine Wand
- Natürlich bewirken dann die Wandparameter Höhe, Dicke, Breite nichts mehr, da ja die Wand die Geometrie von der Box übernimmt.

bernd
User avatar
bernd
Veteran
Posts: 12849
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland
Contact:

Re: Hüllfläche eines Gebäudes

Post by bernd »

Was hast Du vor, eine gui für eine energiesimulation schreiben?
Chri1
Posts: 86
Joined: Wed Oct 17, 2018 9:00 am

Re: Hüllfläche eines Gebäudes

Post by Chri1 »

Genau. Habe mit QT ein Energieausweisprogramm gemacht, jetzt brauch ich ein CAD, um das Energieausweisprogramm "zu beliefern":
FreeCad ins QT einbinden.
Im Endeffekt brauche ich eine Liste mit allen Flächen, die die Hüllfläche bilden (m²).
Die Eingabe der Geometrie soll ein "Ich bau mir ein Gebäude aus Bauklötzen" sein.
Hab es prinzipiell schon getestet (Mit AutoCAD, reduziert auf einen Werkzeugkasten): Auch ohne CAD-Kenntnisse und Anleitungen kommen die Leute damit zurecht.
Man klickt z.B. auf den Button Quader, wird nach Länge, Breite Höhe gefragt, der Quader ist dann sichtbar und es wird gleich weiter geschalten zu
"Ausrichtung", um den Quader an die bestehende Geometrie anzuschließen ("Ausrichtung" möchte ich auch noch umbauen oder Ersetzen: Eingabe von 3 Linien, die Start und Zielpunkte verbinden, und dann wird es ausgeführt)
In der Geometrie kann man dann auf eine Fläche klicken und angeben, welcher Bauteil es ist. (Die Bauteile werden im Kernprogramm erstellt)

Hab mich gerade ein bisschen mit Python beschäftigt, da müsste es doch möglich sein, überhaupt einen eigenen Quadertyp zu definieren, in dem man den Flächen die Bauteile zuordnen kann.
Im Moment scheitere ich gerad daran, den Quader zu erstellen:

Code: Select all

class Quader:

  def __init__(self,obj):
    obj.Proxy = self
    obj.addProperty("App::PropertyFloat","Length")
    obj.addProperty("App::PropertyFloat","Width")
    obj.addProperty("App::PropertyFloat","Hight")

  def execute(self,obj):
    if (obj.Length == 0) or (obj.Width == 0) or (obj.Hight == 0):
      return

# Eckpunkte
    e1 = FreeCAD.Vector(0,0,0)
    e2 = FreeCAD.Vector(obj.Length,0,0)
 .... e3 bis e8
# Kanten
    k1 = Part.Line(v1,v2).toShape()
.... k2 bis k8
# Flächen
    f1 = Part.Wire([e1,e2,e3,e4])
...f2 bis f6

# Volumen
#    v1 = Part....([f1,f2,f3,f4,f5,f6])
Und jetzt weiß ich momentan nicht weiter.
Irgendwie muss dann glaub ich obj.shape kommen
Und wie ich die Baustoffeigenschaft den Flächen zuordnen kann, damit hab ich mich auch noch nicht beschäftigt.

Falls mir jemand weiterhelfen könnte ... ;)

LG
Chri
Chri1
Posts: 86
Joined: Wed Oct 17, 2018 9:00 am

Re: Hüllfläche eines Gebäudes

Post by Chri1 »

So, hab es etwas geändert -> Erzeugt auch ein Objekt, allerdings werden nur die 8 Eckpunkte dargestellt.

Code: Select all

class Prisma:

  def __init__(self,obj):
    obj.Proxy = self
    obj.addProperty("App::PropertyFloat","Length").Length = 10
    obj.addProperty("App::PropertyFloat","Width").Width = 5
    obj.addProperty("App::PropertyFloat","Hight").Hight = 3
......

  def execute(self,obj):
    if (obj.Length == 0) or (obj.Width == 0) or (obj.Hight == 0):
      return

# Eckpunkte
    e1 = FreeCAD.Vector(0,0,0)
....
# Kanten
    k1 = Part.Line(e1,e2).toShape()
.....

# Flächen
    f= Part.makePolygon([e1,e2,e3,e4])
    f1 = Part.Face(f)
    f = Part.makePolygon([e1,e2,e6,e5])
    f2 = Part.Face(f)
.....

    shell = Part.makeShell([f1,f2,f3,f4,f5,f6])
    solid = Part.makeSolid(shell)
    obj.Shape = shell


myObj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython","Prisma")
Prisma(myObj)
myObj.ViewObject.Proxy = 0
FreeCAD.ActiveDocument.recompute()
Zunächst mal: Warum sieht man nur die Eckpunkte?

LG
Chri

LG Chri
User avatar
bernd
Veteran
Posts: 12849
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland
Contact:

Re: Hüllfläche eines Gebäudes

Post by bernd »

warum so kompliziert, oder ist das ein eigenes programmierbeispiel für eine eigene klasse box?

Code: Select all

App.ActiveDocument.addObject("Part::Box","Box")
App.ActiveDocument.recompute()
Kennst Du das Scripted_objects ? Weitere interessante links hier: https://forum.freecadweb.org/viewtopic.php?f=22&t=4887
User avatar
Gift
Posts: 769
Joined: Tue Aug 18, 2015 10:08 am
Location: Germany, Sauerland

Re: Hüllfläche eines Gebäudes

Post by Gift »

Chri,

schau dir mal das Thema an: https://forum.freecadweb.org/viewtopic.php?f=13&t=30289 Dort gibt es für dich schöne Beispiele.

Gruß
Benjamin
Chri1
Posts: 86
Joined: Wed Oct 17, 2018 9:00 am

Re: Hüllfläche eines Gebäudes

Post by Chri1 »

Warum so kompliziert? In der Hoffnung, dass es in weiterer Folge gelingt, jeder Fläche Eigenschaften zuzuordnen.

Und noch eine Idee ist mir gekommen: Zusätzliche Eigenschaften für 4 Seitenflächenwinkel und 4 Winkel für die Seiten, ergibt ein Allgemein-Element von dem Prisma nur ein Spezialfall ist.

Den Fehler von zuvor habe ich übrigens gerade gefunden:
Die makePolygon waren offen -> f= Part.makePolygon([e1,e2,e3,e4,e1]) -> Jetzt wird das Prisma dargestellt.

Scripted Objects kenn ich, ich versuche, es nach und nach zu verstehen, die anderen wird ich mir auch anschauen.

LG
Chri
User avatar
Gift
Posts: 769
Joined: Tue Aug 18, 2015 10:08 am
Location: Germany, Sauerland

Re: Hüllfläche eines Gebäudes

Post by Gift »

Chri1 wrote: Sun Oct 28, 2018 7:01 pm Warum so kompliziert? In der Hoffnung, dass es in weiterer Folge gelingt, jeder Fläche Eigenschaften zuzuordnen.
...
Was meinst du mit Eigenschaften? Wieso setzt du den Proxy auf Null?
Chri1
Posts: 86
Joined: Wed Oct 17, 2018 9:00 am

Re: Hüllfläche eines Gebäudes

Post by Chri1 »

Eigenschaften: Ich möchte jeder Fläche eine (Bauteil)-ID zuordnen können.
(Fläche anklicken und eine ID eingeben)
Warum Proxy auf Null: Ehrlich gesagt, ganz pragmatisch: Ich weiß es nicht, weil es in https://yorikvanhavre.gitbooks.io/a-fre ... jects.html so steht und das Prisma erst dadurch angezeigt wird.

LG
Chri
Post Reply