Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  komplexe Skizze extrudieren

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:  komplexe Skizze extrudieren (2166 mal gelesen)
Cookiie
Mitglied



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

Beiträge: 32
Registriert: 20.06.2005

erstellt am: 28. Jul. 2005 13:39    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

Hi,

folgendes, ich habe ein Menge von Punkten die jeweils durch eine Linie oder durch einen Kreisbogen miteindander verbunden sind. Das Ganze ergibt auch ein geschlossenes Gebilde.
Jetzt möchte ich diese Skizze als erstes fixieren, so daß sie nicht mehr veränderlich ist. Wenn ich ein Bauteil konstruiert habe, dann habe ich es immer in Bezug auf die x-Achse definiert. Genauso die Abhängigkeiten parallel , senkrecht etc. untereinander. Wie mach ich das per Code? Ich brauche das ja im Prinzip für jede Linie bzw. jeden Kreisbogen.

Zum Schluß will ich dieses Vieleck mit einer bestimmten Tiefe Extrudieren. Und das klappt bisher nicht, ich vermute mal entweder weil die Kontur als solches nicht geschlossen ist oder eben weil sie nicht fixiert ist.

Mein bisheriger Code

Code:

Sub zeichnen(arr() As Variant)

    Dim punkt1x As Double, punkt1y As Double, punkt2x As Double, punkt2y As Double
    Dim mittex As Double, mittey As Double
    Dim radius As Double, winkel As Double
    Dim i As Integer
    Dim counterclockwise As Boolean, erstes As Boolean
    Dim LPDicke As String
   
    'realspalte -1
    Const SP_xKoord As Integer = 1
    Const SP_yKoord As Integer = 2
    Const SP_Kreisbogen As Integer = 3
    Const Einheit As Long = 1000000
   
    ' Neues Bauteil
    Dim oPartDoc As PartDocument
    Set oPartDoc = ThisApplication.Documents.Add(kPartDocumentObject, ThisApplication.FileManager.GetTemplateFile(kPartDocumentObject))
    Dim oCompDef As PartComponentDefinition
    Set oCompDef = ThisApplication.ActiveDocument.ComponentDefinition
    ' Neue Skizze in der xy-ebene
    Dim oSketch As PlanarSketch
    Set oSketch = oCompDef.Sketches.Add(oCompDef.WorkPlanes.Item(3))
    Dim oTransGeom As TransientGeometry
    Set oTransGeom = ThisApplication.TransientGeometry
   
    oSketch.Name = "Board"
   
    punkt1x = 0
    punkt1y = 0
    punkt2x = arr(SP_xKoord, 2) / Einheit
    punkt2y = arr(SP_yKoord, 2) / Einheit
    'startpunkt
    Dim opunkt1 As Point2d
    Set opunkt1 = oTransGeom.CreatePoint2d(punkt1x, punkt1y)
    'endpunkt
    Dim opunkt2 As Point2d
    Set opunkt2 = oTransGeom.CreatePoint2d(punkt2x, punkt2y)
   
    For i = 3 To UBound(arr, 2)                                        'erst ab 3ter Zeile Koordinateninformationen
        Set opunkt1 = opunkt2
        punkt2x = arr(SP_xKoord, i) / Einheit
        punkt2y = arr(SP_yKoord, i) / Einheit
       
        Set opunkt2 = oTransGeom.CreatePoint2d(punkt2x, punkt2y)
           
        winkel = arr(SP_Kreisbogen, i) / 100000                        'liest nachkommastellen ohne komma ein
        If winkel = 0 Then
            Call oSketch.SketchLines.AddByTwoPoints(opunkt1, opunkt2)
        ElseIf winkel = 360 Then
            radius = Sqr((opunkt2.x - opunkt1.x) ^ 2 + (opunkt2.y - opunkt1.y) ^ 2)
            Call oSketch.SketchCircles.AddByCenterRadius(opunkt1, radius)
        Else
            Call berechneMittelpunkt(opunkt1, opunkt2, winkel, counterclockwise, mittex, mittey)
            Dim center As Point2d
            Set center = oTransGeom.CreatePoint2d(mittex, mittey)
            Call oSketch.SketchArcs.AddByCenterStartEndPoint(center, opunkt1, opunkt2, counterclockwise)
        End If
    Next i
   
    'oSketch.Visible = False
    'Call oSketch.GeometricConstraints.AddGround  '<-- klappt nicht so wie gedacht
   
    'erzeugt ein Profil
    Dim oProfile As Profile
    Set oProfile = oSketch.Profiles.AddForSolid    'üngultiger Befehl kommt hier, wenn ichs deaktiviere, gibts logischerweise probs bei der extrusion
   
    LPDicke = arr(0, 1) / Einheit
    'erzeugt die Extrusion
    Call oCompDef.Features.ExtrudeFeatures.AddByDistanceExtent(oProfile, LPDicke, kPositiveExtentDirection, kJoinOperation)
   
End Sub


Wie man sieht lese ich alle Punkte von einem Array ein und je nach Wert des Winkels wird eine Linie oder ein Kreisbogen gezeichnet.
Das klappt auch bis zum Schluß. Ich vermute mal es gibt auch Probleme weil der letzte Punkt mit dem ersten übereinstimmt und ich diesen Punkt aber zweimal erzeuge.

ich hoffe aber das mir jemand beim Rest weiterhelfen kann.
Wichtig ist mir vorallem, daß wenn ich extrudiert habe, man das Bauteil nicht mehr verändern kann.

Gruß Michael

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Cookiie
Mitglied



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

Beiträge: 32
Registriert: 20.06.2005

erstellt am: 29. Jul. 2005 15:17    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

So Problem zur Hälfte gelöst.

Damit man extrudieren kann, braucht man eine geschlossene Kontur.
Der bisherige Code erzeugte allerdings nur Linie und Kreisbögen die einfach aneinder gereiht wurden.
Lösung war deshalb als Startpunkt für die neue Linie/Kreisbogen den Endpunkt der verhergehenden Linie/Kreisbogen zu nehmen.

Set oLines(1) = oSketch.SketchLines.AddByTwoPoints(oLines(2).EndSketchPoint, opunkt2)

Das letzte Verbindungsstück bracuht natürlich noch den Startpunkt des ersten als Endpunkt.

Das einzige Problem was jetzt noch habe ist, daß ich um die Skizze fixieren zu können als Referenz z.B. die x-Achse benötige.
Im Inventor selber ging das schön per 'Geometrie projizieren'. Nur per Code hab ich bisher noch nichts passendes finden können.

Vielleicht hat ja jemand übers WE eine Erleuchtung.

Ein kühles WE wünschend
Michael

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Elektroingenieur Netz- und Anlagenplanung Strom (m/w/d)

Wir sind ein Tochterunternehmen der Mainzer Stadtwerke AG und versorgen die Region zuverlässig mit Strom, Erdgas und Trinkwasser. Über 500 Mitarbeitende setzen alles daran, dass Mainz und die Region jederzeit gut versorgt sind. Ob in der Montage, der IT, im Büro oder als Azubi ? unsere Berufe sind so vielfältig wie wir. Werden Sie jetzt Teil davon!


WAS WIR FÜR SIE ...

Anzeige ansehenElektrotechnik, Elektronik
Markus_Leitl
Mitglied
Maschinenbautechniker

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

Beiträge: 2
Registriert: 20.05.2006

erstellt am: 21. Mai. 2006 15:23    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 Cookiie 10 Unities + Antwort hilfreich


InventorVBASkizze.txt

 
Hi Cookiie,
die Punkte müssen verschmolzen werden um eine geschlossene Kontur zu erzeugen, die Methode dazu lautet Merge z.B :
Erster Punkt des Startobjekts --> oLines(1).StartSketchPoint
Letzter Punkt des Endobjekts --> oLines(8).EndSketchPoint

oLines(1).StartSketchPoint.Merge oLines(letzeLinie).EndSketchPoint

Habe ein Beispiel angehängt...

[Diese Nachricht wurde von Markus_Leitl am 21. Mai. 2006 editiert.]

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