| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: (entlast) => nicht das aktuelle letzte Objekt (1372 mal gelesen)
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1734 Registriert: 11.10.2004 Window 10 ACAD 2021 CIVIL 2021 BricsCAD V14-V22 Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz 16.0GB RAM NVIDIA GeForce GTX 1050<P>
|
erstellt am: 21. Sep. 2013 18:02 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe folgendes Problem: Ich befinde mich im Modelbereich und erzeuge über ENTMAKE eine Linie im Layout-Bereich "Layout1". Die Linie soll dann weiter ausgewertet und angepasst werden, daher möchte ich mit(ENTLAST) darauf zugreifen. Allerdings wird mir (ENTLAST) nicht aktualisiert. Wenn ich dasselbe in "Layout2" mache wird (ENTLAST) aktualisiert. Zum Testen folgender Code:
Code:
(defun c:test ( / ) ;;;aktueller GC5 von ENTLAST (alert (setq gc5 (cdr(assoc 5 (entget(entlast)))))) (entmake (list (cons 0 "LINE")(cons 410 "Layout1") (cons 10 '(0.0 0.0))(cons 11 '(10.0 0.0)))) ;;;Hier wird ENTLAST nicht aktualisiert (alert (setq gc5 (cdr(assoc 5 (entget(entlast)))))) (entmake (list (cons 0 "LINE")(cons 410 "Layout2") (cons 10 '(0.0 0.0))(cons 11 '(10.0 0.0)))) ;;;Hier wird ENTLAST aktualisiert. (alert (setq gc5 (cdr(assoc 5 (entget(entlast)))))))
Ich habe die Zeichnung beigepackt und hoffe das es einer von Euch a) nachvollziehen kann und b) eventuell eine Lösung hat. Vielen Dank im Voraus. ------------------ viele Grüße Jörn http://www.bosse-engineering.com Kordinaten einlesen Youtube Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Meldin Mitglied
Beiträge: 381 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 22. Sep. 2013 10:56 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
Hallo, ich kann es in 2012 nicht nachvollziehen habe deinen code etwas umgebastelt damit das erste alert nicht in einen Fehler rattert vielleicht liegt ja da schon der Fehler. Code: (defun c:test (/) ;;;aktueller GC5 von ENTLAST (if (setq Letztes (entlast)) (if (setq gc5 (cdr (assoc 5 (entget Letztes)))) (alert gc5))) (entmake (list (cons 0 "LINE") (cons 410 "Layout1") (cons 10 '(0.0 0.0)) (cons 11 '(10.0 0.0)) ) ) ;;;Hier wird ENTLAST nicht aktualisiert (if (setq gc5 (cdr (assoc 5 (entget (entlast))))) (alert gc5)) (entmake (list (cons 0 "LINE") (cons 410 "Layout2") (cons 10 '(0.0 0.0)) (cons 11 '(10.0 0.0)) ) ) ;;;Hier wird ENTLAST aktualisiert. (if (setq gc5 (cdr (assoc 5 (entget (entlast))))) (alert gc5)) )
------------------ Gruß Wolfgang Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1734 Registriert: 11.10.2004 Window 10 ACAD 2021 CIVIL 2021 BricsCAD V14-V22 Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz 16.0GB RAM NVIDIA GeForce GTX 1050<P>
|
erstellt am: 22. Sep. 2013 12:09 <-- editieren / zitieren --> Unities abgeben:
Hallo Wolfgang, danke erstmal für Deine Antwort. Ich habe es nochmal probiert, auch mit Deinem verbesserten Code, das Ergebnis ist bei mir dasselbe: "103D4" beim Alert des ENTLASTEN-Objektes "103D4" nach ERzeugung Linie in Layout1 "10428" nach Erzeugung Linie in Layout2 Bei Prüfung der Linien hat Linie im Layout1 den GC5 "10427" und die Linie im Layout2 "10428" Alles noch sehr seltsam. Dann habe ich vor der Erzeugung der Linien ein (setvar "CTAB" "Layout1/2") ausgeführt, also vorher auch das Layout aktivieren, dann wird auch das korrekte ENTLASTE-Objekt zurückgegeben. Code:
(defun c:test1 (/) ;;;aktueller GC5 von ENTLAST (if (setq Letztes (entlast)) (if (setq gc5 (cdr (assoc 5 (entget Letztes)))) (alert gc5))) (setvar "CTAB" "Layout1") (entmake (list (cons 0 "LINE") (cons 410 "Layout1") (cons 10 '(0.0 0.0)) (cons 11 '(10.0 0.0)) ) ) ;;;ENTLAST korrekt (if (setq gc5 (cdr (assoc 5 (entget (entlast))))) (alert gc5)) (setvar "CTAB" "Layout2") (entmake (list (cons 0 "LINE") (cons 410 "Layout2") (cons 10 '(0.0 0.0)) (cons 11 '(10.0 0.0)) ) ) ;;;ENTLAST korrekt (if (setq gc5 (cdr (assoc 5 (entget (entlast))))) (alert gc5)) (setvar "CTAB" "Model") )
Also, interessant allemal, ich habe für mich bereits einen Plan B, so daß eine Lösung nicht mehr so wichtig für mich ist. ------------------ viele Grüße Jörn http://www.bosse-engineering.com Kordinaten einlesen Youtube Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1968 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 23. Sep. 2013 06:54 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1734 Registriert: 11.10.2004 Window 10 ACAD 2021 CIVIL 2021 BricsCAD V14-V22 Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz 16.0GB RAM NVIDIA GeForce GTX 1050<P>
|
erstellt am: 23. Sep. 2013 07:05 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 23. Sep. 2013 08:06 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
1. Einschränkung, auch wenn es hier nicht interessiert: Entlast liefert das letzte "OberObjekt", keine Attribute, keiner Vertex.. obwohl diese nach der Polyline oder nach dem Insert kommen. 2. Zum Thema, ich will das Problem jetzt nicht verfolgen, aber wenn es um ein entmake-Objekt geht, nimmt man für gewöhnlich entmakeX [EDIT: Ich kann es nachvollziehen, jedoch mit "meinem" Layout2 ] ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD [Diese Nachricht wurde von cadffm am 23. Sep. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1734 Registriert: 11.10.2004 Window 10 ACAD 2021 CIVIL 2021 BricsCAD V14-V22 Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz 16.0GB RAM NVIDIA GeForce GTX 1050<P>
|
erstellt am: 23. Sep. 2013 08:38 <-- editieren / zitieren --> Unities abgeben:
|
Meldin Mitglied
Beiträge: 381 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 23. Sep. 2013 09:29 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
Doch! muss mich korrigieren. Es ist so wie du schreibst. Zum testen wenig Zzeit daher mal so ins blaue ist eltlast nicht das erste ssget "x". ------------------ Gruß Wolfgang Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 23. Sep. 2013 11:03 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
Erklärungsversuch : die Lispfunktion (entlast) gibt's sicher länger als Modell und Papierbereich ... und der Papierbereich ist ja eine Layoutcollection und nur das letzte aktive (Paper)Layout ist der Paperspace ... und wenn du im letzte aktive (Paper)Layout deine Linie erzeugt,liefert entlast auch das, was du willst ... Ein Layoutobjekt besteht ja im Wesentlichen aus der Plotkonfiguration und einem Blockcontainer , der die Viewports und alle anderen Objekte enthält. Kann sein, das da die Datenbank erst dann aktualisiert wird , bzw. für entlast zugänglich wird, wenn das Layout zum Paperspace geworden ist .. Wenn du deine Objekte via ActiveX erzeugst, liefern die add-Methoden das jeweilige Objekt zurück... oder entmakex ... : (defun c:testus ( / ) ;;;aktueller GC5 von ENTLAST (alert (strcat "vorher \n"(setq gc5 (cdr(assoc 5 (entget(entlast))))))) (setq a(entmakex (list (cons 0 "LINE")(cons 410 "Layout1") (cons 10 '(0.0 0.0))(cons 11 '(10.0 0.0))))) ;(vla-regen(vla-get-activedocument(vlax-get-acad-object)) acallviewports) ;;;Hier wird ENTLAST nicht aktualisiert (alert (strcat "nachher1 \n"(setq gc5 (cdr(assoc 5 (entget a)))))) (setq a(entmakex (list (cons 0 "LINE")(cons 410 "Layout2") (cons 10 '(0.0 0.0))(cons 11 '(10.0 0.0))))) ;;;Hier wird ENTLAST aktualisiert. (alert (strcat "nachher2\n"(setq gc5 (cdr(assoc 5 (entget a)))))) )
------------------ Also ich finde Unities gut ... und andere sicher auch --------------------------------------- - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1734 Registriert: 11.10.2004 Window 10 ACAD 2021 CIVIL 2021 BricsCAD V14-V22 Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz 16.0GB RAM NVIDIA GeForce GTX 1050<P>
|
erstellt am: 23. Sep. 2013 11:27 <-- editieren / zitieren --> Unities abgeben:
|