| |
| 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
Beiträge: 1356 Registriert: 11.01.2006 WIN 10 ACAD 2022
|
erstellt am: 01. Sep. 2010 10:40 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 01. Sep. 2010 10:42 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas Kraus
|
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1356 Registriert: 11.01.2006 WIN 10 ACAD 2022
|
erstellt am: 01. Sep. 2010 10:48 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 01. Sep. 2010 11:05 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas Kraus
|
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1356 Registriert: 11.01.2006 WIN 10 ACAD 2022
|
erstellt am: 01. Sep. 2010 11:50 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 01. Sep. 2010 11:57 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas Kraus
|
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 01. Sep. 2010 12:18 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas Kraus
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
Beiträge: 823 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 01. Sep. 2010 13:33 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas Kraus
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
Beiträge: 1356 Registriert: 11.01.2006 WIN 10 ACAD 2022
|
erstellt am: 01. Sep. 2010 16:46 <-- editieren / zitieren --> Unities abgeben:
@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
Beiträge: 823 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 01. Sep. 2010 17:38 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas Kraus
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
Beiträge: 1356 Registriert: 11.01.2006 WIN 10 ACAD 2022
|
erstellt am: 01. Sep. 2010 20:40 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 01. Sep. 2010 20:47 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas Kraus
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
Beiträge: 823 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 01. Sep. 2010 22:35 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas Kraus
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 |