| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Lisp funktioniert nicht mehr (1608 mal gelesen)
|
bit Mitglied Tiefbau Ingenieurbüro
Beiträge: 128 Registriert: 03.02.2005 Windows 7 Professional/ACAD 2012/ACAD2013/Strakon Dicad
|
erstellt am: 05. Jul. 2018 10:09 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich hatte vor langer Zeit diese Lisp "Block_Konvert.lsp" aus diesem Forum. Diese Lisp war mir bis jetzt SEHR hilfreich! Ich brauche sie oft um mehrere Blöcke gleichzeitig in einem Schritt auf Layer "null" und Farbe "vonklock" zu setzen. Nun funktioniert es nicht mehr und Acad zeigt mir dieses hier an: Befehl: _appload Befehl: BLOKO Blockelemente auf aktuellen Layer setzen? (J/<N> j <G>anze Zeichnung oder <A>usgewählte Blöcke: <G> a Zu bearbeitende(n) Block(s) wählen: Objekte wählen: Entgegengesetzte Ecke angeben: 5 gefunden Objekte wählen: 1 gefunden, 6 gesamt Objekte wählen: ; Fehler: Fehlerhafte DXF-Gruppe: ((-1 . <Objektname: 7ffff6071b0> ) (0 . "LINE") (330 . <Objektname: 7ffff6070e0> ) (5 . "93") (100 . "AcDbEntity") (67 . 0) (8 . "0") (62 . 0) (420 . 0) (6 . "BYLAYER"))
Kann mir jemand sagen was da los ist??? Marlen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bit Mitglied Tiefbau Ingenieurbüro
Beiträge: 128 Registriert: 03.02.2005 Windows 7 Professional/ACAD 2012/ACAD2013/Strakon Dicad
|
erstellt am: 05. Jul. 2018 10:16 <-- editieren / zitieren --> Unities abgeben:
|
Fiedelzastrow Mitglied Architekt / Bauzeichner
Beiträge: 993 Registriert: 05.07.2007 Win XP AutoCAD 2006 AutoCAD 2009 AutoCAD 2012 LT
|
erstellt am: 05. Jul. 2018 10:55 <-- editieren / zitieren --> Unities abgeben: Nur für bit
Hallo Marlen, was hat sich denn zwischen vor langer Zeit und nun geändert? Neue ACAD-Version, neue Installation, oder oder oder? Gruß Robert P.S. als erstes möchte ich auf command vs command-s hinweisen (falls eine aktuellere ACAD version vorliegt). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bit Mitglied Tiefbau Ingenieurbüro
Beiträge: 128 Registriert: 03.02.2005 Windows 7 Professional/ACAD 2012/ACAD2013/Strakon Dicad
|
erstellt am: 05. Jul. 2018 11:14 <-- editieren / zitieren --> Unities abgeben:
Hallo Robert. ich bekomme die Datei (inkl. Blöcke) aus CARD. Dieser hat tatsächlich eine neue Version. Allerdings habe ich gerade eine "alte Datei" von CARD mit der älteren Version geöffnet und dort die Lisp ausprobiert, dort funktioniert es aber auch nicht. --> kann also nicht an der version liegen. Bei mir gab es keine neuen Versionen oder Install.! was meinst du mit: ...was ist Command vs Command-s ...??? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3701 Registriert: 15.10.2003 Win 10/64 Pro AutoCAD MAP 3D 2018 / 2023 BricsCAD 22
|
erstellt am: 05. Jul. 2018 11:24 <-- editieren / zitieren --> Unities abgeben: Nur für bit
Zitat: Original erstellt von bit: .... ; Fehler: Fehlerhafte DXF-Gruppe: ((-1 . <Objektname: 7ffff6071b0> ) (0 . "LINE") (330 . <Objektname: 7ffff6070e0> ) (5 . "93") (100 . "AcDbEntity") (67 . 0) (8 . "0") (62 . 0) (420 . 0) (6 . "BYLAYER"))...
Was geschieht beim Befehl "Prüfung"? ------------------ Für jedes Problem gibt es eine einfache Lösung. Die ist aber meistens falsch. ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1111 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 05. Jul. 2018 11:26 <-- editieren / zitieren --> Unities abgeben: Nur für bit
|
bit Mitglied Tiefbau Ingenieurbüro
Beiträge: 128 Registriert: 03.02.2005 Windows 7 Professional/ACAD 2012/ACAD2013/Strakon Dicad
|
erstellt am: 05. Jul. 2018 11:28 <-- editieren / zitieren --> Unities abgeben:
Hallo Peter2, passiert nichts: Befehl: _audit Gefundene Fehler beheben? [Ja/Nein] <N>: j Prüft Header Prüft Tabellen Prüft Objekte Durchgang 1
Durchgang 1 50200 Objekte geprüft Prüft Objekte Durchgang 2 Durchgang 2 50200 Objekte geprüft Prüft Blöcke 285 Blöcke geprüft 0 Fehler gefunden, 0 behoben 0 Objekte gelöscht Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bit Mitglied Tiefbau Ingenieurbüro
Beiträge: 128 Registriert: 03.02.2005 Windows 7 Professional/ACAD 2012/ACAD2013/Strakon Dicad
|
erstellt am: 05. Jul. 2018 11:33 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 05. Jul. 2018 11:44 <-- editieren / zitieren --> Unities abgeben: Nur für bit
Also das Lisp war, was diesen Fall betrifft, bereits im Ursprung falsch. Deine Version hat aber gleich noch eine Macke mehr mit drin. Das Problem hier ist die falsche Handhabung wen nes Objekte mit Linienstärke gibt, hier sollte es ausreiche das LIST gegen APPEND zu tauschen (schau im Abschnitt für den Gruppencode 370). Mist ist auch die Option wenn nicht der aktuelle Layer verwendet werden soll, hier sollte mal entweder F als lokale Variable definieren oder es einfach sein lassen, also: (if (= (strcase LAY_MODUS) "N") (setq LAY_MODUS nil) anstatt (setq LAY_MODUS F) Jetzt zu eurer(?) Änderung:
Ich brauche sie oft um mehrere Blöcke gleichzeitig in einem Schritt auf Layer "null" und Farbe "vonklock" zu setzen. Das Programm macht aber genau DAS nicht in jedem Fall und zudem macht es ja noch mehr (Linientyp). Deine Farbe wird nur auf VonBlock gesetzt wenn die Farbe des Objektes NICHT-VonLayer ist. ...
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1111 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 05. Jul. 2018 11:47 <-- editieren / zitieren --> Unities abgeben: Nur für bit
Hallo Marlen, wenn ein Programm, was immer lief, plötzlich einen Fehler auswirft, liegt es oft an den Daten, mit denen es gefüttert wird. Auch ist die Fehlermeldung eigenartig, da fehlen m. E. ein paar Gruppencodes. Wenn Du jetzt ganz sicher bist, dass das mit genau diesen Blöcken früher klappte, dann gut, dann fällt mit nichts weiter ein. Ansonsten könnte man es mit genau den fraglichen Blöcken mal testen und diese Blöcke genauer in Augenschein nehmen. Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 05. Jul. 2018 12:00 <-- editieren / zitieren --> Unities abgeben: Nur für bit
Zitat: Original erstellt von spider_dd: Auch ist die Fehlermeldung eigenartig, da fehlen m. E. ein paar Gruppencodes.
Wenn du mit Nachnamen J. heißt bist du der Verbrecher Darüber war ich zunächst auch gestolpert bevor ich in den Code geschaut habe, aber fehlen tut da nichts .Das kommt daher das diese Liste tatsächlich der Wert ist den das Programm erhält an dem eigentlich ein dottetpair erwartet wird.
("du hostest" übrigens auch eine Variante von dem Ding, inkl. der unschönen Benutzerabfrage, dem Problem mit global-F und dem Fehler bei Linienstärken. Das Problem mit Farbe VonLayer/VonBlock ist da nicht enthalten, das kommt wohl vom TO. Ursprünglich ist der Code von Th.K., aber aber die Datei ist gelöscht)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bit Mitglied Tiefbau Ingenieurbüro
Beiträge: 128 Registriert: 03.02.2005 Windows 7 Professional/ACAD 2012/ACAD2013/Strakon Dicad
|
erstellt am: 05. Jul. 2018 13:03 <-- editieren / zitieren --> Unities abgeben:
Cadffm - ich habe die Lisp mit deinen Einstellungen neu gemacht! (soweit ich alles kapiert habe...) Nach Befehlseingabe (Bloko) bringt Acad mir dieses: Befehl: bloko Blockelemente auf aktuellen Layer setzen? (J/<N> j <G>anze Zeichnung oder <A>usgewählte Blöcke: <G> a Zu bearbeitende(n) Block(s) wählen: Objekte wählen: Entgegengesetzte Ecke angeben: 3 gefunden Objekte wählen: Entgegengesetzte Ecke angeben: 3 gefunden, 6 gesamt Objekte wählen: Scanning... / ......... und Fertig Allerdings ändert er garnichts am Block. Das heißt der Layer in dem Block ist schon auf "0" (auch schon von Card aus), aber die Farbe soll ja in "Vonblock" geändert werden (von Card ist sie "0,0,0") Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bit Mitglied Tiefbau Ingenieurbüro
Beiträge: 128 Registriert: 03.02.2005 Windows 7 Professional/ACAD 2012/ACAD2013/Strakon Dicad
|
erstellt am: 05. Jul. 2018 13:09 <-- editieren / zitieren --> Unities abgeben:
|
spider_dd Mitglied
Beiträge: 1111 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 05. Jul. 2018 13:17 <-- editieren / zitieren --> Unities abgeben: Nur für bit
Zitat: Original erstellt von cadffm:
Wenn du mit Nachnamen J. heißt bist du der Verbrecher
Jaein, Ich habe das bloß um ein paar Zeilen ergänzt und lehne jegliche Verantwortung für das Ganze ab. Und außerdem ist das 15 Jahre her, aber Du hast natürlich Recht, hier könnte man mal was auf den aktuellen Stand bringen. und die von Dir genannten Dinge fixen. Habe aber momentan auch nicht wirklich Zeit dazu (und hatte bisher auch nicht den Bedarf). Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bit Mitglied Tiefbau Ingenieurbüro
Beiträge: 128 Registriert: 03.02.2005 Windows 7 Professional/ACAD 2012/ACAD2013/Strakon Dicad
|
erstellt am: 05. Jul. 2018 13:21 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 05. Jul. 2018 13:33 <-- editieren / zitieren --> Unities abgeben: Nur für bit
Wir unterhalten uns nur über den LispCode. Was auch immer du getan hast (wir kennen deinen aktuellen Code ja nicht), das Problem mit den Farben ist ebenso schnell erklärt:
Das Programm war nicht für die Verarbeitung von TrueColor-Farben erstellt worden, diese werden also nicht richtig verarbeitet. Zum Thema TC findest du im richtigen Forum (Hier gibt es ein Lispforum: Klick!) alle Informationen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1111 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 05. Jul. 2018 13:53 <-- editieren / zitieren --> Unities abgeben: Nur für bit
Cadffm hat es schon gesagt, es liegt daran, dass den Blockelementen eine Truecolor Farbe zugewiesen ist. Als kleine Abhilfe mache mal folgendes: Suche in der Lisp die Zeile (if(assoc 62 OBJEKTDATEN) und setze folgendes davor: (if(assoc 420 OBJEKTDATEN) (setq OBJEKTDATEN(vl-remove (assoc 420 OBJEKTDATEN)OBJEKTDATEN)) ) Dann neu laden und das lisp mit der Option "Ganze Zeichnung" laufen lassen. (Bei Option "Ausgewählte" wird nur die erste Blockdefinition "repariert") HTH Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bit Mitglied Tiefbau Ingenieurbüro
Beiträge: 128 Registriert: 03.02.2005 Windows 7 Professional/ACAD 2012/ACAD2013/Strakon Dicad
|
erstellt am: 05. Jul. 2018 14:10 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 05. Jul. 2018 14:17 <-- editieren / zitieren --> Unities abgeben: Nur für bit
Na dann mische ich mich halt doch direkt in den Code ein: Code: ;; (if(assoc 62 OBJEKTDATEN) ; Objektfarbe auf "VONBLOCK" setzen ;; (setq OBJEKTDATEN(subst(cons 62 0)(assoc 62 OBJEKTDATEN)OBJEKTDATEN)) ;; ) (setq OBJEKTDATEN (if (assoc 62 OBJEKTDATEN) (subst '(62 . 0) (assoc 62 OBJEKTDATEN)(vl-remove (assoc 420 OBJEKTDATEN) OBJEKTDATEN)) (cons '(62 . 0) (vl-remove (assoc 420 OBJEKTDATEN) OBJEKTDATEN)) ) )
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bit Mitglied Tiefbau Ingenieurbüro
Beiträge: 128 Registriert: 03.02.2005 Windows 7 Professional/ACAD 2012/ACAD2013/Strakon Dicad
|
erstellt am: 05. Jul. 2018 14:21 <-- editieren / zitieren --> Unities abgeben:
|
bit Mitglied Tiefbau Ingenieurbüro
Beiträge: 128 Registriert: 03.02.2005 Windows 7 Professional/ACAD 2012/ACAD2013/Strakon Dicad
|
erstellt am: 05. Jul. 2018 14:25 <-- editieren / zitieren --> Unities abgeben:
...momentan sieht es so aus: (Ausschnitt des Wesentlichen): Ende einschub Th.J. ;;;; (if(assoc 420 OBJEKTDATEN) (setq OBJEKTDATEN(vl-remove (assoc 420 OBJEKTDATEN)OBJEKTDATEN)) ) (if(assoc 62 OBJEKTDATEN) ; Objektfarbe auf "VONBLOCK" setzen (setq OBJEKTDATEN(subst(cons 62 0)(assoc 62 OBJEKTDATEN)OBJEKTDATEN)) ) (if(assoc 6 OBJEKTDATEN) ; Objekt-Linientyp auf "VONLAYER" setzen (setq OBJEKTDATEN(subst(cons 6 "BYLAYER")(assoc 6 OBJEKTDATEN)OBJEKTDATEN)) ) (if(assoc 370 OBJEKTDATEN) ; Objekt-Linienstärke setzen ;(setq OBJEKTDATEN(subst(cons 370 -2)(assoc 370 OBJEKTDATEN)OBJEKTDATEN)) ; "vonBLOCK" ;(setq OBJEKTDATEN(subst(cons 370 -2)(assoc 370 OBJEKTDATEN)OBJEKTDATEN)) ; "Vorgabe" (setq OBJEKTDATEN ; auf "von LAYER" (APPEND (reverse(cdr(member(assoc 370 OBJEKTDATEN) (reverse OBJEKTDATEN)))) (cdr(member(assoc 370 OBJEKTDATEN)OBJEKTDATEN))) ) ) ; (setq OBJEKTDATEN(subst (cons 8 "0")(assoc 8 OBJEKTDATEN)OBJEKTDATEN)) ;auf Layer "0" (entmod OBJEKTDATEN) ; Objektdaten in Zeichnungsdatenbank updaten (setq BLOCKELEMENT (entnext BLOCKELEMENT)) ; nächstes Blockelement holen, Blockende="nil" (setq SPINSYM (Spin SPINSYM)) ; und als Gimmick: eine schöne Kommandozeilenausgabe ;-) ) ;end [WHILE BLOCKELEMENT] ) ); .........................................................end [IF ..kein unbenannter Block..] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 05. Jul. 2018 14:32 <-- editieren / zitieren --> Unities abgeben: Nur für bit
Zitat: Original erstellt von bit: ...momentan sieht es so aus:
Code: (if(assoc 62 OBJEKTDATEN) ; Objektfarbe auf "VONBLOCK" setzen (setq OBJEKTDATEN(subst(cons 62 0)(assoc 62 OBJEKTDATEN)OBJEKTDATEN)) )
Nach wie vor setzt du nur die Farbe auf VonBlock wenn die Farbe zuvor nicht VonLayer war.. Schau dir doch mal die Objektdaten von einem Kreis an der die Farbe a) Rot=1 hat oder b) VonLayer (assoc 62 (setq OD (entget(car(entsel))))) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1111 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 05. Jul. 2018 14:41 <-- editieren / zitieren --> Unities abgeben: Nur für bit
Zitat: Original erstellt von bit:
Jetzt wäre es noch schön, wenn die Linienstärke auf "vorgabe" gesetzt werden könnte... ?
Suche die Zeile: ;(setq OBJEKTDATEN(subst(cons 370 -2)(assoc 370 OBJEKTDATEN)OBJEKTDATEN)) ; "Vorgabe" Entferne das 1. Semikolon und setze statt der -2 eine -3 Kommentiere die nächsten 4 Zeilen aus, indem du an den Anfang der Zeile ein ; setzt. Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bit Mitglied Tiefbau Ingenieurbüro
Beiträge: 128 Registriert: 03.02.2005 Windows 7 Professional/ACAD 2012/ACAD2013/Strakon Dicad
|
erstellt am: 05. Jul. 2018 14:51 <-- editieren / zitieren --> Unities abgeben:
Cadffm - ehrlich gesagt, jetzt versteh ich überhaupt nichts mehr, bzw. was du meinst... Aber, ich lass jetzt alles so, denn es geht ja ! Und würde auch damit das Thema beenden und als gelöst abschließen! (...muss ich dafür irgendein Button drücken, aktivieren...?!) Viele Grüße
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bit Mitglied Tiefbau Ingenieurbüro
Beiträge: 128 Registriert: 03.02.2005 Windows 7 Professional/ACAD 2012/ACAD2013/Strakon Dicad
|
erstellt am: 05. Jul. 2018 14:56 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 05. Jul. 2018 15:01 <-- editieren / zitieren --> Unities abgeben: Nur für bit
|