| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Massstab von Layout -Ansichtsfenster (1699 mal gelesen)
|
Pitsch52 Mitglied Mechaniker /Konstrukteur
Beiträge: 44 Registriert: 03.01.2005
|
erstellt am: 28. Aug. 2005 16:03 <-- editieren / zitieren --> Unities abgeben:
Hi Leute (ACAD2005 unter Windows2000 Professional) Ich habe ein Layout auf dem habe ich mehrere Ansichtsfenster platziert. Alle Fenster zeigen aber ein Detail der Zeichnung in einem anderen Massstab (1:1 / 2:1 / 1:2 etc.). Auch wenn nur ein Ansichtsfenster besteht, hat das einen bestimmten Anzeigemassstab (zB. 1:2) Wie komme ich in VBA an den entsprechenden Wert des jeweils activen Ansichtsfenster? Ich sollte diesen Wert in eine Variable einlesen, um Ihn dann im Programm weiterverwenden zu können. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
Beiträge: 1521 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 28. Aug. 2005 16:22 <-- editieren / zitieren --> Unities abgeben: Nur für Pitsch52
|
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 28. Aug. 2005 16:32 <-- editieren / zitieren --> Unities abgeben: Nur für Pitsch52
Hi, tippe mal im DF:
Code:
?thisdrawing.ActiveLayout.Block.Item(1).customscale 10,0000000602102
Das ist erstmal das was du suchst. Du musst natürlich sicherstellen, ob Typeof Item(i) IAcadPViewport2 ist, also IMHO via Schleifchen. Aber am besten Du machst einfach mal sowas:
Code:
sub x() dim l as acadlayout set l=thisdrawing.activelayout 'stop end sub
Und nun im Lokalfenster dein Object 'l' samst Unterobjekten mal unter die Lupe nehmen, da steht [fast] alles drinnen, was man so braucht ;-)Gruss Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pitsch52 Mitglied Mechaniker /Konstrukteur
Beiträge: 44 Registriert: 03.01.2005
|
erstellt am: 29. Aug. 2005 20:26 <-- editieren / zitieren --> Unities abgeben:
Hi Vorap mal - Danke für die Antworten! Doch gibt die Methode von Stelli1 nur den Gesamtmassstab, der bei der erstellung der Layout-Seite eingestellt wurde zurück, unabhängig von einem Ansichtsfenster. Die Methode von startrek Funktioniert sehr gut, solange auf dem Layout nur ein Ansichtsfenster vorhanden ist. Sobald mehrere Ansichtsfenster angelegt werden, ist es nicht mehr möglich die einzelnen Fenster anzusprechen. Im abschnitt Block, sind schon Items zu sehen, die meiner Ansicht nach auf Ansichtsfenster hin deuten. Doch beim Versuch, ein anderes Item als Nr.1 anzusprechen, erscheint nur eine Fehlermeldung, das eine Methode nicht auf diese weise verwendet werden darf. Wenn ich direkt eine Bemassung in einem Ansichtsfenster einsetze, funktioniert das ja auch, und sogar noch unabhängig vom eingestellten Massstab. Also muss es eine Methode geben, womit die einzelnen Ansichtsfenster unabhängig von einander bearbeitet werden können. Nur ist die Frage, ob VBA diese überhaupt zur Verfügung stellt? Mit freundlichen Grüssen! Pitsch Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 30. Aug. 2005 12:16 <-- editieren / zitieren --> Unities abgeben: Nur für Pitsch52
Hi Pitsch, bei mir tut sowas in der Art:
Code:
Sub x() Dim lay As AcadLayout, i% Set lay = ThisDrawing.ActiveLayout For i = 0 To lay.Block.Count - 1 If TypeName(lay.Block.Item(i)) = "IAcadPViewport2" Then _ Debug.Print i, lay.Block.Item(i).CustomScale Next End Sub
Gruss NancyEine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
Beiträge: 1521 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 31. Aug. 2005 10:50 <-- editieren / zitieren --> Unities abgeben: Nur für Pitsch52
Hallo pitsch, Lege mal ein paar Ansichtsfenster im Layout an. Code:
Dim Pview As AcadPViewport Dim Layout As AcadLayout Dim Entity As AcadEntity Dim Anzahl As IntegerThisDrawing.ActiveSpace = acPaperSpace Set Layout = ThisDrawing.ActiveLayout ' Für jedes Entity im Layout For Each Entity In Layout.Block If Entity.EntityType = acPViewport Then ' Erster Viewport ist das Papier Anzahl = Anzahl + 1 If Anzahl > 1 Then Set Pview = Entity Pview.CustomScale = Pview.CustomScale * 1.2 End If End If Next Entity ThisDrawing.Regen acAllViewports
Das Script ändert den Maßstab im jedem der angelegten Ansichtsfenster um einen Faktor. Gruss Stelli1 ------------------ [Diese Nachricht wurde von Stelli1 am 31. Aug. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |