Neue Samples in Alpha 17

Started by Fred Tomke, December 15, 2009, 06:36:26 PM

Previous topic - Next topic

Fred Tomke

Hallo,

vielleicht hat der eine oder auch der andere es bereits mit bekommen, die Samples in den anderen Sprachversionen haben sich ein wenig geändert. Diese Änderungen haben bisher keinen Eingang in die deutsche Sprachversion gefunden. Zugunsten einer näherungsweisen konsistenten Haltung und Verwaltung des Quellcodes war die Idee entstanden, die Änderungen nachzuführen. Das betrifft insbesondere den Ladevorgang (Prolog) und das Auffinden der Sample-Dateien, ohne extra einen Supportpfad einzurichten (Epilog, siehe unten). Da der zeilenweise Abgleich des Quellcodes bzw. steuerelementweise Abgleich der Dialoge allerdings zu aufwändig erschien, wurden schlichtweg die alten Samples verworfen.

Für die Version 6.0.0.17 sind die Original-Samples aus dem ENU-Release ins Deutsche übertragen worden. Bitte überprüft diese beim Erscheinen des Release auf sprachliche und funktionale Defizite.

Wer gern in den Beispiel-Dateien stöbern, probieren, anpassen möchte, ohne jedoch die Ausgangsdateien zu zerstören, sollte den Ordner mit den Beispieldateien kopieren und dann in der Registry (je nach Plattform) einen der folgenden Schlüssel setzen:

;; 32 Bit

[HKEY_CURRENT_USER\SOFTWARE\OpenDCL]
"SamplesFolder"="C:\\Programme\\OpenDCL Studio\\DEU\\Samples_neu\\"


oder

[HKEY_LOCAL_MACHINE\SOFTWARE\OpenDCL]
"SamplesFolder"="C:\\Programme\\OpenDCL Studio\\DEU\\Samples_neu\\"


;; 64 Bit

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\OpenDCL]
"SamplesFolder"="C:\\Program Files (x86)\\OpenDCL Studio\\DEU\\Samples_neu\\"


oder

[HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\OpenDCL]
"SamplesFolder"="C:\\Program Files (x86)\\OpenDCL Studio\\DEU\\Samples_neu\\"


Allerdings gibt es nun wieder Dífferenzen zu den anderen Sprachversionen:

- Das Beispiel zur Punktwahl bei geöffneten modalen Dialogen habe ich komplett neu geschrieben. Ich glaube, dass der Code so einfacher zu verstehen und die Problematik mit dem Aus- und Wiedereinblenden des Dialogs deutlicher wird. Das Thema ist zu wichtig und wird zu häufig nachgefragt, so dass ich diese Inkonsistenz in Kauf nahm.

- Ich hatte zwischenzeitlich ein aktualisiertes Splitter-Beispiel der Allgemeinheit zur Verfügung stellen wollen. Owen bot mir an, es in der deutschen Sprachversion zu integrieren.

- Das ToolTip-Beispiel wurde um die Möglichkeit erweitert, mehrzeilige Tooltips zu testen.

Diese Änderungen sind relativ jung (grad ein paar Stunden) und habe sie bereits Owen mitgeteilt. Ob diese Änderungen in den anderen Sprachversionen Eingang finden werden, weiß ich aber nicht.

Wie wichtig ist es Euch, dass die Beispiele in allen Sprachversionen gleich sind?

oder gar

Soll es für die deutsche Sprachversion eine eigene, zumindest erweiterte Beispielsammlung geben?

Ich habe mal den aktuellen Stand zum Testen beigefügt.

Viele Grüße,

Fred

[EDIT 18.12.1009: Anlage gelöscht, siehe Posting vom 18.12.]
Fred Tomke
Dipl.-Ing. (FH) Landespflege

[ landscaper - landscape developer - digital landscape and urban design]

SpEEDY

Hi Fred ,
ich bins mal wieder.

Hatte ein paar Monate keine Zeit Open-DCL weiter zu testen.
Werde die Neuen Sampler erst nächsten Monat Testen können. Wollte aber vorerst mal sagen.
Das ich mich freue das es endlich Sampler "Komplett" auf Deutsch gibt.
Ich hoffe das auch die Einstellungen im ODCL-Projekt auch beschrieben sind.
Z.b die nicht moderale Form, wo man Linien zeichnen kann.
Man muss drauf achten das man die Schaltfläche "Als Befehl ausführen" aktiviert hat.

Nach dem Testen schreibe ich noch mal einen Ganzen Bericht.

Mfg

SpEEDY
Es ist unmöglich etwas Idiotensicher zu machen, weil Idioten so genial sind!

Fred Tomke

#2
Hallo, SpEEDY, danke für Deine Rückmeldung. Es ist gut zu wissen, dass man nicht allein auf weiter Flur steht.
Es gibt noch kleinere Verbesserungen bei den Samples. Anbei mal die vorletzten Dateien (einfach die Dateien meines obigen Eintrags durch diese hier ersetzen).

Owen bat mich zwischenzeitlich, meine Dateien für die ENU-Variante aufzubereiten. Somit sind die deutschen samples wieder konsistent zu den anderen Sprachversionen.

Einzig die DistSample-Dateien sind noch nicht übersetzt.
Bitte beachte den geänderten Ladevorgang.

Fred

[EDIT 18.12.1009: Anlage gelöscht, siehe Posting vom 18.12.]
Fred Tomke
Dipl.-Ing. (FH) Landespflege

[ landscaper - landscape developer - digital landscape and urban design]

Fred Tomke

Hallo, ich habe jetzt den (vorerst) letzten Stand hochgeladen. Mit ein paar Fehlern weniger. Bitte prüft es mal.
Ich würde mich sehr freuen, wenn sich jemand bereit erklären würde, voller Inbrunst die Datei DistSampleReadMe.txt ins Deutsch zu übersetzen.

Vielen Dank!

Fred
Fred Tomke
Dipl.-Ing. (FH) Landespflege

[ landscaper - landscape developer - digital landscape and urban design]

SpEEDY

Hi Fred.
Habe es jetzt geschafft deinen Samples zu Teste.
Und ich muss sagen ich bin begeistert. Endlich sind die LISP-Dateien auf Deutsch.  ;D
Ich muss aber sagen habe nicht alle getestet.
Aber einen kleinen Verbesserungsvorschlag habe ich.
Im dem Programm Modeless, dass das Thema â,žnicht-modalâ," hat.
Würde ich das Linie Zeichnen nicht mit festen Koordinaten mache. Ich finde es besser wenn der Benutzer sehen kann dass man auch Befehle mit Open-DCL ausführen kann.
Um anderen würde ich in die der Lisp Routine erwähnen, dass man im ODCL-Projekt die Option "Event Invoke" mit der Option "Als Befehl ausführen" wählen muss.
Da sonst der Befehl sich nicht immer ausführen lässt. Ich hoffe ich erzähle hier keinen Mist habe aber schon Fehlermeldungen bekommen wenn ich diese Option nicht gewählt habe. Habe dir einfach ein schnelles Beispiel vorbereitet.

Mit freundlichen Grüßen

SpEEDY
Es ist unmöglich etwas Idiotensicher zu machen, weil Idioten so genial sind!

Fred Tomke

Hallo, SpEEDY,

Event Invoke" mit der Option "Als Befehl ausführen" macht nur Sinn, wenn etwas in der Zeichnung verändert werden soll oder aber - so wie Du es gerade angemerkt hast - eine Benutzerinteraktion angedacht ist.
So wie Du in modalen Dialogen keinen Punkt und kein Objekt in der Zeichnung wählen kannst, während der Dialog aktiv ist, kann man eigentlich auch keinen Punkt und kein Objekt wählen, während ein Ereignis eines nicht-modalen Dialogs aktiv ist. Einzige Ausnahme: man lässt die Ereignisfunktion asynchrion ausführen. Das wird in der deutschen Version als "Als Befehl ausführen" bezeichnet, weil es der Originalfassung am ähnlichsten war. Immer häufiger liest man allerdings hier im Forum die beiden Begriffe "synchronous" und "asynchronous", die das eigentlich von der Technologie her am besten beschreiben. "Als Befehl ausführen" beschreibt eher die Folge dessen, was die Einstellung an der Befehlszeile beschreibt.

Ein Beispiel: Ich habe in einem nicht-modalen Dialog ein ListView, eine erweiterte Liste. Beim Doppelklick, soll der Dialog ausgeblendet oder verkleinert werden, um ein Symbol in der Zeichnung abzusetzen. Um dies zu erreichen, habe ich seinerzeit "EventInvoke" auf "Als Befehl ausführen" setzen müssen. Das hat aber zur Folge, dass in der Befehlszeile und auch in der Liste der zuletzt aufgerufenen Befehle jedes Ereignis des Steuerelements erscheint.

(c:signothek_sc_signothek_lst_symb_OnClicked 3 0)
(c:signothek_sc_signothek_lst_symb_OnDblClicked 3 0)


Durch die asynchrone Methodik sendet OpenDCL Messages an die Befehlszeile (für das jeweilig ausgelöste Ereignis). Das führt meinem Empfinden und meiner Erfahrung nach zu Defiziten in der Performance. Mit EventInvoke = "KeepFocus" hört das Geflickere auf und in der History der Befehle stehen meine Ereignisse nicht mehr drin.

