| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Koinzidenz und Bemaßung (4354 mal gelesen)
|
haller9816 Mitglied Ingenieur
Beiträge: 30 Registriert: 27.03.2010 Inventor 2009 Windows XP SP 3 Lenovo W500
|
erstellt am: 12. Aug. 2010 22:51 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, ein klein bißchen kenn ich mich aus bei vba für inventor - eine skizze mit lines zeichnen geht z.b. ABER: es gibt eine für mich unüberschaubare vielfalt der objekte und methoden, die dann auch noch unterschiedlich anwendungsarten und parameter haben (ich finde dazu keine gute übersicht), daß es mir nicht gelungen ist endpunkte von lines koinzident mit kanten eines bestehenden blechbauteil zu machen eine bemaßung von lines zu kanten des blechbauteils herzustellen oder z.b. den befehl "Fläche" auf eine einbezogene skizze anzuwenden. (alles drei Methoden, die im Inventor von Hand ja ganz simpel machbar sind.) vielleicht kann mir jemand helfen.... ich bin schon zwei tage daran verzweifelt. viele grüße und vielen dank im voraus olaf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
haller9816 Mitglied Ingenieur
Beiträge: 30 Registriert: 27.03.2010 Inventor 2009 Windows XP SP 3 Lenovo W500
|
erstellt am: 12. Aug. 2010 23:04 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von haller9816: Hallo Leute,ein klein bißchen kenn ich mich aus bei vba für inventor - eine skizze mit lines zeichnen und iproperties handeln mit excel usw geht z.b. ABER: es gibt eine für mich unüberschaubare vielfalt der objekte und methoden, die dann auch noch unterschiedlich anwendungsarten und parameter haben (ich finde dazu keine gute übersicht), daß es mir nicht gelungen ist endpunkte von lines koinzident mit kanten eines bestehenden blechbauteil zu machen eine bemaßung von lines zu kanten des blechbauteils herzustellen oder z.b. den befehl "Fläche" auf eine einbezogene skizze anzuwenden. (alles drei Methoden, die im Inventor von Hand ja ganz simpel machbar sind.) vielleicht kann mir jemand helfen.... ich bin schon zwei tage daran verzweifelt. viele grüße und vielen dank im voraus olaf
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
haller9816 Mitglied Ingenieur
Beiträge: 30 Registriert: 27.03.2010 Inventor 2009 Windows XP SP 3 Lenovo W500
|
erstellt am: 14. Aug. 2010 13:01 <-- editieren / zitieren --> Unities abgeben:
|
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 15. Aug. 2010 14:27 <-- editieren / zitieren --> Unities abgeben: Nur für haller9816
Hallo Nö, haste nicht. Aber a) sind die Programmierforen nicht so stark mit Usern besetzt und b) hat nicht jeder immer sofort Zeit zu antworten. Also: Im Inventor gibt es unter Hilfe auch eine Programmierhilfe (engl.), die ziemlich umfangreich ist. Unter C:\Users\Public\Documents\Autodesk\Inventor 2011\SDK\DeveloperTools\Docs liegt das PDF des Objektmodels für einen Überblick über die API. Weiterhin kann ich den Blog von Brian Ekins empfehlen. Zitat: endpunkte von lines koinzident mit kanten eines bestehenden blechbauteil zu machen
Für die Abhängigkeit Koinzident wirst du die gewählte Kante erstmal in deine Skizze projezieren müssen. Zitat: eine bemaßung von lines zu kanten des blechbauteils herzustellen
Im Prinzip wie eben, per Projektion die Kante in die Skizze holen. Zitat: den befehl "Fläche" auf eine einbezogene skizze anzuwenden.
Was meinst du mit einbezogen? Aus der Skizze muss erstmal ein Profil erstellt werden, wenn ich mich recht erinner. Das ist das was man als leuchtenden Konturzug sieht, wenn man den Befehl händisch ausführt. Schau mal in die Programmierhilfe. Dort sind auch Beispiele, die mW auch das Setzen von Bemaßungen zeigen. Es müßte auch ein Beispiel für das Erzeugen eines Features geben. Ob Extrusion oder Fläche ist dabei vom Vorgehen vergleichbar, das Prinzip ist gleich. ------------------ MfG RK Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
haller9816 Mitglied Ingenieur
Beiträge: 30 Registriert: 27.03.2010 Inventor 2009 Windows XP SP 3 Lenovo W500
|
erstellt am: 15. Aug. 2010 15:22 <-- editieren / zitieren --> Unities abgeben:
Hallo RK, danke für Deine Antwort. Ich hab mittlerweile das meiste hinbekommen. (für Koinzidenz und Bemaßung z.B.: es sind alle Linien bereits in der Skizze vorhanden, man muß nur die richtigen aussuchen, was ich über geometrische Daten verwirklicht habe) ("einbezogenen" habe ich aus der Fehlermeldung im Inventor, wenn man zum Beispiel eine Fläche erstellen will und die Skizze dazu vergessen hat, aber ich glaube der richtige Ausdruck ist "nicht einbezogen" - eine Skizze quasi, die noch für nix verwendet wird.) Was mir zur Zeit aber fehlt ist, wie ich eine Linie, die ich in einer Skizze erzeugt habe, nach Beendigung der Skizze per VBA anklicken kann. Liebe Grüße und vielen Dank noch mal. Olaf 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: 15. Aug. 2010 22:47 <-- editieren / zitieren --> Unities abgeben: Nur für haller9816
Hallo Wenn du die Skizzenumgebung verlassen hast, ist die Skizzenlinie direkt nicht mehr greifbar, da sie in der Bauteilumgebung nicht existiert. Inventor nutzt für solche Fälle Proxyobjekte. Das heißt, du muß in der Bauteilumgebung einen SketchLineProxy deiner Skizzenlinie erzeugen. Damit kannst du dann weiter arbeiten. ------------------ MfG RK Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
haller9816 Mitglied Ingenieur
Beiträge: 30 Registriert: 27.03.2010 Inventor 2009 Windows XP SP 3 Lenovo W500
|
erstellt am: 16. Aug. 2010 06:50 <-- editieren / zitieren --> Unities abgeben:
|
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 16. Aug. 2010 12:44 <-- editieren / zitieren --> Unities abgeben: Nur für haller9816
Hallo Sorry, ich hab da was verwechselt. Die Proxyobjekte braucht es nur, wenn man z.B. aus einer Baugruppe an die Skizze eines Bauteiles heran will. Im Bauteil selbst kann man direkt die Skizzen sehen. So erstellt man ein Profil und erzeugt eine Fläche: Code:
Dim oSketch as PlanarSketch Set oSketch=oDoc.ComponentDefinition.Sketches.Item(1)' Create a profile. Dim oProfile As Profile Set oProfile = oSketch.Profiles.AddForSolid 'für Flächen muss es AddForSurface heißen Dim oFaceFeatureDefinition As FaceFeatureDefinition Set oFaceFeatureDefinition = oSheetMetalFeatures.FaceFeatures.CreateFaceFeatureDefinition(oProfile)
Das funktioniert aber nur, wenn es nur einen geschlossenen Konturzug in der Skizze (z.B. ein Rechteck) gibt. Sind mehrere vorhanden, werden auch alle ins Profil übernommen und das Ergebnis könnte unvorhergesehen werden. Man müßte dann nicht benötigte SetchEntities aus dem Profil entfernen. Schau auch mal in der Entwicklerhilfe unter "Profiles.AddForSolid Method". Dort sind eine Reihe Beispiele. ------------------ MfG RK [Diese Nachricht wurde von rkauskh am 16. Aug. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
haller9816 Mitglied Ingenieur
Beiträge: 30 Registriert: 27.03.2010 Inventor 2009 Windows XP SP 3 Lenovo W500
|
erstellt am: 16. Aug. 2010 20:14 <-- editieren / zitieren --> Unities abgeben:
Hallo RK, super, danke, aber was ist das oSheetMetalFeatures Objekt? Ich habs mit ThisApplication.ActiveDocument.ComponentDefinition.Features probiert aber das funktioniert nicht. Vielleicht kannst Du ja noch mal Deine Tastatur strapazieren. Viele Grüße Olaf 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. Aug. 2010 22:18 <-- editieren / zitieren --> Unities abgeben: Nur für haller9816
Hallo SheetMetalFeatures gibt es nur bei Blechteilen, wenn man die ComponentDefinition als SheetMetalComponentDefinition castet. Im normalen Bauteil gibt's das nicht. Das Beispiel erzeugt im Blechteil eine Fläche. Eine unglückliche Wahl des Beispiels. Für ein Bauteil weiß ich nicht aus dem Kopf wie eine Fläche erzeugt wird und einen Inventor zum Nachsehen hab ich frühestens morgen wieder. Geraten würde ich sagen in etwa so: Code:
Dim oDoc as PartDocument Set oDoc=ThisApplication.ActiveDocumentDim oProfile As Profile Set oProfile = oSketch.Profiles.AddForSurface Dim oFaceFeatureDefinition As FaceFeatureDefinition Set oFaceFeatureDefinition = oDoc.ComponentDefinition.Features.FaceFeatures.CreateFaceFeatureDefinition(oProfile)
------------------ MfG RK Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
haller9816 Mitglied Ingenieur
Beiträge: 30 Registriert: 27.03.2010 Inventor 2009 Windows XP SP 3 Lenovo W500
|
erstellt am: 17. Aug. 2010 07:47 <-- editieren / zitieren --> Unities abgeben:
Hallo RK, Ja, es handelt sich bei mir um Blechteile. Dein Code geht fehlerfrei durch, aber die Fläche wird leider nicht erzeugt - es bleibt die Skizze zu sehen, auch wenn ich hinterher aktualisiere. Wahrscheinlich nur eine Kleinigkeit...... Wünsch Dir einen schönen Tag Olaf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
haller9816 Mitglied Ingenieur
Beiträge: 30 Registriert: 27.03.2010 Inventor 2009 Windows XP SP 3 Lenovo W500
|
erstellt am: 18. Aug. 2010 06:47 <-- 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. Aug. 2010 07:43 <-- editieren / zitieren --> Unities abgeben: Nur für haller9816
|
haller9816 Mitglied Ingenieur
Beiträge: 30 Registriert: 27.03.2010 Inventor 2009 Windows XP SP 3 Lenovo W500
|
erstellt am: 18. Aug. 2010 09:43 <-- editieren / zitieren --> Unities abgeben:
|
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 19. Aug. 2010 09:56 <-- editieren / zitieren --> Unities abgeben: Nur für haller9816
So, jetzt aber Code: Private Sub CreateSheetMetalFace()Dim oDoc As PartDocument Set oDoc = ThisApplication.ActiveDocument Dim oCompDef As SheetMetalComponentDefinition Set oCompDef = oDoc.ComponentDefinition Dim oSheetMetalFeatures As SheetMetalFeatures Set oSheetMetalFeatures = oCompDef.Features Dim oSketch As PlanarSketch Set oSketch = oCompDef.Sketches.Item(1) Dim oProfile As Profile Set oProfile = oSketch.Profiles.AddForSolid Dim oFaceFeatureDefinition As FaceFeatureDefinition Set oFaceFeatureDefinition = oSheetMetalFeatures.FaceFeatures.CreateFaceFeatureDefinition(oProfile) Dim oFaceFeature As FaceFeature Set oFaceFeature = oSheetMetalFeatures.FaceFeatures.Add(oFaceFeatureDefinition) End Sub
------------------ MfG RK Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
haller9816 Mitglied Ingenieur
Beiträge: 30 Registriert: 27.03.2010 Inventor 2009 Windows XP SP 3 Lenovo W500
|
erstellt am: 19. Aug. 2010 19:03 <-- editieren / zitieren --> Unities abgeben:
|
haller9816 Mitglied Ingenieur
Beiträge: 30 Registriert: 27.03.2010 Inventor 2009 Windows XP SP 3 Lenovo W500
|
erstellt am: 20. Aug. 2010 15:32 <-- editieren / zitieren --> Unities abgeben:
Hallo RK, eine Änderung zu meinem vollständigen Glück mußte ich noch machen: oFaceFeatureDefinition.Direction = kNegativeExtentDirection Der vollständige Code heißt nun (für andere Interessierte):
Private Sub CreateSheetMetalFace() 'by RK, adaption by OS Dim oDoc As PartDocument Set oDoc = ThisApplication.ActiveDocument Dim oCompDef As SheetMetalComponentDefinition Set oCompDef = oDoc.ComponentDefinition Dim oSheetMetalFeatures As SheetMetalFeatures Set oSheetMetalFeatures = oCompDef.Features Dim oSketch As PlanarSketch Set oSketch = oCompDef.Sketches.Item(oCompDef.Sketches.Count) Dim oProfile As Profile Set oProfile = oSketch.Profiles.AddForSolid Dim oFaceFeatureDefinition As FaceFeatureDefinition Set oFaceFeatureDefinition = oSheetMetalFeatures.FaceFeatures.CreateFaceFeatureDefinition(oProfile) oFaceFeatureDefinition.Direction = kNegativeExtentDirection Dim oFaceFeature As FaceFeature Set oFaceFeature = oSheetMetalFeatures.FaceFeatures.Add(oFaceFeatureDefinition) End Sub ich dachte ja zuerst, daß es AddForSurface heißen muß, aber der Unterschied ist in der Zahl der Pfade zu sehen, nicht wie ich dachte in Blech und Bauteil.
Vielen Dank nochmal Olaf
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |