| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | | Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Blockobjekte in vonBlock (1186 mal gelesen)
|
CADraxas Mitglied Landschaftsarchitekt, Stadtplaner, Freiraumplaner
Beiträge: 55 Registriert: 27.08.2008
|
erstellt am: 25. Aug. 2010 14:29 <-- editieren / zitieren --> Unities abgeben:
Hallo Lispler, ich suche eine Routine, mit der ich in allen Blöcken bzw. einer Auswahl von Blöcken alle Blockelemente auf die Eigenschaften vonBlock setzen kann, also Layer: 0, Farbe: vonBlock, Linientyp: vonBlock, Linienstärke: vonBlock und Plotstil: vonBlock. Alles, was ich bisher fand (nuke.lsp, obj_prop.lsp, etc.) ist schon älter (2004/2008) und setzt nur Layer und/oder Farbe zurück; mir sind aber auch Linientyp und Plotstil wichtig, da ich mit benannten Plotstilen arbeite. Wer weiß Rat, da ich selber nicht fähig bin, groß zu programmieren? Danke! Volker Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proxy Ehrenmitglied Stateless-DHCP v6-Paketfragmentierer
Beiträge: 1629 Registriert: 13.11.2003 Tastaturen, Mäuse, Pladden, ..., AutoCADs 200X, SWX 2kX
|
erstellt am: 25. Aug. 2010 14:59 <-- editieren / zitieren --> Unities abgeben: Nur für CADraxas
|
CADraxas Mitglied Landschaftsarchitekt, Stadtplaner, Freiraumplaner
Beiträge: 55 Registriert: 27.08.2008
|
erstellt am: 25. Aug. 2010 15:22 <-- editieren / zitieren --> Unities abgeben:
Okay, danke. Wenn ich Proxy und indirekt CADmium richtig verstehe muss ich in folgenden Zeilen ändern (Zitat aus set_by_layer.txt, Zeile 368 bis 374) ;; *************** hier ändern, was du willst *************************************** ;; (OBJEKT_ALLGEMEIN_SET OBJEKT 256 ; Farbe nil ; Layer "ByLayer" ; Linientyp nil ; Linientypfaktor "ByLayer" ) ; Linienstärke ;; *************** hier ändern, was du willst *************************************** ;; Farbe: 256 = vonLayer, soll werden: 257? Layer: nil = 0, kann so bleiben Linientyp: ByLayer, soll werden: ByBlock Linientypfaktor: nil, kann so bleiben Linienstärke: ByLayer, soll werden: ByBlock Wo füge ich den Plotstil ein? Wenn ich den Linientypfaktor auf nil lasse, bleiben alle Linientypfaktoren, wie sie sind, oder werden die dann alle 1? Volker
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: 25. Aug. 2010 19:05 <-- editieren / zitieren --> Unities abgeben: Nur für CADraxas
Zitat: Original erstellt von CADraxas: Farbe: 256 = vonLayer, soll werden: 257? Layer: nil = 0, kann so bleiben Linientyp: ByLayer, soll werden: ByBlock Linientypfaktor: nil, kann so bleiben Linienstärke: ByLayer, soll werden: ByBlockWo füge ich den Plotstil ein? Wenn ich den Linientypfaktor auf nil lasse, bleiben alle Linientypfaktoren, wie sie sind, oder werden die dann alle 1?
Es steht doch nun echt alles in der Lisp-Datei erklärt, einfach mal lesen und probieren - Versuch macht klug "soll werden: 257?" was/welche Farbe soll das sein? "nil=0" nee nil=nil und 0=0 (steht alles in der Lisp - hat der große Meister brav dokumentiert ) "Plotstil" --> wo fügst du denn den Plotstil normalerweise ein? (und sonst gilt BTN - better then nothing) "...Linientypfaktor auf nil..." Versuch macht klug und mal lesen was in der Lisp steht Alles was in der Lisp hinter einem " ; " steht sind Bemerkungen des Verfassers. Ich gehe mal davon aus, das man eine aktuelle und weitaus bessere Version auf der Defun-Tools-Seite findet. (eine Unkostenpauschale ist durchaus vorstellbar - könnte Tool 78 sein) ------------------ 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 |
CADraxas Mitglied Landschaftsarchitekt, Stadtplaner, Freiraumplaner
Beiträge: 55 Registriert: 27.08.2008
|
erstellt am: 26. Aug. 2010 13:12 <-- editieren / zitieren --> Unities abgeben:
Moin Heiko, melde mich erst jetzt, weil mein Kurzer Geburtstag hat... Okay, okay, ich gebe ja zu, die Unmenge an Klammern und Zeilen hat mich abgeschreckt - ich habe die lsp nicht komplett gelesen... Werde ich aber nachholen, sobald ich im täglichen Geschäft ein wenig mehr Zeit habe (sprich, nicht etwas am besten sofort fertig sein muss). Deshalb nur kurz: Farbe 257 hoffte ich wäre vonBlock - die anderen Farben sind 1-255, 256 ist vonLayer. Also: 257? Aber das kriege ich schon raus! Ansonsten bin ich, wie gesagt, kein Programmierer. Wenn ich den Plotstil ändern will, mach ich das über den Button in den Werkzeugkasten oder im Eigenschaftenfenster. Einfügen tue ich den nirgendwo. Aber auch das werde ich rauskriegen, wenn ich eifrig recherchiere - es gibt ja die Hilfe und vielleicht auch irgendwo ein Handbuch für Benutzeranpasssungen (oder das häufig erwähnte LISP-Kochbuch). Danke also erstmal soweit - es beruhigt mich zu wissen, dass es überhaupt geht. Wenn ich fertig bin und die Tests erfolgreich sind, kann ich die Routine ja auch gerne hier posten... (falls CADmium nichts dagegen hat?) Gruß und Danke Volker Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 26. Aug. 2010 13:16 <-- editieren / zitieren -->
Hi, >> Farbe 257 hoffte ich wäre vonBlock nein, 0 = <vonBlock> - alfred - ------------------ www.hollaus.at |
CADraxas Mitglied Landschaftsarchitekt, Stadtplaner, Freiraumplaner
Beiträge: 55 Registriert: 27.08.2008
|
erstellt am: 26. Aug. 2010 13:47 <-- editieren / zitieren --> Unities abgeben:
|
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 26. Aug. 2010 14:06 <-- editieren / zitieren --> Unities abgeben: Nur für CADraxas
|
CADraxas Mitglied Landschaftsarchitekt, Stadtplaner, Freiraumplaner
Beiträge: 55 Registriert: 27.08.2008
|
erstellt am: 26. Aug. 2010 14:41 <-- editieren / zitieren --> Unities abgeben:
|
Ex-Mitglied
|
erstellt am: 26. Aug. 2010 14:46 <-- editieren / zitieren -->
Hi, >> ... wenn er heute nicht noch 5 andere Sachen gleichzeitig auf dem Tisch hätte Und AutoCAD hat mehr als 5 DXF-Codes je Element und kommt auch nicht durcheinander (meistens halt)! @Heiko: >> das steht doch in der Lisp, dass hätte er doch alleine herausbekommen Lass mich doch auch mitspielen, viel krieg ich ja im LISP-Forum doch nicht unter. - alfred - ------------------ www.hollaus.at |
CADraxas Mitglied Landschaftsarchitekt, Stadtplaner, Freiraumplaner
Beiträge: 55 Registriert: 27.08.2008
|
erstellt am: 26. Aug. 2010 15:22 <-- editieren / zitieren --> Unities abgeben:
@ alfred ach, ich bin doch nur ein Mann, ich kann nur eines zur Zeit... Und lispeln steht heute nicht auf dem Plan, fürchte ich! Aber morgen wird's hoffentlich besser, solange muss die Aufgabe halt warten... Gruß Volker Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADraxas Mitglied Landschaftsarchitekt, Stadtplaner, Freiraumplaner
Beiträge: 55 Registriert: 27.08.2008 Win10 64bit, Intel Xeon W-2225 CPU @ 4.10GHz, 16 GB RAM, AcadMap 2020, Bricscad 23, WS-Landcad 2023, Firefox
|
erstellt am: 27. Aug. 2010 15:32 <-- editieren / zitieren --> Unities abgeben:
Moin, da bin ich wieder. Habe mir jetzt brav die LISP durchgelesen (klar jedes Wort wörtlich ). Bin auf alle Fälle klüger und habe auch grob die innere Struktur der Routine verstanden, denke ich. Habe deshalb die folgende Subroutine (die ja die "neuen" Eigenschaften in die Datenbank schreibt), wie folgt geändert: ------ (defun UPDATE_OBJEKT ( OBJEKT / OBJEKTDATEN) (if (=(type OBJEKT) 'ENAME) ; Parameter o.k. ? (progn (setq OBJEKTDATEN (entget OBJEKT)) ; Objektdaten auslesen (if (assoc 8 OBJEKTDATEN) (progn (if (=(strcase(cdr(assoc 0 OBJEKTDATEN))) "INSERT") ; Blockreferenzen auf "0" (setq OBJEKTDATEN(subst(cons 8 "0")(assoc 8 OBJEKTDATEN)OBJEKTDATEN)) ) (progn ;; *************** hier ändern, was du willst *************************************** ;; (OBJEKT_ALLGEMEIN_SET OBJEKT 0 ; Farbe 0 ; Layer "ByBlock" ; Linientyp nil ; Linientypfaktor "ByBlock" ) ; Linienstärke ;; *************** hier ändern, was du willst *************************************** ;; ) ) ) ) ) ) ------ Farbe ist jetzt auf vonBlock, Layer ist jetzt 0 [In diesem Zusammenhang: Wofür sind die Zeilen: (progn (if (=(strcase(cdr(assoc 0 OBJEKTDATEN))) "INSERT") ; Blockreferenzen auf "0" (setq OBJEKTDATEN(subst(cons 8 "0")(assoc 8 OBJEKTDATEN)OBJEKTDATEN)) ) Werden da die gesamten Blöcke auf Layer 0 geschoben?] Linientyp und Linienstärke sind jetzt auch vonBlock, der Linientypfaktor soll bleiben, wie er ist ("nil"). Was ich nicht rausgekriegt habe: Welche Rolle spielen die Zahlen hinter den "assoc" Befehlen in der Subroutine (defun OBJEKT_ALLGEMEIN_SET ( OBJEKT FARBE LAYER LTYPE LTFAKTOR LDICKE / OBJEKTDATEN) Sind die eigenschaftenspezifisch (also MUSS Layer = 8 sein, LTfaktor: 48, etc.)? Hier muss doch auch die Definition für den Plotstil rein, vielleicht so: ------- (if (=(type PLTSTYLE) 'STR) ; Plotstil (cond ( (= (strcase PLOTSTYLENAME) "BYBLOCK") (if (assoc ??? OBJEKTDATEN) (setq OBJEKTDATEN(subst(cons ??? -2)(assoc ??? OBJEKTDATEN)OBJEKTDATEN)) (setq OBJEKTDATEN ( append Objektdaten (list(cons ??? -2)))) ) ) -------- Und in derselben Reihenfolge wie in der OBJEKT_ALLGEMEIN_SET dann die Werte in der UPDATE_OBJEKT eintragen, also wenn ich das hinten anfüge z.B: ;; *************** hier ändern, was du willst *************************************** ;; (OBJEKT_ALLGEMEIN_SET OBJEKT 0 ; Farbe 0 ; Layer "ByBlock" ; Linientyp nil ; Linientypfaktor "ByBlock" ; Linienstärke "ByBlock" ) ; Plotstile ;; *************** hier ändern, was du willst *************************************** ;; ?? Schon mal Vielen Dank für hilfreiche Hinweise; bis auf den Plotstil funktioniert die Routine. Liebe Grüße Volker Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|