Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Prüfe Zeichnung auf Zoom Grenzen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:   Prüfe Zeichnung auf Zoom Grenzen (1678 mal gelesen)
Peter2
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

Beiträge: 3374
Registriert: 15.10.2003

Win 10/64 Pro
AutoCAD MAP 3D 2018

erstellt am: 19. Okt. 2010 11:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Eine interne Vorgabe besagt, dass Zeichnungen im Stand "auf Grenzen gezoomt" abzuspeichern sind. jetzt stellt sich die Frage - wie kann man das systematisch überprüfen?

Das Problem beginnt ja schon damit, dass "Grenzen" je nach Bildschirm und Fensterproportionen anders sind, aber mein Ansatz wäre irgendwie so "Wenn die Zeichnungsgrenzen extmin/extmax bis X Prozent unter den Bildschirmwerten liegen dann gilt es als gezoomt." (Noch nicht fertig gedacht ...)

Was ich aber dazu noch suche sind
a) die Eckpunktkoodinaten des Bildschirms (= der aktuellen Darstellung, also das, was beim "Plotten - Anzeige" verwendet wird)
b) eine besser Idee ...

Mahlzeit.

Peter

------------------
Für jedes Problem gibt es eine einfache Lösung.
Die ist aber meistens falsch. ;-)

