Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Skizzen auslesen

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
  
Bechtle stärkt PLM-Geschäft mit Neugründung, eine Pressemitteilung
Autor Thema:  Skizzen auslesen (775 mal gelesen)
bastl braucht hilfe
Mitglied



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

Beiträge: 32
Registriert: 09.08.2005

erstellt am: 27. Sep. 2005 10:06    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!


Folgendes Problem, ich möchte durch Anklicken in einer Baugruppe ein Bauteil auswählen.
Dieses Bauteil besitzt auf einer Skizze einen Punkt, der mit Hilfe eines Makros auf einem Skizzenpunkt in der Baugruppe dekungsgleich gesetzt werden soll.

Mein Problem:
Das Bauteil auszuwählen ist kein Problem, aber wie kann ich aus dem gewählten Bauteil auf die Skizze und den auf ihr angelegten Positionierpunkt zugreifen?

Hat einer von euch hierzu eine Idee, die API-Hilfe bringt mich nicht wirklich weiter und die Beispieldaten aus der Hilfe laufen nicht Fehlerfrei!

Danke und Gruß bastl

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: 27. Sep. 2005 17: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 bastl braucht hilfe 10 Unities + Antwort hilfreich

Wenn Du den Namen von Punkt und Skizze weißt, kannst Du ihn doch mit SelectByID auswählen, mit AndSelectByID den Punkt der Baugruppe dazu und beide verknüpfen...

------------------
Lutz Federbusch
Mein Gästebuch

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

bastl braucht hilfe
Mitglied



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

Beiträge: 32
Registriert: 09.08.2005

erstellt am: 28. Sep. 2005 13:56    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

Soweit bin ich auch schon!
Das Problem, das ich habe ist, dass ich weder weiß wie der Punkt noch wie die Skizze heißt!
Der Punkt wird durch anklicken ausgewählt und soll erkannt werden.
Mir wäre schon geholfen, wenn ich mit dem SelectionManager den genauen Namen des Punktes auslesen könnte!
Also z.B. Punkt1@Skizze1@.........

Hat jemand hierzu Erfahrungen.

Folgender Quelltext:


For i = 1 To swSelMgr.GetSelectedObjectCount
                 
        'Set swComp11 = swSelMgr.GetSelectedObjects6(i, 0)
                 
        'MsgBox swComp.Name
        typ = swSelMgr.GetSelectedObjectType(i)
       
        If swSelMgr.GetSelectedObjectType(i) = swSelEXTSKETCHPOINTS Then
        Skizzenpunkt = True
'        set d = swComp.IGetTemporaryBodyID
      ' Set swpunkt11 = swSelMgr.getSelEXTSKETCHPOINTS(i, 0)

        Set swpunkt = swSelMgr.GetSelectedObject6(i, 0)
       
         
       
       
       
       
        Else
       
        Set swComp11 = swSelMgr.GetSelectedObjectsComponent3(i, 0)
       
        MsgBox swComp11.Name
       
        Normteil = True
         
    End If
 

Next

Das Teil wird über Component erkannt, beim Punkt bleibt die Variable leer!
An was könnte dies liegen?

Danke und Gruß bastl

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: 28. Sep. 2005 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 bastl braucht hilfe 10 Unities + Antwort hilfreich

Wozu brauchst Du den Namen?! Entweder Du nimmst ihn, wie er ausgewählt ist, oder Du benennst ihn vorher immer als X-PUNKT@Punktskizze und Dir reicht der Name der zugehörigen Komponente...
Sag' mal bitte, was Du genau vor hast mit ihm?!

------------------
Lutz Federbusch
Mein Gästebuch

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

bastl braucht hilfe
Mitglied



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

Beiträge: 32
Registriert: 09.08.2005

erstellt am: 28. Sep. 2005 15: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

hi!

der genaue plan ist, dass ich in einem bauteil punkte an stellen anbringe, an denen ich später in der baugruppe ein intelligentes feature einbauen will(SWX2006).
hierzu erstelle ich im einzelteil einen punkt.
dann erstelle ich eine baugruppe und ziehe mein "normteil" rein. dieses enthält einen definierten und bekannten punkt, den ich mit dem in dem anderen bauteil deckungsgleich setzten will.

also in baugruppe punkt und normteil anklicken und dieses mit makro deckungsgleich setzen.

hierzu weiß ich nicht wie der punkt in teil genau heißt und auf welcher skizze er ist!
mit dem selectionmanager kann ich den punkt uaswählen, leider gibt er mir weder name noch id aus.
siehe quelltext

hoffe es wurde deutlicher was ich eigentlich will ;-)

gruß sebastian

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

G. Dawg
Ehrenmitglied V.I.P. h.c.
Teamleiter FEM Simulation



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

Beiträge: 2622
Registriert: 12.07.2004

SolidWorks_2o2o SP3.o
Win10_x64, Quadro_P2ooo.
VisualStudio_2o19_Pro.
FEM: Forge_NxT_HPC, ANSYS_WB.
3D-Printer: Ultimaker_2, Tinker_Gnome.

erstellt am: 28. Sep. 2005 16: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 Nur für bastl braucht hilfe 10 Unities + Antwort hilfreich

Du kannst das Ganz auch mit "Makro, aufzeichnen" machen... So habe ich zB auch die Funktion Distanz Null zwischen zwei Flächen erstellt!
-> 2 Flächen auswählen, [F3], Flächen haben abstand Null!
Das ist eine Sache von 2 Minuten... oder ich verstehe nicht ganz was Du machen willst...

------------------
you can't change the world but you can leave a dent
------------------

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

bastl braucht hilfe
Mitglied



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

Beiträge: 32
Registriert: 09.08.2005

erstellt am: 28. Sep. 2005 16: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

komplex ich weiß!

hauptproblem:

ich klicke in einer baugruppe einen punkt, der sich einem teil befindet an.
mit dem selectionmanager will ich nun diesen punkt erfassen.
er wird zwar als punkt erkannt, ich kann ihn aber keiner variablen zuweisen. daher will ich den namen auslesen um ihn über selectbyid wieder zu erfassen!

anregungen?

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: 28. Sep. 2005 17: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 bastl braucht hilfe 10 Unities + Antwort hilfreich

Probiere mal das: Hier wird mit dem Punkt eine 3D-Skizze angelegt und der Punkt darin erzeugt. Name und Objekt bekommst Du geliefert. Eleganter weiß ich's auch nicht...


Sub Punktname()

Dim swApp As Object
Dim activeDocument As Object
Dim selEntity As Object
Dim SelMgr As Object
Dim owningComponent As Object
Dim Teil As Object
Dim selType As Long
Dim componentName As String
Dim Teilname As String
Dim Punkt As Object
Dim Punktname
Dim mypt
Dim ret As Boolean
Dim skizze As Object
Dim Sketchfeature As Object

Const swSelSKETCHPOINTS = 11
Const swSelEXTSKETCHPOINTS = 25
Const swDocPART = 1
Const swDocASSEMBLY = 2
Const swDocDRAWING = 3
Const swSelEDGES = 1
Const swSelFACES = 2
Const swSelVERTICES = 3

Set swApp = CreateObject("SldWorks.Application")
Set activeDocument = swApp.ActiveDoc
Teilenummer = " - leer - "
If (activeDocument.GetType = swDocPART) Then        ' Teil?
    MsgBox ("Makro funktioniert nur in Baugruppen und Zeichnungen!")
    Exit Sub
End If
Set SelMgr = activeDocument.SelectionManager        ' SelectionMgr zuweisen
selType = SelMgr.GetSelectedObjectType2(1)          ' Objekttyp ermitteln
If (selType = swSelVERTICES) Or (selType = swSelSKETCHPOINTS) Or (selType = swSelEXTSKETCHPOINTS) Then  ' Isses ein Punkt?
    Set selEntity = SelMgr.GetSelectedObject3(1)    ' Gewähltes Objekt zuweisen
    Set owningComponent = selEntity.GetComponent    ' Ermitteln des Teiles zum angeklickten Objekt
    Set Teil = owningComponent.GetModelDoc          ' Ermitteln des kompletten Pfades
    Teilname = Teil.GetPathName
    componentName = owningComponent.Name            ' Übergabe des Komponentennamens
    mypt = SelMgr.GetSelectionPoint(1)
    If Punktname = "" Then
        Teil.Insert3DSketch2 (False)
        Set skizze = Teil.GetActiveSketch2
        Set Punkt = Teil.CreatePoint2((mypt(0)), (mypt(1)), (mypt(2)))
        'Punktname = Punkt.GetID                    ' ist auch nicht gerade spannend; da Skizze neu ist, wird der Punkt "Punkt1" heißen
        Set Sketchfeature = skizze.GetSpecificFeature
        Teil.EditRebuild
    End If
    MsgBox ("Gewählte Komponente    " + componentName + vbCrLf + "Datei                                " + Teilname + vbCrLf + "Koordinaten des Punktes  " + CStr(mypt(0)) + " " + CStr(mypt(1)) + " " + CStr(mypt(2)) + vbCrLf + "Name des Punktes            Punkt1@" + Sketchfeature.Name)
Else
    swApp.SendMsgToUser "Bitte wählen Sie einen Punkt oder Skizzenpunkt aus!"
End If
End Sub

------------------
Lutz Federbusch
Mein Gästebuch

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

bastl braucht hilfe
Mitglied



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

Beiträge: 32
Registriert: 09.08.2005

erstellt am: 29. Sep. 2005 08: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 Lutz!
Danke für deine Hilfe, leider funktioniert dein Makro bei mir nicht wirklich.
In SWX2006 und in 2004 funktioniert das Makro bis zu:

Set owningComponent = selEntity.GetComponent ' Ermitteln des Teiles zum angeklickten Objekt
Set Teil = owningComponent.GetModelDoc ' Ermitteln des kompletten Pfades
Teilname = Teil.GetPathName
componentName = owningComponent.Name ' Übergabe des Komponentennamens
mypt = SelMgr.GetSelectionPoint(1)


Bei allen diesen Zeilen kommt Objekt unterstützt diese Eigenschaft oder Methode nicht!

Hast du eine Idee an was das liegen könnte?
Unter welcher Version arbeitest du/ist dieses Makro entstanden?

Danke und Gruß
Sebastian

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: 29. Sep. 2005 10: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 Nur für bastl braucht hilfe 10 Unities + Antwort hilfreich

Läuft bei mir, genauso wie es hier steht, unter 2001+ und 2005 auf Anhieb.
Wenn es bei Dir abbricht, drücke mal bitte auf Debuggen und sage, welche (der Abbruch erfolgt bei der ersten fehlerhaften Methode, die vom Objekt verlangt wird) Zeile gelb unterlegt ist!
Es sind nur Funktionen, die schon SW2001+ unterstützt, enthalten und die können die neueren SW-Versionen eigentlich alle auch noch...
Was sagen denn die anderen dazu, läufts?!

------------------
Lutz Federbusch
Mein Gästebuch

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

bastl braucht hilfe
Mitglied



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

Beiträge: 32
Registriert: 09.08.2005

erstellt am: 29. Sep. 2005 10:27    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!

Also die erste Zeile bei der SWXSolidWorks meckert ist Folgende:

Set owningComponent = selEntity.GetComponent    ' Ermitteln des Teiles zum angeklickten Objekt

Habe es auch in 2004 probiert und da war genau der gleiche Fehler!
Es erscheint immer "Objekt unterstützt diese Eigenschaft oder Methode nicht"!

Kann das an einer Einstellung an VB liegen?
Was könnte ich tun um das Programm zum laufen zu bringen?

gruß Sebastian

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: 29. Sep. 2005 11: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 Nur für bastl braucht hilfe 10 Unities + Antwort hilfreich


Verweise.jpg

 
Schau mal bitte im VBA-Editor, wenn das Makro zum Bearbeiten geladen ist, unter EXTRAS-VERWEISE, ob die Häkchen sind wie im Bild. Fehlt ein Verweis, kennt SW die Methode nicht.
Die GetComponent-Methode ist eigentlich immer unverändert geblieben und die Objekte sind deklariert...

Läuft denn dieses Beispiel aus der API-Hilfe?

Option Explicit
Sub main()
    Dim swApp                  As SldWorks.SldWorks
    Dim swModel                As SldWorks.ModelDoc2
    Dim swSelMgr                As SldWorks.SelectionMgr
    Dim swEnt                  As SldWorks.Entity
    Dim swComp                  As SldWorks.Component2
    Dim bRet                    As Boolean

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swSelMgr = swModel.SelectionManager
    Set swEnt = swSelMgr.GetSelectedObject5(1)
    Set swComp = swEnt.GetComponent
    MsgBox "Baugruppe : " & swModel.GetPathName
    If Not swComp Is Nothing Then
        MsgBox "Gewählte Komponente : " & swComp.Name2 & " --> " & swComp.GetPathName
    Else
        MsgBox "  Komponente kann nicht ermittelt werden"
    End If
End Sub

------------------
Lutz Federbusch
Mein Gästebuch

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

bastl braucht hilfe
Mitglied



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

Beiträge: 32
Registriert: 09.08.2005

erstellt am: 29. Sep. 2005 11:17    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 Lutz.

Also bei mir sieht das Memü genauso aus wie bei dir!
Das Makro mit dem Pfadname läuft perfect.
Ich bräuchte halt eine Möglichkeit die Bezeichnung des Punktes in der Baugruppe zu ermitteln.
Also z.B. Punk1@Skizze2@Teil3@Baugruppe4

gruß Sebastian

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: 29. Sep. 2005 11: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 bastl braucht hilfe 10 Unities + Antwort hilfreich

O.K., dann tausche mal in dem nichtlaufenden Makro alle DIM-Zeilen gegen das hier aus; dadurch sind die Typen strenger definiert:

Dim swApp As SldWorks.SldWorks
Dim activeDocument As SldWorks.ModelDoc2
Dim selEntity As SldWorks.Entity
Dim SelMgr As SldWorks.SelectionMgr
Dim owningComponent As SldWorks.Component2
Dim Teil As SldWorks.ModelDoc2
Dim selType As Long
Dim componentName As String
Dim Teilname As String
Dim Punkt As SldWorks.SketchPoint
Dim Punktname
Dim mypt
Dim ret As Boolean
Dim skizze As SldWorks.Sketch
Dim Sketchfeature As SldWorks.Feature

------------------
Lutz Federbusch
Mein Gästebuch

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

bastl braucht hilfe
Mitglied



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

Beiträge: 32
Registriert: 09.08.2005

erstellt am: 29. Sep. 2005 12: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

Tja diesmal hat er schon beim dieser Zeile gesponnen:

Set selEntity = SelMgr.GetSelectedObject3(1)    ' Gewähltes Objekt zuweisen

Habe dann die selEntity-Declaration geändert, dann lief es wie bisher bis owning component!

habe Visualbasic 6 und habe schon in den Optionen geschaut, aber gefunden habe ich nichts.

Hast du noch ideen?

gruß

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: 29. Sep. 2005 12: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 bastl braucht hilfe 10 Unities + Antwort hilfreich

Weiß nicht, was nun noch faul ist bei Dir. Es sind bis auf
Set selEntity = swSelMgr.GetSelectedObject5(1)
exakt die gleichen Aufrufe wie in dem kleineren Makro, was bei Dir läuft?!?
Bei mir laufen alle Varianten. Ich habe aber kein VB6 auf dem Rechner. Vielleicht drängelt sich da was vor?

------------------
Lutz Federbusch
Mein Gästebuch

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: 29. Sep. 2005 13: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 Nur für bastl braucht hilfe 10 Unities + Antwort hilfreich

Den Baugruppennamen bekommst Du gleich am Anfang einzeln mit BGName=activeDocument.GetTitle.
Wenn das Makro bei Dir liefe, hättest Du in der Variablen componentName von oben angefangen die Namen der Haupt-UnterBaugruppen-Teil-Zuordnung inklusive der Instanz... müßtest Du höchstens noch zerpflücken, wenn Du alles einzeln brauchst.

------------------
Lutz Federbusch
Mein Gästebuch

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

bastl braucht hilfe
Mitglied



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

Beiträge: 32
Registriert: 09.08.2005

erstellt am: 29. Sep. 2005 15: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

Naja habe mir einen anderen Weg überlegt wie ich diese Problematik lösen kann!
Könnte für Intelligente Feature unter SWX2006 interessant sein.
In einer Baugruppe einen Skizzenpunkt wählen auf dem ein anderes Element (in unserem Fall ein Normteil) positioniert werden soll und ein Normteil wählen, dann Makro starten!
Der Positionierpunkt des Normteils wird automatisch mit dem ausgewählten Skizzenpunkt deckungsgleich gesetzt!

Hier mal der Quelltext:

Sub main()
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swSelMgr As SldWorks.SelectionMgr
    Dim swComp As SldWorks.Component2
    Dim Part As Object
    Dim c As String
    Dim d As String
    Dim TeilName As String
    Dim retval As Boolean
    Dim boolstatus As Boolean
    Dim SelMgr As Object
    Dim longstatus As Long, longwarnings As Long
    Dim Skizzenpunkt As Boolean
    Dim Normteil As Boolean
    Dim BGname As String
     
'------------------------------------------------------------------------------
    Set swApp = Application.SldWorks
    Set Part = swApp.ActiveDoc
   
    BGname = Part.GetTitle
    c = StrReverse(BGname) ' dreht string um um und löscht Dateibezeichnung
    d = Mid(c, InStr(c, ".") + 1)
    BGname = StrReverse(d)

    Set swSelMgr = Part.SelectionManager
   
       
    For i = 1 To swSelMgr.GetSelectedObjectCount
   
        If swSelMgr.GetSelectedObjectType(i) = swSelEXTSKETCHPOINTS _
                Or swSelMgr.GetSelectedObjectType(i) = swSelVERTICES _
                Or swSelMgr.GetSelectedObjectType(i) = swSelSKETCHPOINTS Then
       
            Skizzenpunkt = True
        Else
            j = i
            Set swcomp11 = swSelMgr.GetSelectedObjectsComponent3(j, 0)
           
            TeilName = "Punkt1@Positionierskizze@" + swcomp11.Name + "@" + BGname
            Normteil = True
    End If
 

    Next
    swSelMgr.DeSelect (j) 'delselektiert das Normteil, damit nicht 3 Auswahlen existieren
   
    If (Skizzenpunkt = False And Normteil = False) Then
    MsgBox "Bitte einen Positionierpunkt auf dem Bauteil und ein Normteil wählen!"
    End
    End If
    If i > 3 Then
    MsgBox "Zu viele Auswahlen, bitte nur einen Punkt und ein Normteil auswählen!"
    End
    End If

    boolstatus = Part.Extension.SelectByID2(TeilName, "EXTSKETCHPOINT", 0, 0, 0, True, 0, Nothing, 0)
   
    Set Feature = Part.AddMate2(0, -1, False, 0.02464807137666, 0, 0, 1, 1, 0.5235987755983, 0.5235987755983, 0.5235987755983, longstatus)
    Part.ClearSelection2 True
    retval = Part.EditRebuild3()
    End Sub

Viele Grüße und danke,
Sebastian

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