abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
Programmierung
Alles über Programmierung in GDL und Python

Öffnungselement Grundrissschraffur

snow
Rockstar
Hallo zusammen,

nochmals ein Thema, zu dem ich mich hier durchfrage:

Wie bekomme ich die Öffnung schraffiert?

Habe die Variable 'AC_WALL_THICKNESS' gefunden...
... in die Parameterliste aufgenommen und Y-Koordinaten damit im 2D-Skript ersetzt.

Zeigt aber keinerlei Auswirkung.
Steht ja, auch was vom Marker-Kontext dabei... sieht fast so aus, dass so was gar nicht über so eine Variable gesteuert wird... wie vielleicht auch die automatischen Hotspots, die sich ja oftmals (zumindest zunächst) nicht an den Ecken der anderen Wandseite befinden.

Archicad For Future F R E E D O M for-COLORS
______________________________________

archicad versions 8-27 | mac os 13 | win 10
14 ANTWORTEN 14
Frank Beister
Mentor
Hilft bei Wänden nicht. Da musst du ggf. den POLY-Befehl für Schnittflächen der Wände verwenden: WALLBLOCK
Ansonsten die Wandendelinien der mehrschichtigen Wand ermitteln und händisch nachzeichnen.
bim author since 1994 | bim manager since 2018 | author of selfGDL.de | openGDL | skewed archicad user hall of fame | author of bim-all-doors.gsm
snow
Rockstar
@Egon
Genau so scheint es zu gehen. Dass die Schraffur drüber liegt, ist ja kein Problem, wenn sie die entsprechenden Kanten zeigt.
(übrigens ein Feature, dass ich mir schon so lange wünsche, für alle flächigen Elemente im Programm, dass man jede Kante extra steuern kann 😉 )

Aber zurück zum Thema;
Jetzt hab' ich nur wieder das Problem, dass WALL_SECT_PEN offenbar nicht ausgelesen wird... zumindest nicht für die Tür im eingebauten Zustand, weder bei ein-, noch mehr mehrschichtigen Wänden – ... in der Vorschau sehe ich damit dickere Linien
Archicad For Future F R E E D O M for-COLORS
______________________________________

archicad versions 8-27 | mac os 13 | win 10
Frank Beister
Mentor
Du könntest alles etwas besser beschreiben. Quellcode? Subtyp? Wo willst du was überdecken? Bis jetzt ist noch nicht mal klar, dass es eine Tür werden soll. 😉
WALL_SECT_PEN funktioniert bei mir.
bim author since 1994 | bim manager since 2018 | author of selfGDL.de | openGDL | skewed archicad user hall of fame | author of bim-all-doors.gsm
snow
Rockstar
WALL_SECT_PEN funktioniert bei mir.
Bei mir nun auch--- hatte 'ne GÜ an, ich Dusel 🙄

Für einschichtige Wände also gut.
Für Mehrschichtwände – zumindest wenn man unterschiedliche Abschlusslinien haben will – kann die Methode leider nicht funktionieren.

Ist wahrscheinlich doch ziemlich kompliziert (s.u.), so was hinzubekommen, obwohl man meint, dass müsste relativ einfach sein.

@Beister
Ja, eine (ganz einfache) Tür... mit mehr Möglichkeiten bei der Öffnungslinie im Grundriss... und, das wäre jetzt noch schön gewesen, bei Bedarf Grundrissschraffur... manchmal könnte man die doch ganz gut brauchen.

Ich kopier': hier mal den Code zur Schraffur aus der mitgelieferten leeren Öffnung... scheint, dass das alles gebraucht wird.
! Draw Background Fill ---------------------------------------------------------

if id1 > 0 then
idLast = id2
if idLast = 0 then idLast = id3
if idLast = 0 then idLast = id4
if idLast > 0 then
i = id1 - 1
do
i = i + 1
if i > vardim1(AC_WallContourPolygon) then i = 1
put AC_WallContourPolygon[i][1],
AC_WallContourPolygon[i][2],
AC_WallContourPolygon[i][3] * (i <> idLast)
while i <> idLast
endif
endif

if id2 > 0 & id3 > 0 & abs(WIDO_LEFT_JAMB) > EPS then
put -mirrorSign * (A/2 - WIDO_LEFT_JAMB), 0, 0,
-mirrorSign * (A/2), 0, 0
endif

if id3 > 0 then
idLast = id4
if idLast = 0 then idLast = id1
if idLast = 0 then idLast = id2
if idLast > 0 then
i = id3 - 1
do
i = i + 1
if i > vardim1(AC_WallContourPolygon) then i = 1
put AC_WallContourPolygon[i][1],
AC_WallContourPolygon[i][2],
AC_WallContourPolygon[i][3] * (i <> idLast)
while i <> idLast
endif
endif

if id4 > 0 & id1 > 0 & abs(WIDO_RIGHT_JAMB) > EPS then
put mirrorSign * A/2, 0, 0,
mirrorSign * (A/2 - WIDO_RIGHT_JAMB), 0, 0
endif

gosub 202 ! Convert polygon: AC polygon -> GDL polygon

set fill gs_wallhole_fill

if nsp > 8 then
if GLOB_PREVIEW_MODE = 1 then
poly2_b nsp/3, 2 + 4 + 64, gs_wallhole_pen_fg, gs_wallhole_pen_bg,
get(nsp)
else
wallhole2 nsp/3, 2 + 64, gs_wallhole_pen_fg, gs_wallhole_pen_bg,
0,0,0,
get(nsp)
endif
else
gosub "EmptyBuffer"
endif
Archicad For Future F R E E D O M for-COLORS
______________________________________

archicad versions 8-27 | mac os 13 | win 10
Frank Beister
Mentor
wall_skins_params ist das Zauberwort. Auf selfgdl sind nicht alle Spalten des Arrays beschrieben -> siehe Handbuch

Das ist nicht so einfach, weil du erst mal rausbekommen musst auf welcher Seite der Wand du stehst, also wie rum du das Array lesen und verwenden musst. Und wie rum du schaust und wie weit du von der Wandoberfläche weg bist. Und dann musst du entscheiden, ob du gekrümmte und trapezoide Wände auch berücksichtigen willst. Gerade letzteres ist spannend, weil ab dem Kern die Nachfolgeschichten andere Stärken links und rechts haben, die du erst noch nach Position der Öffnung in der Wand (Längsposition) berechnen musst. Bei gerundeten Wänden ist die Positionsfindung aber auch nicht ohne. Dann haben aber wenigstens die Schichten immer die gleiche Stärke. Wenn wie Wand nicht quer geneigt ist.

Wenn du nicht gerade zwei Wochen Langeweile hast: Lass es. Und wenn du es dennoch lösen willst, löse es generisch (als Makro oder Unterroutine mit eigenen Variablen), sodass du es beim nächsten Objekt wieder verwenden kannst.

Kann sein, dass es auch ein Makro in der Standard-/Basisbibliothek gibt, das das für dich löst. (*Cavity*closure*.gsm ?) Ich habe aber mehr nur eine Vermutung als zu wissen, dass es das gibt.

Und verwende WALLLINE2 für die Linien oder zumindest WALLBLOCK2.

Good luck. Nicht verzweifeln.
bim author since 1994 | bim manager since 2018 | author of selfGDL.de | openGDL | skewed archicad user hall of fame | author of bim-all-doors.gsm

Keine Antwort gefunden?

Andere Beiträge
im Board ansehen

Zurück zum Board

Neueste Lösungen durchsuchen

Akzeptierte Lösungen zeigen

Eine neue Diskussion starten!

Neues Thema erstellen