Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API - SketchSegment auf SketchPlane

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
  
Engineering in the Cloud: PLM in the Cloud for effective Processes
Autor Thema:  API - SketchSegment auf SketchPlane (1461 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: 05. Nov. 2014 08: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

Hallo liebe User,

ich suche eine Möglichkeit, ein SketchSegment (Circle, CreateCenterRectangle) auf eine SketchEbene zu positionieren. Mein Problem dabei ist, das '.CreateSketchPlane' nur ein boolean ausgibt und kein Object.
Eine Referenzebene aus den feature müsste ich hingegen vor der skizze erstellen, wobei ich da auch noch nicht weiß, wie ich den Kreis dann auf diese ausrichten kann, da die Argumente der SketchSegments ja nur Koordinaten sind.

aktuell sieht es so aus:

Code:

Set skPt1 = swPart.SketchManager.CreatePoint(DefPt1(i, 0), DefPt1(i, 1), DefPt1(i, 2))
Set skLinie = swPart.SketchManager.CreateLine(DefPt1(i, 0), DefPt1(i, 1), DefPt1(i, 2), DefPt2(i, 0), DefPt2(i, 1), DefPt2(i, 2))
'beachte: skLinie kann mitten im Raum liegen (auch schräg)!


skPt1.Select4 False, Nothing
skLinie.Select4 True, Nothing

skPlane = swPart.SketchManager.CreateSketchPlane(swConstraintType_COINCIDENT, swConstraintType_PERPENDICULAR, swConstraintType_INVALIDCTYPE)

skPt1.Select4 False, Nothing
'? select skPlane

'Annahme: skLinie ist parallel zur y-Achse --> Xp, Yp + a  oder Zp + a
'? skCirc = swPart.SketchManager.CreateCircle(DefPt1(i, 0), DefPt1(i, 1), DefPt1(i, 2), DefPt1(i, 0), DefPt1(i, 1) + a, DefPt1(i, 2) + a)


Angenommen, skLinie ist parallel zur Y-Achse:
Wenn ich im Befehl CreateCircle(XC, YC, Zc, Xp, Yp, Zp) bei Yp oder Zp einen Wert dazu addiere, zeichnet er mit den Kreis zwar mit Mittelpunkt bei SkPt1, aber egal wo ich den Wert dazu addiere, zeichnet er den Kreis immer parallel zur x-y-Basisebene.

Kann mir hier wer weiterhelfen?

Grüße, Rosco

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1358
Registriert: 24.07.2002

AutoCAD ACA 2019
Solidworks 2021 Sp5.1
Enterprise PDM 2021 Sp5
Pascam Woodworks
Visual Studio 2017 Pro
Windows 10 64Bit
Dell T3620
Intel Core i7-7700K
16 GB Arbeitsspeicher
2x Dell Ultrasharp U2415
Dell M4800

erstellt am: 05. Nov. 2014 09:44    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

Hi Rosco,

Wie selektierst du denn die Ebene auf der du den Kreis erstellen willst?!

Probier es mal so:

Code:

Boolstatus = swmodel.Extension.SelectByID2("Deine_Ebene", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
swmodel.SketchManager.InsertSketch(True)

Hier noch ein Link mit einen Beispiel.

Gruß, Carsten

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

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 05. Nov. 2014 10:16    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,

Versuch es mal mit SelectByID2 und dem Typ "SKETCHSURFACE", geht zumindest bei mir um zwischen Skizzenebenen zu wechseln.

Code:
boolstatus = swModel.Extension.SelectByID2("Ebene1", "SKETCHSURFACES", 0, 0, 0, False, 0, Nothing, 0)
swModel.ActivateSelectedFeature

Das fiese ist der Typ steht nicht in der API-Hilfe, habe hierzu einfach mal den Macrorecorder bemüht was dieser beim Ebenenwechsel tut  .

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

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: 05. Nov. 2014 11:50    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

Danke erst mal für die Antworten.

An SelectbyID hab ich auch schon gedacht, aber da müsste ich mir dann den Namen der Ebene immer zusammenbasteln, da ich mehrere Ebenen erstelle (der Code befindet sich in einer for-schleife).

die SketchEbene wird eben als boolean zurück gegeben: siehe
http://help.solidworks.com/2012/English/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.ISketchManager~CreateSketchPlane.html

Dim instance As ISketchManager
Dim Relation1 As Integer
Dim Relation2 As Integer
Dim Relation3 As Integer
Dim value As Boolean

value = instance.CreateSketchPlane(Relation1, Relation2, Relation3)

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1358
Registriert: 24.07.2002

AutoCAD ACA 2019
Solidworks 2021 Sp5.1
Enterprise PDM 2021 Sp5
Pascam Woodworks
Visual Studio 2017 Pro
Windows 10 64Bit
Dell T3620
Intel Core i7-7700K
16 GB Arbeitsspeicher
2x Dell Ultrasharp U2415
Dell M4800

erstellt am: 05. Nov. 2014 12:20    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

Hi Rosco,

Dann gibt den Ebenen doch gleich Namen mit wenn du die erstellst:

Code:
Dim myRefPlane As Object
        myRefPlane = swmodel.FeatureManager.InsertRefPlane(128, 0, 128, 0, 0, 0)
        swmodel.ClearSelection2(True)
        If myRefPlane Is Nothing Then ''Prüfen ob Ebene erstellt wurde
            Windows.Forms.MessageBox.Show("Fehler")
            Exit Sub
        End If
        Dim Ebene_Name As String = myRefPlane.name
        myRefPlane.name = "Meine_neue_Ebene"

Gruß, Carsten

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: 05. Nov. 2014 13:29    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 Carsten,

Referenzebenen und Sketchebenen sind aber nicht das gleiche. Wie im Befehl schon zu erkennen:

myRefPlane = swmodel.FeatureManager.InsertRefPlane(...)  ist ein Feature, ausserhalb einer Skizze  --> object.
skPlane = swPart.SketchManager.CreateSketchPlane(...)  ist eine Hilfsebene in einer Skizze -->  boolean.

Prinzipiell überlege ich auch gerade, Punkte, Linien und Ebenen erst über features/Referenzelemente zu erstellen, sie abzuspeichern und diese dann als Basis für eignen Skizzen mit den jeweiligen Kreisen udn Rechtecken zu verwenden.

[Diese Nachricht wurde von Rosco am 05. Nov. 2014 editiert.]

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1358
Registriert: 24.07.2002

AutoCAD ACA 2019
Solidworks 2021 Sp5.1
Enterprise PDM 2021 Sp5
Pascam Woodworks
Visual Studio 2017 Pro
Windows 10 64Bit
Dell T3620
Intel Core i7-7700K
16 GB Arbeitsspeicher
2x Dell Ultrasharp U2415
Dell M4800

erstellt am: 05. Nov. 2014 13:39    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

Hi Rosco,

Jetzt habe ich es dann auch gesehen das du die Skizzierebene benötigst.
Da kann ich dir so nicht weiter helfen.

Gruß, Carsten

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