| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | Von Digital Twins bis Hochleistungs-Computing: PNY präsentiert seine Zukunftstechnologien für die Industrie von morgen, eine Pressemitteilung
|
Autor
|
Thema: Lisp: (command -BLOCKREPLACE verwenden (801 / mal gelesen)
|
redfire Mitglied

 Beiträge: 23 Registriert: 05.03.2008 AutoCAD / Civil 3D 2024
|
erstellt am: 07. Mai. 2024 10:50 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen Ich versuche mittels lisp den Befehl Blockreplace zu verwenden, leider erhalte ich immer folgende Fehler: ----- Befehl: AUTOBR -BLOCKREPLACE Unbekannter Befehl "-BLOCKREPLACE". Drücken Sie F1-Taste für Hilfe. Befehl: Block_1_alt Unbekannter Befehl "BLOCK_1_ALT". Drücken Sie F1-Taste für Hilfe. Befehl: Block_3_neu Unbekannter Befehl "BLOCK_3_NEU". Drücken Sie F1-Taste für Hilfe. Befehl: y Unbekannter Befehl "Y". Drücken Sie F1-Taste für Hilfe. ------ Code: (defun C:AUTOBR () (command "-BLOCKREPLACE" "Block_1_alt" "Block_3_neu" "y" "") (princ) )
Kann mir jemand sagen was ich falsch mache? Besten Dank für eure Unterstützung ------------------ Gruss redfire Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
  
 Beiträge: 991 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 07. Mai. 2024 11:48 <-- editieren / zitieren --> Unities abgeben:          Nur für redfire
Zitat: Original erstellt von redfire: Hallo zusammenIch versuche mittels lisp den Befehl Blockreplace zu verwenden, leider erhalte ich immer folgende Fehler: ----- Befehl: AUTOBR -BLOCKREPLACE Unbekannter Befehl "-BLOCKREPLACE". Drücken Sie F1-Taste für Hilfe. Befehl: Block_1_alt Unbekannter Befehl "BLOCK_1_ALT". Drücken Sie F1-Taste für Hilfe. Befehl: Block_3_neu Unbekannter Befehl "BLOCK_3_NEU". Drücken Sie F1-Taste für Hilfe. Befehl: y Unbekannter Befehl "Y". Drücken Sie F1-Taste für Hilfe. ------ Code: (defun C:AUTOBR () (command "-BLOCKREPLACE" "Block_1_alt" "Block_3_neu" "y" "") (princ) )
Kann mir jemand sagen was ich falsch mache? Besten Dank für eure Unterstützung
Durchsuche das Forum mal nach "SSMODENT". Damit kannst Du jeden DXF-Gruppencode jedes Entities ändern. Der Blockname einer Blockreferenz steht in Gruppencode 2, also geht das dann so: (ssmodent <ename> 2 ""Block_3_neu") Und wenn Du nur Blockreferenzen auf den Namen "Block_1_alt" ändern willst, dann mithilfe der folgenden SS->LIST dann so: (mapcar '(lambda (en) (ssmodent en 2 ""Block_3_neu")) (ss-list (ssget '((2 . "Block_1_alt"))) Code:
(defun ss->list (sset / eset counter) (setq counter 0) (if (= 'PICKSET (type sset)) (repeat (sslength sset) (setq eset (cons (ssname sset counter) eset) counter (1+ counter) ) ) ) eset )
Ergänzung: BLOCKREPLACE wird vermutlich kein COMMAND sein, sondern höchstwahrscheinlich auch in Lisp oder C# o.ä geschrieben und wird dann mit (BLOCKREPLACE ...) aufgerufen [Diese Nachricht wurde von archtools am 07. Mai. 2024 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
redfire Mitglied

 Beiträge: 23 Registriert: 05.03.2008 AutoCAD / Civil 3D 2024
|
erstellt am: 07. Mai. 2024 15:06 <-- editieren / zitieren --> Unities abgeben:         
Ich möchte nicht nur die Namen ändern sondern die Instanz austauschen Gemäss Hilfe ist es ein Express-Befehl --> -BLOCKREPLACE gibt es als Befehlszeile Ersetzt alle Instanzen eines bestimmten Blocks durch einen anderen Block. wie kriegeich das mit einem Lisp hin, dass ich die Blöcke austauschen kann wie würde der Aufruf mit(BLOCKREPLACE.... funktionieren? ------------------ Gruss redfire [Diese Nachricht wurde von redfire am 07. Mai. 2024 editiert.] [Diese Nachricht wurde von redfire am 07. Mai. 2024 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
  
 Beiträge: 991 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 07. Mai. 2024 21:19 <-- editieren / zitieren --> Unities abgeben:          Nur für redfire
Zitat: Original erstellt von redfire: Ich möchte nicht nur die Namen ändern sondern die Instanz austauschen
Damit änderst Du nicht den Namen der Blockdefinition, sondern tauschst bei einem Insert die Referenz auf den Block "Ursprungsblock" auf die Referenz auf den Block "NeuerBlock" aus. Warum probierst Du's nicht erst mal aus? Zitat: wie kriegeich das mit einem Lisp hin, dass ich die Blöcke austauschen kann wie würde der Aufruf mit(BLOCKREPLACE.... funktionieren?
Indem Du die verschiedenen Varianten ausprobierst. [Diese Nachricht wurde von archtools am 07. Mai. 2024 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
       

 Beiträge: 13530 Registriert: 30.11.2003 .
|
erstellt am: 08. Mai. 2024 07:19 <-- editieren / zitieren --> Unities abgeben:          Nur für redfire
|
Archäologie Bubi Mitglied Archäologische Funddokumentation

 Beiträge: 68 Registriert: 09.03.2021 AutoCAD Map 3D 2024 / Raster Design AutoCAD Map 3D 2025 Faro AS-Built / TachyCAD Agisoft Metashape Professional 2.0
|
erstellt am: 08. Mai. 2024 07:22 <-- editieren / zitieren --> Unities abgeben:          Nur für redfire
Wenn der Befehl aus den Expresstools stammt, kannst du ihn auch direkt einsehen. Die Expresstools sind grösstenteils in LISP geschrieben und in den Dateien offen lesbar. ------------------ Bubi spiele, Bubi glücklich! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
mathias fey Mitglied Verm.-Ing.

 Beiträge: 14 Registriert: 20.11.2020 Windows 10 Pro ACAD 2024 Vestra (für DGM) Intel(R)Core(TM)i5-4590 CPU @ 3.30Ghz 16,0GB NVIDIA Quadro K620
|
erstellt am: 10. Mai. 2024 14:58 <-- editieren / zitieren --> Unities abgeben:          Nur für redfire
|