abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
DE
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
Andreas81ch
Advisor

Objekt erstellen - Frage Fragment2 Einstellung mit Vorder- und Hintergrund Stiftfarbe?

Hallo zusammen,

 

Habe ein Objekt erstellt mit 2D Schraffuren und Linien unter 2D-Symbol, wenn ich die Stiftfarbe einsetze, macht er die Farbe für alles, Schraffur und Linien.

Kann leider die Vorder- und Hintergrundschraffur Farbe nicht separat einstellen, wie kann ich das machen? Es kommt immer auch ein Fehler wenn ich den Code Befehl FILL_PEN verwenden möchte.....

 

2D Script String Fehler_Schraffur VG BG.png

 

> Wenn ich 

 

Code 2D Script:

 

pen _anPEN
set line_type _anLINE_T
fill _anFILL_type

IF _anRVB = "100mm" THEN

FRAGMENT2 2,1
ENDIF

IF _anRVB = "45mm" THEN
FRAGMENT2 3,1
ENDIF


ArchiCAD v6.5 - 29 (CHE Swiss Edition / Schweiz) - macOS / WIN - Workstation in office: mac OS 26.4.1, Apple M2 Max, 64 GB RAM
13 ANTWORTEN 13
runxel
Moderator

"FILL_PEN" ist nur für Etiketten gedacht – der Stift von Schraffuren wird im Befehl selbst festgelegt. Daher wirst du mit FRAGMENT2 hier nicht zum Ziel kommen.

Füge es dir lieber als echten Code ein (seit AC 27 gibts dafür im Editor einen schönen Button oben beim 2D script).

Dort wird dir dann ein POLY2_B{5} Befehl reingeworfen. Dort ist es dann der 5. bzw. 6. Wert. Den kannst du gegen einen echten Parameter austauschen. Somit hast du dann immer die volle Kontrolle.

Lucas Becker | AC 29 on Mac (Sequoia) | Graphisoft Insider Panelist | Akroter.io – high-end GDL objects | Author of Runxel's Archicad Wiki | Editor at SelfGDL | Developer of the GDL plugin for Sublime Text

My List of AC shortcomings & bugs | I Will Piledrive You If You Mention AI Again |

POSIWID – The Purpose Of a System Is What It Does /// «Furthermore, I consider that Carth... yearly releases must be destroyed»
Andreas81ch
Advisor

Guten Tag runxel,

Danke für den Hinweis.

 

D.h. dass ich die ganzen Fragmente, die ich erstellt habe, als reinen 2D Script reinkopieren muss, so dass diese eben für den POLY2_B{5} und Parameter funktioniert? Dann wäre es evtl. auch einfacher mehrere Schraffuren pro "Objekt" separat zu steuern über die Parameter und 2D-Script oder?

 

PS:
Wäre es dann in dem Fall sinnvoll ganz auf 2D-Symbol mit Fragment2 zu verzichten?

Finde es eben noch nett, da man das was man "programmiert" direkt sieht und anpassen kann.

Aber wohl für "komplexere" Programmierung zu wenig handbar ist....

Wozu wäre es dann sinnvoll Fragment2 Elemente zu benutzen?

 

ArchiCAD v6.5 - 29 (CHE Swiss Edition / Schweiz) - macOS / WIN - Workstation in office: mac OS 26.4.1, Apple M2 Max, 64 GB RAM
Stefan L_
Rockstar

Was runxel sagt.

Du könntest aber auch die Linien und die Schraffuren auf verschiedene Fragmente legen und getrennt steuern - je nach Komplexifikation Deiner Inhalte.

Stefan - AC ...-29GER, WIN11
Lukas Oelmueller
Virtuoso

Ich finde den Fragment2 Befehl eigentlich eine gute Einstiegsübung in GDL. Habe es anfänglich auch oft benutzt. 
Habe darüber als Objekt abgespeicherten Geometrien, eine schönere 2D Repräsentanz gegeben. Für Parametrik ist dieser Befehl aber schnell ausgeschöpft.  


Zum Thema:

https://www.selfgdl.de/2d-elemente-2/diverse/fragment2/#

Mac OSX - up to date

GER Archicad Full, Up to date
Andreas81ch
Advisor

Hallo Stefan,

D.h. die Umrisslinien im 2D-Symbol zu zeichnen, inkl. Fixpunkte als "Fragment2" 1-16 Ebenen und die Schraffur separat im 2D-Script?

 

EDIT;
Das mit separaten Fragmenten habe ich bei einem anderen Objekt benutzt, nur wenn man "nur" 1-16 Ebenen erstellen kann, ist es halt evtl. zu wenig und man muss mehrere einzelne Objekte erstellen, da man für ein Objekt bis zu 4 Ebenen verbraucht (16/4 = max. 4 Objekte möglich).

Mein Ziel ist es, div. Grössenvarianten in einem einzigen Objekt zu programmieren.

ArchiCAD v6.5 - 29 (CHE Swiss Edition / Schweiz) - macOS / WIN - Workstation in office: mac OS 26.4.1, Apple M2 Max, 64 GB RAM
Lukas Oelmueller
Virtuoso

Idee:

 lass eine Schleife über das Fragment laufen und ändere im zweiten Durchgang die Farbe und ggf die Darstellungsreihenfolge

for i=1 to 2 

Fragment2 1,1

!!! Hier zweite Attribut Regelung 

next i

 

 

https://www.selfgdl.de/attribute/allgemein/drawindex/

 

 

 virtuos 🙂

Vielleicht hilft es dir für dein Symbol. 

Mac OSX - up to date

GER Archicad Full, Up to date
Stefan L_
Rockstar

@Andreas81ch  schrieb:

... "nur" 1-16 Ebenen...

Mein Ziel ist es, div. Grössenvarianten in einem einzigen Objekt zu programmieren.


Ja, nee - dann was runxel und Lukas sagen.

Größenvarianten? Vielleicht wäre mul2 ja was für Dich...

Stefan - AC ...-29GER, WIN11
Andreas81ch
Advisor

Hallo Stefan,

 

Als einfaches Beispiel gedacht;

Beispiel Element programmieren Vorgabe.png

 

D. h. konkret das unterste Element fix bei Ebene 1 zu zeichnen, und das obere Element das variabel ist mit mul2 Befehl? Das Problem ist, wenn das Profil diverse Ecken drin hat (wie bei mir grün), verzieht er ja das ganze Profil mit und verfälscht dann die Masse !?

 

 

 

ArchiCAD v6.5 - 29 (CHE Swiss Edition / Schweiz) - macOS / WIN - Workstation in office: mac OS 26.4.1, Apple M2 Max, 64 GB RAM
Andreas81ch
Advisor

PS: Mit dem KI-Modus bei Google oder Gronk hat mir noch einiges gebracht, bzw. sehr geholfen und besser geklärt.

 

Habe mal für mein Beispiel diese Frage gestellt;

 

Wie kann ich dieses objekt mit dem befehl mul2 in archicad programmieren im gdl script in archicad? Es sollte die Funktion mit dem Fragment2 beinhalten. Der untere Teil sollte fix bleiben, die oberen grünen variabel

 

Hier die Antwort vom KI-Modus von Google:

 

Um dieses Objekt in ArchiCAD mit GDL zu erstellen, nutzt du am besten eine Kombination aus Transformationen (
ADD2, MUL2) und den Symbol-Ebenen (FRAGMENT2).
Das Prinzip ist hier: Der untere Teil bleibt in seinen Proportionen gleich, während der obere grüne Teil basierend auf der Gesamthöhe (Parameter B) gestreckt wird.
 
1. Vorbereitung im 2D-Symbol
Bevor du das Skript schreibst, musst du die Zeichnungsteile im 2D-Symbol-Fenster des Objekts vorbereiten:
  • Ebene 1 (Fragment 1): Zeichne hier den pinken, fixen Unterteil. Er sollte exakt
    Andreas81ch_0-1773309166637.gif

     

    0.80
    0.80
    Einheiten hoch sein.
  • Ebene 2 (Fragment 2): Zeichne hier den grünen, variablen Teil. Damit das Rechnen im Skript einfacher ist, zeichne ihn am besten mit einer Referenzhöhe von
    Andreas81ch_1-1773309166637.gif

     

    1.00
    1.00
    .

 

2. Das GDL-Skript (2D-Skript)
Hier ist der Code, den du in das 2D-Skript einfügen kannst:
 
gdl
! --- Parameter Definition ---
! A = Breite des Objekts
! B = Gesamthöhe des Objekts (variabel)
h_fix = 0.80 ! Die fixierte Höhe des unteren Teils

! 1. Fixen Teil zeichnen (Fragment 1)
! Er wird direkt am Ursprung gezeichnet
FRAGMENT2 1, 1

! 2. Ursprung für den variablen Teil verschieben
! Wir springen um die 0.80 nach oben
ADD2 0, h_fix

! 3. Den variablen Teil skalieren (MUL2)
! Wir berechnen die restliche Höhe: B - 0.80
! Da das grüne Fragment in Ebene 2 mit Höhe 1.00 gezeichnet wurde, 
! entspricht der Skalierungsfaktor genau der Resthöhe.
h_var = B - h_fix

if h_var > 0 then
    MUL2 1, h_var / 1.0  ! Skaliert Y auf die gewünschte Resthöhe
    
    ! 4. Variablen Teil zeichnen (Fragment 2)
    FRAGMENT2 2, 1
    
    ! Transformationen aufräumen
    DEL 1
endif

! Den ersten ADD2-Befehl aufräumen
DEL 1
 
3. Erklärung der Befehle
  • FRAGMENT2 n, 1: Dieser Befehl ruft alles auf, was du im 2D-Symbol-Fenster auf der Ebene n gezeichnet hast. Die 1 am Ende bedeutet, dass die Linienfarben und Stifte aus dem Symbol verwendet werden.
  • ADD2 x, y: Verschiebt den "Stift" für die nächsten Zeichenbefehle. Wir schieben ihn um
    Andreas81ch_12-1773309269238.gif

     

    0.80
    0.80
    nach oben, damit der grüne Teil nicht über dem pinken liegt, sondern darauf sitzt.
  • MUL2 x, y: Das ist der Skalierungsbefehl. Da dein oberer Teil variabel sein soll, berechnen wir das Verhältnis von der Wunschhöhe (B - 0.80) zur Originalhöhe im Symbol (
    Andreas81ch_13-1773309269238.gif

     

    1.00
    1.00
    ).
 
Profi-Tipp für die "Steps"
Wenn du möchtest, dass die Höhe
Andreas81ch_14-1773309269238.gif

 

B
𝐵
nur in bestimmten Schritten (wie im Bild
Andreas81ch_15-1773309269238.gif

 

2.15
Andreas81ch_16-1773309269238.gif

 

,
Andreas81ch_17-1773309269238.gif

 

Andreas81ch_18-1773309269238.gif

 

2.95
Andreas81ch_19-1773309269238.gif

 

,
Andreas81ch_20-1773309269238.gif

 

Andreas81ch_21-1773309269238.gif

 

) springt, kannst du im Parameterskript folgendes ergänzen:
 
gdl
! Im Parameterskript:
values "B" 2.15, 2.95, 3.70, 4.94, 5.80
 
Dadurch kann der Nutzer das Objekt nur auf diese spezifischen Gesamthöhen ziehen.
Soll der grüne Teil nicht gestreckt werden, sondern sich die Anzahl der Blöcke je nach Höhe ändern (wie echte Stufen)? Dann müsste man statt MUL2 eine FOR-NEXT Schleife verwenden. Wäre das für dein Projekt relevant?
 
 
ArchiCAD v6.5 - 29 (CHE Swiss Edition / Schweiz) - macOS / WIN - Workstation in office: mac OS 26.4.1, Apple M2 Max, 64 GB RAM

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