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

Material beim "Call" Befehl beeinflussen

FStudzinski
Graphisoft Partner
Graphisoft Partner
Ich rufe in einem Objekt(Master) verschiedene Objekte die aus dem Grundriss per [Auswahl Sichern als]erzeugt wurden auf.
Nun soll das Material des aufgerufenen Objekts von dem "Master" beeinflusst werden.

Beim Call Befehl werden keine Parameter angegeben,
da das Objekt mit den Standardparametern eingesetzt werden muss.

Vielen Dank im Vorraus.
FST
12 ANTWORTEN 12
Anonymous
Nicht anwendbar
der material-parameter muss schon übergeben werden, den willst du ja beeinflussen. parameter die du nicht beeinflussen willst, übergibst du nicht, es werden dann die im aufgerufenen objekt selbst verankerten werte benutzt.

also:

call "objekt" A=1, B=1,
material=masterMaterial
FStudzinski
Graphisoft Partner
Graphisoft Partner
Danke für die Antwort,
aber sie löst mein Problem leider noch nicht.

Die Grösse des Objektes muss von dem aufgerufenen Objekt selbst bestimmt werden.

CALL "objekt" PARAMETERS

Da das aufgerufene Objekt per [Auswahl Sichern als]erzeugt wird, gibt es auch keine Parameter für ein Material die ich übergeben kann. Ich möchte also die Materialdefinitionen des Objekts überschreiben.

Ich hoffe ich habe die Antwort richtig verstanden.

________________________________________________
Da steht er nun der arme Prinz und ist so Klug als wie zuvor !
FST
Holger Kreienbrink
Graphisoft
Graphisoft
Die Unterobjekte (Macros) müssen natürlich Parameter haben für die Materialien. Sonst geht gar nichts. Sonst steht nur das ursprüngliche Material im Autotext.

Beim CALL Aufruf werden dann die Parameter vom Master zum Macro übergeben. Namensgleichheit der Parameter schafft da meistens etwas mehr Übersichtlichkeit
Holger Kreienbrink
Director Product Intelligence
Munich, Germany
Archicad since Version 5....
If I sound too harsh, please forgive me: I am German.
FStudzinski
Graphisoft Partner
Graphisoft Partner
"...Die Unterobjekte (Macros) müssen natürlich Parameter haben für die Materialien...."

Es geht ja genau darum das die Unterobjekte keine Parameter haben. in dem Projekt sollen ein paar hundert Objekte per [Auswahl Sichern als] erzeugt werden, und wer möchte da schon einige Parameter im GDL ändern.
FST
Anonymous
Nicht anwendbar
hmmm... es können in einem objekt natürlich nur die werte geändert werden, die über einen parameter ansprechbar sind. alles andere geht nicht.

die einzig andere alternative das material eines objektes zu ändern ist es das häkchen vor "objektmaterialien verwenden" im objektdialog auf der seite "3d" wegzunehmen. das objekt hat dann nur das material, welches dort eingestellt wird. wenn es sowieso nur aus einem besteht, dann ist das egal, wenn es aus mehreren besteht, dann werden die anderen überschrieben. aber vielleicht ist das ok für dich...

bei allem anderen wirst du nicht umhin kommen einen parameter für das material anzugeben. da kann dir höchstens der suchen/ersetzen-dialog bei der scriptbearbeitung etwas arbeit abnehmen...
vielleicht erklärst du aber auch mal, was du genau machen willst... eventuell finden wir ja einen workaround...
Anonymous
Nicht anwendbar
Vielleicht kannst Du mal beschreiben, was Du vorhast. Denn ein paar Hundert Objekt per Hand zu sichern ist ja auch kein Spaß. Vielleicht gibts Alternativen.

Es ist ja auch denkbar das ganze als GDL-Text zu sichern und sich ein Makro in Open Office 😉 zu schreiben, das den Pulk von Dateien einliest und die bösen Materialbefehle rausnimmt.

[ 29. April 2003, 14:45: Beitrag editiert von: Ove Bodj ]
FStudzinski
Graphisoft Partner
Graphisoft Partner
Ich hatte gehofft das man das "das häkchen vor "objektmaterialien verwenden" im objektdialog auf der seite "3d" wegzunehmen " für das aufgerufene Objekt aus dem Script des Masters heraus machen kann.

