| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Punkt auf gedrehter Arbeitsebene erzeugen (1296 mal gelesen)
|
st.w Mitglied
Beiträge: 59 Registriert: 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 mit einem 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
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
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: 59 Registriert: 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: 59 Registriert: 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: 59 Registriert: 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 PartDocument Set 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 >>)
|