| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Eckkoordinaten des Aktuellen Modellbereichfensters (1885 mal gelesen)
|
guido159 Mitglied
Beiträge: 33 Registriert: 18.12.2004 ACAD 2007
|
erstellt am: 12. Apr. 2007 21:02 <-- editieren / zitieren --> Unities abgeben:
Hallo, hätte da folgendes Problem. Würde gerne eine Infopfeilblock nach vorlaufender Überprüfung einiger Blöcke einfügen. Das sollte ja auch kein Problem sein, aber nun wäre es angenehm wenn ich diesen Block (ein Pfeil) beim Einfügen so skalieren kann, dass er, in Abhängigkeit der Aktuellen Ansicht, immer eine bestimmte Größe aufweist. Das hat den Grund das damit ich ihn auch unabhängig vom aktullen zoomfakter immer gut erkennen kann. Hat dazu jemand einen Tipp für mich, wie ich z.B. die Koordinaten der linken unteren Ecke und der rechten oberen Ecke der aktuellen Ansicht im Modellbereich auslesen kann. mfg Guido 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: 9732 Registriert: 01.12.2003 AutoCAD 2.5 - 2022, LDD, MDT, RD, ADT, Civil Inventor AIP 4-11, 2008 -2022 Win 10
|
erstellt am: 12. Apr. 2007 21:12 <-- editieren / zitieren --> Unities abgeben: Nur für guido159
Noch einfacher gehts mit Code: thisdrawing.GetVariable("VIEWSIZE")
Zitat: VIEWSIZE Systemvariable (Schreibgeschützt) Typ: Echtzahl Gespeichert in: Zeichnung Anfangswert: variiert Speichert die Höhe der im aktuellen Ansichtsfenster angezeigten Ansicht, gemessen in Zeichnungseinheiten.
------------------ Mit freundlichem Gruß Udo Hübner Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
guido159 Mitglied
Beiträge: 33 Registriert: 18.12.2004 ACAD 2007
|
erstellt am: 13. Apr. 2007 06:50 <-- editieren / zitieren --> Unities abgeben:
|
Carsten1210 Mitglied staatl. geprüfter Holztechniker
Beiträge: 1357 Registriert: 24.07.2002
|
erstellt am: 13. Apr. 2007 07:13 <-- editieren / zitieren --> Unities abgeben: Nur für guido159
|
d.balogh Mitglied
Beiträge: 21 Registriert: 13.05.2008 Acad Mechanical 2007 Inventor 11 SP3
|
erstellt am: 04. Dez. 2008 15:43 <-- editieren / zitieren --> Unities abgeben: Nur für guido159
Hallo Carsten, also ich habe jetzt eine Zeichnung, wo Thisdrawing.ActiveViewport net funktionieren will.... .Width, .Height und .Center zeigen nicht den Wert an, welchen mir Acad im Properties-Fenster unter dem Punkt "View" angibt. Was kann das Problem sein? Kann ich die Infos "updaten", oder werden diese runtime abgefragt? @CAD-Huebner: Ich habe als Workaround mal über die SysVars die nötigen Koordinaten rauszukriegen. Mit VIEWCTR und VIEWSIZE habe ich auch kein Problem, aber wie bekomme ich die Breite des Fensters? Ich habe über die Proportionalität mit SCREENSIZE vesucht, bekomme aber immer noch nicht das gewünschte Ergebnis... Übersehe ich da etwas...? Danke, Daniel PS: AcadM 2007 SP3
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Plateia, Canalis Visual Basic
|
erstellt am: 04. Dez. 2008 17:52 <-- editieren / zitieren --> Unities abgeben: Nur für guido159
|
d.balogh Mitglied
Beiträge: 21 Registriert: 13.05.2008 Acad Mechanical 2007 Inventor 11 SP3
|
erstellt am: 05. Dez. 2008 07:49 <-- editieren / zitieren --> Unities abgeben: Nur für guido159
Hallo Klaus, danke für die Antwort! Es geht mir um den Modellbereich, die Abfrage passiert mit aktiven Modellbereich (ActiveLayout = "Model"). Das KS = WKS... Wie gesagt.... kurios. Da aber das "Properties"-Fenster die korrekten Daten anzeigt, würde ich gerne diese auslesen... Nur weiß ich nicht, woher Acad diese Werte nimmt (irgendwoher müssen die ja kommen...), denn es handelt sich sicher nicht um .ActiveViewport.Center, etc.... inzwischen bin ich drauf gekommen, daß die SysVar SCREENSIZE die Pixelmaße wiedergibt, was mit dem DARGESTELLTEN Zeichnungsbereich ja nix zu tun hat... Also, weiterhin die Frage, woher nimmt Acad die Breite des angezeigten Bereiches..... Danke für jeden Tipp und LG, Daniel
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Plateia, Canalis Visual Basic
|
erstellt am: 05. Dez. 2008 11:34 <-- editieren / zitieren --> Unities abgeben: Nur für guido159
|
d.balogh Mitglied
Beiträge: 21 Registriert: 13.05.2008 Acad Mechanical 2007 Inventor 11 SP3
|
erstellt am: 05. Dez. 2008 11:42 <-- editieren / zitieren --> Unities abgeben: Nur für guido159
Hmmm.... Einen CodeSchnipsel gibt's in diesem Zusammenhang nicht, bin gerade beim Austesten meiner Möglichkeiten, also: Properties-fenster geöffnet, keine aktive Selection, Model-Sheet aktive VBAIDE, Immediate Fenster: debug.print Thisdrawing.ActiveViewport.width der Vergleich mit dem Wert "Breite/Width" in "View"-Abschnitt der Prop-Fensters zeigt keine Übereinstimmung. Es wäre schon hilfreich zu wissen, ob es bei Dir/Euch korrekt ist? Dann könnte ich bei mir schauen, was mit dem System los ist... Danke und LG, Daniel
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Plateia, Canalis Visual Basic
|
erstellt am: 05. Dez. 2008 12:10 <-- editieren / zitieren --> Unities abgeben: Nur für guido159
Um mal Deine Vorgehensweise nachvollziehen zu können: - Du bist im Modellbereich (nicht im Layout) - Du stellst einen bestimmten Fensterausschnitt ein und erzeugst eine neue Ansicht - Diese machst Du dann aktiv - Jetzt fragst Du die Werte im VBA Direktfenster ab - Werte passen nicht zusammen ? Solltest Du etwas anderes machen, poste es Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
d.balogh Mitglied
Beiträge: 21 Registriert: 13.05.2008 Acad Mechanical 2007 Inventor 11 SP3
|
erstellt am: 05. Dez. 2008 12:19 <-- editieren / zitieren --> Unities abgeben: Nur für guido159
ich mache eine dwg auf, bin im Modellbereich (CTAB = "model"), Zoom-e und Pan-e fröhlich herum und will feststellen, welchen Bereich ich momentan sehe ich erzeuge weder eine Ansicht, noch wechsle ich das KS dann schaue ich in VBA, und die Werte passen nicht Der ActiveViewPort war das naheliegendste, was ich im google und in der Help gefunden habe.... bzw die Sache mit den SysVars Danke für Deine Bemühungen! LG, Daniel
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Plateia, Canalis Visual Basic
|
erstellt am: 06. Dez. 2008 16:44 <-- editieren / zitieren --> Unities abgeben: Nur für guido159
OK, habe es kapiert aber auch keine Lösung, da je nachdem wie groß Deine fixierten Paletten (Eigenschaftsfenster, Designcenter, Mapwspace, ...) sind ändert sich die Breite. Habe es nicht ausprobiert, denke aber ohne fixierte Paletten müßte die Umrechnung über ScreenSize richtig sein. Aber - Wozu braucht man das, außer zum Spielen oder zum Kennenlernen der Befehle? Die erwähnten Active Viewports sind da schon interessanter. Bei sehr großen Zeichnungen kannst Du damit schnell in vordefinierte Bereiche wechseln (in unserem Fall - als Vermessungsing. - z.B. Gemeindebereiche, Elektroniker vielleicht Platinen, ... ). Schönes Wochenende, Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
d.balogh Mitglied
Beiträge: 21 Registriert: 13.05.2008 Acad Mechanical 2007 Inventor 11 SP3
|
erstellt am: 10. Dez. 2008 07:03 <-- editieren / zitieren --> Unities abgeben: Nur für guido159
Hallo Klaus, ich brauche das für ein Plot-Makro, welches auf firmenspezifische Anforderungen basiert. Ohne jetzt groß ins Detail gehen zu wollen, ich wollte dem User einen Quasi-ViewPort zeigen (Rechteck über betrachteten Bereich), und dessen Koordinaten festhalten, da sich der ZoomBereich während der Anwendung des Makros ändern kann. Sinn der Geschichte ist, daß der User bei jedem Layout (auch Modell) zeichnungsspezifische PlotBereiche anlegen kann, dessen EckPunkte ich als xdata dem Layout anhänge. Warum? : wir haben hier etliche Zeichnungen, die komplett, samt Rahmen und Schriftkopf, im ModellBereich gezeichnet wurden (externe Zeichnungen, die nicht im Acad erstellt wurden, uralte Zeichnungen, wo es noch kein Layout gab, etc...), oder wo das Layout nicht korrekt definiert worden ist, usw. Das Makro würde die PlotBereiche auslesen, und per acWindow dann ausdrucken. Hierzu wäre es hilfreich gewesen, die Koordinaten für das "acDisplay" auszulesen.... Was mich persönlich an der Sache irritiert ist, daß AutoCAD die gewünschten Daten HAT, ich aber diese - anscheinend - nicht maschinell auslesen kann.... However, danke, daß Du Dir Gedanken gemacht hast, vielleicht stolpere ich ja über eine Lösung... Werde diese dann auf jeden Fall posten. LG, Daniel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 10. Dez. 2008 13:55 <-- editieren / zitieren -->
Hi Daniel, ich hab ein Makro, das eigentlich fuer andere Zwecke bestimmt ist, aber eventuell kannst Du daraus etwas ableiten. Da dieses Makro mehrfach im Einsatz ist und ich bisher keine negativen Rückmeldungen erhalten habe, müsste es eigentlich Deine Wünsche abdecken. Grundsätzliche Funktionsweise/Aufgabe: Es sind 2 Zeichnungen geöffnet, nach einem Zoom/Pan/... in einer Zeichnung wird das Makro gestartet und es führt dann den Zoom-Befehl in der jeweils anderen Zeichnung so aus, dass der (geographisch) gleiche Ausschnitt gezeigt wird. Lass mich wissen, ob's Dir hilft oder Du damit auch Probleme findest. - alfred - |
d.balogh Mitglied
Beiträge: 21 Registriert: 13.05.2008 Acad Mechanical 2007 Inventor 11 SP3
|
erstellt am: 10. Dez. 2008 14:11 <-- editieren / zitieren --> Unities abgeben: Nur für guido159
Hallo Alfred, ich habe mir den Code angeschaut, und genau so wollte ich auch vorgehen oder so ähnlich). Allerdings scheint die Methode im Modellbereich nicht zuverlässig zu sein. Was ich benöte, sind die Daten, welche im Bild BLAU umrahmt sind... diese sind die korrekten Anzeigkoordinaten.... Danke und LG, Daniel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 10. Dez. 2008 14:45 <-- editieren / zitieren -->
Hi, hilft das? Wenn nicht, dann eventuell Zeichnung, die zu Deinem Screenshot passt Code: Dim tHeight As Double Dim tWidth As Double Dim tSize As Variant tHeight = ThisDrawing.GetVariable("VIEWSIZE") tSize = ThisDrawing.GetVariable("SCREENSIZE") tWidth = (tSize(0) / tSize(1) * tHeight)
- alfred - |
d.balogh Mitglied
Beiträge: 21 Registriert: 13.05.2008 Acad Mechanical 2007 Inventor 11 SP3
|
erstellt am: 10. Dez. 2008 14:49 <-- editieren / zitieren --> Unities abgeben: Nur für guido159
Hallo Alfred, SCREENSIZE hatte ich schon versucht, hilft nix.... Gibt es denn wirklich keinen Weg zu den Koordinaten, die Acad anzeigt????????? Danke und LG, Daniel PS: die Zeichnung ist eine neue Zeichnung... (_new)
[Diese Nachricht wurde von d.balogh am 10. Dez. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 10. Dez. 2008 14:53 <-- editieren / zitieren -->
Hi, Deine Aussage war doch, Du hättest gerne das gleiche in VBA errechnet, was im Eigenschaftsfenster angezeigt wird. Bei mir habe ich das mit obigem Code (evenutell unterstützt durch regenerieren) nach jedem Zoom und Pan als Ergebnis richtig erhalten. Welche Frage steckt jetzt hinter 'Koordinaten, die Acad anzeigt', ich hab's scheinbar nicht verstanden - alfred - |
d.balogh Mitglied
Beiträge: 21 Registriert: 13.05.2008 Acad Mechanical 2007 Inventor 11 SP3
|
erstellt am: 11. Dez. 2008 13:45 <-- editieren / zitieren --> Unities abgeben: Nur für guido159
Hallo, die Problemstellung hast Du schon richtig verstanden, nur ist das Ergebnis (bei mir zumindest) nicht zuverlässig.... Manchmal stimmts, manchmal eben nicht... Wo ich mir 100% sicher bin: das EigenschaftenFenster nimmt seine Werter garantiert nicht vom activeViewport, oder ähnlichem.... vielleicht gibt es ja eine gefunkelte mathematische Formel, um aus Viewctr, Viewsize, und screensize die Breite zu berechnen, dann bin ich einfach zu blöd LG, Daniel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 11. Dez. 2008 21:01 <-- editieren / zitieren -->
Hi Daniel, dann bin ich scheinbar nicht in der Lage, Deine Situation zu reproduzieren, die Ergebnisse obiger Formel haben bei meinen Versuchen gestimmt (nach '_regen'), dabei habe ich versucht, das AutoCAD-Fenster grösser und kleiner zu machen, Paletten ein- und auszuschalten, das DrawingWindow gedockt und nicht gedockt, Wechsel zu einem Layout und wieder zurück zu ModelSpace. Wenn Du eine Situation findest, wo obige Formel nicht funktioniert und Du beschreiben kannst, wie dies zu reproduzieren ist, lass es mich bitte wissen. Viel Erfolg, - alfred - |
Ex-Mitglied
|
erstellt am: 12. Feb. 2009 17:12 <-- editieren / zitieren -->
Hi Daniel, lang ist's her, aber vielleicht hilft Dir meine Erfahrung, die ich gerade gemacht habe, bei Deinem Problem? Ich hatte jetzt die Situation, dass ich die Variable "VIEWCTR" auslesen musste und bin (allerdings in .NET) darauf gestossen, dass diese Variable dann andere Werte als gewünscht retourniert, wenn ich meine Berechnung unmittelbar nach Öffnen der Zeichnung gestartet habe. Habe ich eine Linie gezeichnet und dann meine App drübergelassen, dann hat's funktioniert. Ein Workaround für mich ist (und funktioniert), das UCS auf Welt und wieder zurückzusetzen (zwischendurch regen, aber da bin ich jetzt noch nicht sicher). Folgendes Codeschnippsel dazu (musst halt das .NET-spezische für VBA umsetzen): Code: Dim tUcs As Interop.Common.AcadUCS = Nothing Try tAcadDocCOM.ActiveUCS = tAcadDocCOM.UserCoordinateSystems.Item("WCS") Catch ex As Exception tAcadDocCOM.ActiveUCS = tAcadDocCOM.UserCoordinateSystems.Add(New Double() {0, 0, 0}, New Double() {1, 0, 0}, New Double() {0, 1, 0}, "WCS") End Try
Hoffentlich hilft's Dir auch, - alfred -
------------------ www.hollaus.at |
| Duales Studium B.Eng. Maschinenbau mit Ausbildung zum Industriemechaniker:in | Wusstest du, dass wir bei Novelis das Aluminium für die bekanntesten Automobil-, Getränkedosen-, Architektur- und Verbrauchermarken der Welt produzieren? Darunter Coca-Cola, Ford, BMW, Jaguar Land Rover, Airbus, Nespresso und Samsung. Darüber hinaus sind wir Vorreiter in den Bereichen Nachhaltigkeit und Recycling. Wir sind mit 33 Werken in 9 Ländern in Nordamerika, Südamerika, Europa und Asien mit weltweit 13.... | Anzeige ansehen | Ausbildung, Studium |
|
d.balogh Mitglied
Beiträge: 21 Registriert: 13.05.2008 Acad Mechanical 2007 Inventor 11 SP3
|
erstellt am: 16. Feb. 2009 12:01 <-- editieren / zitieren --> Unities abgeben: Nur für guido159
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|