[Diese Nachricht wurde von Peter2 am 19. Okt. 2010 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4136
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 19. Okt. 2010 12:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

Hallo,

ich würde mal davon ausgehen, dass lediglich sichergestellt werden soll, dass alles gezeichnete auch auf dem Bildschirm nach dem Öffnen zu sehen ist. Beendest du eine Zeichnung (auf Grenzen gezoomt) ist es ziemlich egal, was der Nächste, der die Zeichnung öffnet, für einen Bildschirm oder Bildschirmauflösung hat. Der Anzuzeigende Ausschnitt wird zwar entsprechend angepasst, aber niemals verkleinert. Folglich mach ein Zoom-Grenzen und lass die ganze Rechnerei weg - fertig.

Bei Fragen ...

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Peter2
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

Beiträge: 3374
Registriert: 15.10.2003

Win 10/64 Pro
AutoCAD MAP 3D 2018

erstellt am: 19. Okt. 2010 13:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von Brischke:
...Folglich mach ein Zoom-Grenzen und lass die ganze Rechnerei weg - fertig.

Die Tücke steckt im Detail, weil ...

- es soll mit "Zoom Grenzen" gespeichert werden, weil damit die Voransicht (BMP), andere Viewer und der nächste Acad-Zugriff gleich das ganze Bild zeigen - was wichtig und zeitsparend ist.

- es soll der Zeichner speichern und nicht der "Prüfer im Massenlauf". Bei der "Standardprüfung" gibt es dann eine Liste der falsche gezoomten Zeichnungen, und die muss der Verursacher ausbaden (hat formelle - inhaltliche Gründe).

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

wronzky
Ehrenmitglied V.I.P. h.c.
CAD-Dienstleistungen für Architekten



Sehen Sie sich das Profil von wronzky an!   Senden Sie eine Private Message an wronzky  Schreiben Sie einen Gästebucheintrag für wronzky

Beiträge: 2154
Registriert: 02.05.2005

CAD:
AutoCAD 2.6 bis 2014
ADT 2005 - 2014
Arcibem
System:
Windows 2000, XP, NO VISTA
Internet-Startseite:
http://www.archi.de

erstellt am: 19. Okt. 2010 13:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

Schau Dir mal die Variablen VIEWCTR, VIEWSIZE und SCREENSIZE an. Damit kannst Du alles errechnen.
Was ist Dein Ziel? willst Du nur prüfen, ob alles auf Grenzen gezoomt ist?
Ansonsten kannst Du ja den "_close"-Befehl umdefinieren, und dabei erst auf die Grenzen zoomen und sichern, bevor die Zeichnung geschlossen wird.

Grüsse, Henning

------------------
zur Abstimmung

Henning Jesse
VoxelManufaktur
Computer-Dienstleistungen für Architekten und Ingenieure

  http://www.voxelman.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4136
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 19. Okt. 2010 14:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Peter2:
Die Tücke steckt im Detail, weil ...

- es soll mit "Zoom Grenzen" gespeichert werden, weil damit die Voransicht (BMP), andere Viewer und der nächste Acad-Zugriff gleich das ganze Bild zeigen - was wichtig und zeitsparend ist.

- es soll der Zeichner speichern und nicht der "Prüfer im Massenlauf". Bei der "Standardprüfung" gibt es dann eine Liste der falsche gezoomten Zeichnungen, und die muss der Verursacher ausbaden (hat formelle - inhaltliche Gründe).

Peter


ähmm ... ich sehe jetzt allerdings noch keinen Widerspruch zu dem, was ich geschrieben habe. Zoom-Grenzen->Speichern=Vorschaubild ist auf Zoom-Grenzen?

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Peter2
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

Beiträge: 3374
Registriert: 15.10.2003

Win 10/64 Pro
AutoCAD MAP 3D 2018

erstellt am: 19. Okt. 2010 14:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von wronzky:
...Was ist Dein Ziel? willst Du nur prüfen, ob alles auf Grenzen gezoomt ist?...

Ja. Nur prüfen und protokollieren. Nicht  ändern und reparieren.

Zitat:
Original erstellt von wronzky:
Schau Dir mal die Variablen VIEWCTR, VIEWSIZE und SCREENSIZE an. Damit kannst Du alles errechnen....

Danke, werde ich anschauen.

Zitat:
Original erstellt von Brischke:
ähmm ... ich sehe jetzt allerdings noch keinen Widerspruch zu dem, was ich geschrieben habe. Zoom-Grenzen->Speichern=Vorschaubild ist auf Zoom-Grenzen?

Vielleicht reden wir aneinander vorbei, aber der Prüfvorgang soll eben nicht speichern - siehe oben.

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

wronzky
Ehrenmitglied V.I.P. h.c.
CAD-Dienstleistungen für Architekten



Sehen Sie sich das Profil von wronzky an!   Senden Sie eine Private Message an wronzky  Schreiben Sie einen Gästebucheintrag für wronzky

Beiträge: 2154
Registriert: 02.05.2005

CAD:
AutoCAD 2.6 bis 2014
ADT 2005 - 2014
Arcibem
System:
Windows 2000, XP, NO VISTA
Internet-Startseite:
http://www.archi.de

erstellt am: 19. Okt. 2010 16:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

Achte aber darauf, dass extmin und -max in jedem Layout anders sein können. Zur Prüfung also erst ins Modell? ins 1. Layout?...

Grüsse, Henning

------------------
zur Abstimmung

Henning Jesse
VoxelManufaktur
Computer-Dienstleistungen für Architekten und Ingenieure

  http://www.voxelman.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Peter2
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

Beiträge: 3374
Registriert: 15.10.2003

Win 10/64 Pro
AutoCAD MAP 3D 2018

erstellt am: 19. Okt. 2010 16:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von wronzky:
... Zur Prüfung also erst ins Modell? ins 1. Layout?...

Ja, klar.

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

andi2050
Mitglied



Sehen Sie sich das Profil von andi2050 an!   Senden Sie eine Private Message an andi2050  Schreiben Sie einen Gästebucheintrag für andi2050

Beiträge: 107
Registriert: 11.03.2003

erstellt am: 19. Okt. 2010 21:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

Die Viewvariablen auslesen und 'merken', dann ZOOM-Grenzen, dann die nun aktuellen Viewvariablen vergleichen. Wenn KEIN Unterschied vorhanden ist -> Zoom war bereits auf Grenzen.

Grüße...
Andi

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Peter2
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

Beiträge: 3374
Registriert: 15.10.2003

Win 10/64 Pro
AutoCAD MAP 3D 2018

erstellt am: 20. Okt. 2010 09:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von andi2050:
Die Viewvariablen auslesen und 'merken', dann ZOOM-Grenzen, dann die nun aktuellen Viewvariablen vergleichen. Wenn KEIN Unterschied vorhanden ist -> Zoom war bereits auf Grenzen....

Da befürchte ich, das wegen unterschiedlicher Bildschirmgrössen und -proportionen etc. immer was anderes rauskommt. Aber ich kann erst morgen in der Sache weitermachen.

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

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 19657
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 20. Okt. 2010 11:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

EXTMIN und EXTMAX müssen innerhalb des Anzeigebereiches liegen - wenn du meinst
unbedingt noch eine Berechnung machen zu müssen auf "viel zu klein" - also mit
einer 500% Abwichung oder so, dann mache das halt auch noch.

PS: X und/ODER Y von VIEWCTR sollte übrigens immer passen glaube ich, da dies
alleine aber weniger aussagekräftiger ist wie Extmin/max würde ich nicht über
ViewCtr gehen.

------------------
CAD.de System-Angaben  -  CAD on demand  -  User:FAQ(Acad)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13435
Registriert: 30.11.2003

.

erstellt am: 20. Okt. 2010 11:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

ok .. mal ne Funktion zu dem Thema :

(defun DT:EXTSCREEN ()     
  (list
    (list(-(car (getvar "viewctr"))
          (*(/(getvar "viewsize")
              (cadr(getvar "screensize"))
            )
            (car(getvar "screensize"))
            0.5
          )
        )
        (-(cadr(getvar "viewctr"))
          (/(getvar "viewsize")2.0)
        )
    )
    (list(+(car (getvar "viewctr"))
          (*(/(getvar "viewsize")
              (cadr(getvar "screensize"))
            )
            (car(getvar "screensize"))
            0.5
          )
        )
        (+(cadr (getvar "viewctr"))
          (/(getvar "viewsize")2.0)
        )
    )
  )
)

Gibt die maximalen momentan auf dem Bildschirm angezeigten Koordinaten zurück

die Testfunktion könnt so aussehen :

(defun ZOOMG?(/ G?)
  (vl-load-com)
  (setq L (DT:EXTSCREEN))
  (vla-ZoomExtents (vlax-get-acad-object))
  (setq G?(equal L (DT:EXTSCREEN)))
  (vla-ZoomPrevious(vlax-get-acad-object))
  G?
)

------------------
  - 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

Peter2
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

Beiträge: 3374
Registriert: 15.10.2003

Win 10/64 Pro
AutoCAD MAP 3D 2018

erstellt am: 20. Okt. 2010 11:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Wie gesagt, morgen geht es weiter, aber es geht um zwei Schritte

a) Berechnen der Koordinaten der Elemente (extmax etc.) und der Anzeige (viewctr)

b) die logische Abfrage - und da sind mehr Möglichkeiten vorhanden als auf den ersten Blick erscheint. Es müssen abgefragt werden. Es gibt nämlich zu grosse / zu kleine / unzentrierte / super breite / super hohe Zeichnungen und breite und hohe Bildschirme. Und das alles kombiniert gibt einige Möglichkeiten,
- ist die Zeichnung zentriert
- ist die Zeichnung grösser als der Schirm
- ist die Zeichnung viel kleiner als der Schirm
- ist die Zeichnung super breit (Höhenprüfung entfällt)
- ist die Zeichnung super hoch (Breitenprüfung entfällt)
- und noch irgendwas, was ich jetzt vergessen habe

Ich habe mir das gestern skizziert und werde morgen die Abfrage nach Zentrierung, Höhe, Breite usw. weiterbasteln.

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

Steff179
Mitglied
Geomatiker


Sehen Sie sich das Profil von Steff179 an!   Senden Sie eine Private Message an Steff179  Schreiben Sie einen Gästebucheintrag für Steff179

Beiträge: 266
Registriert: 09.08.2007

AutoCAD 2014

erstellt am: 21. Okt. 2010 10:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

Hallo Peter

Hab den Tread fleissig gelesen und CADmium's variante getestet.
Funktioniert bei mir einwandfrei.
Das ganze in einen Reactor gepackt funktioniert auch.

