| | |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | | |  | SOLIDWORKS NEXT | Episode 3: Von CAD Zu Code - Nahtlose Konstruktion und virtuelle Roboterprogrammierung, ein Webinar am 15.09.2026
|
|
Autor
|
Thema: Mittels Makro ein Text einfügen (6348 mal gelesen)
|
hhjung Mitglied Technischer Zeichner

 Beiträge: 17 Registriert: 14.07.2003 SolidWorks 2010 x64 Edition SP5.0
|
erstellt am: 17. Okt. 2009 13:42 <-- editieren / zitieren --> Unities abgeben:         
Hallo liebe Gemeinde, für unsere Zeichnungserstellung in Solidworks nutzen wir diverse Standardtexte, die wir immer wieder in Zeichnungen einfügen müssen. Diese Texte liegen in einer großen Excel-Tabelle vor. Diverse Texte werden dort ausgewählt, zusammengetragen und mit einem Makro inkl. aller Formatierungen in die Zwischenablage kopiert (Stichwort: Clipboard). Folgende Aufgabe liegt nun vor mir: Ich versuche gerade ein Makro zu erstellen, mit dem ich einen beliebigen Text aus der Zwischenablage in eine Solidworks Zeichnung einfügen kann. Folgende Lösung schwebt mir vor: Automatisch einen leeren Bezugshinweis öffnen, auf der Zeichnung platzieren und den Inhalt der Zwischenablage dort hinein kopieren lassen. Problem: Wie bekomme ich den Inhalt der Zwischenablage in den geöffneten und platzierten Bezugshinweis? Irgendwie vermisse ich eine Clipboard-Funktion im Solidworks VisualBasic-Editor. Kann mir jemand von euch behilflich sein? Viele Grüße, Björn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
myca Ehrenmitglied V.I.P. h.c. Konstrukteur

 Beiträge: 4383 Registriert: 15.06.2007 SW 2007 SW 2018 2,67 GHz,2 GB, ATI FIRE GL V5200, XP 64 3,4 GHz, 8GB, ATI FIRE PRO V7800, WIN 10 Pro
|
erstellt am: 17. Okt. 2009 14:22 <-- editieren / zitieren --> Unities abgeben:          Nur für hhjung
|
hhjung Mitglied Technischer Zeichner

 Beiträge: 17 Registriert: 14.07.2003 SolidWorks 2010 x64 Edition SP5.0
|
erstellt am: 17. Okt. 2009 14:58 <-- editieren / zitieren --> Unities abgeben:         
Hi Thomas, klar haben wir das schon gemacht. Das war ja die bisherige Prozedur. Da wir aber eine Arbeitserleichterung brauchen, wäre hier ein Makro deutlich sinnvoller und auch schneller. Zum Verständnis warum es mittels des klassischen copy/paste zu aufwendig ist: Für copy/paste müssen wir für jeden einzelnen benötigten Textblock zwischen Excel und Solidworks wechseln. Das möchten wir vermeiden. Das Problem ist, dass wir viele viele Textblöcke in einer Exceltabelle haben. Wir benötigen aber nicht alle auf einmal, sondern nur ausgewählte Textblöcke. Wenn ich diese Textblöcke, die in unterschiedlichen Zellen liegen, in Excel markiere und per copy/paste in Solidworks einfüge, dann sind nicht nur die in Excel markierten Zellen eingefügt, sondern noch weitere Zellen mit dabei, die nicht benötigt werden. Beispiel gefällig ? In den Zellen A1 bis A5 sind Texte hinterlegt. Ich benötige aber nur die Texte aus den Zellen A2 und A4. Diese markiere ich, kopiere sie, springe zu Solidworks und füge sie dort mittels paste wieder ein. Das Ergebnis ist nun, dass nicht nur der benötigte Zelleninhalt von A2 und A4 eingefügt wurde, sondern auch der Zellinhalt von A3, der zwischen den markierten Zellen liegt. Und den Zellinhalt von A3 benötige ich nicht. Daher die einfachere Variante mit einem Makro in Excel. Und zum Einfügen in Solidworks möchte ich nicht ständig erst manuell eine Bezugshinweis öffnen, platzieren und dann den Text mit paste einfügen, sondern nur einen simplen Button drücken, der mir diese Arbeit abnimmt. Ich hoffe, es war verständlich... Es geht mir ja letztlich jetzt nur noch darum, den Inhalt des Zwischenspeichers in Solidworks auszulesen. Alles andere funktioniert ja. Gruß, Björn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
T.C. Mitglied Konstrukteur
  
 Beiträge: 609 Registriert: 15.08.2006 Win7 64 bit SWX 2017 SP3 Quadro K2200 6 GB Ram Space Navigator LG 24" TFT Daheim: P4 3.2Ghz / WinXP-Pro SP3 3GB Ram / ATI FireGL V5100 25,6" TFT SpacePilot SWX 2012 SP2
|
erstellt am: 18. Okt. 2009 09:45 <-- editieren / zitieren --> Unities abgeben:          Nur für hhjung
Hallo, da ich von Markos nichts verstehe, würde ich diese benötigten Texte wohl wirklich als Blöcke abspeichern und in die Zeichnungen einfügen. Auf diese Art und Weise hast du immer nur den gewünschten Text parat. Habe mir meine immer wieder benötigten Hinweise zumindest so hinterlegt. War mir lieber als Excel immer offen oder permanent alles neu einzugeben. Vielleicht ja auch ein Möglichkeit für dich!? ------------------ Gruß Thorsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MWN Mitglied Dipl.-Ing.
 
 Beiträge: 492 Registriert: 14.02.2007
|
erstellt am: 19. Okt. 2009 07:35 <-- editieren / zitieren --> Unities abgeben:          Nur für hhjung
Guten Morgen Björn, ich hab mir mal im vb.net eine Zusatzanwendung geschrieben, die diverse Eintragungen in den Dateieigenschaften vornimmt und dies auch unter Umständen auf die Zeichnung schreibt. Soweit ich mich noch erinnere, stammt das Beispiel aus der API - Hilfe von SolidWorks, weiß es aber nicht mehr so genau. Du müsstes dir jetzt den Codeschnipsel nur noch auf VBA umschreiben!
Code: Dim swModel As SldWorks.ModelDoc2 Dim swDraw As SldWorks.DrawingDoc Dim swSheet As SldWorks.Sheet Dim Note As SldWorks.Note Dim Annotation As SldWorks.Annotation Dim Boolstatus As Boolean Dim Longstatus As Long Dim Textformat As SldWorks.TextFormat swModel = SolidWorksInstanzGet.ActiveDoc swDraw = swModel swDraw.ActivateSheet(Blattname) swSheet = swDraw.GetCurrentSheet Note = swModel.InsertNote(Text) Textformat = Note.GetTextFormat() With Textformat .Italic = False .Underline = False .Strikeout = False .Bold = False .Escapement = 0 .LineSpacing = 0.001 .CharHeightInPts = Texthöhe .TypeFaceName = "Arial" .WidthFactor = 1 .ObliqueAngle = 0 .LineLength = 0 .Vertical = False .BackWards = False .UpsideDown = False .CharSpacingFactor = 1 End With If Not Note Is Nothing Then Boolstatus = Note.SetBalloon(0, 0) Annotation = Note.GetAnnotation() If Not Annotation Is Nothing Then Longstatus = Annotation.SetLeader2(False, 0, True, False, False, False) Boolstatus = Annotation.SetTextFormat(Index, False, Textformat) Boolstatus = Annotation.SetPosition(PositionX, PositionY, 0) End If End If swModel.ClearSelection2(True)
Ich hoffe, es hilft dir weiter! Achso: Stichworte für die Suche in der API - Hilfe sind: Annotation, InsertNote GrüßeTobias ------------------ Besucht mich doch mal in meiner Tischlerei Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd Knab Mitglied
 
 Beiträge: 373 Registriert: 16.01.2001 SWX 2020 SP5.0
|
erstellt am: 19. Okt. 2009 08:36 <-- editieren / zitieren --> Unities abgeben:          Nur für hhjung
Hallo Björn, Daten aus der Zwischenablage holen geht auch direkt im Makro: http://www.online-excel.de/excel/singsel_vba.php?f=28 : ' ************************************************************** ' Modul: mdlCopy Typ = Allgemeines Modul ' ************************************************************** Option Explicit ' ************************************************************ ' Benötigt einen Verweis auf die Microsoft Forms 2.0 Objektlibrary ' Peter Haserodt 2004 ' ************************************************************ Public Sub TesteEs() SchreibeTextInDieZwischenablage MsgBox HoleTextVonZwischenablage RausMitZwischenAblage MsgBox HoleTextVonZwischenablage End Sub Public Sub SchreibeTextInDieZwischenablage() Dim oData As New DataObject Dim sText As String sText = "Hallo Leute" & vbCrLf & "Neues von Online Excel" With oData .SetText sText .PutInClipboard End With End Sub Public Function HoleTextVonZwischenablage() As String Dim oData As New DataObject On Error Resume Next ' Brutal um falsche Formate abzuwürgen, gibt dann einen Leerstring oData.GetFromClipboard HoleTextVonZwischenablage = oData.GetText End Function Public Sub RausMitZwischenAblage() Dim oData As New DataObject oData.SetText "" oData.PutInClipboard End Sub Gruß Bernd
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jörg W Mitglied Maschinenbautechniker und CAD Admin
   
 Beiträge: 1232 Registriert: 12.07.2001 Win 10 64bit SW2018 SP5 HP z240 16GB Ram Quadro P1000
|
erstellt am: 21. Okt. 2009 07:42 <-- editieren / zitieren --> Unities abgeben:          Nur für hhjung
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |