| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Profile aus Sketch für ExtrudeFeature auswählen (1847 mal gelesen)
|
WilliamSpiderWeb Mitglied Dipl.-Ing. (FH) Physikalische Technik
Beiträge: 96 Registriert: 09.01.2012 DELL Precision 3620 Core i7-6900K @ 4,00 GHz 16,00GB RAM Grafik: AMD FirePro W5100 --- Win7 Pro 64bit SP1 --- Inventor Professional 2021 Vault Workgroup 2021 Visual Basic .NET 2010 Express ... dabei seit Inventor 5
|
erstellt am: 30. Jul. 2012 15:28 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich möchte über die Inventor API eine Extrusion in meinem Bauteil erzeugen. Ist in der aktiven ipt eine Skizze mit nur einem Profil (z.B. ein Kreis) vorhanden, kann ich mit meinem Code ohne Probleme eine Extrusion erzeugen. Befinden sich in der Skizze aber zwei Profile (z.B. ein Kreis innerhalb eines Rechtecks), stürzt mein Code ab, da die API nicht weiß, welches Profil extrudiert werden soll. Und ich weiß nicht, wie ich der API sagen soll, welches Profil gewählt werden soll. Hat da einer eine Idee zu? Ich glaube, zu wissen, dass ich etwas mit meiner Variable oprofile machen muss, nur was ist das große Geheimnis. Mein Code zum Extrudieren
Code:
Private Function newExtrudeDist(ByRef partdoc As PartDocument, ByRef sketch As PlanarSketch, ByVal Distance As Double) As ExtrudeFeature Dim Ext As Inventor.ExtrudeFeature Dim Direction As Inventor.PartFeatureExtentDirectionEnum = PartFeatureExtentDirectionEnum.kPositiveExtentDirection Dim oprofil As Inventor.Profile = sketch.Profiles.AddForSolid(False) If Distance < 0 Then Distance = Distance * -1 Direction = PartFeatureExtentDirectionEnum.kNegativeExtentDirection End If Ext = partdoc.ComponentDefinition.Features.ExtrudeFeatures.AddByDistanceExtent(oprofil, Distance, _ Direction, PartFeatureOperationEnum.kJoinOperation) Return Ext End Function
Viele Grüße 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: 30. Jul. 2012 18:50 <-- editieren / zitieren --> Unities abgeben: Nur für WilliamSpiderWeb
Hallo Wenn das Programm nicht hellsehen kann, muß der User ran. Benutze doch dich Pick-Methode: Code: Dim oprofil As Object Set oprofil = ThisApplication.CommandManager.Pick(kSketchProfileFilter, "Pick a profile")
------------------ MfG Ralf [Diese Nachricht wurde von rkauskh am 30. Jul. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WilliamSpiderWeb Mitglied Dipl.-Ing. (FH) Physikalische Technik
Beiträge: 96 Registriert: 09.01.2012 DELL Precision 3620 Core i7-6900K @ 4,00 GHz 16,00GB RAM Grafik: AMD FirePro W5100 --- Win7 Pro 64bit SP1 --- Inventor Professional 2021 Vault Workgroup 2021 Visual Basic .NET 2010 Express ... dabei seit Inventor 5
|
erstellt am: 31. Jul. 2012 16:22 <-- editieren / zitieren --> Unities abgeben:
Hallo Ralf, danke für den Hinweis. Nachdem ich Deine Code-Zeile eingebaut habe, hab ich auch verstanden, was sie tut. Ich möchte mein Bauteil allerdings automatisiert aufbauen lassen. Deshalb die Frage, ob ich über die Inventor API ein Profil aus mehreren Profilen einer Skizze auswählen kann. Wenn das nicht gehen sollte, muss ich wohl oder übel, meine Profile in unterschiedliche Skizzen packen und nacheinander extrudieren (mal positive, mal negative Richtung). Viele Grüße, Alexander 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: 31. Jul. 2012 17:29 <-- editieren / zitieren --> Unities abgeben: Nur für WilliamSpiderWeb
Hallo Das geht natürlich auch. oprofil ist bei mehreren Skizzenelementen eher mit einer Sammlung von Profilen vergleichbar. Über Code: oprofil.count
kannst du sehen wie viele Profile erzeugt wurden und über Code: oprofil.Item(xxx)
kommst du an jedes der erzeugten Profile heran. Die Quizfrage ist, wie du das von dir gewünschte herausfilterst. Wäre es aus deinem Beispiel immer der innere Kreis, könnte man prüfen welches der Profile nur aus einer SketchEntity besteht und ob die SketchEntity ein Kreis ist und möglicherweise sogar mit einem Durchmesser XYZ. Aber ohne ein eindeutiges Filterkriterium wird's nix. ------------------ MfG Ralf [Diese Nachricht wurde von rkauskh am 31. Jul. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WilliamSpiderWeb Mitglied Dipl.-Ing. (FH) Physikalische Technik
Beiträge: 96 Registriert: 09.01.2012 DELL Precision 3620 Core i7-6900K @ 4,00 GHz 16,00GB RAM Grafik: AMD FirePro W5100 --- Win7 Pro 64bit SP1 --- Inventor Professional 2021 Vault Workgroup 2021 Visual Basic .NET 2010 Express ... dabei seit Inventor 5
|
erstellt am: 01. Aug. 2012 11:22 <-- editieren / zitieren --> Unities abgeben:
Danke Ralf, genau so, wie Du's geschrieben hast, ist es. Ich erstelle eine Skizze mit mehrere Profilen (egal ob Kreise, Rechtecke o.ä.), wobei immer ein einziges Profil die übrigen umschließt. Das heißt, im Endeffekt möchte ich genau dieses "durchlöcherte" Profil extrudieren. Werd' mich später ran setzen, um prüfen, ob ich die Befehle einsetzen kann. Viele Grüße, Alexander 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: 01. Aug. 2012 16:34 <-- editieren / zitieren --> Unities abgeben: Nur für WilliamSpiderWeb
Hallo Dazu nimmst du die Pick-Methode wieder raus und ersetzt sie durch deinen ehemaligen Code. Damit erzeugst du oprofil mit x Profilpfaden. Danach in einer for each Schleife durch alle Profilpfade laufen. Untersuche bei allen Profilpfaden die Geometrie der Segmente. Ist z.B. dein umschreibendes Rechteck immer gleich groß, könnte man die Länge der LineSegmente prüfen. Liegt einer der Eckpunkte im Ursprung müßte einer der LineSegmentEdnpunkte die Koordinaten 0,0 haben usw. Bei allen Profilpfaden die nach Prüfung nicht dein umschreibendes Rechteck beinhalten, setzt du den Wert "AddsMaterial" auf False. Die Profile dürfen sich nicht überschneiden, sonst ignoriert Inventor sie. Keine Ahnung warum, aber es funktioniert nicht.
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 01. Aug. 2012 16:39 <-- editieren / zitieren --> Unities abgeben: Nur für WilliamSpiderWeb
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|