Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  vlax-true negieren

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:  vlax-true negieren (1008 mal gelesen)
Andreas Kraus
Mitglied
Elektrotechniker


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

Beiträge: 1356
Registriert: 11.01.2006

WIN 10
ACAD 2022

erstellt am: 01. Sep. 2010 10:40    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 zusammen,
Ich brauche einen "Umschalter"

(not t) ergibt nil
(not nil) ergibt t)

aber wie mache ich aus :vlax-true :vlax-false (oder umgekehrt)
Mit not geht das nicht. Muß ich da if... verwenden ?

------------------
Gruß
Andreas

http://kraus-cad.de

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: 01. Sep. 2010 10:42    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 Andreas Kraus 10 Unities + Antwort hilfreich

 
Zitat:
Original erstellt von Andreas Kraus:

Mit not geht das nicht. Muß ich da if... verwenden ?


ja oder cond .... not kann bloß nil oder 'T zurückliefern

(defun vlax-not (VLAXARG)
  (cond
    ((= VLAXARG :vlax-false):vlax-true)
    ((= VLAXARG :vlax-true) :vlax-false)
  )
)
oder allgemeiner
(defun vlax-not (VLAXARG)
  (cond
    ((= VLAXARG :vlax-false):vlax-true)
    ('T :vlax-false)
  )
)
------------------
      - 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

Andreas Kraus
Mitglied
Elektrotechniker


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

Beiträge: 1356
Registriert: 11.01.2006

WIN 10
ACAD 2022

erstellt am: 01. Sep. 2010 10:48    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

Ich glaubs ja nicht 
In jeder (mir bekannten) Programmiersprache kann ich einen true/false-, t/nil-, 1/0-Wert negieren nur in VLisp nicht. Wer hat denn da wieder gepennt ?

Naja - dann eben die aufgeblähte Variante.

Danke

------------------
Gruß
Andreas

http://kraus-cad.de

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: 01. Sep. 2010 11:05    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 Andreas Kraus 10 Unities + Antwort hilfreich

nil ist nichts .. leere Liste in LISP ... :vlax-false  ist nicht nil sonder :vlax-false .. ein definierter WERT!

und (if 'T .. / (if 1 ..  wird immer als WAHR interpretiert

not ist auch bloß ne (interne Funktion)

(not(not 1))  .. ergibt auch nicht wieder 1

------------------
  - 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

Andreas Kraus
Mitglied
Elektrotechniker


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

Beiträge: 1356
Registriert: 11.01.2006

WIN 10
ACAD 2022

erstellt am: 01. Sep. 2010 11:50    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

Mir gehts ja nur um die Negierung eines Boolschen Wertes. Völlig egal wie der heist, wie der aussieht oder was da drin steht - ist ja auch Sprachabhängig. Ich hab nur gedacht daß es hier auch was gibt weil doch :vlax-true/:vlax-false einen Boolschen Wert darstellen (sieht jedenfalls so aus).
Natürlich ist nil=nichts, noch nicht mal ein definierter Wert.
Aber auch auf die Gefahr hin daß sich einige gelernte Programmierer zusammenrotten und mich Teeren und Federn:
Weil (not nil) t ergibt und (not t) nil kann ich damit arbeiten und es ist mir sowas von egal ob das ein definierter Wert ist oder nicht.
Hauptsache es funktioniert  .
(tuts ja jetzt auch)

------------------
Gruß
Andreas

http://kraus-cad.de

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: 01. Sep. 2010 11:57    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 Andreas Kraus 10 Unities + Antwort hilfreich

not ist hier eine LISPFUNKTION (die mit dem boolschen Operator den Namen gemeinsam hat und zufälligerweise z.T. aus das Tut) , die in Abhängigkeit vom Eingabeparameter nil oder 'T zurückgibt .... nix weiter

hier ne andere NOT-Funktion:
(defun not (A)(- 1 A))
-> (not 1) -> 0
-> (not 0) -> 1
-> (not(not 1)) -> 1

und genauso kannst du dir auch ein "universelles" NOT bauen, das 'T/nil :vlax-true/:vlax-false  0/1 umschaltet , je nachdem , wie du "negieren" definierts.

Viel Spaß noch 

------------------
  - 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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 01. Sep. 2010 12:18    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 Andreas Kraus 10 Unities + Antwort hilfreich

Am Beispiel viewport displaylocked
ergibt
(vlax-get dpl 'Displaylocked)
--> 0 = acfalse / -1 = actrue
und/aber
(vla-get-Displaylocked dpl)
ergibt ein "Symbol"  :vlax-false / :vlax-true

bei "Variante 1" (unter dump object auch angezeigt) am o.g. Beispiel wäre der Schalter dann IMHO
ein "1+"
(vlax-put dpl 'Displaylocked (1+ (vlax-get dpl 'Displaylocked)));setzen
(vlax-get dpl 'Displaylocked);auslesen

------------------
Mfg Heiko

Elefantenjagd in Afrika
"... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..."

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

archtools
Mitglied



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

Beiträge: 823
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 01. Sep. 2010 13: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 Andreas Kraus 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Andreas Kraus:
In jeder (mir bekannten) Programmiersprache kann ich einen true/false-, t/nil-, 1/0-Wert negieren nur in VLisp nicht. Wer hat denn da wieder gepennt ?

Da bist Du auf einem völlig falschen Dampfer. In Lisp und auch in VLisp macht man das mit (not T) bzw (not nil), und das reicht ja wohl völlig aus für eine Programmiersprache, oder?

:vlax-true hat mit Lisp oder Vlisp gar nix zu tun, sondern mit ActiveX. Da evaluiert nicht Lisp, sondern irgend was, was vermutlich in C++ geschrieben wurde, via ActiveX zu :vlax-true. Warum sollte C++ oder ActiveX die Boolean-Datentypen von Lisp benutzen?

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

Andreas Kraus
Mitglied
Elektrotechniker


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

Beiträge: 1356
Registriert: 11.01.2006

WIN 10
ACAD 2022

erstellt am: 01. Sep. 2010 16:46    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

@archtools
Zitat:
Da bist Du auf einem völlig falschen Dampfer. In Lisp und auch in VLisp macht man das mit (not T) bzw (not nil), und das reicht ja wohl völlig aus für eine Programmiersprache, oder?


Würde ja ausreichen wenn es nicht :vlax-true geben würde. Das muß ich anders auswerten. Das wollte ich ja nur wissen und weis es jetzt.

Wenn ich geahnt hätte was ich da anstoße :( 
Mir ist klar daß das was mit ActiveX zu tun hat,
mir ist klar daß (not T) bzw (not nil) eigentlich für eine Programmiersprache ausreicht,
mir ist klar daß ich vorhin dusseligerweise VLisp geschrieben hab  ,
und wenn ich noch was vergessen hab ist mir das auch klar ;)  .

Aber warum darf ich denn nicht feststellen daß ich hier einen "Schalter" habe den ich nicht mit einem mitgelieferten "Hebel" betätigen kann, sondern mir erst diesen "Hebel" basteln muß ?
Mit (not T) bzw (not nil) hab ich diese Schaltmöglichkeit, mit :vlax-true geht das so leider nicht. Schade !!!

Zitat:
Warum sollte C++ oder ActiveX die Boolean-Datentypen von Lisp benutzen?

Solls ja gar nicht und hab ich auch nie behauptet. Ich hab doch nur gefragt ob es sowas wie (not T) dafür gibt und fand es nicht so toll daß das nicht der Fall ist.
Von mir aus schalt ich zwischen "Auto" und "Fahrrad" oder zwischen "an" und "aus" hin und her. Mir ist auch der Datentyp egal und einiges andere auch noch - es soll nur funktionieren.

Ich hab mich ja mit der Tatsache abgefunden daß ich hier offensichtlich einen true- und false-Wert bekomme der nicht mit der gleichen Einfachheit behandelbar ist wie in diesem Fall t oder nil (ja ich weis - ist was gaaaanz anderes  ).
Ich schreib mir jetzt "universelles NOT" für meine Bedürfnisse dann bin ich wieder glücklich.

------------------
Gruß
Andreas

http://kraus-cad.de

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

archtools
Mitglied



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

Beiträge: 823
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 01. Sep. 2010 17:38    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 Andreas Kraus 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Andreas Kraus:
Aber warum darf ich denn nicht feststellen daß ich hier einen "Schalter" habe den ich nicht mit einem mitgelieferten "Hebel" betätigen kann, sondern mir erst diesen "Hebel" basteln muß ?

Der Sinn und Zweck von Programmiersprachen ist, sich damit was zu basteln. :vlax-true ist nur ein Symbol, also eine vordefinierte Variable mit einem vordefinierten Wert (der nicht vom Boolean-Datentyp von Lisp ist), die auf eine Eigenschaft eines ActiveX-Objekts verweist. Warum sich hier überhaupt jemals die Notwendigkeit ergeben sollte, das zu negieren, erschließt sich mir sowieso nicht, aber falls das tatsächlich jemand braucht, dann hast Du ja jetzt gesehen, wie man das macht.

Solche merkwürdigen nicht-lispischen Datentypen gibt's in AutoLISp/VisualLisp wegen der notwendigen Kommunikation mit AutoCAD und dessen Datentypen übrigens seit jeher. Sieh' Dir beispielsweise nur mal den Datentyp PICKSET an.

Ich bin mal gespannt, was Du sagen wirst, wenn Du erst mal über den Variant-Typ stolperst ... :-)

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

Andreas Kraus
Mitglied
Elektrotechniker


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

Beiträge: 1356
Registriert: 11.01.2006

WIN 10
ACAD 2022

erstellt am: 01. Sep. 2010 20:40    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

Keine Sorge, mit dem Variant-Typ hab ich mich schon rumgeprügelt (ist noch nicht raus wer gewinnt  ).
Ich hab ja auch kein Problem mit Datentypen, ich hab nur manchmal die komische Idee daß manche Dinge einfacher sein sollten (manchmal sind sie das schon und ich blicks nur nicht  )

Mal sehen wann es wieder soweit ist.

------------------
Gruß
Andreas

http://kraus-cad.de

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 01. Sep. 2010 20:47    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 Andreas Kraus 10 Unities + Antwort hilfreich

wie einfach soll es denn noch werden?
schalten mit "1+" (siehe oben) oder was bauen siehe CADmium oder mit if... 
nicht soviel (quatschen) nachdenken - machen ... 

------------------
Mfg Heiko

Elefantenjagd in Afrika
"... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..."

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

archtools
Mitglied



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

Beiträge: 823
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 01. Sep. 2010 22:35    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 Andreas Kraus 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Andreas Kraus:
Keine Sorge, mit dem Variant-Typ hab ich mich schon rumgeprügelt (ist noch nicht raus wer gewinnt   ).
Ich hab ja auch kein Problem mit Datentypen, ich hab nur manchmal die komische Idee daß manche Dinge einfacher sein sollten

Na gut, das unterschreib' ich :-) Manchmal aber wünsch' ich mir's sogar ein wenig komplexer (mein alter Wunsch, Funktionen überladen zu können ...)

Mich stört der ganze VLAX-Kram deshalb nicht sonderlich, weil das halt alles kein Lisp ist. Manchmal aber grausts mich schon ein wenig, wenn ich hier sehe, dass manche der kleinen in Lisp geschriebenen Hilfsprogrämmchen tatsächlich nur aus einer Folge von VLAX-Aufrufen bestehen. Aber so ist die AutoCAD-Welt halt nun mal, und wenn's hilft, dann hat's auch seine Berechtigung. Ich bin halt auch ein wenig Programmier-Ästhet :-)

Ich sehe z.B. nicht ein, dass man in A/V-Lisp einen Datentyp PICKSET braucht. Das wäre nun wirklich kein Aufwand gewesen, PICKSETs als Entitylisten darzustellen, um dann mit all den üblichen Listenfunktionen von Lisp damit zu hantieren.

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