Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Punkt auf gedrehter Arbeitsebene erzeugen

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 Autodesk Produkte
Autor Thema:  Punkt auf gedrehter Arbeitsebene erzeugen (1296 mal gelesen)
st.w
Mitglied



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

Beiträge: 59
Registriert: 08.11.2011

erstellt am: 13. Mai. 2014 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


Skizze.jpg

 
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




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

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 13. Mai. 2014 11:33    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 st.w 10 Unities + Antwort hilfreich

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



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

Beiträge: 59
Registriert: 08.11.2011

erstellt am: 13. Mai. 2014 12:33    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

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



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

Beiträge: 59
Registriert: 08.11.2011

erstellt am: 13. Mai. 2014 16:25    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

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



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

Beiträge: 59
Registriert: 08.11.2011

erstellt am: 14. Mai. 2014 12:36    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


Skizze.jpg

 
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 >>)

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)2023 CAD.de | Impressum | Datenschutz