| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: ssget _c ist zoomabhängig? (1875 mal gelesen)
|
Peter2 Ehrenmitglied V.I.P. h.c.

 Beiträge: 3882 Registriert: 15.10.2003 Win 10 bzw. 11 / 64 Pro AutoCAD MAP 3D 2023 BricsCAD 24
|
erstellt am: 19. Mai. 2008 23:14 <-- editieren / zitieren --> Unities abgeben:         
Ich berechne per Lisp zwei Punkte und erfasse dann mit "ssget _C punkt1 punkt2" Elemente. Nun habe ich gemerkt, dass das Ergebnis anscheinend zoom abhängig ist. Wenn man weit hinauszoomt werden auch Elemente erwischt, die etwas außerhalb des Fensterbereiches liegen. Zoomt man klar hinein, werden die aussenliegenden Elemente nicht erfasst. Also scheint das Verhalten identisch mit der grafischen Auswahl, wo man bei rausgezoomten Elementen mit der Pickbox oft auch mehr erwischt als geplant. Funktioniert also "ssget _C" (und_w wahrscheinlich auch) vor allem grafisch und nicht mathematisch (datenbankmässig)? Peter ------------------ Für jedes Problem gibt es eine einfache Lösung. Die ist aber meistens falsch. ;-) 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: 9808 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 19. Mai. 2008 23:18 <-- editieren / zitieren --> Unities abgeben:          Nur für Peter2
|
archtools Mitglied
  
 Beiträge: 991 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 19. Mai. 2008 23:32 <-- editieren / zitieren --> Unities abgeben:          Nur für Peter2
Zitat: Original erstellt von Peter2: Funktioniert also "ssget _C" (und_w wahrscheinlich auch) vor allem grafisch und nicht mathematisch (datenbankmässig)?
Jein. Es funktioniert nicht grafisch, weil ja auch Elemente außerhalb des Bilfschirms gefunden werden können, und es arbeitet nicht in der Zeichnungsdatenbank, weil manchmal Elemente sehr weit außerhalb des Bildschirms nicht gefunden werden. Die Sache hat mit Perfomrance zu tun: CAD-Programm und ähnliche arbeiten bei sehr vielen Operationen nicht mit der Datenbank, in der die realen Zahlenwerte gespeichert sind, weil die Operationen mit diesen Realzahlen viel langsamer (so um den Faktor 1.000) ablaufen als dieselben Operationen mit Ganzzahlen. AutoCAD baut deshalb für Bildschirmoperationen eine zweite Datenbak auf - die sogenannte Displayliste. In dieser sind die Daten der Zeichnungselemente nur ganzzahlig gerundet dargestellt. Man kann den Effekt sehr gut sehen, wenn man beispielsweise einen sehr kleinen Kreis zeichnet und dann groß drauf zoomt - der Kreis wird dann sehr deutlich erkennbar als Polygon dargestellt. Je nach Anzahl der Zeichnungselemente und Größe des Zeichungsbereichs werden nicht alle Elemente in der Displayliste erfasst, um Speicher zu sparen, und um Zeit beim Aufbau der Displayliste zu sparen. Man kann das recht gut erkennen, wenn man in einer großen Zeichnung mit vielen Elementen in ein sehr kleines Detail hinein zoomt, dort REGENeriert (der Befehl REGEN aktualisiert die Displayliste), und dannach mit der Option "dynamisch" zoomt. Dabei wird das Zoomen nur innerhalb des Bereichs erlaubt, der von der Displayliste erfasst wird. Früher übrigens war Speicherplatz so knapp, dass im normalen Arbeitsspeicher eines Rechners gar kein Platz für den Aufbau einer Displayliste war. Um sinnvoll mit AutoCAD arbeiten zu können, waren deshalb spezielle Grafikkarten nötig, die mit extra Speicher für die Displayliste ausgerüstet waren. Alleine eine halbwegs brauchbare Grafikkarte für AutoCAD kostete vor 15 Jahren etwa so viel, wie drei komplette Rechner heute. Und ohne so eine teure Karte war an professionelles Arbeiten mit AutoCAD gar nicht zu denken. Tom Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peter2 Ehrenmitglied V.I.P. h.c.

 Beiträge: 3882 Registriert: 15.10.2003 Win 10 bzw. 11 / 64 Pro AutoCAD MAP 3D 2023 BricsCAD 24
|
erstellt am: 19. Mai. 2008 23:38 <-- editieren / zitieren --> Unities abgeben:         
Danke an beide für die Antworten. In meinem konkreten Fall heisst das, dass ich wegen der Rundungsfehler nicht die gewünschte Auswahl bekomme? Peter ------------------ Für jedes Problem gibt es eine einfache Lösung. Die ist aber meistens falsch. ;-) 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: 20. Mai. 2008 08:37 <-- editieren / zitieren --> Unities abgeben:          Nur für Peter2
Zitat: Original erstellt von archtools: Jein. Es funktioniert nicht grafisch, weil ja auch Elemente außerhalb des Bilfschirms gefunden werden können, und es arbeitet nicht in der Zeichnungsdatenbank, weil manchmal Elemente sehr weit außerhalb des Bildschirms nicht gefunden werden. Tom
Bist Du Dir ganz sicher ? Ich kenne es anders. SSget mit Fenster, Kreuzen usw. erkennt keine Objekte ausserhalb des Bildschirmes. Habs jetzt ausprobiert. In 0,0 befindet sich eine Kreis Radius 1 mit (ssget "_CROSS" (list -10 -10) (list 10 10)) wird dieser gefunden jetzt pane ich den kreis aus dem Bildschirm raus, und der vorige SSGET ergibt nil ------------------ Ing. Anton Fuchs WWW.FFZELL.AT.TC Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 22497 Registriert: 03.06.2002 Alles
|
erstellt am: 20. Mai. 2008 08:45 <-- editieren / zitieren --> Unities abgeben:          Nur für Peter2
|
Peter2 Ehrenmitglied V.I.P. h.c.

 Beiträge: 3882 Registriert: 15.10.2003 Win 10 bzw. 11 / 64 Pro AutoCAD MAP 3D 2023 BricsCAD 24
|
erstellt am: 20. Mai. 2008 09:57 <-- editieren / zitieren --> Unities abgeben:         
Zitat: Original erstellt von fuchsi: ...Ich kenne es anders. SSget mit Fenster, Kreuzen usw. erkennt keine Objekte ausserhalb des Bildschirmes.
Bedenke diverse Probleme beim Zoomen (panen mit der mittleren Maus, zoomen mit dem Mausrad) - irgendwann geht das Ding nicht mehr. Dann machst du "regen" und es läuft wieder. Hast du deinen Test auch mit einem "zwischendurch - regen" gemacht? Peter ------------------ Für jedes Problem gibt es eine einfache Lösung. Die ist aber meistens falsch. ;-) 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: 20. Mai. 2008 10:09 <-- editieren / zitieren --> Unities abgeben:          Nur für Peter2
Zitat: Original erstellt von Peter2: Hast du deinen Test auch mit einem "zwischendurch - regen" gemacht? [/i]
Ja. Sobald der Kreis in meinem Test ausserhalb (und nur ganz wenig ausserhalb) des Bildschirmes ist, auch mit einem REGEN dazwischen , wird er mit einem (ssget "_C" (list -10 -10) (list 10 10)) nicht gefunden. Alle SSGET-Objekltwahlen, die normalerweise interaktiv sind (Fenster Fensterpolygon, Kreuzen, Kreuzenpoliygon und Zaun) funktionieren nur, wenn das zu wählenden Teil zumindest zum Teil am Bildschirm sichtbar ist. Mit der Option X und diversen Filterlisten, tritt dieses Phänomen nicht auf. ------------------ Ing. Anton Fuchs WWW.FFZELL.AT.TC Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 22497 Registriert: 03.06.2002 Alles
|
erstellt am: 20. Mai. 2008 11:55 <-- editieren / zitieren --> Unities abgeben:          Nur für Peter2
Jepp, funktioniert genau wie "per Hand" - ist kein "Lisp-Problem" (aber ein Problem schon, heul) Ich finde es andersherum viel interessanter: "Fensterwahl innerhalb eines Objektehaufens (Zeichnung) und man hat es weit weg gezoomt dabei ;D Statt das eine/einzige Objekt zu fangen welches sich wirklich innerhalb des angegebenen Fensters befindet wählt er nun halt ein paar mehr, oder gar alle ;D Also: Vorher immer eine gescheite Ansicht berechnen und einen Zoom ausführen Das Thema wird ja immer wieder gekaut - und jeder fliegt darüber irgendwann mal auf die Nase (wenn er nicht vorher, zB. im Forum, davon schon gehört hatte) ------------------ die alte SUCHfunktion.. - System-Angaben - User:FAQ(Adesk) [Diese Nachricht wurde von cadffm am 20. Mai. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bu Mitglied die Frage habe ich mir auch schon gestellt
 
 Beiträge: 265 Registriert: 29.06.2004 AutoCAD 2010 Mechanical
|
erstellt am: 20. Mai. 2008 13:33 <-- editieren / zitieren --> Unities abgeben:          Nur für Peter2
Hallo, ich möchte das Niveau der Diskussion nicht zu sehr unterlaufen aber ein (command "_zoom" "_w" p1 p2) vor dem (ssget "_c" p1 p2) -> um sicher zu ghen dass alle gewünschten Objekte gefunden werden. Im Notfall danach wieder ein (command "_zoom" "_p"). Für jedes Problem gibt es eine einfache Lösung. Die ist aber meistens falsch. ;-) -> Vielleicht ist das die Ausnahme !!! ------------------ Gruss bu 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: 20. Mai. 2008 13:38 <-- editieren / zitieren --> Unities abgeben:          Nur für Peter2
Zitat: Original erstellt von bu: Hallo,ich möchte das Niveau der Diskussion nicht zu sehr unterlaufen aber ein (command "_zoom" "_w" p1 p2) vor dem (ssget "_c" p1 p2) -> um sicher zu ghen dass alle gewünschten Objekte gefunden werden. Im Notfall danach wieder ein (command "_zoom" "_p"). Für jedes Problem gibt es eine einfache Lösung. Die ist aber meistens falsch. ;-) -> Vielleicht ist das die Ausnahme !!!
Naja, ist eh klar. Nur wenn ich sowas einbaue, würgen mich meine Anwender, wenn ich dauernd in der Zeichnung rumzoome ! Da würde ich eher mal alle Objekte (vielleicht mit diversen Filtern nach Layer, Objekttyp je nach Anwendung) wählen, und diese durchlaufen, ob sie sichmit einer gedachte Linie mit diesen 2 Punkten schneiden (intersectwith) Ist sicherlich wesentlich schneller, als 2 x Zoomen. ------------------ Ing. Anton Fuchs WWW.FFZELL.AT.TC 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: 20. Mai. 2008 21:16 <-- editieren / zitieren --> Unities abgeben:          Nur für Peter2
Zitat: Original erstellt von fuchsi: Bist Du Dir ganz sicher ? Ich kenne es anders. SSget mit Fenster, Kreuzen usw. erkennt keine Objekte ausserhalb des Bildschirmes. Habs jetzt ausprobiert. In 0,0 befindet sich eine Kreis Radius 1 mit (ssget "_CROSS" (list -10 -10) (list 10 10)) wird dieser gefundenjetzt pane ich den kreis aus dem Bildschirm raus, und der vorige SSGET ergibt nil
Stimmt - hab's jetzt auch ausprobiert. Dabei hätte ich geschworen, dass das früher mal im Bereich der Displayliste funktioniert hat und nicht nur auf dem Bildschirm. Kann es sein, dass sich das irgend wann in den letzten 15 Jahren mal geändert hat? Gruß Tom 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: 21. Mai. 2008 08:21 <-- editieren / zitieren --> Unities abgeben:          Nur für Peter2
|