| |
| 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: Block um Einfügepunkt drehen (2989 mal gelesen)
|
Bauvermesser Mitglied Vermesser
Beiträge: 460 Registriert: 18.03.2006 AMD 2600, 2024RAM ,WIN XP PROF-SP3, ACAD 2005, Firmenrechner,
|
erstellt am: 16. Mrz. 2010 21:55 <-- editieren / zitieren --> Unities abgeben:
Hallo, benutze aus diesem Forum eine LSP zum Drehen eines Blockes um den Einfügepunkt. Läuft so weit , doch kommt aufgrund der von mir vorgenommenen Änderungen eine Fehlermeldung (Fehler: Funktion abgebrochen) , kann mir bitte jemand sagen wo der Fehler liegt. Die Abfrage nach dem Drehwinkel soll aber ausgeschaltet bleiben. ;;DREHEN von Objekten die einen definierten Einfügepunkt haben. (defun c REHEN-E (/ faktor aus n i nam ins) (terpri)(terpri) (setvar "cmdecho" 0) (princ "\nDer DREHEN-BASIS-PUNKT ... ist der jeweilige Objekt-Einfügepunkt.") ;;(setq drehwink (getreal "\nDrehwinkel für die Objekte: ")) ;-----Auswaehlen----- (setq aus (ssget) as aus) ;aus=Auswahl der Elemente (setq n (sslength aus)) ;n=Anzahl der Elemente (max) (command "bks" "w") (setq i 0) ;Zaehler auf 0 ;-----Bearbeiten----- (setvar "cmdecho" 0) (while (< i n) ;solange wie Zaehler < max (setq nam (ssname aus i)) ;jedem i aus Auswahl einen Namen (setq ins (cdr (assoc 10 (entget nam)))) ;; (command "drehen" nam "" ins drehwink) ;nam=nur ein Element (command "drehen" nam "" ins) ;; (setq i(1+ i)) ;Zaehler eins weiter ) ;while (command "bks" "w") (princ) ) ;defun ;;********** ------------------ Gruß vom Bauvermesser; Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 16. Mrz. 2010 22:34 <-- editieren / zitieren --> Unities abgeben: Nur für Bauvermesser
Zitat: Original erstellt von Bauvermesser: Hallo, benutze aus diesem Forum eine LSP zum Drehen eines Blockes um den Einfügepunkt.
Nimm das hier: Code:
(defun modent (ename dxf val / old) (if (setq old (assoc dxf (entget ename))) (entmod (subst (cons dxf val) old (entget ename) ) ) (entmod (cons (cons dxf val) (entget ename))) ) )
Damit kannst Du fast alles ändern. Den Drehwinkel der Einfügung findest Du in DXF-Gruppencode 50. Um den auf 90° zu bringen, schreibst Du also: Befehl: (modent (car (entsel)) 50 (/ PI 2.0)) Pi / 2 bzw in Lisp (/ PI 2.0) ist das Bogenmaß von 90°. Du kannst damit natürlich auch den Layer ändern: Befehl: (modent (car (entsel)) 8 "Neuer-Layer") oder sogar die referenzierte Blockreferenz: Befehl: (modent (car (entsel)) 2 "AndererBlockreferenzname")
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 17. Mrz. 2010 08:03 <-- editieren / zitieren --> Unities abgeben: Nur für Bauvermesser
|
3jalex Mitglied
Beiträge: 244 Registriert: 13.03.2006
|
erstellt am: 28. Apr. 2010 11:29 <-- editieren / zitieren --> Unities abgeben: Nur für Bauvermesser
Hallo Ich möchte das mit den Attributen vom Bauvermesser, aber das hatte von Anfang an nicht Funktioniert. Ausserdem ist bei mir ein Smile mitten im Lisp (Nach defun c) Kann man das nicht abstellen? Mein versuch sieht so aus (Script): Filedia 0 (setq sset01 (ssget)) !sset01 _ucs o l _ucs X 90 _rotate 0,0,0 l ;Leerziele für Bestägigung 180 ucs w Filedia 1 Die Drehachse und den Winkel kann man ja nach belieben anpassen. Jedoch funktioniert die Auswahl nicht. Habe es mit \ schon probiert. 1) Wie könnte das Script (oder Lisp) aussehen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 28. Apr. 2010 11:59 <-- editieren / zitieren --> Unities abgeben: Nur für Bauvermesser
|
3jalex Mitglied
Beiträge: 244 Registriert: 13.03.2006
|
erstellt am: 28. Apr. 2010 15:46 <-- editieren / zitieren --> Unities abgeben: Nur für Bauvermesser
Hallo Vielen Dank für die Antwort. Mit dem Tool möchte ich einen gewählten Block am Basispunkt des Blocks um 90° im gegenuhrzeigersinn drehen. Andere Programme haben das schon eingebaut. Tastenkombination Ctrl.+L Mit AutoCAD sollte das bestimmt auch möglich sein. Nun habe ich den Befehl vor der Auswahl gesetzt und die auswahl funktioniert. Danach wird jedoch der Befehl abgebrochen Betreffend dem Forum: Ich habe hier nur geantwortet darum ist es im Lispforum [Diese Nachricht wurde von 3jalex am 28. Apr. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bauvermesser Mitglied Vermesser
Beiträge: 460 Registriert: 18.03.2006 AMD 2600, 2024RAM ,WIN XP PROF-SP3, ACAD 2005, Firmenrechner,
|
erstellt am: 28. Apr. 2010 23:10 <-- editieren / zitieren --> Unities abgeben:
hallo also hinter dem Smilies steht - drehen-e - und damit ruft du auch die lsp auf, bei mir klapt es, es kommt eben nur nach meiner drinnrum fummelei am Schluss eine Fehlermeldung, aber die ignoriere ich einfach. Da ich nur nach freihen Winkel drehen möchte musste ich es etwas abändern. Diese lsp ist genau das Richtige und man kann fast alles damit Drehen!! (um den Einfügepunkt wohlgemekt) ------------------ Gruß vom Bauvermesser; 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: 29. Apr. 2010 06:26 <-- editieren / zitieren --> Unities abgeben: Nur für Bauvermesser
Zitat: Original erstellt von Bauvermesser: ... bei mir klapt es, es kommt eben nur nach meiner drinnrum fummelei am Schluss eine Fehlermeldung, aber die ignoriere ich einfach...
mit allen Elementen im Auswahlsatz? probier mal mit den Zeilen (while (< i n) ;solange wie Zaehler < max (setq nam (ssname aus i)) ;jedem i aus Auswahl einen Namen (setq ins (cdr (assoc 10 (entget nam)))) (command "drehen" nam "" ins) (while (/=(getvar "CMDACTIVE")0)(command pause)) (setq i(1+ i)) ) ;while und ... ach egal ------------------ 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 |