| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Verdicken per VBA Makro (1233 mal gelesen)
|
InventorUser2010 Mitglied Industriemechaniker
Beiträge: 10 Registriert: 08.03.2012 Inventor 2010 Sp1
|
erstellt am: 08. Mrz. 2012 20:05 <-- editieren / zitieren --> Unities abgeben:
Guten Tag, ich hoffe ihr könnt mir helfen. Ich möchte in Inventor an einem Modell bestimmte Flächen, die ich ausgewählt habe, verdicken. Dabei soll jede Fläche einzelnd verdickt werden. Wenn ich nämlich die Flächen auswähle und alle auf einmal verdicken will, bricht Inventor jedesmal mit einem Fehler ab. Vielen Dank im voraus. MfG 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: 10. Mrz. 2012 00:18 <-- editieren / zitieren --> Unities abgeben: Nur für InventorUser2010
Hi Wie versuchst du das mit mehreren Flächen? Eigentlich sollte das funktionieren. Codeschnipsel? Ist da eine Fläche mit drin, die schon durch's Verdicken einer anderen Fläche komplett verschwindet? Oder mal den hier lesen?!?! ------------------ MfG RK Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
InventorUser2010 Mitglied Industriemechaniker
Beiträge: 10 Registriert: 08.03.2012 Inventor 2010 Sp1
|
erstellt am: 15. Mrz. 2012 20:23 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank rkauskh für die schnelle Antwort und sorry dass ich jetzt erst Zeit habe zu Antworten. Bei dem Modell ist keine Fläche dabei, die komplett verschwindet. Aber dennoch funktioniert es nicht die Flächen auf einmal zu verdicken. Ich hab mir (in einer ruhigen Minute) mal die Zeit genommen und jede Fläche einzelnd verdickt, genauer gesagt hab ich ein offset der Fläche gemacht. Es hat funktioniert. Danach hab ich die einzelnen Flächen über die Funktion zusammengeheftet. PS. den Link, den du vorgeschlagen hast, habe ich auch schon ausprobiert. Hat nicht Funktioniert. 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: 16. Mrz. 2012 09:09 <-- editieren / zitieren --> Unities abgeben: Nur für InventorUser2010
|
InventorUser2010 Mitglied Industriemechaniker
Beiträge: 10 Registriert: 08.03.2012 Inventor 2010 Sp1
|
erstellt am: 18. Mrz. 2012 16:28 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe den folgenden Code im Internet gefunden. Mit diesem Code lässt sich die Farbe der ausgewählten Flächen einzelnd ändern. Public Sub Blue() Dim oPart As PartDocument Set oPart = ThisApplication.ActiveDocument Dim oFace As Face Dim oSelection As Object For Each oSelection In oPart.SelectSet On Error Resume Next Set oFace = oSelection oFace.SetRenderStyle kOverrideRenderStyle, oPart.RenderStyles("Blue") 'Hier RenderStyle eintragen Next End Sub Und dieser Code sollte etwa so lauten: Public Sub Thicken() Dim oPart As PartDocument Set oPart = ThisApplication.ActiveDocument Dim oFace As Face Dim oSelection As Object For Each oSelection In oPart.SelectSet On Error Resume Next Set oFace = oSelection oPart.ComponentDefinition.Features.ThickenFeatures.Add(oFace, 1, kPositiveExtentDirection, kSurfaceOperation, False, False) Next End Sub Als Testbauteil kann jedes Bauteil (.ipt) benutzt werden. Mein persönliches Bauteil kann ich leider nicht einstellen. 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: 18. Mrz. 2012 17:04 <-- editieren / zitieren --> Unities abgeben: Nur für InventorUser2010
Hi Den Code brauch ich nichtmal ausprobieren, lies meinen Beitrag im anderen Thread. Egal ob SelectSet oder ObjectCollection. Beim Verändern der ersten Fläche wird die gesamte Kollektion ungültig. Es ist also völlig normal, das du einen Fehler bekommst. Die Lösung steht auch im anderen Thread. ------------------ MfG RK Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
InventorUser2010 Mitglied Industriemechaniker
Beiträge: 10 Registriert: 08.03.2012 Inventor 2010 Sp1
|
erstellt am: 18. Mrz. 2012 21:24 <-- editieren / zitieren --> Unities abgeben:
|
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 18. Mrz. 2012 21:32 <-- editieren / zitieren --> Unities abgeben: Nur für InventorUser2010
Hi Dann liegt es vermutlich daran, daß ein SelectSet keine ObjectCollection ist. Probier mal: Code: Public Sub Thicken() Dim oPart As PartDocument Set oPart = ThisApplication.ActiveDocument Dim oFace As Face Dim oSelection As Object Dim oFaces As FaceCollection Set oFaces = ThisApplication.TransientObjects.CreateFaceCollection For Each oSelection In oPart.SelectSet If TypeOf oSelection Is Face Then Call oFaces.Add(oSelection) End If Next On Error Resume Next Call oPart.ComponentDefinition.Features.ThickenFeatures.Add(oFaces, 1, kPositiveExtentDirection, kSurfaceOperation, False, False) End Sub
EDIT: Codebeispiel korrigiert ------------------ MfG RK [Diese Nachricht wurde von rkauskh am 18. Mrz. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Baugruppenverantwortlicher (m/w/d) für Elektro | Als Technologie-Berater arbeiten wir gemeinsam mit namenhaften Unternehmen in der Luft- und Raumfahrt, der Automobil- und Schiffbauindustrie, Energie- und IT-Branche, sowie im Anlagenbau. Mit rund 50 Jahren Unternehmensgeschichte legen wir als inhabergeführtes Unternehmen Wert auf flache Hierarchien und bearbeiten unsere Projekte mit viel Herz. Wir bieten dir die Möglichkeit an unseren Standorten in der gesamten DACH-Region zu arbeiten.... | Anzeige ansehen | Projektmanagement |
|
InventorUser2010 Mitglied Industriemechaniker
Beiträge: 10 Registriert: 08.03.2012 Inventor 2010 Sp1
|
erstellt am: 19. Mrz. 2012 17:20 <-- editieren / zitieren --> Unities abgeben:
Super, vielen Dank RK Jetzt hat's funktioniert. Ich musste den Code noch folgendermaßen ändern: Public Sub Thicken() Dim oPart As PartDocument Set oPart = ThisApplication.ActiveDocument Dim oFace As face Dim oSelection As Object For Each oSelection In oPart.SelectSet Dim oFaces As FaceCollection Set oFaces = ThisApplication.TransientObjects.CreateFaceCollection If TypeOf oSelection Is face Then Call oFaces.Add(oSelection) End If On Error Resume Next Call oPart.ComponentDefinition.Features.ThickenFeatures.Add(oFaces, "0,5", kPositiveExtentDirection, kSurfaceOperation, False, False) Next End Sub damit es funktionierte, musste ich die oFaces in der ForEach-Schleife jedes mal neu definieren. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |