Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Bohrungstabelle - als txt speichern unter - Makro?

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
  
Technische Kommunikation mit der 3DEXPERIENCE Plattform
Autor Thema:  Bohrungstabelle - als txt speichern unter - Makro? (827 mal gelesen)
grisu486
Mitglied
Senior Technical Consultant MCAD


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

Beiträge: 575
Registriert: 14.11.2005

erstellt am: 17. Jan. 2006 18:11    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!

Wir haben hier ein "Problem" mit Bohrungstabellen. Unsere Programmierer brauchen einen Textfile, den man "einfach" erstellen kann, indem man die Tabelle markiert, "Datei, speichern unter" anklickt, den Dateipfad wählt, den Dateityp (*.txt) auswählt und dann den Dateinamen eingibt. Soweit so gut. Aber das muss man doch per Makro mit einen Klick machen können. Solidworks hat doch alle Informationen, um das Textfile korrekt abspeichern zu können.

Ich habe im Forum gesucht und http://ww3.cad.de/foren/ubb/Forum2/HTML/008871.shtml#000000  gefunden. Das Makro ist schon ziemlich gut, eine Größenanpassung der Zeilen ist schon mal nicht schlecht. Zur Lösung meines Problem fehlt mir jetzt eine Funktion, die die selektierte Tabelle als Text unter einem gewissen Namen abspeichert.
In der Hilfe habe ich "TableAnnotation.SaveAsText" gefunden, komme damit aber nicht zurecht ...

... irgendwann sollte ich vielleicht mal einen API-Kurs mitmachen ...   

Viele Grüße

*uwe*

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

Brummbaer
Mitglied
Student / Maschinenbau


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

Beiträge: 28
Registriert: 25.11.2004

erstellt am: 18. Jan. 2006 07:37    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 grisu486 10 Unities + Antwort hilfreich

Hallo,

ich habe diesen Befehl zwar noch nicht benutzt, aber der Befehl enthält doch nur zwei Parameter; den Dateinamen (mit Pfad) und das gewünschte Trennzeichen. Beim Dateinamen ist zu beachten, dass die Trennung durch "\\" erfolgt; z.B "D:\\Verzeichnis\\Name.Txt"

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

grisu486
Mitglied
Senior Technical Consultant MCAD


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

Beiträge: 575
Registriert: 14.11.2005

StartupTools 9.0.1.0
GENIUS TOOLS for Creo
Creo 9.0
Creo 8.0
Creo 7.0
GENIUS TOOLS ModelProzessor
GENIUS TOOLS ModelProzessorUser
(jeweils die aktuellste Versionen und bei Bedarf auch ältere - aber nicht gerne)
HP Z-Book G9
Quadro RTX A3000 12 GB
Windows 11

erstellt am: 18. Jan. 2006 09:32    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

Ja ... hmmmm ...

Ich sagte ja, ich komme damit nicht zurecht     

So einfach geht es jedenfalls NICHT, es tritt ein Laufzeitfehler "424" auf, mit dem Hinweis, es sei ein Objekt erforderlich ...

========================================
    If SelectionMgr.GetSelectedObjectCount >= 1 Then
       
        ' wenn es eine der neuen (seit 2004) Tabellen ist
        If SelectionMgr.GetSelectedObjectType(1) = swSelANNOTATIONTABLES Then
            ' dann die Tabelle holen, das ist dei komplette Tabelle, auch wenn
            ' diese gesplittet wurde, was die Sache natürlich deutlich vereinfacht
            Set Kotab = SelectionMgr.GetSelectedObject5(1)
           
              TableAnnotation.SaveAsText = ("c:\\test.txt")           
            ' Und ein rebuild, damit man es auch sieht
            ' do a rebuild to show the changes
            DrawingDoc.EditRebuild
        Else
            MsgBox "Bitte Bohrungstabelle (selektieren", vbOKOnly + vbExclamation, "Information"
        End If
       
    Else
        MsgBox "Bitte Bohrungstabelle selektieren", vbOKOnly + vbExclamation, "Information"
    End If
========================================

Ich gebe es ja zu, ich ziemlich schlecht in VB ...     

Viele Grüße

*uwe*

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

nahe
Ehrenmitglied



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

Beiträge: 1747
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 18. Jan. 2006 16:40    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 grisu486 10 Unities + Antwort hilfreich

Hallo Uwe

also ich glaube der Fehler liegt im Aufruf von "saveastext"
Sollte meiner Meinung nach über "Kotab.saveasText..." erfolgen
anbei ein paar Zeilen die bei mir funktionieren mit dem Vorteil,
dass selbstständig nach einer Bohrungstabelle gesucht wird

Sub main()
  Dim swApp  As SldWorks.SldWorks
  Dim tab1 As SldWorks.TableAnnotation
  Dim selmgr As SldWorks.SelectionMgr
  Dim modell As SldWorks.ModelDoc2
  Dim swView As SldWorks.View
  Dim swtable As SldWorks.TableAnnotation
  Dim col As New Collection
 
 
  Set swApp = Application.SldWorks
  '** Es erfolgt keine Prüfung ob eine Zeichnungsdatei geöffnet ist
  Set modell = swApp.ActiveDoc
  Set selmgr = modell.SelectionManager
 
  '** Wenn nichts selektiert ist suchen wir selbst nach einer Bohrungstabelle
  If selmgr.GetSelectedObjectCount = 0 Then
    Set swView = modell.GetFirstView
    Do While Not swView Is Nothing
      Set tab1 = swView.GetFirstTableAnnotation
      Do While Not tab1 Is Nothing
        If tab1.Type = swTableAnnotation_HoleChart Then
          col.Add tab1
        End If
        Set tab1 = tab1.GetNext
      Loop
      Set swView = swView.GetNextView
    Loop
    '** Es wurde eine Bohrungstabelle gefunden
    If col.Count = 1 Then
      Set tab1 = col.Item(1)
    Else
    '** Es wurden mehrere Bohrungstabellen gefunden
      MsgBox "Es sind mehrere Bohrungstabellen vorhanden" + Chr(10) + "Bitte wählen Sie eine aus und starten Sie das Makro neu", vbOKOnly, "Meldung"
      Exit Sub
    End If
  Else
    '** Es wurde etwas selektiert
    If selmgr.GetSelectedObjectType3(1, 0) = swSelANNOTATIONTABLES Then
      Set tab1 = selmgr.GetSelectedObject5(1)
    Else
      '** Die selektierte Tabelle ist keine Bohrungstabelle
      MsgBox "Sie haben keine Bohrungstabellen gewählt" + Chr(10) + "Bitte wählen Sie eine aus und starten Sie das Makro neu", vbOKOnly, "Meldung"
      Exit Sub
    End If
  End If
   
  tab1.SaveAsText "C:\TAB04.TXT", ""
 
  Set swView = Nothing
  Set tab1 = Nothing
  Set selmgr = Nothing
  Set modell = Nothing
  Set swApp = Nothing
 
End Sub

------------------
Grüße
Heinz

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

grisu486
Mitglied
Senior Technical Consultant MCAD


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

Beiträge: 575
Registriert: 14.11.2005

erstellt am: 18. Jan. 2006 16:52    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 klappt ja wunderbar!
Superklasse!
Vielen herzlichen Dank!


Wie lernt man eigentlich, "vernünftig" Makros zu schreiben?
Kurse? Bücher? ???

      ich will das doch auch können ...     

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

nahe
Ehrenmitglied



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

Beiträge: 1747
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 18. Jan. 2006 16:52    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 grisu486 10 Unities + Antwort hilfreich

NACHTRAG

ich würde den Abschnitt "Es wurde etwas selektiert" noch verbessern
um sicher zu gehen, dass wirklich eine Bohrungstabelle gewählt wurde
und nicht einen andere Tabelle

    '** Es wurde etwas selektiert
    If selmgr.GetSelectedObjectType3(1, 0) = swSelANNOTATIONTABLES Then
      Set tab1 = selmgr.GetSelectedObject5(1)
      If tab1.Type <> swTableAnnotation_HoleChart Then
        '** Die selektierte Tabelle ist keine Bohrungstabelle
        MsgBox "Sie haben keine Bohrungstabellen gewählt" + Chr(10) + "Bitte wählen Sie eine aus und starten Sie das Makro neu", vbOKOnly, "Meldung"
        Exit Sub
      End If
    Else
      '** Das selektierte Objekt ist keine Bohrungstabelle
      MsgBox "Sie haben keine Bohrungstabellen gewählt" + Chr(10) + "Bitte wählen Sie eine aus und starten Sie das Makro neu", vbOKOnly, "Meldung"
      Exit Sub
    End If

------------------
Grüße
Heinz

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

nahe
Ehrenmitglied



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

Beiträge: 1747
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 18. Jan. 2006 17: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 grisu486 10 Unities + Antwort hilfreich

Wo man das lernt:

1. (und meiner Meinung nach am wichtigsten)
"Learning by doing" über viele Jahre
Nie aufgeben!

2. Die Onlinehilfe und die Beispiele durchforsten und Teile daraus
verwenden und abändern

3. Kurse (bedingt)
da bei Kursen die Funktionen auch nur sehr allgemein erklärt werden.
Was auch verständlich ist bei der Anzahl von Funktionen.
Es muss sich dann jeder selbst mit seinen Problemen beschäftigen

------------------
Grüße
Heinz

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

grisu486
Mitglied
Senior Technical Consultant MCAD


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

Beiträge: 575
Registriert: 14.11.2005

erstellt am: 18. Jan. 2006 17:38    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

Naja ...
1. Learning by doing is ja scho klar, es wird schon etwas besser ...
und aufgeben werde ich sowieso nicht!

2. Ich durchforste und schlachte aus und verwende und und und ...
Das klappt schon ganz gut!

3. Es müsste jemanden geben, der einem beim programmieren über die Schulter schaut und im Zweifelsfalle hilft ...

Auf jeden Fall nochmals vielen Dank für das Makro!
Es erleichtert uns wieder mal ein kleines bisschen die alltägliche Arbeit!
   
Viele Grüße

*uwe*

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

Brummbaer
Mitglied
Student / Maschinenbau


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

Beiträge: 28
Registriert: 25.11.2004

erstellt am: 19. Jan. 2006 11:42    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 grisu486 10 Unities + Antwort hilfreich

Hallo,

ich finde man sollte sich erstmal ein wenig mit den Grundlagen des Programmierens beschäftigen, bevor man Makros programmiert. Denn ohne diese Grundlagen versteht man ja nicht wie die Beispiele funktionieren.

Das mit der API- bzw. Makroprogrammierung ergibt sich dann von ganz allein, man hat ein Problem.... sucht sich aus der API-Hilfe die benötigten Befehle bzw. Objekte raus und löst das Problem oder auch nicht.


mfg Brummbaer

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