| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | |  | SIMULIA Regional User Meeting 2025 | 5.-7. Mai in Bamberg, eine Veranstaltung am 05.05.2025
|
Autor
|
Thema: Zugriff auf Bohrungstabelle - VBA (1957 mal gelesen)
|
Abele Mitglied

 Beiträge: 71 Registriert: 09.06.2004 SWX2007 / SP1
|
erstellt am: 27. Jun. 2007 11:38 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen, ich würde gerne mittels vba auf den Inhalt einer Bohrungstabelle(Koordinatentabelle) zugreifen und diesen verändern. Geht das, wenn ja, hätte mir vielleicht jemand einen Beispielcode hierfür. Viele Grüße Ralph Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 27. Jun. 2007 12:06 <-- editieren / zitieren --> Unities abgeben:          Nur für Abele
Hallo Ralph, schau mal auf meiner MakroMania Seite, da hab ich ein Makro (die Nummer 33), dass eine SolidWorks Tabelle angeht und die Zeilenhöhe auf den kleinstmöglichen Betrag bringt. Kannst du schon mal als Beispiel nehmen, wie du an eine Tabelle und die Zeilen kommst. Wenn du an die Bohrtabelle ran willst um da etwas drin zu ändern geht das nur mit den frei editiertbaren Felder, also nicht mit den Bohrungsnummern, Koordinaten oder Bohrungsabmessung, die werden ja vom System ausgelesen und sind schreibgeschützt. Ich hab hier für unsere Leute in Excel einen Editor geschrieben, mit dem Sie schnell und einfach große Bohrtabellen z.B. um die Toleranzen oder Bemerkungen tec. ergänzen können. Letztlich lese ich damit einfach die gesamte Tabelle aus, dann kann in Excel munter mit den ganzen Komfortfunktionen gearbeitet werden und schreib anschließend alles wieder zurück. Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Member of CAD.de BOINC Team - | Seti@Home | CPDN | Einstein@Home Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Abele Mitglied

 Beiträge: 71 Registriert: 09.06.2004 SWX2007 / SP1
|
erstellt am: 27. Jun. 2007 12:28 <-- editieren / zitieren --> Unities abgeben:         
Das klingt ja schon mal recht interessant. Ich schau mir das mal an. Ich möchte eigentlich an die Zelle, die die Bohrtiefe und den Durchmesser angibt um dort etwas umzuformatieren, damit in dieser Zelle dann eben der Bohr-Ø / Bohrtiefe und das Wort tief erscheint anstatt der Symbole die SolidWorks dafür einsetzt. Danke mal vorab (Das Tool mit der Editierbaren Excel-Tabelle ist wohl nicht als Beispielcode zu haben oder?) [Diese Nachricht wurde von Abele am 27. Jun. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 27. Jun. 2007 13:37 <-- editieren / zitieren --> Unities abgeben:          Nur für Abele
Hallo Ralph, da wird ein recht schwieriges Unterfangen und wesentlich komplexer, als es aussieht. Die Bohrungsbeschreibung, die SolidWorks in die (so weit ich weiß sowieso schreibgeschützten) Zellen setzt, stehen nicht einfach so als Text in der Zelle sondern werden aus dem Feature im Modell geholt und müssten also dort umformatiert werden. Wenn das generell anders dargestellt werden soll wäre es sicherlich einfacher die Bohrungsbeschreibungsdatei der SolidWorksinstallation anzupassen; hab ich zwar noch nie selbst gemacht, aber theoretisch müsste es gehen, wenn du die Datei [sw-inst]\lang\german\calloutformat.txt (oder entsprechende Sprache) änderst. Vielleicht kann dir jemand anderes was dazu sagen, der da schon mal was mit rumgespielt hat  Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Member of CAD.de BOINC Team - | Seti@Home | CPDN | Einstein@Home Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas5 Mitglied Konstrukteur, SWX-Admin
 
 Beiträge: 420 Registriert: 14.07.2003 SWX2013
|
erstellt am: 27. Jun. 2007 16:32 <-- editieren / zitieren --> Unities abgeben:          Nur für Abele
Hallo Stefan, klickt man auf des Feld für die Bohrungsabmessungen, dann geht links im Eigenschaftsmanager der für die Bemaßung auf, und man kann die Bemaßung editieren. ist halt nur recht mühsam. Das herumbiegen der Bohrungsbeschreibungen klappt schon. Nur SWX  verwendet da auch Texte (Z.B. das ellenlange Wort "Durchbohren"), die nicht in der Calloutformat.txt oder der Trans.xml stehen. Da wäre schon eine maschinelle Editiermöglichkeit der Tabelle angebracht. Viele Grüße! Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
grisu486 Mitglied Senior Technical Consultant MCAD
  
 Beiträge: 575 Registriert: 14.11.2005
|
erstellt am: 27. Jun. 2007 19:29 <-- editieren / zitieren --> Unities abgeben:          Nur für Abele
Also wir haben für unsere Logopress-Bohrpläne auf der Basis des "Makro33" etwas geschrieben, das die Bohrungsbeschreibungen ausliest, die ausgelesenen Texte mit gewissen Ersetzungen behandelt und in eine weitere Spalte zurückschreibt. Die Texte der ursprüngliche Bohrungsbeschreibungsspalte werde sehr klein formatiert, so das sie fast nicht mehr zu sehen sind. Diese Spalte wird dann auch noch auf ein Minimum verschmälert. Eine entsprechend angepasste Vorlagendatei ist dabei natürlich Voraussetzung. *uwe* Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Abele Mitglied

 Beiträge: 71 Registriert: 09.06.2004 SWX2007 / SP1
|
erstellt am: 28. Jun. 2007 08:12 <-- editieren / zitieren --> Unities abgeben:         
Mir würde schon ein kleines Beispielmakro helfen, welches in einer Tabelle einen Eintrag ändert. Ich habe schon einige Makros für AutoCAD geschrieben, aber bei SolidWorks komm ich einfach nicht zurecht, da keine VBA-Hilfe vorhanden. Hätte mir vielleicht jemand ein solches Beispielmakro und gibts vielleicht irgendwo ein Tutorial? Ich weiß nicht wo ich die passenden Befehle herbekommen soll. Danke für Eure Antworten Gruß Ralph Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 28. Jun. 2007 08:28 <-- editieren / zitieren --> Unities abgeben:          Nur für Abele
Hallo Ralph, hier noch mal als offener Beitrag einen Auszug aus der PM, die ich auf ähnliche Frage gestern an dich geschickt hab; wenn du eingeloggt bist müsstest du eigentlich so eine Icon mit "Neuer Nachricht" drauf sehen können (siehe auf der Hilfeseite zu PM ). Aber so können das ggf. auch andere noch lesen und haben was davon  Programmierung mit VBA für SolidWorks ist verhältnismäßig einfach, wenn du dich mit VB/VBA auskennst. Die Dokumentation von SolidWorks ist auch sehr gut, allerdings komplett in Englisch. Direkt von SolidWorks aus kommst du zur API Hilfe, in der alle Objekte, Methoden und Eigenschaften aufgelistet sind, mit vielen Beispielmakros. Du kannst die über das Hilfemenu von SolidWorks aufrufen. Auf der Webseite http://www.solidworks.com/pages/services/APISupport.html findest du dann jede Menge ergänzende Infos, Beispielprojekte, FAQs usw. Als Startpunkt für deutsche Infos schaust du am besten bei mir auf der Seite vorbei, von http://solidworks.cad.de/apitut.htm aus gehen weitere Links und auch ein Tutorial download weiter. Dann schaust du dir am Besten frei verfügbare Makros/Programme wie z.B. in der MakroMania http://solidworks.cad.de/mm_index.htm und der Makrotauschbörse auf http://solidworks.cad.de/mm_boerse.htm Das Excelmakro kann ich dir leider nicht geben, da ich es speziell hier für die Firma, wo ich arbeite, gemacht habe, aber ich schau mal, ob ich eine abgespeckte/umgeschriebene Version in die MakroMania packen kann. Das mit dem Umschreiben geht aber leider nicht in ein paar Stunden, aber ich hab dir als Ausgangspunkt mal eine Routine angehangen, die z.B. das schreiben der Zellen demonstriert; ist so natürlich nicht zu gebrauchen, da die ganzen Deklarationen und der Bezug fehlt, aber ich denke, damit solltest du schon zurecht kommen:
Code: If SelectionMgr.GetSelectedObjectCount >= 1 Then ' wenn es eine Tabelle ist If SelectionMgr.GetSelectedObjectType(1) = swSelANNOTATIONTABLES Then ' dann die Tabelle holen, das ist die komplette Tabelle, auch wenn ' diese gesplittet wurde, was die Sache natürlich deutlich vereinfacht Set Kotab = SelectionMgr.GetSelectedObject5(1) cols = Kotab.ColumnCount rows = Kotab.RowCount headercount = Kotab.GetHeaderCount ' Die Header werden nicht zurückgeschrieben For row = headercount To rows - 1 ' alle Zeilen For col = 0 To cols - 1 ' alle Spalten 'If Kotab.IsCellTextEditable(row, col) Then Kotab.Text(row, col) = Range(TabelleLO).Offset(row, col).Value 'End If Next col ' set row height to 1 mm, so smallest value is automatically used Range(TabelleLO).Offset(row, col).Value = Kotab.SetRowHeight(row, myRowHeight, swTableRowColChange_TableSizeCanChange) Next row ' do a rebuild to show the changes DrawingDoc.EditRebuild Else MsgBox "Bitte Bohrungstabelle (einzelne Zelle) selektieren", vbOKOnly + vbExclamation, "Information" End If Else MsgBox "Bitte Bohrungstabelle selektieren", vbOKOnly + vbExclamation, "Information" End If
Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de
Member of CAD.de BOINC Team - | Seti@Home | CPDN | Einstein@Home Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |