Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Sketch3D 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:  Sketch3D extrudieren (1018 mal gelesen)
Crash_Master
Mitglied
Fachinformatiker


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

Beiträge: 32
Registriert: 06.10.2003

erstellt am: 07. Okt. 2003 10:43    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,

in meinem anderen Beitrag: http://ww3.cad.de/foren/ubb/Forum258/HTML/000068.shtml wollte ich wissen wie man über VBA eine Linie zeichnen kann.

Mit folgendem Code zeichne ich jetzt eine Form. Ich benutze doch das erste Beispiel von Daywa1k3er da ich ja 3 Koordinaten habe (x, y und z).

Code:

Public Function drawLine(x_start As Double, y_start As Double, z_start As Double, x_end As Double, y_end As Double, z_end As Double)
Dim oDoc As PartDocument
Set oDoc = ThisApplication.ActiveDocument

Dim oCompDef As PartComponentDefinition
Set oCompDef = oDoc.ComponentDefinition

Dim oTG As TransientGeometry
Set oTG = ThisApplication.TransientGeometry


Dim oSketch3d As Sketch3D
Set oSketch3d = oCompDef.Sketches3D.Add

Dim oPoint1, oPoint2 As WorkPoint

Set oPoint1 = oCompDef.WorkPoints.AddFixed(oTG.CreatePoint(x_start, y_start, z_start))
Set oPoint2 = oCompDef.WorkPoints.AddFixed(oTG.CreatePoint(x_end, y_end, z_end))

Dim oLine3d As SketchLine3D
Set oLine3d = oSketch3d.SketchLines3D.AddByTwoPoints(oPoint1, oPoint2)
End Function

Public Sub MainProgram()
' Operation 1
drawLine CDbl(Replace("9.99999000000000", ".", ",")), CDbl(Replace("0.00000000000000", ".", ",")), CDbl(Replace("0.00000000000000", ".", ",")), CDbl(Replace("9.99999000000000", ".", ",")), CDbl(Replace("1.86666666666667", ".", ",")), CDbl(Replace("0.00000000000000", ".", ","))
drawLine CDbl(Replace("9.99999000000000", ".", ",")), CDbl(Replace("1.86666666666667", ".", ",")), CDbl(Replace("0.00000000000000", ".", ",")), CDbl(Replace("7.99999500000000", ".", ",")), CDbl(Replace("5.04000000000000", ".", ",")), CDbl(Replace("0.00000000000000", ".", ","))
drawLine CDbl(Replace("7.99999500000000", ".", ",")), CDbl(Replace("5.04000000000000", ".", ",")), CDbl(Replace("0.00000000000000", ".", ",")), CDbl(Replace("1.99999500000000", ".", ",")), CDbl(Replace("5.04000000000000", ".", ",")), CDbl(Replace("0.00000000000000", ".", ","))
drawLine CDbl(Replace("1.99999500000000", ".", ",")), CDbl(Replace("5.04000000000000", ".", ",")), CDbl(Replace("0.00000000000000", ".", ",")), CDbl(Replace("0.00000000000000", ".", ",")), CDbl(Replace("1.86666666666667", ".", ",")), CDbl(Replace("0.00000000000000", ".", ","))
drawLine CDbl(Replace("0.00000000000000", ".", ",")), CDbl(Replace("1.86666666666667", ".", ",")), CDbl(Replace("0.00000000000000", ".", ",")), CDbl(Replace("-0.00000000000000", ".", ",")), CDbl(Replace("0.00000000000000", ".", ",")), CDbl(Replace("0.00000000000000", ".", ","))
drawLine CDbl(Replace("0.00000000000000", ".", ",")), CDbl(Replace("0.00000000000000", ".", ",")), CDbl(Replace("0.00000000000000", ".", ",")), CDbl(Replace("9.99999000000000", ".", ",")), CDbl(Replace("0.00000000000000", ".", ",")), CDbl(Replace("0.00000000000000", ".", ","))
ThisApplication.ActiveView.Update

End Sub


Wenn Ihr die Sub MainProgram ausführt erhaltet ihr eine Form in der 3D Ansicht. Wenn ich diese jetzt extrudieren will, bekomme ich die Meldung: "Keine nicht einbezogenen sichtbaren Skizzen vorhanden". Um diese Figur jetzt zu extrudieren, müßte ich in der 2D Skizze noch Linien zeichnen.

Welche Möglichkeit hab ich jetzt meine Figur zu extrudieren??

Ciao Crash

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

daywa1k3r
Moderator
Softwareentwickler




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

Beiträge: 3497
Registriert: 01.08.2002

Alienware m17x, Win7, Inventor2012

