Support Forum

Fragen zu: Infodialog, Array-Parametern, PREV_MODE, Debugging

Schlagworte:
  • 2013

Hallo!

Ich habe mir die Smartparts bereits in der 2012er Version angesehen,
wegen der schlechten Dokumentation, aber schnell das Interesse verloren.
Vor Kurzem entdeckte ich die Seite http://www.selfGDL.de im Web, und seit dem
beschäftige ich mich wieder intensiver mit den Smartparts. Da sich
Smartparts aber doch von ArchiCAD GDL-Objekten unterscheiden, bleiben
einige Fragen trotzdem unbeantwortet, vielleicht kann jemand helfen:

1. Infodialog:
Wie kann man in Strings einen Zeilenumbruch verwenden, wie im
Standarddialog von Nemetschek in Zeile 3 [= str5] ("\n" wie in anderen
Sprachen geht nicht!)?

2. Array-Parameter:
Kann ich die Array-Größe eines Parameters skriptgesteuert ändern, z.B.
Redimensionierung mit DIM x[array_size] (so geht's nicht).

3. Array-Parameter in der Palette:
Wie bekomme ich den Bearbeitungsdialog für Arrays (den [ ... ] Button),
da anscheinend nur dort Arrayelemente hinzugefügt oder gelöscht werden
können (siehe Frage 2), in der Palette angezeigt?

probiert: I_INFIELD "x"... , I_INFIELD "x[]"... , I_INFIELD "x[1]"...
und das ganzen auch mit I_INFIELD_2 ... - es wird immer nur ein
Bearbeitungsfeld für einen Wert erzeugt, oder nichts bei fehlerhafter
Syntax.

4. PREV_MODE:
Was ist der Vorteil/Sinn der Funktionen PREV_LINE2 und PREV_ARC2, da ich
ja auch die normalen Funktionen LINE2 und ARC2, aber auch alle anderen
Zeichenfunktionen benutzen kann?

Ab hier gehts direkt an Nemetschek:

5. SPLINE2: (Programmfehler?)
status=1 (geschlossener Spline) funktioniert nicht, auch nicht in der
Variante 1+2.

6. Bewehrungsfunktionen:
Wird es jemals eine verwendbare Dokumentation (eine gute erwarte ich eh nicht)
zu den Bewehrungsfunktionen geben, oder muss ich das alles
aus den mitgelieferten Smartparts lernen?

7. Fehlersuche: (Wunsch)
Weder die PRINT noch BREAKPOINT Funktion sind sehr hilfreich. PRINT
funktioniert im PREV_MODE anscheinend nicht, und BREAKPOINT funktioniert
nur im Editor, womit eine Interaktion mit der Eingabepalette schwer zu
testen ist, z.B. die Auswertung von GLOB_UI_BUTTON_ID. Vieles ist
natürlich über Umwege machbar, ich würde mir aber ein Debugfenster für
das laufende Script wünschen, in das einfache Ausgaben über einen Befehl
z.B. "DEBUG_PRINT" erfolgen können, oder fragt einfach eure
Smartpart-Entwickler die haben warscheinlich ähnliche Probleme, oder
bessere Entwicklungswerkzeuge, als wir normalen Anwender.

So das wars fürs Erste.

Großer Dank geht an die Macher der Seite http://www.selfGDL.de, die Ihre Seite
kostenlos zu Verfügung stellen und dafür viel Freizeit investiert haben.

Ich möchte meine Erfahrungen mit den Smartparts auf der Seite
smartparts.tzb-moitzi.at mit allen teilen, damit die Einstiegshürde für
andere vielleicht etwas niedriger wird.

Noch besteht die Seite zum Großteil aus einfachen Übersetzungen der
englischen Dokumentation, ergänzt um Erklärungen von der Seite
http://www.selfGDL.de, aber es soll mehr werden.

Mit freundlichen Grüßen,

Manfred Moitzi

11 - 16 (16)

Das funktioniert mit im Skript erstellten Arrays, aber leider nicht mit Arrays die als Skript-Parameter verwendet werden, z.B. x[20]ist ein Parameter-Array:

DIM test[30]
DIM z[20]
PARAMETERS x = test
z = test

Setzt alle Werte von x auf 0, aber VARDIM1(x) bleibt 20, während VARDIM1(z) gleich 30 ist.

Gruß

Manfred

Das ist etwas komplex. Die im Objekt voreingestellten Parameter werden als Instanz im platzierten Objekt im Plan mit abgelegt. Beim Skriptdurchlauf werden diese in Variablen gewandelt. Änderst du die Variablen, ändern sich nicht die Parameter-Instanzen im Plan. Probiere mal das bei angenommenem Objektparameter "instanz[10]":

DIM resetter[]
PRINT VARDIM1(instanz)
FOR i=1 TO 5 : resetter[i]=instanz[i]: NEXT i
instanz=resetter
PARAMETERS instanz=resetter
PRINT VARDIM1(instanz)

Hallo!

Es wird zwar das Array instanz verändert (VARDIM1 liefert 5), aber nur die am Beginn des Skripts erstellt lokale Kopie, das Parameter-Array ändert seine Größe nicht.

Wie Jörg weiter oben bereits geschrieben hat, wird eine skriptgesteuerte Größenänderung von Paramteter-Arrays noch nicht unterstützt, aufgrund seiner Sachkenntnis nehme ich an, dass er in der Entwicklung mitarbeitet oder zumindest sehr tiefen Einblick in den Entwicklungsprozess hat.

Gruß
Manfred

OK, dann ist das in Allplan anders. Macht es damit aber mit vielen ArchiCAD-Objekten inkompatibel. V.a. weil dann die Fehlerursache schwer zu finden ist. Wenn Nem das fixt, sollten sie das nicht über einen Zusatzbefehl machen.

Der Import von GDL/GSM-Dateien ist nicht mehr möglich.

Der Import von Fremddateien ist in der Version abgeschaltet, da Smartparts zunehmend mit Allplan-Intelligenzen verknüpft werden. Das Leisten die Importe nicht!

Das Verstärkte Augenmerk liegt auf eigenen intelligenten Entwicklungen!


siehe Forumsbeitrag

Gruß

Manfred

Da sieht man, dass ich hier lange nicht mehr unterwegs war. Ich antworte darauf mal in dem anderen Thread.

11 - 16 (16)