| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SolidEdge |
Autor
|
Thema: Gewindebohrung+vb (771 mal gelesen)
|
Jonas Sommerfeld Mitglied
Beiträge: 43 Registriert: 08.03.2005 Help... I need Somebodys help (Beatles)
|
erstellt am: 30. Mrz. 2005 12:03 <-- editieren / zitieren --> Unities abgeben:
Halllo Leute, ich bin dabei eine Gewindebohrung zu erzeugen, allerdings, wie sollte es allerdings sein, klappt es nicht. Set objRegHoleData = objDoc.HoleDataCollection.Add(HoleType:=igRegularHole, _ HoleDiameter:=Gewindegroesse / 1000, ThreadDepth:=(Gewindetiefe + Offset_Bohrung_links) / 1000, _ ThreadMinorDiameter:=ThreadMinor / 1000, ThreadDepthMethod:=igFinite, BottomAngle:=118, TreatmentType:=igTappedHole, ThreadDescription:=M6) Set objRegHole = objBase.Holes.AddFinite(Profile:=objRegHoleProfile, _ ProfilePlaneSide:=igLeft, _ FiniteDepth:=0.01, _ Data:=objRegHoleData)
Wo liegt denn da der Fehler? Ich weiß nicht, wo da der fehler liegt. Ich habe schon so gut wie alles probiert aber ohne viel Erfolg. Jonas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jürgen Niesner Mitglied
Beiträge: 505 Registriert: 26.11.2001
|
erstellt am: 30. Mrz. 2005 12:50 <-- editieren / zitieren --> Unities abgeben: Nur für Jonas Sommerfeld
Servus Jonas, HoleType:=igRegularHole müsste meiner Meinung nach irgendwas mit HoleType:=igThreadedHole oder so ähnlich sein, wenn es ein Loch mit Gewinde werden soll. Jürgen [Diese Nachricht wurde von Jürgen Niesner am 30. Mrz. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonas Sommerfeld Mitglied
Beiträge: 43 Registriert: 08.03.2005 Help... I need Somebodys help (Beatles)
|
erstellt am: 30. Mrz. 2005 13:01 <-- editieren / zitieren --> Unities abgeben:
|
modeng Ehrenmitglied V.I.P. h.c.
Beiträge: 7061 Registriert: 10.12.2003
|
erstellt am: 30. Mrz. 2005 13:15 <-- editieren / zitieren --> Unities abgeben: Nur für Jonas Sommerfeld
@Juergen nicht ganz -- hier ein brauchbarer Ansatz. Die Gewindebezeichnung wird bei solcherart erzeugten Bohrungen zum Teil mit einem '*' versehen, Grund ??? ' a suitable part is already present (height = 30 mm) Set objModel = objDoc.Models(1) ' creating the profile plane for the hole (top of part x-y plane) Set objRP = objDoc.RefPlanes.AddParallelByDistance(parentplane:=objDoc.RefPlanes(1), _ Distance:=30 / 1000, _ normalside:=igRight) Set objRegHoleProfile = objDoc.ProfileSets.Add.Profiles.Add(pRefPlaneDisp:=objRP) ' ' creating the Regular Hole using the Holedatacollection object ' only the mandantory arguments will be set Set objRegHoleData = objDoc.HoleDataCollection.Add(HoleType:=igRegularHole, _ HoleDiameter:=10 / 1000) ' ' now complete the hole data to make up the threaded hole proper objRegHoleData.VBottomDimType = igVBottomDimToV ' hole-depth includes V-Bottom ' (-> igVBottomDimToFlat excludes V-Bottom) objRegHoleData.BottomAngle = 118 objRegHoleData.HoleType = igRegularHole objRegHoleData.TreatmentType = igTappedHole ' ' now set the thread-data objRegHoleData.ThreadDescription = "testM10" objRegHoleData.ThreadDepth = 20 / 1000 objRegHoleData.ThreadExternalDiameter = 8.16 / 1000 ' bolt only: core diameter, (major) Groesstmass (4h) objRegHoleData.ThreadMinorDiameter = 8.376 / 1000 ' nut only: core diameter (minor) Kleinstmass (5H) objRegHoleData.ThreadNominalDiameter = 10 / 1000 ' Gewinde-Nenndurchmesser objRegHoleData.ThreadSetting = igRegularThread ' ' optional: save setting under this name. If the name has ' been used already your miles will vary On Error Resume Next objRegHoleData.Name = "Test" If Err.Number <> 0 Then Err.Clear ' .... ' .... End If ' ' add the hole's profile to the collection (still no hole yet) Call objRegHoleProfile.Holes2d.Add(xcenter:=0, ycenter:=0) ' <-- adjust as needed ' ' just to please the software: validate it because it won't work without If objRegHoleProfile.End(ValidationCriteria:=igProfileClosed) <> 0 Then MsgBox " profile for the hole is not closed" ' should never happen ' ' remove the profile On Error Resume Next objRegHoleProfile.Delete Else ' ' now we're ready ' creating the hole proper as threaded blind hole = Sacklochbohrung: 8,3x25 / M10 x 20 ' by using the hole profile and the hole data Set objRegHole = objModel.Holes.AddFinite(Profile:=objRegHoleProfile, _ ProfilePlaneSide:=igLeft, FiniteDepth:=25 / 1000, Data:=objRegHoleData) If (objRegHole.Status <> igFeatureOK) Then MsgBox "AddFinite method of the Holes object fails" ' ' remove the garbage On Error Resume Next objRegHole.Delete objRegHoleProfile.Delete Else ' ... ' ... objRegHoleProfile.Visible = False End If End If
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BJ Mitglied PLM System Administrator
Beiträge: 488 Registriert: 20.12.2002
|
erstellt am: 30. Mrz. 2005 13:21 <-- editieren / zitieren --> Unities abgeben: Nur für Jonas Sommerfeld
|
Jonas Sommerfeld Mitglied
Beiträge: 43 Registriert: 08.03.2005 Help... I need Somebodys help (Beatles)
|
erstellt am: 30. Mrz. 2005 13:28 <-- editieren / zitieren --> Unities abgeben:
Hey modeng, sag mal ist das für VB net?. Ich habe nur vba hier. Dort gibt es nicht den Wert ThreadNominaldiameter und ThreadSetting nicht. habe das nicht probiert, weil es mir komisch vorkam. jonas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
modeng Ehrenmitglied V.I.P. h.c.
Beiträge: 7061 Registriert: 10.12.2003
|
erstellt am: 30. Mrz. 2005 13:34 <-- editieren / zitieren --> Unities abgeben: Nur für Jonas Sommerfeld
@BJ [...] "*" bedeutet, dass das Gewinde so (Kerndurchmesser, etc) nicht in der Holes.txt zu finden ist. [...] wurde aus der Holes.txt uebernommen -- nur der Name ist neu wahrscheinlich deshalb der Stern, doch danke fuer den Hinweis @Jonas ist simples VB -- SolidEdge Part TLB muss referenziert werden modeng
[Diese Nachricht wurde von modeng am 30. Mrz. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonas Sommerfeld Mitglied
Beiträge: 43 Registriert: 08.03.2005 Help... I need Somebodys help (Beatles)
|
erstellt am: 30. Mrz. 2005 13:48 <-- editieren / zitieren --> Unities abgeben:
|
modeng Ehrenmitglied V.I.P. h.c.
Beiträge: 7061 Registriert: 10.12.2003
|
erstellt am: 30. Mrz. 2005 14:08 <-- editieren / zitieren --> Unities abgeben: Nur für Jonas Sommerfeld
WAS passt denn nicht, WO gibt's einen Fehler' WELCHE Meldung erscheint Das beispiel setzt einen Koerper mit der Hoehe 30 mm voraus, welcher auf der x-y Ebene im Zentrum liegt LxB vielleicht 20x20. Die Objektdefinitionen fehlen noch hier sind sie: Dim objApp As SolidEdgeFramework.Application Dim objDoc As SolidEdgePart.PartDocument Dim objModel As SolidEdgePart.Model Dim objRegHoleData As SolidEdgePart.HoleData Dim objRP As SolidEdgePart.RefPlane Dim objRegHoleProfile As SolidEdgePart.Profile Dim objRegHole As SolidEdgePart.Hole modeng Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonas Sommerfeld Mitglied
Beiträge: 43 Registriert: 08.03.2005 Help... I need Somebodys help (Beatles)
|
erstellt am: 30. Mrz. 2005 14:12 <-- editieren / zitieren --> Unities abgeben:
O.k. es kommt keine fehlermeldung aber die bohrung, die erzeugt wird, die hat die standardlänge 50,8mm und das soll die eben nicht haben.Ich habe das ja auch schon soweit hinbekommen aber ich habe immer noch den fehler gehabt,dass ich auch nur eine Bohrung mit der Standardlänge herausbekommen. Ich habe ihm zwar auch eine FiniteDepth angegeben aber die nimmt ernicht und das ist mein Problem. Jonas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
modeng Ehrenmitglied V.I.P. h.c.
Beiträge: 7061 Registriert: 10.12.2003
|
erstellt am: 30. Mrz. 2005 14:19 <-- editieren / zitieren --> Unities abgeben: Nur für Jonas Sommerfeld
dann ist sicher etwas vergessen worden oder es ist ein Fehler aufgetreten, der vermutlich durch 'On Error Resume Next' uebergangen wird Mein Beispiel ist in diser hinsicht auch nicht 'sauber' ... modeng Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonas Sommerfeld Mitglied
Beiträge: 43 Registriert: 08.03.2005 Help... I need Somebodys help (Beatles)
|
erstellt am: 30. Mrz. 2005 14:30 <-- editieren / zitieren --> Unities abgeben:
Jo o.k. mhh und das ist mein Problem, weißte es bringt mir nichts mit einem anderen Befehl zu rechnen bspw. through next oder etwas anderes zu nehmen. Wenn man bei TreatmentType=igNone schreibt dann klappt das mit der Tiefe aber dann habe ich halt nur ne normale Bohrung. Das wollte ich halt nicht, sondern es sollte schon ne gewindebohrung sein. ich habe es in einem Bsp. gemacht,dass ich AddfromTo genommen habe aber da ist die Bohrspitze nicht da. Also habe ich mir gedacht, machste die manuell rein. Bei dem geht es aber darum,dass ich ne Passfedernut habe und dort die Bohrungen für 2 Passfedertypen einfügen muss. Wenn ich die jetzt auch manuell rein mache,dann habe ich noch mehr byte und das wollte ich diesmal nicht. jonas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
progi Mitglied Programmierer
Beiträge: 74 Registriert: 18.08.2004 VB.net SE 16
|
erstellt am: 04. Apr. 2005 13:26 <-- editieren / zitieren --> Unities abgeben: Nur für Jonas Sommerfeld
Hi, mein Kollege ist darauf gekommen, ich war mal wieder blind! hier eine Lösung: oHoleDataType20 = Document.HoleDataCollection.Add( _ SolidEdge.Part.Interop.FeaturePropertyConstants.igRegularHole, _ fDiameter, , , , , BottomAngle, _ , , , , SolidEdge.Part.Interop.FeaturePropertyConstants.igFinite) oHoleDataType20.TreatmentType = SolidEdge.Part.Interop.FeaturePropertyConstants.igTappedHole oHoleDataType20.ThreadSetting = SolidEdge.Part.Interop.FeaturePropertyConstants.igRegularThread oHoleDataType20.ThreadDepth = ThreadDepth oHoleDataType20.ThreadDataByDescription = ThreadDescription Entscheident scheint hier die Funktion "ThreadDataByDescription" zu sein. Also bei mir zeigt SE die Bohrung dann auch ohne "*" an. Gruß Andreas ------------------ Besten Dank Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |