| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Auswahlsatz richtig erstellen (1678 mal gelesen)
|
MARTINLE Mitglied Tischler
Beiträge: 485 Registriert: 18.10.2007 AUTOCAD 2016, MS Windows7, 64-bit
|
erstellt am: 18. Jul. 2013 14:03 <-- editieren / zitieren --> Unities abgeben:
Hallo! Hab nach langer Pause wieder mal ein Problem. Folgendes zusammenkopierte Lisp funktioniert soweit recht gut. Nur Wenn ich Objekte aus einer Gruppe kopiere werden beim verschieben die je Objekte verschoben die der Gruppe angehören, nicht die neu kopierten. Dies hat sicher mit dem Auswahlsatz zu tun. Nur ich krieg das einfach nicht hin damit mir die kopierten Objekte und nicht jene Objekte die im ersten Auswahlsatz gewählt wurden verschoben werden. Bitte um eure Hilfe. lg. Martin (defun C:COROs (/ AWS P1 P2 Abfrage orth Point2New AWS) (setq orth (getvar "orthomode")) ; Systemeinstellungen sichern (Ortho); (setvar "ORTHOMODE" 0) (if (or (setq AWS (ssget "I")) (setq AWS (ssget)) ) (progn (setq P1 (getpoint "\nBasispunkt : ")) (command "_copy" AWS "" '(0 0 0) '(0 0 0)) (command "_move" AWS "" P1 "spur") (while (/= (getvar "CMDACTIVE") 0) (command pause)) (setvar "ORTHOMODE" 1) (setq P2 (getvar "LASTPOINT")) (command "_rotate" AWS "" P2) (while (/= (getvar "CMDACTIVE") 0) (command pause)) ) ) ;---------------------abfrage spiegeln (initget "Ja Nein") (setq Abfrage (getkword "noch Spiegeln? [Ja/Nein] <Nein>:")) (if (not Abfrage) (setq Abfrage "Nein") ) ;;if (if (= Abfrage "Nein") ;;bei nein abbrechen und ausschrift (progn ;; alles bei NEIN machen ) (progn ;; alles bei JA machen (setq P2 (trans P2 1 0)) ;;;;;;;;;;;;;;;;;;-------------------------WKS transformieren (setq Point2New (trans P2 0 1)) ;----------------Punkt ins neue BKS transformieren (command "spiegeln" "V" "" Point2New Pause "J") ) ) (setvar "orthomode" orth) ; Wiederherstellen des ursprünglichen Ortho ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 18. Jul. 2013 14:29 <-- editieren / zitieren --> Unities abgeben: Nur für MARTINLE
letztes Objekt merken neue Objekte erstellen schauen welche neu sind.. Code: (progn (setq Obj (entlast)) ;<erstelle Objekte> (command "_.copy" "_l" "" "0,0" "5,0") ;end (setq AWSneu (ssadd)) (while (setq OBJ (entnext Obj)) (ssadd OBJ AWSneu) ) (alert (strcat(rtos (sslength AWSneu) 2 0) " neue Objekte gefunden")) (sssetfirst nil AWSneu) )
------------------ Link: User:FAQ (einiges Wissenswertes über AutoCAD) [Diese Nachricht wurde von cadffm am 18. Jul. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MARTINLE Mitglied Tischler
Beiträge: 485 Registriert: 18.10.2007 AUTOCAD 2016, MS Windows7, 64-bit
|
erstellt am: 18. Jul. 2013 14:51 <-- editieren / zitieren --> Unities abgeben:
Hallo CADfm Leider funzt es nicht. Was mach ich falsch? lg. Martin (defun C:COROs (/ AWS P1 P2 Abfrage orth Point2New AWS OBJ LastObj AWSneu) (setq orth (getvar "orthomode")) ; Systemeinstellungen sichern (Ortho); (setvar "ORTHOMODE" 0) (if (or (setq AWS (ssget "I")) (setq AWS (ssget)) ) (progn (setq P1 (getpoint "\nBasispunkt : ")) (setq LastObj (entlast));<erstelle Objekte> (command "_.copy" "_l" "" "0,0" "5,0" "10,0" "") ;end (setq AWSneu (ssadd)) (while (setq OBJ (entnext LastObj)) (ssadd OBJ AWSneu) );;;;;;;;;;;;;;;;;;;;;;;; (command "_move" AWSneu "" P1 "spur") (while (/= (getvar "CMDACTIVE") 0) (command pause)) (setvar "ORTHOMODE" 1) (setq P2 (getvar "LASTPOINT")) (command "_rotate" AWSneu "" P2) (while (/= (getvar "CMDACTIVE") 0) (command pause)) ) ) ;---------------------abfrage spiegeln (initget "Ja Nein") (setq Abfrage (getkword "noch Spiegeln? [Ja/Nein] <Nein>:")) (if (not Abfrage) (setq Abfrage "Nein") ) ;;if (if (= Abfrage "Nein") ;;bei nein abbrechen und ausschrift (progn ;; alles bei NEIN machen ) (progn ;; alles bei JA machen (setq P2 (trans P2 1 0)) ;;;;;;;;;;;;;;;;;;-------------------------WKS transformieren (setq Point2New (trans P2 0 1)) ;----------------Punkt ins neue BKS transformieren (command "spiegeln" "V" "" Point2New Pause "J") ) ) (setvar "orthomode" orth) ; Wiederherstellen des ursprünglichen Ortho ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 18. Jul. 2013 15:10 <-- editieren / zitieren --> Unities abgeben: Nur für MARTINLE
[EDIT] weil ich mehrere Fehler eingebaut habe und hoffte das du die Strukur erkennst und selbst nachproggen könntest Späßchen, mein Fehler - oben geändert ------------------ Link: User:FAQ (einiges Wissenswertes über AutoCAD) [Diese Nachricht wurde von cadffm am 18. Jul. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MARTINLE Mitglied Tischler
Beiträge: 485 Registriert: 18.10.2007 AUTOCAD 2016, MS Windows7, 64-bit
|
erstellt am: 18. Jul. 2013 15:22 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 18. Jul. 2013 15:28 <-- editieren / zitieren --> Unities abgeben: Nur für MARTINLE
Nehme dir Zeit, gehe die Sache Schritt für Schritt durch (in der Befehlszeile oder mit der VLIDE , dann kommst du schon dahinter. Ich sehe ja nicht was du gemacht hast Du mußt dir das letzte Objekt merken befür du neue erstellst, dann erstellt du neue, dann sammelst du alle neuen Objekte ein und stopfst die in den neuen Auswahlsatz AWSneu. ------------------ Link: User:FAQ (einiges Wissenswertes über AutoCAD) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MARTINLE Mitglied Tischler
Beiträge: 485 Registriert: 18.10.2007 AUTOCAD 2016, MS Windows7, 64-bit
|
erstellt am: 18. Jul. 2013 15:45 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 18. Jul. 2013 16:16 <-- editieren / zitieren --> Unities abgeben: Nur für MARTINLE
deine Zeile Code: (command "_copy" AWS "" '(0 0 0) '(0 0 0))
durch Code: (setq Obj (entlast)) (command "_copy" AWS "" '(0 0 0) '(0 0 0)) (setq AWS (ssadd)) (while (setq OBJ (entnext Obj)) (ssadd OBJ AWS) )
ersetzen
(in deinem ursprünglichem Code natürlich) ------------------ Link: User:FAQ (einiges Wissenswertes über AutoCAD) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MARTINLE Mitglied Tischler
Beiträge: 485 Registriert: 18.10.2007 AUTOCAD 2016, MS Windows7, 64-bit
|
erstellt am: 18. Jul. 2013 16:21 <-- editieren / zitieren --> Unities abgeben:
|
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 01. Aug. 2013 14:56 <-- editieren / zitieren --> Unities abgeben: Nur für MARTINLE
Zitat: Original erstellt von cadffm: Code: (setq Obj (entlast)) (command "_copy" AWS "" '(0 0 0) '(0 0 0)) (setq AWS (ssadd)) (while (setq OBJ (entnext Obj)) (ssadd OBJ AWS) )
der vollständigkeit halber Sollte das letzte Element nämlich ein Block mit Attributen sein, muss man diese auch noch durchlaufen, um wirklich auf dem letzten Element zu stehen (Sequend) Code:
(setq Obj (entlast)) (while (and Obj (entnedxt Obj )) (setq Obj (entnext Obj ))) (command "_copy" AWS "" '(0 0 0) '(0 0 0)) (setq AWS (ssadd)) (while (setq OBJ (entnext Obj)) (ssadd OBJ AWS) )
[Diese Nachricht wurde von fuchsi am 01. Aug. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |