Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  MicroStation/PowerDraft (J, V8, XM, V8i)
  RasterVBA drehen verschieben skalieren

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:  RasterVBA drehen verschieben skalieren (2140 mal gelesen)
HeyJo
Mitglied
Verm.Ing

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

Beiträge: 8
Registriert: 24.02.2011

Microstation 8.5 bzw. 8i
AutoCad 12
Provi
CimDataBase

erstellt am: 20. Jan. 2012 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

Hi,
Ich versuche gerade eine komplette Zeichnung mittels Drehwinkel, Verschiebevektor und Massstab zu Modifizieren, bei den Zeichenelementen war das auch kein Problem, da lief das über eine Transformationsmatrix und der anschließenden Anwendung der Methode Element.transform,
Aber bei Raster funktioniert nur eine Drehung, aber ich konte keine Befehle finden zum skalieren und verschieben.
Vielleicht hat ja einer das schon mal gemacht

hier jedenfalls der Status Quo:

Sub test_Raster_Drehen_Skalieren_Verschieben(DrehWinkel_Radiant As Double, vx As Double, vy As Double, vz As Double, MassStab As Double)
 
  Dim theRasters As Rasters
  Dim oRaster As Raster
  Dim oEnum As CollectionEnumerator
 
  Set theRasters = RasterManager.Rasters
    For Each oRaster In theRasters 'Re
      With oRaster.GeoReferenceInformation
        MsgBox .RotationAboutZ & vbCrLf _
        & .Origin.x & vbCrLf _
        & .Origin.Y & vbCrLf _
        & .Origin.Z & vbCrLf _
        & oRaster.RasterInformation.WorldFileType _
        , , oRaster.RasterInformation.Name
   
      'Raster um Ursprung drehen (geht trotz ReadOnly)
        .RotationAboutZ = DrehWinkel_Radiant
   
      'Raster-Ursprung verschieben
      'geht nicht, da GeoReferenceInformation-Objekt eigentlich Readonly (außer bei Drehung s.o.)
        .Origin.x = .Origin.x + vx
        .Origin.Y = .Origin.Y + vy
        .Origin.Z = .Origin.Z + vz
     
      'Raster Skalieren bezogen auf Ursprung
        '??? (keine Methode gefunden)
      End With
     
    Next
 
  RedrawAllViews
End Sub

schon mal Danke

Gruß Jo

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

LAG-FK
Mitglied
CAD-Techniker/Admin


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

Beiträge: 315
Registriert: 24.11.2010

MS-V8i-SS4 Vers. 08.11.09.833, PowerDraft-V8i-SS4 Vers. 08.11.09.833, MS-XM Vers. 08.09.02.82, FME-2013, Corel-X5, ACAD 2016, GeoMedia Plus

erstellt am: 23. Jan. 2012 06: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 HeyJo 10 Unities + Antwort hilfreich


Raster.GIF

 
Hallo,
Versuch es mit Rastersteuerung zu finden unter -> Funktionen -> Raster -> Rastersteuerung, da kannst Du Skalieren, Umwandeln (Einpassen mit Ref. Punkten) etc. diese Funktionen findest Du auch im Rastermanager, am besten selbst testen.

Gruß
Franz

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

HeyJo
Mitglied
Verm.Ing

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

Beiträge: 8
Registriert: 24.02.2011

Microstation 8.5 bzw. 8i
AutoCad 12
Provi
CimDataBase

erstellt am: 02. Feb. 2012 12:29    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

Hallo Franz,
Danke für die Antwort,
ich hab' rumprobiert und es hat geklappt mit den SendCommands, ist nur Schade, dass es für Raster keine VBA-Methode "Transform" gibt, wie bei den restlichen graphischen Elementen.
Hier also die Lösung:

Sub Raster_Drehen_Skalieren_Verschieben(DrehWinkel_Radiant As Double,Bezugspunkt1 As Point3d,vx as double,vy as double, vz as double, MassStab As Double)
 
  Dim theRasters As Rasters
  Dim oRaster As Raster
  Dim oEnum As CollectionEnumerator
 
  Dim Bezugspunkt2 As Point3d
  Dim Alt_MassStab As Point2d
  Dim Alt_Drehung_Radiant As Double
  Dim Neu_MassStab As Point2d
  Dim FullName As String
 
  Dim Neu_Pkt As Point3d
 
  'Einstellungen (der Transformationsparameter)
    ActiveSettings.Angle = DrehWinkel_Radiant    'Drehwinkel in Radiant
  'Drehwinkel setzen
  'Alternative funktioniert auch!)
    'CadInputQueue.SendCommand "ACTIVE ANGLE " & Replace(Str(DrehWinkel_Radiant * 180 / Application.Pi), ",", ".") & "°"
  'Massstab setzen
    CadInputQueue.SendCommand "ACTIVE SCALE " & Replace(Str(MassStab), ",", ".")
 
  'Alternative Funktioniert nicht!)
    'ActiveSettings.ScaleLockEnabled = False
    'ActiveSettings.Scale.x = MassStab
    'ActiveSettings.Scale.Y = MassStab
    'ActiveSettings.Scale.Z = 1

  '0. Berechnung verschobener Bezugspunkt
        Bezugspunkt2.x = Bezugspunkt1.x + vx
        Bezugspunkt2.y = Bezugspunkt1.y + vy
        Bezugspunkt2.z = Bezugspunkt1.z + vz

  '1. Gesamte Rasterauswahl demarkieren (darf nur eins markiert sein für Bearbeitung)
  Set theRasters = RasterManager.Rasters
    For Each oRaster In theRasters 'Re
      oRaster.ExtendedInformation.IsSelected = False
    Next
   
    For Each oRaster In theRasters
      With oRaster.GeoReferenceInformation
      oRaster.ExtendedInformation.IsSelected = True      'Einzelnes Raster Auswählen

  '2.Verschieben-------------------------------------------------
      'Verschiebungspunkt berechnen
        CadInputQueue.SendCommand "RASTER MOVE"
        CadInputQueue.SendDataPoint Bezugspunkt1 'UrsprBezugspunkt für Verschiebung
        CadInputQueue.SendDataPoint Bezugspunkt2 'ZielBezugspunkt für Verschiebung
        'Reset zu aktuellem Befehl senden.
        CadInputQueue.SendReset
        CommandState.StartDefaultCommand
    '3.Drehen------------------------------------------------------
      's.o.:        ActiveSettings.Angle = DrehWinkel_Radiant    'Drehwinkel in Radiant
        CadInputQueue.SendCommand "RASTER ROTATE "
        CadInputQueue.SendDataPoint Bezugspunkt2          'Bezugspunkt für Drehung
      'Reset zu aktuellem Befehl senden.
        CadInputQueue.SendReset
        CommandState.StartDefaultCommand
       
    '4.Skalieren------------------------------------------------------
      's.o.:      CadInputQueue.SendCommand "ACTIVE SCALE "  'Masstab
        CadInputQueue.SendCommand "RASTER SCALE "
        CadInputQueue.SendDataPoint Bezugspunkt2          'Bezugspunkt für Skalierung
      'Reset zu aktuellem Befehl senden.
        CadInputQueue.SendReset
        CommandState.StartDefaultCommand
     
      oRaster.ExtendedInformation.IsSelected = False      'Auswahl löschen
      End With
    'oRaster.Reload
    Next

    'Einstellungen (zurücksetzen)
    ActiveSettings.Angle = 0    'Drehwinkel in Radiant
    CadInputQueue.SendCommand "ACTIVE SCALE 1 "
   
    'Reset zu aktuellem Befehl senden.
      CadInputQueue.SendReset
      CommandState.StartDefaultCommand
 
  'Regenerieren
  RedrawAllViews
End Sub

Gruß Jo

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)2023 CAD.de | Impressum | Datenschutz