erstellt am: 07. Okt. 2003 11: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 Nur für Crash_Master 10 Unities + Antwort hilfreich

Code:

Public Sub MainProgram()
' Operation 1
drawLine CDbl(Replace("9.99999000000000", ".", ",")), CDbl(Replace("0.00000000000000", ".", ",")), CDbl(Replace("0.00000000000000", ".", ",")), CDbl(Replace("9.99999000000000", ".", ",")), CDbl(Replace("1.86666666666667", ".", ",")), CDbl(Replace("0.00000000000000", ".", ","))
drawLine CDbl(Replace("9.99999000000000", ".", ",")), CDbl(Replace("1.86666666666667", ".", ",")), CDbl(Replace("0.00000000000000", ".", ",")), CDbl(Replace("7.99999500000000", ".", ",")), CDbl(Replace("5.04000000000000", ".", ",")), CDbl(Replace("0.00000000000000", ".", ","))
drawLine CDbl(Replace("7.99999500000000", ".", ",")), CDbl(Replace("5.04000000000000", ".", ",")), CDbl(Replace("0.00000000000000", ".", ",")), CDbl(Replace("1.99999500000000", ".", ",")), CDbl(Replace("5.04000000000000", ".", ",")), CDbl(Replace("0.00000000000000", ".", ","))
drawLine CDbl(Replace("1.99999500000000", ".", ",")), CDbl(Replace("5.04000000000000", ".", ",")), CDbl(Replace("0.00000000000000", ".", ",")), CDbl(Replace("0.00000000000000", ".", ",")), CDbl(Replace("1.86666666666667", ".", ",")), CDbl(Replace("0.00000000000000", ".", ","))
drawLine CDbl(Replace("0.00000000000000", ".", ",")), CDbl(Replace("1.86666666666667", ".", ",")), CDbl(Replace("0.00000000000000", ".", ",")), CDbl(Replace("-0.00000000000000", ".", ",")), CDbl(Replace("0.00000000000000", ".", ",")), CDbl(Replace("0.00000000000000", ".", ","))
drawLine CDbl(Replace("0.00000000000000", ".", ",")), CDbl(Replace("0.00000000000000", ".", ",")), CDbl(Replace("0.00000000000000", ".", ",")), CDbl(Replace("9.99999000000000", ".", ",")), CDbl(Replace("0.00000000000000", ".", ",")), CDbl(Replace("0.00000000000000", ".", ","))
ThisApplication.ActiveView.Update

End Sub


Jetzt wird mir die Bedeutung deines Nicks klar 

Ich habe heute nicht viel Zeit, aber trotzdem würde mich interessieren:


  • Wo hast du bitte schön die Werte her ?!?! 0.000000000000, -0.000000000, ...
  • Warum schreibst du erst "." rein und ersetzt es dann durch "," ?
  • Warum 3D wenn du es auf der XY AE zeichnest, und dein Z-Wert ist immer 0 (0.00000000000000) ?

Also wenn du es unbedingt in 3D machen willst, must du eine Skizze auf die Ebene (XY) daruf legen (probier es erst per Hand), danach alle Linien darauf projezieren, und die Skizze beenden. Danach dürfte die Extrusion kein Problem mehr sein. Per Code die Skizze legen findest du in der Hilfe (ComponentDefinition.Sketches.Add.... ) Die Linien würde ich in ein Array speichern und dann in einer Schleife projezieren. usw.

Wenn du aber in 2D (keine Z Werte) arbeitest ist es viel leichter. Schau dir mal dazu folgendes Beispiel:

Code:

Public Sub DrawBlockWithPocket()
    ' Create a new part document, using the default part template.
    Dim oPartDoc As PartDocument
    Set oPartDoc = ThisApplication.Documents.Add(kPartDocumentObject, _
                ThisApplication.FileManager.GetTemplateFile(kPartDocumentObject))
                   
    ' Set a reference to the component definition.
    Dim oCompDef As PartComponentDefinition
    Set oCompDef = oPartDoc.ComponentDefinition
   
    ' Create a new sketch on the X-Y work plane.  Since it's being created on
    ' one of the base workplanes we know the orientation it will be created in
    ' and don't need to worry about controlling it.  Because of this we also
    ' know the origin of the sketch plane will be at (0,0,0) in model space.
    Dim oSketch As PlanarSketch
    Set oSketch = oCompDef.Sketches.Add(oCompDef.WorkPlanes(3))
   
    ' Set a reference to the transient geometry object.
    Dim oTransGeom As TransientGeometry
    Set oTransGeom = ThisApplication.TransientGeometry
   
    ' Draw a 4cm x 3cm rectangle with the corner at (0,0)
    Dim oRectangleLines As SketchEntitiesEnumerator
    Set oRectangleLines = oSketch.SketchLines.AddAsTwoPointRectangle( _
                                oTransGeom.CreatePoint2d(0, 0), _
                                oTransGeom.CreatePoint2d(4, 3))

    ' Create a profile.
    Dim oProfile As Profile
    Set oProfile = oSketch.Profiles.AddForSolid
   
    ' Create a base extrusion 1cm thick.
    Dim oExtrude As ExtrudeFeature
    Set oExtrude = oCompDef.Features.ExtrudeFeatures.AddByDistanceExtent( _
                        oProfile, 1, kNegativeExtentDirection, kJoinOperation)
                       
    ' Get the top face of the extrusion to use for creating the new sketch.
    Dim oFrontFace As Face
    Set oFrontFace = oExtrude.StartFaces.Item(1)
   
    ' Create a new sketch on this face, but use the method that allows you to
    ' control the orientation and orgin of the new sketch.
    Set oSketch = oCompDef.Sketches.AddWithOrientation(oFrontFace, _
                    oCompDef.WorkAxes.Item(1), True, True, oCompDef.WorkPoints(1))
                   
    ' Determine where in sketch space the point (0.5,0.5,0) is.
    Dim oCorner As Point2d
    Set oCorner = oSketch.ModelToSketchSpace(oTransGeom.CreatePoint(0.5, 0.5, 0))
   
    ' Create the interior 3cm x 2cm rectangle for the pocket.
    Set oRectangleLines = oSketch.SketchLines.AddAsTwoPointRectangle( _
                oCorner, oTransGeom.CreatePoint2d(oCorner.X + 3, oCorner.Y + 2))
               
    ' Create a profile.
    Set oProfile = oSketch.Profiles.AddForSolid
   
    ' Create a pocket .25 cm deep.
    Set oExtrude = oCompDef.Features.ExtrudeFeatures.AddByDistanceExtent( _
                        oProfile, 0.25, kNegativeExtentDirection, kCutOperation)
End Sub


Macht genau das was du brauchst.

Viel Glück !

------------------
Grüße daywa1k3r

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

Crash_Master
Mitglied
Fachinformatiker


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

Beiträge: 32
Registriert: 06.10.2003

erstellt am: 07. Okt. 2003 12: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

Gell, der Name passt zu mir. *lach*

Geh mal auf Powerparts.de, dort auch CAD Bauteilsuche oder sowas. Da kommst du dann auf Powerparts on Web der Fa. Web2Cad. Such dir ein nettes Teil aus und lass dir ein XML File generieren, dann weißt du wie ich auf die Werte komme.

Das mit den Punkten usw. ist noch nicht wirklich gut gelöst, aber für den Anfang wollte ich es eben mal ausprobieren wie es überhaupt geht mit der Umwandlung von XML in VBA Code. Deswegen die komische Schreibweise...

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

Charly Setter
Ehrenmitglied V.I.P. h.c.




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

Beiträge: 11977
Registriert: 28.05.2002

Trau keiner Diva unter SP2....

erstellt am: 07. Okt. 2003 23: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 Nur für Crash_Master 10 Unities + Antwort hilfreich

Hi Crash Master

Ich weiß nicht, ob ich Dir auf die Füße trete, aber ist Dir schon aufgefallen, das Du 3D-Skizzen nicht extrudieren kannst. Du mußt immer eine 2D-Skizze als Grundlage für die Grundfunktionen (Extrudieren, Drehen, Bohren) definieren.

Es ist wunderbar, ein Drahtmodell im Raum zu plazieren. Aber was willst Du damit anfangen ?

lg Mathias

lg Mathias

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

Crash_Master
Mitglied
Fachinformatiker


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

Beiträge: 32
Registriert: 06.10.2003

erstellt am: 08. Okt. 2003 07:53    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

Nein, du trittst mir damit nicht auf die Füße. Das mit dem 3D und 2D hab ich gestern auch noch gemerkt.

Ich hab leider noch ziemlich wenig Ahnung vom Inventor. Das darf ich mir erst alles nochh aneignen, damit ich überhaupt mal weiß wie und wo ich dann nachschauen muß für die VBA-Befehle.

Naja, mal schauen was raus kommt bei meinem ganzen Projekt. Muß mich heute eh noch mal mit meinem Chef zusammensetzen und das ganze mit den z-Koordinaten besprechen. Da sie leider nicht überall 0 sind muß ich erst mal schauen ob das überhaupt so lösbar ist wie er sich das vorstellt.

Trotzdem danke

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