Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Viele Ausrichtungen eines Bauteils zu Hüllkörper verschmelzen

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:  Viele Ausrichtungen eines Bauteils zu Hüllkörper verschmelzen (683 / mal gelesen)
Andreas Schaaf
Mitglied



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

Beiträge: 10
Registriert: 17.11.2010

erstellt am: 19. Jul. 2016 10:58    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 CAD'ler,

ich bereite meine Frage mal auf wie in der Schule  :

Gegeben:
1. Ein Bauteil oder eine Baugruppe, optional abgeleitet.
2. Ein Makro, das dieses Bauteil gemäß einer externen Positionierungstabelle in einem Assembly nacheinander in mehreren tausend Stellungen positioniert.
3. Ein fremder Codeschnippsel, mit dem verschiedene InterferenceBodies aus der Inventor-Kollisionsprüfung zu einer IPT verschmolzen werden können.

Gesucht:
Ein Hüllkörper, der alle möglichen Positionen des Bauteils enthält. Im Idealfall ein Flächenmodell als IPT.

Was ich nicht will:
1. Eine große Datei (Speicherplatz).
2. Eine Datei, die lange zum Öffnen braucht (Performance).

Mein bisheriger Ansatz:
1. Bauteil positionieren und als Flächenmodell (SurfaceBody) intern speichern.
2. Schleife über alle Positionierungen: Bauteil neu positionieren, in neuer Position in Flächenmodell umwandeln und mit dem schon erzeugten Flächenmodell verschmelzen (Merge).
3. Flächenmodell als neue IPT ins Assembly einfügen

Mein Problem:
Ich scheitere an Schritt 2, weil sich die Flächenmodelle (SurfaceBody.NativeBody) nicht verschmelzen lassen. Es bleibt immer ein Basiskörper in der IPT, den ich nicht wegbekomme.

Frage:
Habe ich den richtigen Ansatz gewählt? Wenn ja, warum lassen sich die SurfaceBodies nicht vereinigen wie im Volumenkollisions-Codeschnippsel?

Unten füge ich noch meinen Code ein, in dem einige "Versuchszeilen" auskommentiert sind (work in progress). Bin für jeden Hinweis dankbar! 
Grüße Andreas

Code:

Dim oApp As Application
Dim oDoc As AssemblyDocument
Dim oOcc As ComponentOccurrence, oOccNeu As ComponentOccurrence
Dim oSurfBody1 As SurfaceBody, oSurfBody2 As SurfaceBody
Dim oResultPart As PartDocument

Set oApp = ThisApplication
Set oDoc = oApp.ActiveDocument
Set oOcc = oDoc.ComponentDefinition.Occurrences.Item(1) 'Manuell als Flächenmodell abgeleitete Baugruppe
Set oSurfBody1 = oOcc.SurfaceBodies.Item(1).NativeObject
Dim oResultBody As SurfaceBody
Set oResultBody = oSurfBody1

Dim oTransGeom As TransientGeometry
Dim oMatrix As Matrix
Set oTransGeom = oApp.TransientGeometry
Set oMatrix = oTransGeom.CreateMatrix

Set oResultPart = oApp.Documents.Add(kPartDocumentObject, oApp.FileManager.GetTemplateFile(kPartDocumentObject), False)
Set oOccNeu = oDoc.ComponentDefinition.Occurrences.AddByComponentDefinition(oResultPart.ComponentDefinition, oMatrix)
oOccNeu.name = "Zusammenkopiert"

Dim oWP As WorkPoint
Dim oWPProxy As WorkPointProxy
Dim X As Double, Y As Double, Z As Double
Dim gamma As Double, alpha As Double, beta As Double
Dim i As Integer, j As Integer

[...]

Dim oExcel As excel.Application
Dim oWorksheet As excel.WorkSheet
Set oExcel = GetObject(, "Excel.Application")
Set oWorksheet = oExcel.ActiveSheet

Dim lReihe As Long, lLZ As Long
i = 2

With oWorksheet
lLZ = .Range("A1").End(xlDown).Row
       
    For lReihe = 3 To lLZ Step 1000
        'Position des Bauteils auslesen:
[...]       
        'Bauteil anhand Matrix positionieren:
        oBauteil.Transformation = oMatrix
       
'        Dim nonParaDef As NonParametricBaseFeatureDefinition
'    Set nonParaDef = def.Features.NonParametricBaseFeatures.CreateDefinition
'    Dim bodyColl As ObjectCollection
'    Set bodyColl = ThisApplication.TransientObjects.CreateObjectCollection
'    Call bodyColl.Add(newBody1)
'    nonParaDef.BRepEntities = bodyColl
'    nonParaDef.OutputType = kSolidOutputType
'    Dim non1 As NonParametricBaseFeature
'    Set non1 = def.Features.NonParametricBaseFeatures.AddByDefinition(nonParaDef)
'    Dim resultBody1 As SurfaceBody
'    Set resultBody1 = non1.SurfaceBodies.Item(1)

        Set oResultBody = oApp.TransientBRep.Copy(oSurfBody1)
        Call oResultPart.ComponentDefinition.Features.NonParametricBaseFeatures.Add(oResultBody, oMatrix)
        Call oApp.TransientBRep.DoBoolean(oResultBody, oSurfBody1, kBooleanTypeUnion)

    Next lReihe
End With


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

Andreas Schaaf
Mitglied



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

Beiträge: 10
Registriert: 17.11.2010

erstellt am: 21. Jul. 2016 09:58    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

Ich formuliers mal um:

Wie kann ich ein (räumlich ausgerichtetes) Bauteil innerhalb eines Assembly als Körper in ein anderes Bauteil kopieren?
Der Body soll hinterher nicht wissen, woraus er entstanden ist.

Den Rest (Verschmelzen/Merge/Union usw.) krieg ich dann wahrscheinlich selbst hin.

Jeder Hinweis wird gerne genommen.

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