| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: 2 ode 3 letzte Elemente (1056 mal gelesen)
|
RoyCAD Mitglied Dipl-Ing Energietechnik
Beiträge: 206 Registriert: 24.05.2004 Win XP AutoCAD2008-2010 Inventor 2008-2010 Productstream Compass P4 3,0GHz 512MB Ram
|
erstellt am: 26. Jan. 2005 16:06 <-- editieren / zitieren --> Unities abgeben:
Hallo Ich will zwei oder drei letzt gezeichnete Elemente verschieben, drehen, und kopieren. Jedoch es ist mir noch nicht klar wie soll ich das definieren. Wenn ich will nur das letzte Element kopiren, drehen, verschieben dann geht es so: ---------------------------------------------------------------------- (command "_pline" pr1u schrpow6 schrpow6 sp4 sp4 pt11 pt10 "_a" "_r" 48.3 pr1u "") (command "_.copy" (ENTLAST) "" (cdr(assoc 10 (entget (ENTLAST)))) pause "_rotate" (ENTLAST) "" ptm 165.0 "_.move" (ENTLAST) "" (cdr(assoc 10 (entget (ENTLAST)))) pause ) -------------------------------------------------------------------- aber wenn ich schon so was habe dann geht es daneben -------------------------------------------------------------------- (command "_pline" pt16 pt17 pt17 sp3 sp3 schrpow5 ptsu "_a" "_r" 48.3 pt16 "" "bogen" cncbog14 "e" cncbog13 "r" 48.30) (command "_.copy" AW "" (cdr(assoc 10 (entget (ENTLAST)))) pause "_rotate" AW "" ptm 105.0 "_.move" AW "" (cdr(assoc 10 (entget (ENTLAST)))) --------------------------------------------------------------- Ich habe auch mit (ssadd (entlast) AW) aber das war auch falsch. Gruß Roy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 26. Jan. 2005 16:26 <-- editieren / zitieren --> Unities abgeben: Nur für RoyCAD
spontan und ohne Ahnung: vor dem erstellen "neuer" Objekte das letzte "merken" -- alles was danach exisistiert (nach Erstellung der Elemente) ist dann eben "neu" und gehört in deinen Auswahlsatz.. gibt hier inen Thread dazu, müßte aber auch erst suchen.. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RoyCAD Mitglied Dipl-Ing Energietechnik
Beiträge: 206 Registriert: 24.05.2004 Win XP AutoCAD2008-2010 Inventor 2008-2010 Productstream Compass P4 3,0GHz 512MB Ram
|
erstellt am: 26. Jan. 2005 16:33 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 26. Jan. 2005 16:46 <-- editieren / zitieren --> Unities abgeben: Nur für RoyCAD
;letzte Objekt ermitteln (setq OBJ (entlast)) (setq ss (ssadd)) <Objekte erstellen> (while (setq OBJ (entnext OBJ)) (setq ss (ssadd OBJ ss)) ) ///nicht berücksichtigt: komplexe Objekte.. muß also noch erweiert werden// [Diese Nachricht wurde von cadffm am 26. Jan. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 26. Jan. 2005 17:03 <-- editieren / zitieren --> Unities abgeben: Nur für RoyCAD
Hi, sag doch mal GENAU was Du willst... Wenn Du die zu manipulierenden Objekte innerhalb Deiner Routine erzeugst, kannst Du Sie ja jeweils nach deren Erzeugung über (entlast) in 'ne Liste packen. Und alle Objekte in dieser Liste am Ende wieder verändern... Code:
... > Pgm erzeugt Objekt... > dann: (setq obj-lst (cons (entlast) obj-lst)) ...
... ------------------ Ciao, Marc 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: 26. Jan. 2005 22:13 <-- editieren / zitieren --> Unities abgeben: Nur für RoyCAD
(entnext) ohne Elementnamen gibt das erste Element der Zeichnungsdatenbank zurück. Davon ausgehend kann man auch das Xte "von hinten" bestimmen. und den Rest natürlich wieder mit (entnext xtesElement). Eine Routine dafür könnte so aussehen:
Code:
; diese Routine gibt den Elementnamen des ; x-letzten Objektes der Zeichnung zurück (defun xvorletztem (x / pointer1 pointer2) (setq pointer1 (entnext) pointer2 Pointer1 ) (repeat (1+ x) (if pointer2 ; falls gar nicht x Objekte ; in der Zeichnung sind (setq pointer2 (entnext pointer2)) ) ) (while pointer2 (setq pointer2 (entnext pointer2) pointer1 (entnext pointer1) ) ) pointer1 )
------------------ Mit freundlichem Gruß Udo Hübner ---------- Der versteckte Fehler bleibt nie unentdeckt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 27. Jan. 2005 10:40 <-- editieren / zitieren --> Unities abgeben: Nur für RoyCAD
@cadffm ;letzte Objekt ermitteln (setq OBJ (entlast)) (setq ss (ssadd)) der vollständigkeitshalber (setq obj (entlast)) (while (entnext obj) (setq obj (entnext obj)))
falls nämlich das letzte Objekt zufällig ein Block mit Attributen war, gibt (entlast) den INSERT zurück, danach muss man noch mit (entnext) solange arbeiten bis auch die ATTRIBS und das SEQUEND durch sind.
------------------ WWW.FFZELL.AT.TC Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RoyCAD Mitglied Dipl-Ing Energietechnik
Beiträge: 206 Registriert: 24.05.2004 Win XP AutoCAD2008-2010 Inventor 2008-2010 Productstream Compass P4 3,0GHz 512MB Ram
|
erstellt am: 27. Jan. 2005 10:49 <-- editieren / zitieren --> Unities abgeben:
|