Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Objektnamen für Linien in Solidworks ???

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
  
SOLIDWORKS 3D CAD Grundlagen E-Learning (SOLIDWORKS)
Autor Thema:  Objektnamen für Linien in Solidworks ??? (1624 mal gelesen)
derMarco
Mitglied



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

Beiträge: 20
Registriert: 15.10.2009

erstellt am: 15. Okt. 2009 18:33    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

guten Tag,
ich habe ein Makro geschrieben, welches aus einer excel-datei
koordinaten ausliest und in einer solidworksskizze Splines erzeugt
es werden insgesamt 52 Splines in einer 3D-Skizze erzeugt

nun zu meinem Problem:
ich möchte nun eine ausgeformte Oberfläche erzeugen, wobei
2 der zuvor erzeugten Splines Profile sind und die anderen 50 Splines Leitkurven darstellen.
wenn ich dies mit dem Rekorder aufzeichne erhalte ich folgenden code

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
Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc
Set SelMgr = Part.SelectionManager
Dim pwPhotoWorks As PhotoWorks.PhotoWorks
Set pwPhotoWorks = swApp.GetAddInObject("PhotoWorks.PhotoWorks")
Dim pwOpt As PhotoWorks.PwOptions
Set pwOpt = pwPhotoWorks.PwOptions
boolstatus = Part.Extension.SelectByID2("3D-Skizze1","SKETCHCONTOUR", 290.7187994872, 74.04444277316, 58.599998, True, 0,Nothing, 0)
.
.
.
Part.InsertLoftRefSurface2 False, True, False, 1, 0, 0, False


die Punkte sollen aber später verschoben werden, wodurch  "290.7187994872, 74.04444277316, 58.599998" etc. nicht mehr richtig ist.

wie kann ich also eine Linie anhand ihres Namens (z.B. Line1) auswählen oder ihr bei der Erzeugung einen Objektnamen zuweisen?

vilen dank schonmal für kommende Antworten

Marco


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

Torsten Niemeier
Ehrenmitglied V.I.P. h.c.
Maschinenbau Ingenieur



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

Beiträge: 3682
Registriert: 21.06.2001

"ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform
** CSWP 04/2011 **
** CSWE 08/2011 **

erstellt am: 15. Okt. 2009 18:37    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 derMarco 10 Unities + Antwort hilfreich

Hallo Marco,

passiert das beides in demselben Macro? Also das Erstellen der Linien und das spätere Auswählen?

Gruß, Torsten

[Diese Nachricht wurde von Torsten Niemeier am 15. Okt. 2009 editiert.]

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

derMarco
Mitglied



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

Beiträge: 20
Registriert: 15.10.2009

erstellt am: 15. Okt. 2009 19:59    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 Torsten,

ja es sollte im selben makro passieren.

gruß marco

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

Torsten Niemeier
Ehrenmitglied V.I.P. h.c.
Maschinenbau Ingenieur



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

Beiträge: 3682
Registriert: 21.06.2001

"ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform
** CSWP 04/2011 **
** CSWE 08/2011 **

erstellt am: 15. Okt. 2009 20: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 derMarco 10 Unities + Antwort hilfreich

Ok, ich weis jetzt nicht, wie Du die Splines erzeugst, aber wenn Du es z.B. mit
sowas:

Dim swSketchSeg1 As SldWorks.SketchSegment
...
Set swSketchSeg1 = swModel.CreateSpline(vPtData)

machst, könntest Du später ja beim Auswählen auf die Variable swSketchSeg1 zurückgreifen:

swSketchSeg1.select4

Gruß, Torsten

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

derMarco
Mitglied



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

Beiträge: 20
Registriert: 15.10.2009

erstellt am: 16. Okt. 2009 14:18    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,
die Splines werden mit der funktion:

Part.SketchSpline intptnr1, Val(points(x)), Val(points(y)), Val(points(z))

eingefügt und befinden sich danach alle in der selben skizze.

kann ich beim Einfügen der Splines festlegen, dass sie evtl als feature eingefügt werden oder ihnen dann einen Objektnamen geben?

und wie sähe dann der Sourcecode aus

danke schonmal

Marco

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

Thomas5
Mitglied
Konstrukteur, SWX-Admin


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

Beiträge: 420
Registriert: 14.07.2003

SWX2013

erstellt am: 16. Okt. 2009 16:13    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 derMarco 10 Unities + Antwort hilfreich

Hallo Marco,
der Torsten hat ja geschrieben, daß Du das Objekt haben mußt, um es selektieren zu können.
Genau so mußt Du das Objekt haben, um seinen Namen rauszubekommen. Weil Linien, Punkte keine so tollen Namen haben setzt SWXSolidWorks diese aus der ID-Nr. zusammen, z.B. für eine Linie: "Line" & Format(ID1(1), "#")
Code:
'swSketchSegment ist ein Linien-Objekt
ID1 = swSketchSegment.GetID
boolstatus = part.Extension.SelectByID2("Line" & Format(ID1(1), "#"), "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)

So kannst Du´s selektieren, ohne den Punkt zu haben.
Aber Du mußt halt vorher schon mal das Objekt gehabt haben, damit Du an die ID kommst.
Ich denke, unmittelbar nach deiner Linienerzeugung ist diese selektiert.
Da mußt Du mit .getSelectedObject dir das Objekt holen. Und entweder Du "merkst" Dir dann gleich das Objekt, oder eben die ID. Kommt mitunter auf´s gleiche raus.
Frohes Schaffen wünsche Ich!
Thomas

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

derMarco
Mitglied



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

Beiträge: 20
Registriert: 15.10.2009

erstellt am: 21. Okt. 2009 16:08    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,

danke für die hilfe soweit.
ich bekomms aber leider immer noch nicht hin.
ich habe jetzt die Zeile :

Code:
variable = swApp.ActiveDoc.SelectionManager.GetSelectedObject

unmittelbar nach der erzeugung einer Spline eingefügt
und bekomme die fehlermeldung, dass das Argument nicht optional sei.


weiterhin habe ich mal folgende zeile an der selben stelle eingefügt :

Code:
variable = swApp.ActiveDoc.SelectionManager.GetSelectedObjectCount

der inhalt der variablen ist "0"
daraus schließe ich, dass die splines nach ihrer erzeugung nicht selektiert sind.
wie kann ich das ändern?


wie kann ich die objekte bzw. deren ids speichern?

[Diese Nachricht wurde von derMarco am 21. Okt. 2009 editiert.]

[Diese Nachricht wurde von derMarco am 21. Okt. 2009 editiert.]

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

Thomas5
Mitglied
Konstrukteur, SWX-Admin


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

Beiträge: 420
Registriert: 14.07.2003

SWX2013

erstellt am: 21. Okt. 2009 16: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 Nur für derMarco 10 Unities + Antwort hilfreich

Hallo Marco,
Du hast recht: Dein Spline ist nach dem Einfügen nicht selektiert. Also kommst Du da auch so nicht ran.
Mit sketch.GetSplineCount und sketch.GetSplines kannst Du ja vor dem Splineeinfügen die vorhanden Splines und deren Namen holen. Nach dem Einfügen ist dann der, dessen Name Du noch nicht hattes also Dein neuer Spline.
Wenn Du noch gar keinen Spline hattest, sind dann alle mit sketch.GetSplines geholten Splines Deine hinzugefügten.
Sollte so funktionieren.
Viele Grüße!
Thomas

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

derMarco
Mitglied



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

Beiträge: 20
Registriert: 15.10.2009

erstellt am: 23. Okt. 2009 12: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

hallo,
wie rufe ich die funktion sketch.getsplines auf ?

habs jetzt stundenlang versucht und bekomme andauernd die fehlermeldung:
argument ist nicht otional.

wäre sehr dankbar für ein beispiel.

gruß Marco

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

Thomas5
Mitglied
Konstrukteur, SWX-Admin


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

Beiträge: 420
Registriert: 14.07.2003

SWX2013

erstellt am: 23. Okt. 2009 14: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 Nur für derMarco 10 Unities + Antwort hilfreich

Hallo Marco,
versuch´s mal so:
Code:
Option Explicit

Sub main()
Dim swApp As Object
Dim part  As Object
Dim swSelMgr As Object
Dim theSketch As Object
Dim MeinSpline As Object
Dim Segmente As Variant
Dim ID As Variant
Dim retv As Boolean
Dim SplineName As String
Dim i As Long

Set swApp = CreateObject("SldWorks.Application")
Set part = swApp.ActiveDoc

Set swSelMgr = part.SelectionManager
Set theSketch = part.GetActiveSketch2
If theSketch Is Nothing Then Exit Sub
Segmente = theSketch.GetSketchSegments
For i = 0 To UBound(Segmente)
    If Segmente(i).GetType = swSketchSPLINE Then
        Set MeinSpline = Segmente(i)
        ID = MeinSpline.GetID
        SplineName = "Spline" & Format(ID(1), "#")
        retv = part.Extension.SelectByID2(SplineName, "SKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
        'MeinSpline.Select4 True, Nothing
    End If
Next
End Sub



Bei mir werden alle Spines in der offenen Skizze grün.
Übrigens: Anstelle mit "part.Extension.SelectByID2" erreichst Du mit "MeinSpline.Select4" das gleiche. Brauchst halt da den Namen nicht.
Die Sache mit .getsplines ist dann doch nicht das gewesen, was Du brauchst.
Viele Grüße!
Thomas

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

derMarco
Mitglied



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

Beiträge: 20
Registriert: 15.10.2009

erstellt am: 28. Okt. 2009 16:01    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 Thomas,

habe deinen Code eingebaut. Danke vielmals.


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