| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
Autor
|
Thema: Makro für OLE Objekt (1233 mal gelesen)
|
CydonOSX Mitglied PolyKonstrukteur
 Beiträge: 2 Registriert: 11.11.2013
|
erstellt am: 11. Nov. 2013 17:56 <-- editieren / zitieren --> Unities abgeben:         
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
  
 Beiträge: 817 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 / zitieren --> Unities abgeben:          Nur für CydonOSX
|
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)

 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 / zitieren --> Unities abgeben:          Nur für CydonOSX
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
 Beiträge: 2 Registriert: 11.11.2013
|
erstellt am: 12. Nov. 2013 20:35 <-- editieren / zitieren --> Unities abgeben:         
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 >>)
 |