Das Problem das ich sehe ist, das wenn du das CAD beendest oder eine Zeichnung schliesst du den Test vor dem dem _Close oder Quit Befehl ausfürhren musst da nachher keine LISP's mehr laufen. Von da her kannst du nicht prüfen ob der User die Zeichnung beim verlassen speichert oder nicht.
Kann ja auch sein das wenn man die Zeichnung nicht speichern will, kein Zoom Grenzen macht.

Jetzt habe ich mir die Frage gestellt, wieso baust du vor dem Verlassen nicht einfach ein Zoom Grenzen rein?
Dann sind alle Zeichnungen immer richtig gespeichtert und du musst keine Leute entlassen weil sie nicht richtig speichern 
Anderseits ist ev. auch ein Alert angebracht da es ja immer irgendwo im nichts noch Elemente haben kann die eigentlich gar nicht dort sein sollten und der User ev. einfach mal darauf aufmerksam gemacht werden sollte, das es noch nicht vertig ist mit seiner Arbeit.

Gruss Steff

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 19657
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 21. Okt. 2010 10:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

Lese den Thread nochmal - es geht darum Dateien zu prüfen, mehr nicht.
Es geht auch nicht um eigene usw.

------------------
CAD.de System-Angaben  -  CAD on demand  -  User:FAQ(Acad)

[Diese Nachricht wurde von cadffm am 21. Okt. 2010 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Steff179
Mitglied
Geomatiker


Sehen Sie sich das Profil von Steff179 an!   Senden Sie eine Private Message an Steff179  Schreiben Sie einen Gästebucheintrag für Steff179

Beiträge: 266
Registriert: 09.08.2007

AutoCAD 2014

erstellt am: 21. Okt. 2010 10:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadffm:
Lese den Thread nochmal - es geht darum Dateien zu prüfen, mehr nicht.
Es geht auch nicht um eigene usw.


Kann sein das ich was falsch interpretiert habe.
War nur ein Gedanke um zu verhindern das noch mehr Zeichnungen falsch gespeichert werden.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Peter2
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

Beiträge: 3374
Registriert: 15.10.2003

Win 10/64 Pro
AutoCAD MAP 3D 2018

erstellt am: 21. Okt. 2010 12:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

 
Zitat:
Original erstellt von Steff179:
...Jetzt habe ich mir die Frage gestellt, wieso baust du vor dem Verlassen nicht einfach ein Zoom Grenzen rein?....

Beim Verlassen läuft ein ganzer Berg von Prüfungen und Einstellungen - aber nur wenn man den Standardknopf drückt. Wenn man ihn nicht drückt passiert eben nix ...
Und es geht auch um Fremdzeichnungen, der Erstellungsweise ich nicht beeinflussen kann.

So, hier mein Code. Scheint zu klappen.
(Hinweis für die Puristen: Ja, keine lokalen Variablen. Ja, ausufernde SETQs. Ja, Berechnungen von Dingen, die vielleicht gar nicht gebraucht werden. Ja, simple und unverschachtelte IFs. Ja, 4er Einzüge statt 2er.
Aber: sehr auskunftsfreudig und wahrscheinlich verständlich. :D )

Hinweis: Die Prüfung auf "Zentrierung / seitliche Verschiebung" ist ziemlich unnötig, da das stark von den Bildschirmen abhängt und nur bei identischen Schirmen und identischer Bildschirmanordnung (Werkzeugkästen etc.) keine Fehlermeldung provoziert.

Code:
(defun c:grenzcheck ()
    (setq
          scr_mitte_x (car (getvar "viewctr"))
          scr_mitte_y (cadr (getvar "viewctr"))
          hoehe (getvar "viewsize")
          screen_prop (/ (car (getvar "screensize")) (cadr (getvar "screensize")))
          breite (* hoehe screen_prop)
          scr_max_x (+ scr_mitte_x (* breite 0.5))
          scr_min_x (- scr_mitte_x (* breite 0.5))
          scr_max_y (+ scr_mitte_y (* hoehe 0.5))
          scr_min_y (- scr_mitte_y (* hoehe 0.5))
          ext_max_x (car (getvar "extmax"))
          ext_min_x (car (getvar "extmin"))
          ext_max_y (cadr (getvar "extmax"))
          ext_min_y (cadr (getvar "extmin"))
          ext_mitte_x (* 0.5 (+ ext_max_x ext_min_x))
          ext_mitte_y (* 0.5 (+ ext_max_y ext_min_y))
          warnflag 0
          hoehenflag 0
          breitenflag 0
    )
   
    ; zentrierte Ansicht: sind die Mittelpunkte mehr als 5% der Breite und Höhe auseinander?
    (if (> (abs (- scr_mitte_x ext_mitte_x)) (* breite 0.05))
        (progn
            (princ "\n-: Bild seitlich verschoben.")
            (setq warnflag 1)
        )
        (princ "\n+: Bild seitlich zentriert.")
    )
    (if (> (abs (- scr_mitte_y ext_mitte_y)) (* hoehe 0.05))
        (progn
            (princ "\n-: Bild vertikal verschoben.")
            (setq warnflag 1)
        )
        (princ "\n+: Bild vertikal zentriert.")
    )
    ; sind alle Zeichnungspunkte innerhalb des Schirms?
    ; wenn innerhalb: ; sind Höhe oder Breite der Zeichnung auf 10% nahe dem Schirm? (nicht zu viel verkleinert)
    (if (> ext_max_x scr_max_x)
        (progn
            (princ "\n-: Bild läuft nach rechts aus dem Schirm.")
            (setq warnflag 1)
        )
        (progn
            (princ "\n+: Rechte Kante im Bild.")
            (if (> (abs (- scr_max_x ext_max_x)) (* breite 0.05))
                (progn
                    (princ "\n~Rechte Kante weit links.")
                    (setq breitenflag 1)
                )
                (princ "\n+: Rechte Kante am Rand.")
            )
        )
    )
    (if (> ext_max_y scr_max_y)
        (progn
            (princ "\n-: Bild läuft nach oben aus dem Schirm.")
            (setq warnflag 1)
        )
        (progn
            (princ "\n+: Oberkante im Bild.")
            (if (> (abs (- scr_max_y ext_max_y)) (* hoehe 0.05))
                (progn
                    (princ "\n~Oberkante weit unten.")
                    (setq hoehenflag 1)
                )
                (princ "\n+: Oberkante am Rand.")
            )
        )
    )
    (if (< ext_min_x scr_min_x)
        (progn
            (princ "\n-: Bild läuft nach links aus dem Schirm.")
            (setq warnflag 1)
        )
        (progn
            (princ "\n+: Linke Kante im Bild.")
            (if (> (abs (- scr_min_x ext_min_x)) (* breite 0.05))
                (progn
                    (princ "\n~Linke Kante weit rechts.")
                    (setq breitenflag 1)
                )
                (princ "\n+: Linke Kante am Rand.")
            )
        )
    )
    (if (< ext_min_y scr_min_y)
        (progn
            (princ "\n-: Bild läuft nach unten aus dem Schirm.")
            (setq warnflag 1)
        )
        (progn
            (princ "\n+: Unterkante im Bild.")
            (if (> (abs (- scr_min_y ext_min_y)) (* hoehe 0.05))
                (progn
                    (princ "\n~Unterkante weit oben.")
                    (setq hoehenflag 1)
                )
                (princ "\n+: Unterkante am Rand.")
            )
        )
    )
   
    (if (and (< (+ hoehenflag breitenflag) 2)
             (= warnflag 0)
            )
        (progn
            (princ "\n+: Bild  ist eingepasst.")
        )
        (progn
            (princ "\n-: Bild ist nicht eingepasst.")
            (setq warnflag 1)
        )
    )
    (if (= warnflag 1)
        (princ "\nIrgendwas ist faul ...")
    )
    (princ)
)

Peter

------------------
Für jedes Problem gibt es eine einfache Lösung.
Die ist aber meistens falsch. ;-)

[Diese Nachricht wurde von Peter2 am 26. Okt. 2010 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2020 CAD.de | Impressum | Datenschutz