Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Eingabewerte speichern

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Eingabewerte speichern (584 mal gelesen)
Heiko-T
Mitglied
Techn. Zeichner (CAD-Spezialist)


Sehen Sie sich das Profil von Heiko-T an!   Senden Sie eine Private Message an Heiko-T  Schreiben Sie einen Gästebucheintrag für Heiko-T

Beiträge: 147
Registriert: 29.07.2004

erstellt am: 06. Jan. 2006 07:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

hier meine Programmierkünste (ich weiß sie sind erschreckent).
Mein Problem ist folgendes. Die beiden Eingabewerte sollte er sich merken und beim nächsten Befehl aufrufen als Vorgabewert angeben !
Wie kann ich das realisieren ??

(Defun C:variam ()
  (Setq SKF1 (getreal "Maßstab 1 <>")
SKF2 (getreal "Maßstab 2 <>")
Auswahl (ssget)
BAP (getpoint "Bitte Basispunkt angeben"))   
  (command "varia" Auswahl "" BAP "B" SKF1 SKF2)
  (princ)
);defun


Danke im vorraus

------------------
MFG

Heiko

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 06. Jan. 2006 08:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Heiko-T 10 Unities + Antwort hilfreich

solange du in einer Zeichnung bleibst, funktioniert das mit globalen Variablen, die natürlich nicht von anderen Progs überschrieben werden dürfen. Sitzungsübergreifend, aber in der Zeichnung gespeichert, helfen dir vielleicht die sysvars USERR1-5 weiter. Zeichnungsübergreifend, aber auf die jeweilige ACADsitzung beschränkt,bleibt dir Blackbord -> vl-bb-set und vl-bb-ref.
Sitzungs und Zeichnungübergreifen gibts die Speicherung in der Registry -> vl-registry-read und vl-registry-write.
Das allgemeine Vorgehen sollte dir folgender (ungetester) Code verdeutlichen:

(Defun C:variam (/ Vorgabe)
  (setq VORGABE(cond
                 ((=(type SKF1)'REAL)SKF1)
                 ('T 1.0)
               )
  )
  (initget 2)
  (or(setq SKF1 (getreal (strcat"Maßstab 1 <"(rtos VORGABE 2 5)">")))
     (setq SKF1 VORGABE)
  )
  (setq VORGABE(cond
                 ((=(type SKF2)'REAL)SKF1)
                 ('T 1.0)
               )
  )
  (initget 2)
  (or(setq SKF2 (getreal (strcat"Maßstab 2 <"(rtos VORGABE 2 5)">")))
     (setq SKF2 VORGABE)
  )         
  (setq  Auswahl (ssget))
  (setq  BAP (getpoint "Bitte Basispunkt angeben"))     
  (command "varia" Auswahl "" BAP "B" SKF1 SKF2)
  (princ)
)

------------------
    - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 06. Jan. 2006 08:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Heiko-T 10 Unities + Antwort hilfreich

Hallo Heiko,
Du kannst die Werte als Defaultwerte in globalen Variablen festlegen, d.h., sie behalten innerhalb der aktuellen Zeichnung Ihren Wert auch nach  Beenden des Programms.
Wenn das Programm das zweite mal startet werden die Variablen nicht wieder mit den Defaultwerten belegt, weil sie ja bereits aus dem vorhergehenden Programmdurchlauf Werte beinhalten.

Alle anderen Variablen, die nur innerhalb der Funktion gelten sollen, habe ioh als lokale Variablen deklariert.

Code:

(Defun C:variam (/ SKF_temp Auswahl BAP)
;;;Defaultwerte, wenn SKF1 und SKF2 noch keine Werte beinhalten
  (if (not SKF1)
    (setq SKF1 10.0))
  (if (not SKF2)
    (setq SKF2 1.0))
;;;Ende Defaultwerte setzen
  (if (Setq SKF_temp
    (getreal (strcat "Maßstab 1 <" (rtos SKF1 2 0) ">")))
    (setq SKF1 SKF_temp))
  (if (Setq SKF_temp
    (getreal (strcat "Maßstab 2 <" (rtos SKF2 2 0) ">")))
    (setq SKF2 SKF_temp))
  (setq
    Auswahl (ssget)
    BAP     (getpoint "Bitte Basispunkt angeben"))
  (command "varia" Auswahl "" BAP "B" SKF1 SKF2)
  (princ)
  )

------------------
viele Grüße

Jörn

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 06. Jan. 2006 08:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Heiko-T 10 Unities + Antwort hilfreich

Hallo Heiko,

in deinem Code sind die Vorgabewerte bereits gespeichert, da du nur globale Variablen verwendet hast. Suche mal hier im Forum nach diesem Stichwort oder geh auf mapcar's Seiten, dort kannst du die Hintergründe dazu nachlesen.

Die Verwendung globaler Variablen ist ein Weg, den ich jedoch nicht preferiere. Ich arbeite in solchen Fällen mit dem Blackboard, eine Art Zwischenablage für den Lisp-Programmierer.
Das, was dir sicher auch noch gefehlt hat, ist der Weg, die nun gespeicherten Daten im Programm zu verwenden. Auch das habe ich in dem geänderten Bsp-Code eingebaut.

Code:

(defun C:variam (/ SKF1 SKF2 SKF_1 SKF_2 Auswahl BAP)
  (setq SKF_1 (vl-bb-ref 'SKF1);Wert aus Blackboard lesen
SKF_2 (vl-bb-ref 'SKF2);Wert aus Blackboard lesen
)
  (initget (if SKF_1 6 7));wenn Vorgabewert, dann auch Leereingabe erlaubt
  (setq SKF1 (getreal (strcat "Maßstab 1"
      (if SKF_1;wenn Vorgabewert, dann Vorgabewert ausgeben
(strcat" <"(rtos SKF_1 2 2)">")
""
)
      ": "
      ))
SKF1 (if SKF1 SKF1 SKF_1)
)
  (initget (if SKF_2 6 7))
  (setq SKF2 (getreal (strcat "Maßstab 2"
      (if SKF_2
(strcat" <"(rtos SKF_2 2 2)">")
""
)
      ": "
      )
      )
SKF2 (if SKF2 SKF2 SKF_2)
Auswahl (ssget)
BAP (getpoint "Bitte Basispunkt angeben")
)
  (vl-bb-set 'SKF1 SKF1);Wert ins Blackboard schreiben
  (vl-bb-set 'SKF2 SKF2);Wert ins Blackboard schreiben
  (command "varia" Auswahl "" BAP "B" SKF1 SKF2)
  (princ)
  );defun

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Heiko-T
Mitglied
Techn. Zeichner (CAD-Spezialist)


Sehen Sie sich das Profil von Heiko-T an!   Senden Sie eine Private Message an Heiko-T  Schreiben Sie einen Gästebucheintrag für Heiko-T

Beiträge: 147
Registriert: 29.07.2004

erstellt am: 06. Jan. 2006 13:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke !

Funktioniert wunderbar

MFG Heiko

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz