Autor
|
Thema: Typ bei Gewindedefinition lesen und setzen (3512 mal gelesen)
|
Tiberius Mitglied
Beiträge: 414 Registriert: 19.02.2002
|
erstellt am: 11. Aug. 2011 11:28 <-- editieren / zitieren --> Unities abgeben:
Hallo, angenommen es wurde eine Bohrung mit "kein Standard" oder "Standardgewinde" als Typ bei der Gewindedefinition angelegt, wie lese ich diesen Parameter aus? An den Durchmesser und die Steigung komme ich Problemlos ran, da gibts genügend Beispiele, jedoch zum Auslesen oder sogar setzen des Typs habe ich nichts gefunden. Gruß Tiberius Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 11. Aug. 2011 12:25 <-- editieren / zitieren --> Unities abgeben: Nur für Tiberius
|
Tiberius Mitglied
Beiträge: 414 Registriert: 19.02.2002
|
erstellt am: 11. Aug. 2011 12:33 <-- editieren / zitieren --> Unities abgeben:
Hallo, das hatte ich schon gesehen, nur hat es einen Fehler ausgeworfen. .SelHole.Diameter.Value und .SelHole.ThreadPitch.Value geben einen Wert aus. .SelHole.ThreadDescription.Value bringt einen Fehler. Gruß Tiberius Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
meisterlumpi Mitglied
Beiträge: 118 Registriert: 15.04.2011 Intel Core2 Quad Q6600 2.40 GHz | 4 GB RAM | Win7x64
|
erstellt am: 11. Aug. 2011 12:43 <-- editieren / zitieren --> Unities abgeben: Nur für Tiberius
setzen geht mit Code:
' Standardgewinde hole1.ThreadingMode = catSmoothHoleThreading hole1.ThreadSide = catRightThreadSide hole1.ThreadingMode = catThreadedHoleThreading hole1.CreateStandardThreadDesignTable catHoleMetricThickPitch' Kein Standard hole1.ThreadingMode = catSmoothHoleThreading hole1.ThreadSide = catRightThreadSide hole1.ThreadingMode = catThreadedHoleThreading ' Feingewinde hole1.ThreadingMode = catSmoothHoleThreading hole1.ThreadSide = catRightThreadSide hole1.ThreadingMode = catThreadedHoleThreading hole1.CreateStandardThreadDesignTable catHoleMetricThinPitch
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tiberius Mitglied
Beiträge: 414 Registriert: 19.02.2002
|
erstellt am: 11. Aug. 2011 13:17 <-- editieren / zitieren --> Unities abgeben:
Und wie rufe ich den Inhalt der Parameter ab von: Code: hole1.ThreadingMode hole1.ThreadSide hole1.ThreadingMode
Und wie hole ich mir den hier gesetzten Wert?: Code: hole1.CreateStandardThreadDesignTable catHoleMetricThickPitch
Gruß Tiberius Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
meisterlumpi Mitglied
Beiträge: 118 Registriert: 15.04.2011 Intel Core2 Quad Q6600 2.40 GHz | 4 GB RAM | Win7x64
|
erstellt am: 11. Aug. 2011 13:40 <-- editieren / zitieren --> Unities abgeben: Nur für Tiberius
den wert von Code:
hole1.ThreadingMode hole1.ThreadSide
kannst du wie gewohnt abrufen Code:
TM = hole1.ThreadingMode
ThreadSide ist 0 oder 1 glaub ich, also links oder rechts. welche werte die parameter genau haben können steht in der Hilfe (F1). wie man den wert von StandardThreadDesignTable ausließt weiß ich nicht. Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tiberius Mitglied
Beiträge: 414 Registriert: 19.02.2002
|
erstellt am: 11. Aug. 2011 13:51 <-- editieren / zitieren --> Unities abgeben:
Danke, das hat geholfen. Ich hatte die Werte (0) schon herausbekommen nur ich hab dem "Frieden" nicht getraut. Code: hole1.ThreadSide = 0 '0 = Rechtsgewinde, 1 = Linksgewinde hole1.ThreadingMode = 0 '0 = Gewinde vorhanden, 1 = kein Gewinde vorhanden
Vielleicht hat sonst noch wer eine Idee bezüglich der StandardThreadDesignTable.[Diese Nachricht wurde von Tiberius am 11. Aug. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
meisterlumpi Mitglied
Beiträge: 118 Registriert: 15.04.2011 Intel Core2 Quad Q6600 2.40 GHz | 4 GB RAM | Win7x64
|
erstellt am: 11. Aug. 2011 14:35 <-- editieren / zitieren --> Unities abgeben: Nur für Tiberius
siehe Hole (Object)Property ThreadingMode() As CatHoleThreadingMode Values für CatHoleThreadingMode catThreadedHoleThreading - The hole is threaded -> = 0 catSmoothHoleThreading - The hole is smooth threaded -> = 1 Property ThreadSide() As CatHoleThreadSide Values für CatHoleThreadSide: catRightThreadSide - The hole is right-threaded -> = 0 catLeftThreadSide - The hole is left-threaded -> = 1 anstatt Code: hole1.ThreadSide = 0
könntest du auch Code: hole1.ThreadSide = catRightThreadSide
schreiben. im prinzip das selbe nur man kann sich mehr drunter vorstellen als bei 0.auf der seite stehen auch alle methoden für das objekt hole. und es sieht schlecht aus für das auslesen des ThreadDesignTable. dachte es geht vielleicht über HoleThreadDescription aber mittlerweile denke ich mit vba geht es gar nicht. könnte die funktion auch gebrauchen, daher lasse ich mich gern eines besseren belehren. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pietzonka Mitglied Maschinening.
Beiträge: 114 Registriert: 14.03.2006
|
erstellt am: 24. Jun. 2015 10:42 <-- editieren / zitieren --> Unities abgeben: Nur für Tiberius
Hallo meisterlumpi und weitere Gewinde-Kundige! Meine Aufgabe besteht im Austauschen von allen G1/8" gegen M10x1. Dazu habe ich mir ein Makro gebastelt, das mit beigefügter Fehlermeldung stoppt. Hier der Code: Language="VBSCRIPT" Dim I As Integer Dim J As Integer Dim partDocument1 As Document Dim part1 As Part Dim bodies1 As Bodies Dim Bodies1Menge As Integer Dim shapes1 As Shapes Dim hole1 As Shape Dim Shapes1Menge As Integer Dim BodyAktuell As Body Dim strParam1 As StrParam Sub CATMain()
Set partDocument1 = CATIA.ActiveDocument Set part1 = partDocument1.Part Set bodies1 = part1.Bodies Bodies1Menge = bodies1.Count MsgBox("Die Bodies1Menge = " & Bodies1Menge ) For I = 1 To Bodies1Menge Step 1 Abfrage Next part1.Update End Sub Sub Abfrage() Set BodyAktuell = bodies1.Item(I) Set shapes1 = BodyAktuell.Shapes Shapes1Menge = shapes1.Count MsgBox("Die Shapes1Menge für Körper " & I & " = " & Shapes1Menge ) For J = 1 To Shapes1Menge Step 1 Gewindeabfrage () Next End Sub Sub Gewindeabfrage () 'On Error Resume Next Set hole1 = shapes1.Item(J) If hole1.ThreadingMode = catThreadedHoleThreading Then If hole1.HoleThreadDescription = "G1/8" Then hole1.ThreadingMode = catThreadedHoleThreading hole1.ThreadSide = catRightThreadSide hole1.CreateUserStandardDesignTable "Feingewinde_neu" , "D:\Program Files\Dassault Systemes\B20\win_b64\reffiles\standard\Feingewinde_neu.txt" Set strParam1 = hole1.HoleThreadDescription strParam1.Value = "M10x1" MsgBox("M10x1 gewesen!") End if End If End Sub
Vielleicht seht Ihr eher als ich die Fehlerursache? MfG Stephan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 24. Jun. 2015 11:16 <-- editieren / zitieren --> Unities abgeben: Nur für Tiberius
Servus Du prüfst bei jedem Shape (also auch Block, Tasche, usw) die Eigenschaften die nur eine Bohrung hat. Ich würde einfach über die Suche alle Bohrungen selektieren und dann diese abarbeiten, anstatt die Schleifen über Körper7Shapes. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pietzonka Mitglied Maschinening.
Beiträge: 114 Registriert: 14.03.2006
|
erstellt am: 24. Jun. 2015 14:39 <-- editieren / zitieren --> Unities abgeben: Nur für Tiberius
@ Berd: Danke für Deine Hilfe! Deinem Hinweis folgend, habe ich es mit der Suche probiert. Was mit hole... funktionerte, geht jetzt nicht mehr. Offenbar kann Catia mit meiner Selelction nichts anfangen. Welchen Fehler habe ich gemacht? Language="VBSCRIPT"
Dim partDocument1 As Document Dim part1 As Part Dim strParam1 As StrParam Dim selection1 As Selection Dim BohrungAktuell As Hole Dim I As Integer Sub CATMain() Set partDocument1 = CATIA.ActiveDocument Set part1 = partDocument1.Part Set selection1 = partDocument1.Selection selection1.Search "(CATPrtSearch.Hole.Threaded=TRUE & CATPrtSearch.Hole.DiameterThread=9.728mm),all" BohrungenMenge = selection1.Count MsgBox("Die BohrungenMenge = " & BohrungenMenge ) For I = 1 To BohrungenMenge Step 1 Abfrage Next part1.Update selection1.Clear End Sub Sub Abfrage() Set BohrungAktuell = selection1.Item(I) MsgBox("Auswahl-Nr= " & I & " Name: " & BohrungAktuell.Name) GewindeNeu () End Sub
Sub GewindeNeu () 'On Error Resume Next BohrungAktuell.CreateUserStandardDesignTable "Feingewinde_neu" , "D:\Program Files\Dassault Systemes\B20\win_b64\reffiles\standard\Feingewinde_neu.txt" Set strParam1 = BohrungAktuell.HoleThreadDescription strParam1.Value = "M10x1" MsgBox(" o.k. gewesen!") End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 24. Jun. 2015 14:45 <-- editieren / zitieren --> Unities abgeben: Nur für Tiberius
Servus Versuch es mal so: Code: Set BohrungAktuell = selection1.Item(I).Value
Das Übergeben der Objekt über globale Objekte finde ich sehr unübersichtlich. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pietzonka Mitglied Maschinening.
Beiträge: 114 Registriert: 14.03.2006
|
erstellt am: 25. Jun. 2015 08:25 <-- editieren / zitieren --> Unities abgeben: Nur für Tiberius
|