| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | | | Simulation für CAD-Konstruierende |
Autor
|
Thema: API - FeatureExtrusion2 (2156 mal gelesen)
|
Rosco Mitglied
Beiträge: 19 Registriert: 29.10.2014 SolidWorks 2013 x64, SP3.0
|
erstellt am: 13. Nov. 2014 16:03 <-- editieren / zitieren --> Unities abgeben:
Hallo Community, Ich habe ein Problem mit der Funktion 'FeatureExtrusion2'. Trotz Auswahl eines Kreises und einer Linie senkrecht dazu, wird die Extrusion nicht ausgeführt und ich sehe keine Gründe dafür, warum es nicht ausgeführt wird... Code:
. . . Dim fExtrus As SldWorks.Feature . . .. . 'i = laufender Zähler einer For-Schleife Set skPt1 = swPart.SketchManager.CreatePoint(DefPt1(i, 0), DefPt1(i, 1), DefPt1(i, 2)) skPt1.Select4 False, Nothing swPart.SketchAddConstraints "sgFIXED" Set skPt2 = swPart.SketchManager.CreatePoint(DefPt2(i, 0), DefPt2(i, 1), DefPt2(i, 2)) skPt2.Select4 True, Nothing swPart.SketchAddConstraints "sgFIXED" Set skLinie = swPart.SketchManager.CreateLine(DefPt1(i, 0), DefPt1(i, 1), DefPt1(i, 2), DefPt2(i, 0), DefPt2(i, 1), DefPt2(i, 2)) skLinie.Select4 False, Nothing swPart.SketchAddConstraints "sgFIXED" swPart.SketchManager.CreateSketchPlane swConstraintType_COINCIDENT, swConstraintType_PERPENDICULAR, swConstraintType_INVALIDCTYPE skPlane = "Plane" & i 'Kreis bei Punkt skPt1 parallel zu skPlane (wird allerdings nicht parallel zu skPlane erstellt, daher die Bediungung im Anschluss) Set skPattern = swPart.SketchManager.CreateCircle(DefPt1(i, 0), DefPt1(i, 1), DefPt1(i, 2), DefPt1(i, 0) + Geom / 2000, DefPt1(i, 1), DefPt1(i, 2)) boolstatus = swPart.Extension.SelectByID2(skPlane, "SKETCHSURFACES", 0, 0, 0, False, 0, Nothing, 0) skPattern.Select4 True, Nothing swPart.SketchAddConstraints "sgCOINCIDENT" 'Auswahl zur Extrusion skPattern.Select4 False, Nothing ' neue Selektion skLinie.Select4 True, Nothing 'Extrusion, aber nichts passiert.. Set fExtrus = swPart.FeatureManager.FeatureExtrusion2(True, False, False, 0, 0, 0.5, 0.5, False, False, False, False, 0#, 0#, False, False, False, False, True, True, True, 0, 0, False)
Ich habe bereits versucht, die Skizze vor der Extrusion upzudaten (EditRebuild3), aber dennoch keine Extrusion. Weiß jemand Rat? Bei anschließender manueller Erstellung der Extrusion gibt es keine Probleme. Also, an der Tatsache, dass beide Elemente in einer Skizze liegen, kann es offenbar nicht liegen.. Danke und Grüße, Rosco Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rosco Mitglied
Beiträge: 19 Registriert: 29.10.2014 SolidWorks 2013 x64, SP3.0
|
erstellt am: 14. Nov. 2014 14:43 <-- editieren / zitieren --> Unities abgeben:
|
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 14. Nov. 2014 14:52 <-- editieren / zitieren --> Unities abgeben: Nur für Rosco
Hallo, habe in der Hilfe gefunden: Zitat: To extrude a 3D sketch, select:3D sketch with selection mark 0. Extrusion direction edge with selection mark 16
ich würde also probieren die 2 Zeilen zur Auswahl zu ändern - bzw. hauptsächlich die 2. Zeile ;) Code: skPattern.Select4 False, 0 ' neue Selektion skLinie.Select4 True, 16
Viel Glück, hab's nicht ausprobiert ... Gruß, Christian P.S. die Bezeichnung skPattern für den einzelnen Kreis hat mich erstmal etwas irritiert, und weil der Rest nicht vollständig ist, kann man es auch nicht mal eben ausprobieren ... Vielleicht motivierst du mehr Leute, wenn du einen lauffähigen Text reinstellst, der den Fehler enthält.
[Diese Nachricht wurde von Christian_W am 14. Nov. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rosco Mitglied
Beiträge: 19 Registriert: 29.10.2014 SolidWorks 2013 x64, SP3.0
|
erstellt am: 17. Nov. 2014 10:57 <-- editieren / zitieren --> Unities abgeben:
Hi Christian, danke für den Tipp erstmal! Leider bekomme ich eine Fehlermeldung, wenn ich dort statt 'Nothing' ein selection mark einfpge (bei beiden): "Typen unverträglich". Ich habe den Code mal vereinfacht angehangen. Diverse Parameter werden über Abfragen oder Dateninput generiert. Hier habe ich dafür Sollwerte stattdessen vorgegeben. Code:
sub main() Dim swApp As SldWorks.SldWorks Dim swPart As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Dim Geom, Distance As Integer Dim DefPt1(150, 2) As Variant Dim DefPt2(150, 2) As Variant Dim swSketchMgr As SldWorks.SketchManager Dim swSketch1 As SldWorks.Sketch Dim skPt1 As SldWorks.SketchPoint Dim skPt2 As SldWorks.SketchPoint Dim skLinie As SldWorks.SketchSegment Dim skPlane As String Dim skPattern As SldWorks.SketchSegment dim fExtrus As SldWorks.Feature Set swApp = Application.SldWorks 'Set swPart = swApp.NewDocument(""Pfad"", 0, 0, 0) Set swPart = swApp.ActiveDoc GeomOpt = 80 'sonst über Input abgefragt 'DefPt sidn variable Punkte, die eingelesen werden DefPt1(1, 0) = 1246.75 DefPt1(1, 1) = -2107 DefPt1(1, 2) = 210 DefPt2(1, 0) = 1246.75 DefPt2(1, 1) = -2007 DefPt2(1, 2) = 210 swPart.SketchManager.Insert3DSketch True Set swSketch1 = swPart.GetActiveSketch2 swPart.SetAddToDB True swApp.SetUserPreferenceToggle SwConst.swUserPreferenceToggle_e.swInputDimValOnCreate, True
Distance = 100 'wird sonst über DefPt berechnet Set skPt1 = swPart.SketchManager.CreatePoint(DefPt1(1, 0), DefPt1(1, 1), DefPt1(1, 2)) skPt1.Select4 False, Nothing swPart.SketchAddConstraints "sgFIXED" Set skPt2 = swPart.SketchManager.CreatePoint(DefPt2(1, 0), DefPt2(1, 1), DefPt2(1, 2)) skPt2.Select4 False, Nothing swPart.SketchAddConstraints "sgFIXED" Set skLinie = swPart.SketchManager.CreateLine(DefPt1(1, 0), DefPt1(1, 1), DefPt1(1, 2), DefPt2(1, 0), DefPt2(1, 1), DefPt2(1, 2)) skLinie.Select4 False, Nothing swPart.SketchAddConstraints "sgFIXED" skPt1.Select4 False, Nothing skLinie.Select4 True, Nothing swPart.SketchManager.CreateSketchPlane swConstraintType_COINCIDENT, swConstraintType_PERPENDICULAR, swConstraintType_INVALIDCTYPE skPlane = "Plane" & i skPt1.Select4 False, Nothing Set skPattern = swPart.SketchManager.CreateCircle(DefPt1(1, 0), DefPt1(1, 1), DefPt1(1, 2), DefPt1(1, 0) + Geom / 2000, DefPt1(1, 1), DefPt1(1, 2)) 'SkPattern wird in einer If-Schleife generiert und kann auch ein Rechteck sein, daher der allgemeingehaltene Name boolstatus = swPart.Extension.SelectByID2(skPlane, "SKETCHSURFACES", 0, 0, 0, False, 0, Nothing, 0) skPattern.Select4 True, Nothing swPart.SketchAddConstraints "sgCOINCIDENT"
swPart.SketchManager.Insert3DSketch True boolstatus = swPart.EditRebuild3() skPattern.Select4 False, 0 '' Fehlermeldung: "Typen unverträglich" skLinie.Select4 True, 16 '' Fehlermeldung: "Typen unverträglich" Set fExtrus = swPart.FeatureManager.FeatureExtrusion2(True, False, False, 0, 0, 0.5, 0.5, False, False, False, False, 0#, 0#, False, False, False, False, True, True, True, 0, 0, False) end sub
P.S.: Ich sehe gerade dass es in der BEschreibung nur von 3D sketch (mark 0) die rede ist. SkPattern ist wiederum ein Sketchsegment. Und Skline ein Element in der gleichen Skizze. Gibt es hier ein Workaround oder kann ich es nur auf diesen Weg realisieren? Wenn letzteres, wäre es irgend wie blöd, da ich den Kreis und die Linie bei einer manuellen Erstellung der Extrusion problemlos wählen kann !? [Diese Nachricht wurde von Rosco am 17. Nov. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 17. Nov. 2014 13:53 <-- editieren / zitieren --> Unities abgeben: Nur für Rosco
Hallo, blicke auch noch nicht ganz durch, bei select2 war es wohl noch ein einfacher Zahlenwert, vielleicht mal damit probieren. bei select3 kam noch ein Parameter dazu bei select4 ist es wohl ein komplexerer Objekttyp. kriege aber kurz vorher schon eine Fehlermeldung beim Erzeugen der Linie ...
Gruß, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rosco Mitglied
Beiträge: 19 Registriert: 29.10.2014 SolidWorks 2013 x64, SP3.0
|
erstellt am: 17. Nov. 2014 16:00 <-- editieren / zitieren --> Unities abgeben:
Ich habe 2 Fehler gefunden und den COde oben aktualisiert. Allerdings bekomme ich selber auch ein Fehler bei der Fixierung der Linie. Die Skizze kann auf einmal nicht aktualisiert werden, wegen ungültiger Geometrie. Aber eben erst, wenn ich die Linie fixieren will, nicht bei dessen Erstellung?! Wenn ich mein richtiges Makro starte (besteht aus mehreren Modulen incl. CVS-Datei-Einlesen), dass den gleichen Code verwendet, kommt keine Fehlermeldung. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 17. Nov. 2014 18:02 <-- editieren / zitieren --> Unities abgeben: Nur für Rosco
Hallo, geht vielleicht doch nur mit 2 Skizzen? das nachfolgende geht, die anderen Fehler müssen in der Geometrie liegen ... ich glaube, die Skizzenbeziehungen können auch manchmal stören (Extras - Skizzeneinstellungen - Automatisch ...) Gruß, Christian Code:
swPart.SketchManager.Insert3DSketch True 'Sketch mit edit oder neu Set swSketch1 = swPart.GetActiveSketch2 Set skLinie = swPart.SketchManager.CreateLine(0, 0, 0, 0.5, 0.5, 0.5) skLinie.Select4 False, Nothing swPart.SketchAddConstraints "sgFIXED" swPart.SketchManager.Insert3DSketch False 'Sketch neu Set swSketch1 = swPart.GetActiveSketch2 Set skPattern = swPart.SketchManager.CreateCircle(0, 0, 0, 0.5, 0, 0) boolstatus = swPart.EditRebuild3() 'wieder raus skPattern.Select2 False, 0 skLinie.Select2 True, 16 Set fExtrus = swPart.FeatureManager.FeatureExtrusion2(True, False, False, 0, 0, 0.5, 0.5, False, False, False, False, 0#, 0#, False, False, False, False, True, True, True, 0, 0, False)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rosco Mitglied
Beiträge: 19 Registriert: 29.10.2014 SolidWorks 2013 x64, SP3.0
|
erstellt am: 18. Nov. 2014 10:09 <-- editieren / zitieren --> Unities abgeben:
Hi, solange man alles irgend wie am Urpsrung hat, scheint in SW alles wunderbar zu klappen. Meine Skizzenelemente liegen aber im Raum und hier funktioniert wieder nichts mehr normal.. Wenn ich einen Kreis mit den angegebenen Koordinaten DefPt erzeugen will, legt er mir den Kreis wiederrum nur auf eine der Hauptebenen (hier: Ebene Oben). Keine der angegebenen Koordinaten ist aber 0!! Dabei ist SetAddToDB True und SetUserPreferenceToggle SwConst.swUserPreferenceToggle_e.swInputDimValOnCreate, True.. Die SW-Api ist verdammt undurchsichtig.... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 19. Nov. 2014 10:24 <-- editieren / zitieren --> Unities abgeben: Nur für Rosco
Hallo Rosco, ich hab mal in der Pause kurz ein wenig mit deinem Code von oben rumgespielt und mich so nach und nach durch ein paar Fehler gefressen. Zitat: Original erstellt von Rosco: Leider bekomme ich eine Fehlermeldung, wenn ich dort statt 'Nothing' ein selection mark einfpge (bei beiden): "Typen unverträglich".
Wenn du in die API Hilfe schaust wirst du sehen, dass an der Stelle ein SelectData-Objekt erwartet wird, du gibst aber eine Zahl dort vor. Kann von den Typen her nicht passen. Zu den Deklarationen: du hast dein swPart per Late binding deklariert, ist erst mal nix schlimmes, aber wenn du eh die anderen Objekte per Early binding deklarierst wäre es da auch sinnvoll. Die Felder für DefPt1 und DefPt2 deklarierst du als Variant, benutzt sie dann aber (im sichtbaren Code) als Doubles. Dann würde ich die auch so deklarieren. Zitat: Original erstellt von Rosco: Allerdings bekomme ich selber auch ein Fehler bei der Fixierung der Linie. Die Skizze kann auf einmal nicht aktualisiert werden, wegen ungültiger Geometrie. Aber eben erst, wenn ich die Linie fixieren will, nicht bei dessen Erstellung?!
Zu den Koordinaten: da könnte schon der Hase im Pfeffer liegen, du solltest dir möglichst schnell angewöhnen in Meter zu denken, nicht in Millimetern. Deine Werte sind alle reichlich groß, innerhalb der Makros werden Werte nur in Metern (und Rad) angegeben. Daran könnte es liegen, dass du diese Fehlermeldung wegen unlösbaren Skizzenelemente bekommst, du versuchst da wirklich schon sehr weit draußen was zu machen (knapp 2 Kilometer vom Ursprung entfernt ;) ) Dasselbe mit deinen Variablen Geom (gar nicht vorbelegt) und Distance, das sollten Double sein und dann die Werte in Metern, dann werden zumindest schon mal die Punkte und Linien erzeugt. Bei den Skizzenkreisen bin ich dann nur so weit gekommen, dass es mir die erzeugt, aber immer in der XY-Ebene des 3D-Sketch. Steht auch in der API Beschreibung zu SketchManager.CreateCircle drin, dass der das in einem 2D-Sketch erzeugt. Nach meinem Testen projiziert es immer den zweiten Punkt in die XY-Ebene hinein. Mit dem kurzen Aufzeichnen eines Makros, mit dem ich ein Rechteck in einer 3D-Skizze in YZ-Ebene gemacht habe, bin ich dann auf den API-Befehl Sketch::SetWorkingPlaneOrientation gekommen, den musst du wohl entsprechend nutzen um die Ausrichtung der Ebene in deiner 3D-Skizze zu setzen, in der du arbeiten willst. Könnte aber einige zusätzliche mathematische Exkurse in Richtung Vektor- und Matrizenrechnung bedeuten ;) Daher als Anregung (wie auch im letzten Thread zu diesem Thema schon): mach das nicht in 3D-Skizzen, sondern in separaten 2D-Skizzen und erzeug dir ggf. vorher Referenzebenen. Zitat: Original erstellt von Rosco: Die SW-Api ist verdammt undurchsichtig....
Hm, finde ich gar nicht. Wenn überhaupt ist sie etwas spröde und zu genau und fokusiert. Aber die Probleme bestehen weniger in der API Hilfe als im Denken: nicht mehr wie ein interaktiver Anwender denken, sondern wie ein Programmierer ... stell dir vor du steuerst einen blinden, tauben, strohdummen und leider absolut hörigen Roboter du ein Gelände mit Feuer, Wasser und Sprengstoff. Da ist kein Platz für "Aber es muss doch wissen, was ich meine ..." Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rosco Mitglied
Beiträge: 19 Registriert: 29.10.2014 SolidWorks 2013 x64, SP3.0
|
erstellt am: 20. Nov. 2014 09:43 <-- editieren / zitieren --> Unities abgeben:
Hallo Stefan, danke, dass dir wieder mal Zeit genommen hast! Thema Selection mark: Ja, das hatte ich dann bemerkt, weswegen ich vorerst wieder auf Select2 gewechselt habe, was allerdings voraussetzt, dass ich 2 separate Skizzen anfertigen müsste, entsprechend der Bedingung von (FeatureExtrusion2 ). Somit würde sich also am Ende die Skizzenanzahl verdoppeln.. Es werden auch ohne Verdopplung schon genug skizzen, da sich der obenen dargestellte Code in einer Forschleife befindet, was also unschön wäre. Die Frage wäre also, ob ich die Extrusion auch über eine Skizze hinbekomme, analog zu der manuellen Variante, bei der ich als Extrusionsrichtung eine Linie in der gleichen Skizze wählen, in der auch das Extrusionsmuster liegt. Early binding: Danke für den Hinweis. GeomOpt und Geom sollten eigentlich die gleiche Variable sein. Einheiten: Welcher Konstrukteur denkt denn bitte in Meter? Naja, das Thema hatten wir ja schon mal. Habe bei der Beispielsdefinierung der DefPt oben nicht dran gedacht.. 3D-Skizzen: Das Problem daran ist, dass die Basisausrichtung meiner zu erstellenden Konstruktion nicht immer in z-Richtung erfolgt, sondern auch schräg im Raum erfolgen kann. Um also eine Referenzebene zu erstellen, benötige ich erst die 2 Punkte bzw. deren Verbindungslinie, zu der ich die Referenzebene senkrecht binden kann. Eine Referenzlinie wiederum benötigt Referenzpunkte und Referenzpunkte kann ich in SW offenbar nicht über Koordinaten erzeugen, sondern wiederum nur über Kanten oder Schnittelemente, die ich eingangs aber nicht habe, sondern über diese Punkte erst erstellen möchte! *Kopf -> Wand* Um aber wieder auf das eigentliche Problem zu kommen: Gibt es nun die Möglichkeit eine Extrusion auf Basis 2er Skizzenelemente zu erstellen, wobei beide Elemente sich in der gleichen Skizze befinden? Manuell ist dies ja nun möglich, wie bereits erwähnt. Grüße, Rosco [Diese Nachricht wurde von Rosco am 20. Nov. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rosco Mitglied
Beiträge: 19 Registriert: 29.10.2014 SolidWorks 2013 x64, SP3.0
|
erstellt am: 20. Nov. 2014 15:34 <-- editieren / zitieren --> Unities abgeben:
Hallo noch einmal, ich habe es nun endlich hinbekommen und er baut mir sämtliche Extrusionsebenen nach und nach auf! Lang hats gedauert.. Ich habe es nun doch erst mal über 2 Skizzen pro Extrusion geschafft, was dann folgender Maßen aussieht: Code:
sub main()Dim swApp As SldWorks.SldWorks Dim swPart As SldWorks.ModelDoc2 Dim swSelMgr As SldWorks.SelectionMgr Dim currentSketch As Sketch Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Dim GeomOpt , Distance As Integer Dim DefAbmessung(150, 1) As Double Dim Distance(150) As Double Dim DefPt1(150, 2) As Double Dim DefPt2(150, 2) As Double Dim swSketchMgr As SldWorks.SketchManager Dim swSketch1 As SldWorks.Sketch Dim skPt1 As SldWorks.SketchPoint Dim skPt2 As SldWorks.SketchPoint Dim skLinie As SldWorks.SketchSegment Dim skCirc As SketchSegment Dim skRect As Variant dim fExtrus As SldWorks.Feature Set swApp = Application.SldWorks 'Set swPart = swApp.NewDocument(""Pfad"", 0, 0, 0) Set swPart = swApp.ActiveDoc GeomOpt = 0.08 'Kreisdurchmesser, sonst über Input abgefragt 'DefPt sind variable Punkte, die eingelesen werden DefPt1(1, 0) = 1.24675 DefPt1(1, 1) = -2.107 DefPt1(1, 2) = 0.210 DefPt2(1, 0) = 1.246.75 DefPt2(1, 1) = -2.007 DefPt2(1, 2) = 0.210 Distance = 0.100 'wird sonst über DefPt berechnet DefAbmessung(1, 0) = 0.065 DefAbmessung(1, 1) = 0.03 swPart.SetAddToDB True swApp.SetUserPreferenceToggle SwConst.swUserPreferenceToggle_e.swInputDimValOnCreate, True swPart.SketchManager.Insert3DSketch True Set currentSketch = swPart.GetActiveSketch2 Set skPt1 = swPart.SketchManager.CreatePoint(DefPt1(1, 0), DefPt1(1, 1), DefPt1(1, 2)) skPt1.Select4 False, Nothing swPart.SketchAddConstraints "sgFIXED" Set skPt2 = swPart.SketchManager.CreatePoint(DefPt2(1, 0), DefPt2(1, 1), DefPt2(1, 2)) skPt2.Select4 False, Nothing swPart.SketchAddConstraints "sgFIXED"
Set skLinie = swPart.SketchManager.CreateLine(DefPt1(1, 0), DefPt1(1, 1), DefPt1(1, 2), DefPt2(1, 0), DefPt2(1, 1), DefPt2(1, 2)) skLinie.Select4 False, Nothing swPart.SketchAddConstraints "sgFIXED" boolstatus = swPart.EditRebuild3() skPt1.Select2 False, 0 skLinie.Select2 True, 1 Set myRefPlane = swPart.FeatureManager.InsertRefPlane(swRefPlaneReferenceConstraint_Coincident, 0, swRefPlaneReferenceConstraint_Perpendicular, 0, 0, 0) myRefPlane.Select4 False, Nothing swPart.SketchManager.InsertSketch True Set currentSketch = swPart.GetActiveSketch2 If DefAbmessung(i, 0) = 0 Or DefAbmessung(i, 0) = 1 Then 'Kreis Set skCirc = swPart.SketchManager.CreateCircle(0#, 0#, 0#, GeomOpt / 2, 0#, 0#) 'skCirc = Sketchsegment swPart.SketchManager.InsertSketch True skCirc.Select2 False, 0 Else 'Rechteck skRect = swPart.SketchManager.CreateCenterRectangle(0, 0, 0, DefAbmessung(1, 0), DefAbmessung(1, 1), 0) 'SkRect = <Array> of sketch segments that represent the edges and diagonals created for this center rectangle swPart.SketchManager.InsertSketch True currentSketch.Select2 False, 0 End If skLinie.Select2 True, 16 Set fExtrus = swPart.FeatureManager.FeatureExtrusion2(True, False, False, 0, 0, Distance, Distance, False, False, False, False, 0#, 0#, False, False, False, False, True, True, True, 0, 0, False) End sub
Bei mir hängt das ganze nun noch in einer For-Schleife und mehreren If-Schleifen, aber die tun ja hier erst mal nichts zur Sache. Vielen Dank allen Tipp-Gebern! Nun mach ich mich mal an die Farbgebung und das Ausblenden der Skizzen/Ebenen.. [Diese Nachricht wurde von Rosco am 20. Nov. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 20. Nov. 2014 16:30 <-- editieren / zitieren --> Unities abgeben: Nur für Rosco
Zitat: ... Es werden auch ohne Verdopplung schon genug skizzen, da sich der obenen dargestellte Code in einer Forschleife befindet, was also unschön wäre. ...
Hallo, du könntest vielleicht mit N+1 Skizzen auskommen, wenn du nur für die Konturen 2D-Skizzen anlegst, die Richtungslinien aber alle in einer einzigen 3D-Skizze versammelst, ich glaub die wurde mir auch nicht absorbiert vom Feature. ob das übersichtlicher wird kommt auf einen Versuch an Gruß, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rosco Mitglied
Beiträge: 19 Registriert: 29.10.2014 SolidWorks 2013 x64, SP3.0
|
erstellt am: 21. Nov. 2014 10:31 <-- editieren / zitieren --> Unities abgeben:
Hallo Christian, gute Idee, dadurch hätte ich quasi das "Linienmodell" auch in einer Skizze, was vorraussichtlich sogar besser für die Nutzer ist. Werde ich probieren, wenn ich die Grundfunktionen abgeschlossen habe. Danke für den Hinweis! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|