Wie könnte man dennoch auf die Befehlzeile und die Zeichnung zugreifen, wenngleich die Ereignisse des Steuerelements synchron aufgerufen werden? Das kann man beispielsweise mit (dcl_sendstring ...) lösen. Man belegt ganz einfach Variablen und ruft dann einen Befehl mit lesbarem Namen auf, der auf diese Variablen reagiert. Ich habe das an verschiedenen Stellen bereits probiert und muss sagen dass es sehr gut funktioniert.

Ich habe mir für die nächste Version der Signothek (Planzeichenkatalog) eine komplette Überarbeitung vorgestellt, so dass alle Steuerelemente die Ereignisse nur noch synchron aufrufen.

Ich habe erstmal die Antwort geschrieben. Jetzt schaue ich mir Dein Beispiel an. Ich nehme mal Deine Anmerkung zum Anlass, beide Vorgehensweisen im Dialog zu demonstrieren. Vielen Dank!

VG, Fred
Fred Tomke
Dipl.-Ing. (FH) Landespflege

[ landscaper - landscape developer - digital landscape and urban design]

Fred Tomke

SpEEDY,

da hat sich ein kleiner Fehler eingeschlichen:
Code (autolisp) Select

(defun c:DemoModeless_cmdDrawLine_OnClicked ()
  (dcl_Form_hide Modeless_DemoModeless)
  (command "_LINE" (getpoint) (getpoint) "")
  (command "_ZOOM" "_W" "-10,-10" "20,20")
  (dcl_Form_show Modeless_DemoModeless)
  (princ)
)


Die Hide-Methode beendet den Dialog nicht: der Dialog ist danach immer noch aktiv, aber eben nur unsichtbar! Der daran anschließende Aufruf der Show-Methode hätte den Effekt, den Dialog ein zweites Mal anzuzeigen!

Besser:
Code (autolisp) Select

(defun c:DemoModeless_cmdDrawLine_OnClicked ()
  (dcl_Form_hide Modeless_DemoModeless T)
  (command "_LINE" (getpoint) (getpoint) "")
  (command "_ZOOM" "_W" "-10,-10" "20,20")
  (dcl_Form_hide Modeless_DemoModeless nil)
  (princ)
)


Man könnte nun noch demonstrieren, dass der Dialog auf während des Zugriffs auf AutoCAD noch sichtbar bleiben kann. Man muss ihn gar nicht wegblenden, allenfalls deaktivieren. Und hinzu kommt, dass der Zoombefehl noch an die gepickten Koordinaten angepasst werden sollte, denn der Zoombefehl verwendet ja die Koordinaten aus dem gleichen Koordinatenbereich wie der Linienbefehl.

Probier das mal:

Code (autolisp) Select

(defun c:DemoModeless_cmdDrawLine_OnClicked ( / strOldText ptStart ptEnde)
  (setq strOldText (dcl_Control_GetCaption Modeless_DemoModeless_Label1))
  (dcl_Control_SetCaption Modeless_DemoModeless_Label1 "Picken Sie jetzt zwei Punkt am Bildschirm. Der Dialog bleibt geöffnet, ist jedoch inaktiv!")
  (dcl_Form_Enable Modeless_DemoModeless nil)
  (if (and (setq ptStart (vl-catch-all-apply 'getpoint (list "\nStartpunkt: ")))
           (not (vl-catch-all-error-p ptStart))
           (setq ptEnde (vl-catch-all-apply 'getpoint (list ptStart "\nZielpunkt: ")))
           (not (vl-catch-all-error-p ptEnde)))
    (progn
      (command "_LINE" ptStart ptEnde "")
      (command "_ZOOM" "_W" ptStart ptEnde)
    ); progn
  ); if
  (dcl_Form_Enable Modeless_DemoModeless T)
  (dcl_Control_SetCaption Modeless_DemoModeless_Label1 strOldText)
  (princ)
)


Fred
Fred Tomke
Dipl.-Ing. (FH) Landespflege

[ landscaper - landscape developer - digital landscape and urban design]

SpEEDY

Hi Fred.
Danke für die Erklärung.
Wie gesagt hatte immer so ein Paar Schwierigkeiten wenn ich mit â,žCommendâ," gearbeitet habe.
Wegen dem Fehler. Tut mir leid habe ich übersehen.  ::)
So wie du das geschrieben hast. So würde ich das auch für die Samples verwenden.
Ansonsten Danke für den â,žIfâ," Code.
Wusste garnicht das, das so geht.
So fange ich falsch Einträge ab. Super!!  ;D  ;D

Mit freundlichen Grüßen

SpEEDY
Es ist unmöglich etwas Idiotensicher zu machen, weil Idioten so genial sind!