| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Objekt Polyline / Gruppencode 70 (919 mal gelesen)
|
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 05. Apr. 2005 13:13 <-- editieren / zitieren --> Unities abgeben:
Hallo, beim Objekt Polyline ist der Gruppencode 70 enthalten, der verschiedene bitcodierte Werte haben kann. Ich möchte nun kontrollieren, ob ein bestimmtes Bit im Wert enthalten ist. Gibt es dafür eine Funktion oder wie kann ich das kontrollieren? Danke im Voraus und viele Grüße Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 05. Apr. 2005 13:25 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
z.B: wenn (=(logand ZAHL BITVALUESUMME) BITVALUESUMME) True, dann Bitwert gesetzt oder auf Bitnummer testen : (logand ZAHL (lsh 2 (- BITNR 2))) sieh dir auch die Funktion boole mal an ------------------ - 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 |
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 05. Apr. 2005 14:20 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas, Zitat: Original erstellt von CADmium:
wenn (=(logand ZAHL BITVALUESUMME) BITVALUESUMME) True, dann Bitwert gesetzt
Mir würde ein Ergebnis true/false (t/nil) ausreichen. Aber ich glaube, dass in Deinem Code noch ein Fehler ist: gemäß Deinem Code: $ (=(logand 1 129) 129) nil -> sollte eigentlich t als Ergebnis haben. $ (=(logand 1 129) 1) T -> das ist richtig, oder? Gruß Bernd EDIT: Habe gerade diesen Beitrag noch gefunden: http://ww3.cad.de/foren/ubb/Forum145/HTML/000445.shtml Danke und Us für Dich. [Diese Nachricht wurde von Bernd10 am 05. Apr. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 05. Apr. 2005 14:28 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
(=(logand ZAHL BITVALUESUMME) BITVALUESUMME) -> so !!! (=(logand 129 (+ 1 4) (+ 1 4))) --> 'T sagt aus, das sich 129 aus 1+4+ andere 2'er Potenzen zusammensetzt Alles klar? ------------------ - 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 |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2490 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 05. Apr. 2005 16:33 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
Hi, nach dem ausgiebigen Studium von Mapcars Seiten, http://www.tutorial.autolisp.info/ und folgende, habe ich mir folgende Funktionen gebaut: Code:
;; Bitcode-Magic by Axel "mapcar" Strubbe-Zettler ;; Zerlegt einen Bitcode in eine Liste der Einzelwerte ;; z.B.: (FINDBITS (getvar "osmode")) -> (16384 4 1) (defun FINDBITS (NUM / A BITLIST) (setq A 1) (while (>= NUM A) (if (= (logand NUM A) A) (setq BITLIST (cons A BITLIST)) ) ;_ end of if (setq A (lsh A 1)) ) ;_ end of while BITLIST ) ;_ end of defun ;; Funktion guckt nach, ob ein Bit in dem Bitcode vorkommt ;; z.B.: (checkflag (getvar "osmode") 2) -> T oder nil (defun CHECKFLAG (NUM FLAG) (= (logand NUM FLAG) FLAG) ) ;_ end of defun
;; Fügt dem Bitcode das entsprechde Bit hinzu, ;; wenn noch nicht gesetzt (defun SETFLAG (NUM FLAG) (logior NUM FLAG) ) ;_ end of defun ;; entfernt das Bit, wenn es existiert (defun REMOVEFLAG (NUM FLAG) (if (CHECKFLAG NUM FLAG) (- NUM FLAG) NUM ) ;_ end of if ) ;_ end of defun
...
------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 06. Apr. 2005 07:40 <-- editieren / zitieren --> Unities abgeben:
|