| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Versatz in Skizze (1195 mal gelesen)
|
TimC Mitglied
Beiträge: 21 Registriert: 26.02.2008
|
erstellt am: 14. Apr. 2008 12:20 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich möchte einen Versatz der äußeren Kontur des Bleches nach innen zeichnen. Dazu gehe ich wie folgt vor:
Code:
Dim doc As PartDocument Set doc = ThisApplication.ActiveDocumentDim oDef As SheetMetalComponentDefinition Set oDef = doc.ComponentDefinition Dim oFace As Face Set oFace = oDef.FlatPattern.BaseFace Set oSk = oDef.Sketches.Add(oFace, True) oSk.Name = "LochSkizze" Dim oCollection As ObjectCollection Set oCollection = ThisApplication.TransientObjects.CreateObjectCollection
For x = 1 To oSk.SketchLines.Count oCollection.Add oSk.SketchLines.ITEM(x) Next Dim o As SketchEntitiesEnumerator Set o = oSk.OffsetSketchEntitiesUsingDistance(oCollection, 1.2, True)
Das funktioniert aber nur so lange bis ich zusätzlich noch eine innere Kontur zeichne (Siehe Anhang). Ich muss dazu sagen das ich sachen Inventor-VBA-Zeichnen noch totaler Anfänger bin. Hat jemand vielleicht einen Tipp wie man das eleganter gestalten kann? Gruß, Tim Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 14. Apr. 2008 13:46 <-- editieren / zitieren --> Unities abgeben: Nur für TimC
|
TimC Mitglied
Beiträge: 21 Registriert: 26.02.2008
|
erstellt am: 14. Apr. 2008 14:05 <-- editieren / zitieren --> Unities abgeben:
Hallo Igor, richtig, Inventor erlaubt keinen doppelten Skizzennamen. Aber das ist eigentlich auch nicht das Problem. Ich glaube ich habe mich nicht eindeutig ausgedrückt. Ich erstelle eine Skizze auf der Hauptfläche des Bleches "BaseFace":
Code:
Dim doc As PartDocument Set doc = ThisApplication.ActiveDocument Dim oDef As SheetMetalComponentDefinition Set oDef = doc.ComponentDefinitionDim oFace As Face Set oFace = oDef.FlatPattern.BaseFace Set oSk = oDef.Sketches.Add(oFace, True)
(der Name der Skizze wurde weggelassen)Darauf erstellt dann der Inventor die gewünschte Skizze und zeichnet die Kontur nach (im Anhang mit der Lila-Kontur). in diesem Fall auch die Innere! Um einen Versatz mit Inventor zu erstellen lade ich alle SketchLines in eine ObjectCollection. Daraus lässt sich nun ein Versatz erstellen. Problem: In der ObjectCollection sind nun auch die SketchLines der Inneren-Kontur. Beim Versatz-Befehl gibt das Probleme (wie man sich vorstellen kann). Code:
Dim oCollection As ObjectCollection Set oCollection = ThisApplication.TransientObjects.CreateObjectCollectionFor x = 1 To oSk.SketchLines.Count oCollection.Add oSk.SketchLines.ITEM(x) Next Dim o As SketchEntitiesEnumerator Set o = oSk.OffsetSketchEntitiesUsingDistance(oCollection, 1.2, True)
Ich suche also einen Weg wie ich in der "ObjectCollection" nur die SketchLines der äußeren Kontur habe. Gruß, Tim [Diese Nachricht wurde von TimC am 14. Apr. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rtend12 Mitglied Dipl.-Ing. (FH) Maschinenbau / Konstrukteur
Beiträge: 436 Registriert: 21.07.2004 Catia V5 (R16SP5, B18SP5) VB.Net 2003
|
erstellt am: 14. Apr. 2008 20:35 <-- editieren / zitieren --> Unities abgeben: Nur für TimC
Hallo Tim, du könntest dir die Linien der ersten Skizze merken. Entweder du nutzt die RefernceKey-Funktionalität oder du vergibst jeder Linie der ersten Skizze ein AttributeSet. Beim 2. Versatz wertest du das aus und nimmst nur die Linien in die Collection, die den passenden ReferenceKey oder AttributeSet haben. Gruß Reinhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |