Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Makro für OLE Objekt

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
  
PLM TechnologieForum Bamberg
Autor Thema:  Makro für OLE Objekt (991 mal gelesen)
CydonOSX
Mitglied
PolyKonstrukteur

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

Beiträge: 2
Registriert: 11.11.2013

erstellt am: 11. Nov. 2013 17:56    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

Guten Tag zusammen

Ich habe nun schon einige Makros usw. aus diesem Forum, doch nun bin ich an einem Punkt an dem ich nicht mehr weiter komme.
Wir arbeiten momentan noch mit Solidworks 2010.
Für dieses habe ich ein Makro gemacht, dass eine Exceltabelle als OLE Ojekt auf die Zeichnung legt.(Bestellstempel)

Zuerst wird das Blattformat rausgelesen und dementsprechend sind die Koordinaten für das Objekt. Dies klappt soweit sehr gut.

Das Problem ist aber, dass auf einem A0 Blatt der Stempel viel zu klein ist und auf A4 viel zu gross.(Da wir immer A4 drucken)

Nun frage ich mich ob man via VB auch die länge und breite des Objektes bestimmen kann?

Hier der Code für das Einfügen

Sub main()
    Dim swApp                      As SldWorks.SldWorks
    Dim swModel                    As SldWorks.ModelDoc2
    Dim swModelExt                  As SldWorks.ModelDocExtension
    Dim LpOleObj As Object
    Set swApp = CreateObject("SldWorks.Application")
    Set swModel = swApp.ActiveDoc
    Set swModelExt = swModel.Extension
    Set LpOleObj = swModelExt.InsertObjectFromFile("C:\Temp\Test.xls", False, 1, 0, 0, 0)
    Set swApp = Nothing
    Set swModel = Nothing
    Set swModelExt = Nothing
    Set LpOleObj = Nothing
End Sub

Gibts hier nirgends eine Zeile in der man länge und breite angeben könnte?

Freundliche grüsse
Cydon...

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

HenryV
Mitglied
Konstrukteur, Engineering


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

Beiträge: 813
Registriert: 18.05.2005

SolidWorks 2022 x64 SP5.0
Dell Precision 5820
Intel Xeon W-2125 4x4GHz
NVIDIA Quadro P2000 5GB
32GB RAM
2x Dell U2412M, 24" TFT
Windows 10 Enterprise x64 22H2
Microsoft 365 E5
Microsoft Visual Studio Enterprise 2022

erstellt am: 12. Nov. 2013 09:01    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 CydonOSX 10 Unities + Antwort hilfreich

Hallo Cydon

Dafür gibt es das Boundaries Property

Beispiel im SWX-Forum -> https://forum.solidworks.com/message/264933

Gruss Andreas

------------------
21 ist nur die halbe Antwort.

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 12. Nov. 2013 10: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 CydonOSX 10 Unities + Antwort hilfreich

Hallo Cydon,

und herzlich willkommen im SolidWorks Brett auf CAD.de 

Ich hab das zwar noch nie selbst gebraucht, aber SwOLEObject::Boundaries hört sich so an, als wäre das dafür da. Ich hab da etwas mit rumgespielt und bin zu einem brauchbaren Ergebnis gekommen:

Code:
Sub main()

    Dim swApp          As SldWorks.SldWorks
    Dim swModel        As SldWorks.ModelDoc2
    Dim swModelExt      As SldWorks.ModelDocExtension
    Dim LpOleObj        As SldWorks.SwOLEObject
   
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swModelExt = swModel.Extension
   
    Set LpOleObj = swModelExt.InsertObjectFromFile("C:\Temp\Test.bmp", False, 1, 0.1, 0.1, 0)
   
    ' dei Boundaries des OLE Objektes sind ein SaveArray mit 6 Doubles
    ' x,y,z obere linke Ecke
    ' x,y,z untere rechte Ecke
    Dim myNewPosX  As Double
    Dim myNewPosY  As Double
    Dim myNewWidth  As Double
    Dim myNewHeight As Double
    ' dann die gewünschten Koordinaten der Ecken festlegen, Einheit wie immer Meter!
    myNewPosX = 0.1
    myNewPosY = 0.12
    myNewWidth = 0.15
    myNewHeight = 0.08
   
    ' zur Übergabe als SafeArray entsprechende Felder vorbereiten
    Dim dBoundaries(5) As Double
    Dim vBoundaries As Variant
    ' dann die gewünschten Koordinaten der Ecken festlegen, Einheit wie immer Meter!
    dBoundaries(0) = myNewPosX
    dBoundaries(1) = myNewPosY
    dBoundaries(2) = 0
    ' Achtung, die zweite Ecke MUSS rechts und unterhalb der ersten sein, sonst gibt
    ' es recht lustige Effekte in SolidWorks. Gespiegelte OLE Objekte geht nicht ;)
    dBoundaries(3) = myNewPosX + myNewWidth
    dBoundaries(4) = myNewPosY - myNewHeight
    dBoundaries(5) = 0
   
    ' umformatieren und der Objektboundarie zuweisen
    vBoundaries = dBoundaries
    LpOleObj.Boundaries = vBoundaries
   
    ' wenn gewünscht noch ein Rebuild hinterher
    'swModel.ForceRebuild3 (True)

End Sub



Zurücksetzen der Größe müsste mit ModelDoc2::ObjectResetsize gehen, wenn mal gebraucht.

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

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

CydonOSX
Mitglied
PolyKonstrukteur

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

Beiträge: 2
Registriert: 11.11.2013

erstellt am: 12. Nov. 2013 20: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

WoW das ging ja ruck zuck. Perfekt, genau das habe ich gesucht.
Vielen vielen dank echt super.

Sobald ich mein Makro fertig habe Poste ich es noch hier hin, evtl. braucht es ja mal wer.

Danke nochmals für die schnelle und super Lösung.,,,


einen schönen Feierabend

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