Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Punkte in einer Skizze per Makro verschieben

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
  
InnovateNext 26. in Weisendorf, eine Veranstaltung am 11.11.2025
Autor Thema:  Punkte in einer Skizze per Makro verschieben (1504 mal gelesen)
Weißwurschtmampfer
Mitglied


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

Beiträge: 2
Registriert: 17.12.2008

erstellt am: 17. Dez. 2008 13:07    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

Tag,

vor einiger Zeit habe ich ein Modell konstruiert, für das eine Punktwolke eingelesen wurde, die anschliessend mit Bezier-Kurven verbunden wurde. Nun würde ich gerne die Positionen einiger der Punkte per Makro ändern. Da ich davon wenig Ahnung habe dachte ich es wäre am einfachsten, das einfach für einen Punkt mal aufzunehmen und dann die entsprechenden Teile in Schleifen zu packen. Jetzt ist es so, dass der Marko-Rekorder nur die Selektion des Punktes aufzeichnet, nicht aber dessen Verschiebung. Also habe ich versucht das Makro entsprechend zu erweitern.

Code:

Dim swApp As Object
Dim Part As Object
Dim SelMgr As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim Feature As Object
Dim Test As Object

Dim swSketchPt As SldWorks.SketchPoint


Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc
Set SelMgr = Part.SelectionManager

swApp.ActiveDoc.ActiveView.FrameState = 1

' Sketch auswählen
boolstatus = Part.Extension.SelectByID2("Skizze4", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
Part.EditSketch
Part.ClearSelection2 True

' Punkt auswählen
boolstatus = Part.Extension.SelectByID2("Point249", "SKETCHPOINT", 0.09936977044404, 0.07057302506552, 0, False, 0, Nothing, 0)
Set swSketchPt = SelMgr.GetSelectedObject6(1, -1)

' Punkt verschieben
boolstatus = swSketchPt.SetCoords(0.0992, 0.071, 0)
Part.ClearSelection2 True

End Sub


In der Zeile "boolstatus = swSketchPt.SetCoords(0.0992, 0.071, 0)" steigt das Makro allerdings mit der Fehlermeldung "Laufzeitfehler 91: Objektvariable oder With-Blockvariable nicht festgelegt" aus. Daraus werde ich nicht ganz schlau, denn die entsprechenden Objekte sind ja eigentlich alle definiert. Weiß jemand Rat?

Danke,

Der Weißwurschtmampfer

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

Lutz Federbusch
Ehrenmitglied V.I.P. h.c.
Dipl.-Ing. Maschinenbau



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

Beiträge: 3094
Registriert: 03.12.2001

alle SW seit 97+
AutoCAD2016-2022
ERP ProAlpha + CA-Link
Intel Core i7-7820K 32GB
Win10x64 Quadro K5000
SpacePilot

erstellt am: 17. Dez. 2008 13:36    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 Weißwurschtmampfer 10 Unities + Antwort hilfreich

Prüf mal, ob swSketchPt vielleicht nothing ist.
So nimmst Du nur irgendwas aus der Selektion, ohne zu prüfen, was da ausgewählt ist.
Leuchtet der Punkt, wenn das Makro stehenbleibt?

------------------
Lutz Federbusch
Mein Gästebuch
Der Mensch, Herr oder Sklave der Technik?

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

tbd
Mitglied
Teamleiter


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

Beiträge: 825
Registriert: 26.01.2006

Dell Percision T5400
Intel(R) Xeon(R) CPU
X5460 @ 3.16GHz
3,25 GB RAM
Nvidia Quadro FX 4600
-----
Win XP Prof SP 3
SW 2008 SP 5.0
PARTsolutions 8.1.08
Cideon SAP PLM 5.103.5.17
Visual Studio 2008

erstellt am: 17. Dez. 2008 13:42    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 Weißwurschtmampfer 10 Unities + Antwort hilfreich

Hallo Weißwurschtmampfer (was für ein Name)

SelMgr.GetSelectedObject6(1, -1) liefert die bei einem Skizzensegment, wie deinem Punkt zunächst nur eine Instanz auf die SldWorks.SketchSegment Klasse. Von dieser kannst du die SketchPoint Instanz ableiten.

Das müsste so funktionieren

Code:

Dim oSwSketchSegment As SldWorks.SketchSegment
Set oSwSketchSegment = SelMgr.GetSelectedObject6(1, -1)
Set swSketchPt = oSwSketchSegment
'Prüfen der Variablen
If swSketchPt Is Nothing Then Debug.Assert False

------------------
Mfg Daniel

www.MySldWorks.de - SolidWorks Api Snippets

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

Weißwurschtmampfer
Mitglied


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

Beiträge: 2
Registriert: 17.12.2008

erstellt am: 17. Dez. 2008 14:11    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,

erstmal Danke für die Hilfe. Die Puntke wurden tatsächlich nicht ausgewählt, obwohl dieser Teil des Makros ja aus dem Makrorekorder stammte. Die Lösung war dann die Koordinaten des Punktes aus der Zeile

Code:

boolstatus = Part.Extension.SelectByID2("Point249", "SKETCHPOINT", 0.09936977044404, 0.07057302506552, 0, False, 0, Nothing, 0)

zu löschen und stattdessen nur

Code:

boolstatus = Part.Extension.SelectByID2("Point249", "SKETCHPOINT", 0, 0, 0, False, 0, Nothing, 0)

zu schreiben. Dann wurde der Punkt korrekt ausgewählt. Der von Daniel vorgeschlagene Weg über SldWorks.SketchSegment hat nicht funktioniert, der Punkt mußte direkt über

Code:

Set swSketchPt = SelMgr.GetSelectedObject6(1, -1)

referenziert werden. Danke nochmal,

Der Typ der jetzt erstmal ne Wurscht mampft 

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

tbd
Mitglied
Teamleiter


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

Beiträge: 825
Registriert: 26.01.2006

Dell Percision T5400
Intel(R) Xeon(R) CPU
X5460 @ 3.16GHz
3,25 GB RAM
Nvidia Quadro FX 4600
-----
Win XP Prof SP 3
SW 2008 SP 5.0
PARTsolutions 8.1.08
Cideon SAP PLM 5.103.5.17
Visual Studio 2008

erstellt am: 17. Dez. 2008 14: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 Weißwurschtmampfer 10 Unities + Antwort hilfreich

Ich hatte da irgendwas mit den Sketchsegementen im Kopf. Ich habe wohl mal wieder etwas durcheinander gebracht. Zum Glück hat es ja geklappt!

Laß es dir schmecken 

------------------
Mfg Daniel

www.MySldWorks.de - SolidWorks Api Snippets

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