Es geht bei dem Objekt um ein grösseres Städtebauprojekt. Im Grundriss wird mit Zauberstab usw. ein Geschoss erstellt, diese wird dann über [Auswahl sichern als]als Bibliothekselement gespeichert. Die Einzelbauteile werden dann wieder gelöscht.

Dann werden über den Master die zuvor erstellten Objekte aufgerufen und bilden so das Gebäude.
Der Master "stapelt" dann z.b. die aufgerufennen Geschosse je nach Geschosszahl.
Nun soll das Material eines Geschosse aus dem Master heraus geändert werden.
FST
Anonymous
Nicht anwendbar
OK. Es wird klarer.
Da wirst Du mit einfach mal nen Schalter umlegen nicht weiterkommen. Möglichkeiten gibt es viele es dennoch zu lösen. Ein bißchen EDV-Kenntnisse und ein bißchen Gespür für Skripte und Coden brauchst Du aber.

Brainstorming:
+++ Du machst jede Geschoßplatte zusammenhängend. D.h. nicht in mehreren Teilen. Nur Löcher sind erlaubt.
+++ Jeder 'Gebäude'-Platte gibst Du eine eindeutige ID-Nummer/Namen und gleiche Materialien auf allen Seiten
+++ Das ganze speicherst Du als GDL-Text, wie vorgeschlagen. Aber alles auf einmal. Vielleicht lieber über 'sichern als' als als (geil! dreimal 'als' 🙂 ) Objekt im GSM-Format sichern.
+++ Jetzt evt. erstmal mittels eines geeigneten Editors (nicht den in AC vieeeel zu lahm) den Code shrinken. Also erstmal alle doppelten Leerzeichen raus
+++ Damit gehst Du jetzt in einen skriptfähigen Editor. Z.B. OpenOffice oder Konkurrenten. und jetzt kommt die Arbeit: Du hast nun Code, in dem alle Deine Geschoßplatten unregelmäßig in folgender Form enthalten sind:
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">!!Testplatte
PEN 4
ADDZ -0.3
GLOB_LAYER = "Treppen"
GLOB_ID = "Testplatte"
GLOB_INTID = 3
BODY -1
cPRISM_ "Grasfläche", "DEFAULT", "DEFAULT",
5, 0.3,
-12.0692, 6.659881, 15,
-4.59446, 3.37098, 15,
-7.289286, -2.753626, 15,
-14.7641, 0.535275, 15,
-12.0692, 6.659881, -1
BODY -1
DEL 1 +++ Alles was dovor und danach ist kann gelöscht gewerden
+++ alle cPRISM_ "material", "material", "material",... kannst du entweder in einfache PRISM_ ... umwandeln oder die Absolutwerte durch Variablennamen ersetzen.
+++ Netterweise beginnt jede neue Platte nun mit einem doppelten '!' gefolgt von der ID. Hast Du jeweils den kompletten Block rausfiletiert, kannst Du alles entfernen, bis auf die cPRISM, ADD, ROT, MUL, DEL - Zeilen. Es bliebe vom Beispiel oben über:
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">!!Testplatte
ADDZ -0.3
cPRISM_ mat1, mat2,mat3,
5, 0.3,
-12.0692, 6.659881, 15,
-4.59446, 3.37098, 15,
-7.289286, -2.753626, 15,
-14.7641, 0.535275, 15,
-12.0692, 6.659881, -1
DEL 1 +++ Anstatt das alles nun in eine Zillion Files zu schreiben würde ich es als SUBS aufbauen. Da kann vielleicht die Benennung der Platten mit einer Nummer statt mit einem Namen helfen. Und eingesetzt in ein GSM kannst Du sie statt mit CALL über GOSUB aufrufen.

Das ganze steht und fällt wie fit Du in einer Programmiersprache bist und wie mächtig diese ist. Es geht sogar mit DOS 5.0 BASIC. Aber ich denke, daß Du in einer Textverarbeitung weiter kommst. Du kannst es auch bis zur Perfektion treiben, wenn Du das Skript erstmal zerlegt hast: z.B. Plattenstärke über einen Parameter steuern etc.
Holger Kreienbrink
Graphisoft
Graphisoft
Leider gilt aber immer:
Parametrik = Gehinrschmalz = Programmieren

und für alle GDL Fraeks gilt "= Spaß"
Holger Kreienbrink
Director Product Intelligence
Munich, Germany
Archicad since Version 5....
If I sound too harsh, please forgive me: I am German.