Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API - FeatureExtrusion2

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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



Sehen Sie sich das Profil von Rosco an!   Senden Sie eine Private Message an Rosco  Schreiben Sie einen Gästebucheintrag für Rosco

Beiträge: 19
Registriert: 29.10.2014

SolidWorks 2013 x64, SP3.0

erstellt am: 13. Nov. 2014 16:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von Rosco an!   Senden Sie eine Private Message an Rosco  Schreiben Sie einen Gästebucheintrag für Rosco

Beiträge: 19
Registriert: 29.10.2014

SolidWorks 2013 x64, SP3.0

erstellt am: 14. Nov. 2014 14:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hat jemand eine Idee oder zumindest eine Ahnung, wo das Problem liegen könnte?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Christian_W
Ehrenmitglied V.I.P. h.c.
Konstrukteur (Dipl-Ing)


Sehen Sie sich das Profil von Christian_W an!   Senden Sie eine Private Message an Christian_W  Schreiben Sie einen Gästebucheintrag für Christian_W

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Rosco 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von Rosco an!   Senden Sie eine Private Message an Rosco  Schreiben Sie einen Gästebucheintrag für Rosco

Beiträge: 19
Registriert: 29.10.2014

SolidWorks 2013 x64, SP3.0

erstellt am: 17. Nov. 2014 10:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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)


Sehen Sie sich das Profil von Christian_W an!   Senden Sie eine Private Message an Christian_W  Schreiben Sie einen Gästebucheintrag für Christian_W

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Rosco 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von Rosco an!   Senden Sie eine Private Message an Rosco  Schreiben Sie einen Gästebucheintrag für Rosco

Beiträge: 19
Registriert: 29.10.2014

SolidWorks 2013 x64, SP3.0

erstellt am: 17. Nov. 2014 16:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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)


Sehen Sie sich das Profil von Christian_W an!   Senden Sie eine Private Message an Christian_W  Schreiben Sie einen Gästebucheintrag für Christian_W

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Rosco 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von Rosco an!   Senden Sie eine Private Message an Rosco  Schreiben Sie einen Gästebucheintrag für Rosco

Beiträge: 19
Registriert: 29.10.2014

SolidWorks 2013 x64, SP3.0

erstellt am: 18. Nov. 2014 10:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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)



Sehen Sie sich das Profil von StefanBerlitz an!   Senden Sie eine Private Message an StefanBerlitz  Schreiben Sie einen Gästebucheintrag für StefanBerlitz

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Rosco 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von Rosco an!   Senden Sie eine Private Message an Rosco  Schreiben Sie einen Gästebucheintrag für Rosco

Beiträge: 19
Registriert: 29.10.2014

SolidWorks 2013 x64, SP3.0

erstellt am: 20. Nov. 2014 09:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von Rosco an!   Senden Sie eine Private Message an Rosco  Schreiben Sie einen Gästebucheintrag für Rosco

Beiträge: 19
Registriert: 29.10.2014

SolidWorks 2013 x64, SP3.0

erstellt am: 20. Nov. 2014 15:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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)


Sehen Sie sich das Profil von Christian_W an!   Senden Sie eine Private Message an Christian_W  Schreiben Sie einen Gästebucheintrag für Christian_W

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Rosco 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von Rosco an!   Senden Sie eine Private Message an Rosco  Schreiben Sie einen Gästebucheintrag für Rosco

Beiträge: 19
Registriert: 29.10.2014

SolidWorks 2013 x64, SP3.0

erstellt am: 21. Nov. 2014 10:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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 >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz