| 
|  |  |  |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |  |  |  |  |  | PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung 
 |  
| Autor | Thema:  Punkt auf gedrehter Arbeitsebene erzeugen (1554 mal gelesen) |  | st.w Mitglied
 
 
  
 
      Beiträge: 59Registriert: 08.11.2011
 |    erstellt am: 13. Mai. 2014 09:32  <-- editieren / zitieren -->    Unities abgeben:            
  Hallo, hallo, und wieder denke ich, dass müßte doch auch geschickt automatisiert gehen: Wir haben beim Konstruieren immer wieder, dass wir in Drehteile mit Außendurchmesser DA radial Ansenkungen und Bohrungen vornehmen.  Wir machen das wie folgt: 1) 'Arbeitsebene1' auf 'XY-Ebene' erzeugen,um 'X-Achse' um Winkeleingabe drehen.
 2) Neue 'Arbeitsebene2' auf 'Arbeitsebene1', versetzen um Eingabe DA/2.
 3) Auf diese 'Arbeitsebene2' eine 'Skizze' erstellen miteinem Punkt (zum späteren Bohren), der 'horizontal' zum Mittelpunkt und mit Bemaßung (Bohrmaß) von Mittelpunkt ist.
 4) 'Arbeitsebene1' unsichtbar setzen. 5) Ansenkung auf Skizze setzen 6) 'Skizze wieder verwenden' für nachfolgendes Gewinde. Meine Frage an Euch: Wie kann ich diese Reihenfolge in vba abarbeiten,
 so dass ich diese freigegebene Skizze erhalte,
 die ja universell drehbar und per Bemaßung verschiebbar ist?!
 Selbst mein Freund Google kann mich nicht richtig aufs Pferd setzen - Danke für Eure Codeschnipsel dazu
  
 Schönen Tag noch,Stefan
 
 ------------------IV2008
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |  | rkauskh Moderator
 Dipl.-Ing. (FH) Versorgungstechnik, Master Eng. IT-Security & Forensic
 
        
 
  
 
      Beiträge: 2933Registriert: 15.11.2006
 Windows 10 x64, AIP 2020-2025 |    erstellt am: 13. Mai. 2014 11:33  <-- editieren / zitieren -->    Unities abgeben:           Nur für st.w   
  Hallo zu 1) Ist der Winkel fix oder muss er zur Laufzeit vom User eingegeben werden? Zur Laufzeit könnte man die InputBox-Funktion von VBA benutzen, muß aber beachten, das der zurückgegebene Wert aus dem Eingabefeld ein String !!! ist und keine Zahl.Das eigentliche Erstellen macht die WorkPlane.SetByLinePlaneAndAngle( Line As Object, Plane As Object, Angle As Variant ) Funktion. Dabei ist Line die X-Achse, Plane die XY-Ebene und Angle der Winkelwert.
 zu 2) Ist DA ein ein so benannter Modellparameter oder heißt der normalerweise d0 oder d1 oder ...? zu 3) Woher kommt das Bohrmaß? Usereingabe oder fix? zu 4) ThisApplication.ActiveDocument.ComponentDefinition.WorkPlanes.Item(4).Visible=False zu 5) Könnte man das nicht direkt mit der Bohrung als Stufenbohrung machen oder konnte das 2008 noch nicht? Oder ist separate Erstellung vorgeschrieben? zu 6) ThisApplication.ActiveDocument.ComponentDefinition.Sketches.Item(1).Shared=True setzen ------------------MfG
 Ralf
  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |  | st.w Mitglied
 
 
  
 
      Beiträge: 59Registriert: 08.11.2011
 |    erstellt am: 13. Mai. 2014 12:33  <-- editieren / zitieren -->    Unities abgeben:            
  Hallo Ralf, DA ist der normierte Name eines Parameters, also ein umbenannter d12345. Das Bohrmaß kann jetzt beim Erstellen des Codes einfach fix sein, die Feinheiten einer Benutzereingabe kann ich ja immer noch hinzunehmen. Den Code, den ich aufgrund Deiner AddByLinePlaneAndAngle-Angabe Kreieren konnte funktioniert für Position 1 und 4:
 Code:Sub testWorkPlane()
 Dim oPartDoc As PartDocument
 Set oPartDoc = ThisApplication.ActiveDocument
 
 Dim oCompDef As PartComponentDefinition
 Set oCompDef = oPartDoc.ComponentDefinition
 
 Dim oWorkPlaneWinkel As WorkPlane
 Set oWorkPlaneWinkel = oCompDef.WorkPlanes.AddByLinePlaneAndAngle(oCompDef.WorkAxes.Item(1), oCompDef.WorkPlanes.Item("XY Plane"), "60 grd", False)
     oWorkPlaneWinkel.Name = "Arbeitsebene Winkel"oWorkPlaneWinkel.Visible = False
 End Sub
 
 
 Wie müßte ich auf diese Arbeitsebene eine andere versetzen?Und eine Skizze mit Punkt auf die Arbeitsebene?
 (Ach ja, Senken und Bohren/(Gewinde) zusammen gehen, jedoch nicht die zusätzliche Stichbohrung. ) Danke für weitere Tipps,Stefan
 ------------------IV2008
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |  | st.w Mitglied
 
 
  
 
      Beiträge: 59Registriert: 08.11.2011
 |    erstellt am: 13. Mai. 2014 16:25  <-- editieren / zitieren -->    Unities abgeben:            
  Hallo Ralf, ich kann es mit Deinen Hilfestellung und der Hilfefunktion lösen - Danke für Dein Anstoßen. PS.: Wenn der Code fertig ist, setze ich ihn hier noch rein    Danke nochma,
 Stefan
 ------------------IV2008
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |  | st.w Mitglied
 
 
  
 
      Beiträge: 59Registriert: 08.11.2011
 |    erstellt am: 14. Mai. 2014 12:36  <-- editieren / zitieren -->    Unities abgeben:            
  Hi zusammen, Wahnsinn, was möglich ist.... Anbei der Code. Ich habe mich doch gegen eine Skizze entschieden, da Ebenen universeller sind, da sie an keiner Kontur hängen. In meinem Fall ist der Parameter des Außendurchmessers auf DA umbenannt, so dass er immer verwendet werden kann. Durch Klicken auf Name>Winkel und Name>Abstand ist der Winkel 'zu 12 Uhr im Uhrzeigersinn' und bei Abstand das Maß zum Koordinatenursprung änderbar.
 Ich werde unsere Standardbohrungen jedenfalls definieren    Allen anderen - Viel Spaß damit! So long,Stefan
 Code:Public Sub RB()
 Dim sName As String, sDurchm As String
     Dim oPartDoc As PartDocumentSet oPartDoc = ThisApplication.ActiveDocument
 
 Dim oCompDef As PartComponentDefinition
 Set oCompDef = oPartDoc.ComponentDefinition
 
 Dim oModelParameters As ModelParameters
 Set oModelParameters = oCompDef.Parameters.ModelParameters ' Obtain the ModelParameters collection
 sName = Trim(InputBox("Name der Bohrung"))
 sDurchm = Trim(InputBox("Durchmesser der Bohrung in mm"))
 
 Dim oWorkPlaneWinkel As WorkPlane
 Set oWorkPlaneWinkel = oCompDef.WorkPlanes.AddByLinePlaneAndAngle(oCompDef.WorkAxes.Item(1), oCompDef.WorkPlanes.Item("XZ Plane"), "30 grd", False)
 oWorkPlaneWinkel.Name = sName & ">Winkel"
 oModelParameters.Item(oModelParameters.count).Name = sName & "Winkel"
 
 Dim oWorkPlaneRadial As WorkPlane
 Set oWorkPlaneRadial = oCompDef.WorkPlanes.AddByPlaneAndOffset(oWorkPlaneWinkel, "DA / 2oE", False)
 oWorkPlaneRadial.Name = sName & " Arbeitsebene Radial"
 oWorkPlaneRadial.Visible = False
 
 oWorkPlaneWinkel.Shared = True
 oWorkPlaneWinkel.Visible = False
 
 Dim oWorkPlaneMaß As WorkPlane
 Set oWorkPlaneMaß = oCompDef.WorkPlanes.AddByPlaneAndOffset(oCompDef.WorkPlanes.Item("YZ Plane"), "30 mm", False)
 oWorkPlaneMaß.Name = sName & ">Abstand"
 oWorkPlaneMaß.Visible = False
 oModelParameters.Item(oModelParameters.count).Name = sName & "Abstand"
 
 Dim oWorkPlaneWinkel90 As WorkPlane
 Set oWorkPlaneWinkel90 = oCompDef.WorkPlanes.AddByLinePlaneAndAngle(oCompDef.WorkAxes.Item(1), oWorkPlaneWinkel, "90 grd", False)
 oWorkPlaneWinkel90.Name = sName & " Arbeitsebene senkrecht zu Radial"
 oWorkPlaneWinkel90.Visible = False
 
 Dim oWorkPoint As WorkPoint
 Set oWorkPoint = oCompDef.WorkPoints.AddByThreePlanes(oWorkPlaneRadial, oWorkPlaneWinkel90, oWorkPlaneMaß, False)
 oWorkPoint.Name = sName & " Punkt"
 
 oWorkPlaneMaß.Shared = True
 oWorkPlaneMaß.Visible = False
 
 Dim oWorkAxis As WorkAxis
 Set oWorkAxis = oCompDef.WorkAxes.AddByNormalToSurface(oWorkPlaneWinkel, oWorkPoint, False)
 oWorkAxis.Name = sName & " Achse"
 
 ' Create the hole feature placement definition.
 Dim oPointHolePlacementDefinition As PointHolePlacementDefinition
 Set oPointHolePlacementDefinition = oCompDef.Features.HoleFeatures.CreatePointPlacementDefinition(oWorkPoint, oWorkAxis)
     ' Create the hole feature.Dim oHoleTapInfo As HoleTapInfo
 Dim oHoleFeature As HoleFeature
 
 Set oHoleFeature = oCompDef.Features.HoleFeatures.AddDrilledByDistanceExtent( _
 oPointHolePlacementDefinition, sDurchm & " mm", "DA / 2oE", kPositiveExtentDirection, False, "118 grd")
 
 'Set oHoleTapInfo = oCompDef.Features.HoleFeatures.CreateTapInfo( _
 '    True, "ISO Metric profile", "M20x2.5", "6H", False, "20 mm")
 'Set oHoleFeature = oCompDef.Features.HoleFeatures.AddCBoreByDistanceExtent( _
 '    oPointHolePlacementDefinition, oHoleTapInfo, "24 mm", kPositiveExtentDirection, "40 mm", "10 mm", False, "118 grd")
 oHoleFeature.Name = sName & " Bohrung"
 End Sub
 
 
 ------------------IV2008
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |  | Anzeige.:
 Anzeige: (Infos zum Werbeplatz >>)
  |