Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Makro zum Selektieren eines neuen Stützelement's

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
Autor Thema:  Makro zum Selektieren eines neuen Stützelement's (1591 mal gelesen)
Vladi1991
Mitglied
Student

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

Beiträge: 9
Registriert: 16.11.2015

Win10 Pro 64
Intel Xeon E3-1231v3 3,4GHz 8GB
NVidia GTX 970
Catia V5R19

erstellt am: 16. Nov. 2015 10: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

Hallo zusammen,

ich versuche mich gerade an einem Makro, bei dem der Benutzer eine Fläche oder Eben auswählen kann und diese dann als neues Stützelement für eine Skizze benutzt wird.
Probleme sind:
-Bei der Makroaufnahme, zur Auswahl eines neuen Stützelements,  wird die Skizze bezogen, die beim durchführen ein Fehler ausgibt und als "Nothing" angezeigt wird.

-Das zweite Problem ergibt sich bei Selektion, denn wenn ich das richtig Verstanden habe, definiere ich meine Selektion als String. Wie kann ich diese Selektion mit der Makroaufnahme kombinieren?

Weiter Information: Ich arbeite im Sheetmetaldesign.
--------Die Makroaufnahme:---------
Sub CATMain()

Dim partDocument1 As PartDocument
Set partDocument1 = CATIA.ActiveDocument
Dim part1 As Part
Set part1 = partDocument1.Part

'part1.Update

Dim bodies1 As Bodies
Set bodies1 = part1.Bodies
Dim body1 As Body
Set body1 = bodies1.Item("Hauptkörper")
Dim shapes1 As Shapes
Set shapes1 = body1.Shapes
Dim solid1 As Solid
Set solid1 = shapes1.Item("Sperre.Ausschnitt")

Dim sketch1 As Sketch
Set sketch1 = solid1.GetItem("Sperre.Skizze") 'Fehler

part1.UpdateObject sketch1
End Sub

-----Der Programmcode für die Selektion:-----
    'Selektion definieren und leeren
    Dim uSel As Selection
    Dim uSelLB As Object
    Dim selTyp(1) As Variant
    Dim sState As String
    selTyp(0) = "Plane"
    selTyp(1) = "Face"
    Set uSel = CATIA.ActiveDocument.Selection
    Set uSelLB = uSel
    uSel.Clear
    sState = uSelLB.SelectElement2(selTyp, "Ebene o. Fläche", False)
    If sState = "Normal" Then
        MsgBox ("Klappt")
    Else
        MsgBox ("Falsch")
    End If
____________________

Wäre echt klasse wenn jemand mir helfen könnte. Bin leider noch ein Amateur was das angeht.

Gruß Vladi

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 16. Nov. 2015 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 Vladi1991 10 Unities + Antwort hilfreich

Hi Vladi, :-[

SelectElement2 mag 'as Selection' nicht.
Ausserdem ist nicht klar, wozu uSel gut ist.
Probier mal:

Code:

-----Der Programmcode für die Selektion:-----
    'Selektion definieren und leeren
'    Dim uSel As Selection
    Dim uSelLB As Object
    Dim selTyp(1) As Variant
    Dim sState As String
    selTyp(0) = "Plane"
    selTyp(1) = "Face" ' oder "PlanarFace"
'    Set uSel = CATIA.ActiveDocument.Selection
    Set uSelLB = CATIA.ActiveDocument.Selection
'    uSel.Clear
    uSelLB.Clear
    sState = uSelLB.SelectElement2(selTyp, "Ebene o. Fläche", False)
    If sState = "Normal" Then
        MsgBox ("Klappt")
    Else
        MsgBox ("Falsch")
    End If


Ausserdem: Sketches auf Faces zu beziehen ist keine gute Idee.

Tschau,
Joe

------------------
Inoffizielle Catia Hilfeseite

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 16. Nov. 2015 12:03    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 Vladi1991 10 Unities + Antwort hilfreich

Hallo Vladi,

kleiner Nachtrag.

Probier bitte

Code:

Sub CATMain()

Dim partDocument1 As PartDocument
Set partDocument1 = CATIA.ActiveDocument
Dim part1 As Part
Set part1 = partDocument1.Part

'part1.Update

Dim bodies1 As Bodies
Set bodies1 = part1.Bodies
Dim body1 As Body
Set body1 = bodies1.Item("Hauptkörper")
'Dim shapes1 As Shapes
'Set shapes1 = body1.Shapes
'Dim solid1 As Solid
'Set solid1 = shapes1.Item("Sperre.Ausschnitt")

Dim sketch1 As Sketch
Set sketch1 = body1.sketches.Item("Sperre.Skizze")

'part1.UpdateObject sketch1    'wozu der update?
End Sub



Kann es sein, dass Du nicht den VBA-Editor verwendest?

Tschau,
Joe

------------------
Inoffizielle Catia Hilfeseite

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

Vladi1991
Mitglied
Student

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

Beiträge: 9
Registriert: 16.11.2015

Win10 Pro 64
Intel Xeon E3-1231v3 3,4GHz 8GB
NVidia GTX 970
Catia V5R19

erstellt am: 16. Nov. 2015 12:04    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 für die Hilfe. Mit dem neuen Code spar ich einiges ein, da ich es jetzt auch sehe, dass viel unnötig war. Jedoch komme ich leider noch nicht weiter, was die Änderung des Stützelements angeht. Die Idee ist, dass ein Makro ein Ausschnitt mit dazugehöriger Skizze und Parameter in mein Part reinkopiert und der Benutzer nur auswählt worauf der Ausschnitt/Skizze erstellt werden soll. Das Kopieren und Selektieren klappt an sich schon, nur die Weiterverwendung und Änderung des Stützelements macht mir zu schaffen.

Gruß Vladi

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 16. Nov. 2015 12: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 Vladi1991 10 Unities + Antwort hilfreich

Servus
Nur so als Idee:
Schau dir statt einem Makro mal PowerCopys an.
Vielleicht geht damit ein Vorhaben einfacher.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

Vladi1991
Mitglied
Student

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

Beiträge: 9
Registriert: 16.11.2015

Win10 Pro 64
Intel Xeon E3-1231v3 3,4GHz 8GB
NVidia GTX 970
Catia V5R19

erstellt am: 16. Nov. 2015 12:25    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 Joe

leider taucht immer noch eine Fehlermeldung auf und Debug markiert mir die "Set sketch1..."-Zeile. Aber die Skizze selber liegt ja auch nicht direkt im Hauptkörper, sondern ist meinem Ausschnitt untergeordnet. Kann es vielleicht daran liegen ?

Gruß Vladi

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

Vladi1991
Mitglied
Student

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

Beiträge: 9
Registriert: 16.11.2015

Win10 Pro 64
Intel Xeon E3-1231v3 3,4GHz 8GB
NVidia GTX 970
Catia V5R19

erstellt am: 16. Nov. 2015 12: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

Hallo Bernd,
danke für Deinen Tipp. Ich hab es schon damit versucht, jedoch denke ich nicht, dass Powercopy für spätere Anwendung so gut wie das Makro sein kann, da ich im Makro zum Beispiel in der UserForm schon Parameter direkt eingeben und festlegen kann. Außerdem hatte ich noch paar Problem mit Powercopy, da im nächsten Schritt auch eine Wand an Kante am Ausschnitt angebracht werden soll und er mir die zwei Schritte nicht kombienieren konnte. Durch das Makro versuche ich das weitgehend zu automatisieren, sodass zu Beginn nur Parameter festgelegt werden sollen und im Verlauf zunächst Fläche, dann Kante selektiert werden zur Erstellung.

Gruß Vladi
Achja verwende den Visual Basic Editor.

[Diese Nachricht wurde von Vladi1991 am 16. Nov. 2015 editiert.]

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 16. Nov. 2015 15:15    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 Vladi1991 10 Unities + Antwort hilfreich

OK. Wie heisst die Skizze?

Was bekommst Du im Immediate-Window auf

Code:

? catia.ActiveDocument.part.bodies.item(1).sketches.item(1).name


Es sollte der Name des ersten Sketches des ersten Bodies des aktiven PartDocs sein.
(Gegebenenfalls anpassen)

Deinem Code nach zu urteilen müsste da 'Sperre.Skizze' kommen.

Wenn's geht, bitte noch einen Screenshot vom Baum mit Part, Body und Sketch.

Tschau,
Joe

------------------
Inoffizielle Catia Hilfeseite

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

Vladi1991
Mitglied
Student

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

Beiträge: 9
Registriert: 16.11.2015

Win10 Pro 64
Intel Xeon E3-1231v3 3,4GHz 8GB
NVidia GTX 970
Catia V5R19

erstellt am: 16. Nov. 2015 15:55    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


cadforum.JPG

 
Ja richtig der Name ist Sperre.Skizze. Bekomme Fehlermeldung "Object doesn´t support this property or method". Versuche den Screenshot mal als Anhang hoch zu laden.
Genaugenommen ist es die zweite Skizze, jedoch selber Fehler.

Gruß Vladi

[Diese Nachricht wurde von Vladi1991 am 16. Nov. 2015 editiert.]

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 16. Nov. 2015 18:51    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 Vladi1991 10 Unities + Antwort hilfreich

Servus
Die Collection der Sketches gehört direkt zum Body:
Code:
Set mySketch = body1.sketches.item("MeinSketchName")
Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 16. Nov. 2015 19:04    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 Vladi1991 10 Unities + Antwort hilfreich

Hi Vladi,

gemeint war, dass 'Sperre.Skizze' als Ergebnis zurückgegeben wird.

Und zwar auf:

? catia.ActiveDocument.part.bodies.item(1).sketches.item(1).name

Probier mal:

Code:

Sub Catmain()
  Dim oADP As Part
  Dim oMainBody As Body
  Dim oSK As Sketch
 
  Set oADP = CATIA.ActiveDocument.Part
  Set oMainBody = oADP.Bodies.Item("Hauptkörper")
  Set oSK = oMainBody.Sketches.Item("Sperre.Skizze")
  MsgBox oSK.Name
End Sub


Voraussetzungen:
Geöffnetes Part mit einer Skizze 'Sparre.Skizze' im PartBody(Hauptkörper).

Tschau,
Joe

------------------
Inoffizielle Catia Hilfeseite

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

Vladi1991
Mitglied
Student

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

Beiträge: 9
Registriert: 16.11.2015

Win10 Pro 64
Intel Xeon E3-1231v3 3,4GHz 8GB
NVidia GTX 970
Catia V5R19

erstellt am: 16. Nov. 2015 19: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

Hallo zusammen,
die Zuweisung stimmt jetzt für die Skizze. Bekomme den Namen der Skizze in der MsgBox angezeigt beim durchlaufen. Jetzt frag ich mich nur noch, wie ich dieser Skizze ein (neues) Stützelement zuweisen kann, dass der Benutzter selektiert hat. Jemand eine Idee ?
Vielen Dank an diese Stelle an Euch.

Gruß Vladi

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 16. Nov. 2015 19:45    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 Vladi1991 10 Unities + Antwort hilfreich

Hi Vladi,

Wenn ich raten sollte:

Mit 'SetAbsoluteAxisData'.

Hope it helps,
Joe

------------------
Inoffizielle Catia Hilfeseite

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)2023 CAD.de | Impressum | Datenschutz