| | | 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
Beiträge: 19 Registriert: 29.10.2014 SolidWorks 2013 x64, SP3.0
|
erstellt am: 05. Nov. 2014 08:30 <-- editieren / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben: Nur für Rosco
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
Beiträge: 2776 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 05. Nov. 2014 10:16 <-- editieren / zitieren --> Unities abgeben: Nur für Rosco
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
Beiträge: 19 Registriert: 29.10.2014 SolidWorks 2013 x64, SP3.0
|
erstellt am: 05. Nov. 2014 11:50 <-- editieren / zitieren --> Unities abgeben:
|
Carsten1210 Mitglied staatl. geprüfter Holztechniker
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 / zitieren --> Unities abgeben: Nur für Rosco
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
Beiträge: 19 Registriert: 29.10.2014 SolidWorks 2013 x64, SP3.0
|
erstellt am: 05. Nov. 2014 13:29 <-- editieren / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben: Nur für Rosco
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|