Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Suchbereich auf Y+ Bereich vom Koordinatensystem zu begrenzen

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:   Suchbereich auf Y+ Bereich vom Koordinatensystem zu begrenzen (542 mal gelesen)
BLD1983
Mitglied
Konstrukteur


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

Beiträge: 37
Registriert: 27.09.2019

Catia V5 / R28 / R29
intel core i7-6700 cpu @ 3.40ghz
RAM: 32GB
64Bit

erstellt am: 21. Nov. 2019 10: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

Hallo.

*hoffe jetzt ist der richtige Bereich im Forum*

gibt es ein Möglichkeit/Befehl Suchbereich auf  Y+ Bereich im Koordinatensystem zu begrenzen?

------------------
Ich will es gar nicht wissen, aber ich muss.....Das Leben verlangt es.

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: 10957
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 21. Nov. 2019 11:05    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 BLD1983 10 Unities + Antwort hilfreich

Servus

Und was willst du suchen? Ich nehme an du willst Achsensysteme suchen?
Ich befürchte dass dies nicht (direkt) geht.
Ich würde die AxisSystems-Collection durcharbeiten (oder ggf per Search die Achsensysteme selektieren) und per GetOrigin entscheiden welches Achsensystem die Bedienung erfüllt und entsprechend selektieren bzw weiter verarbeiteten.

Gruß
Bernd

PS: Zu deiner Frage nach Literatur: siehe zB hier.
Zusätzlich sind fundierte Grundkenntnisse in VB(A) sehr nützlich/erforderlich.

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

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

BLD1983
Mitglied
Konstrukteur


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

Beiträge: 37
Registriert: 27.09.2019

Catia V5 / R28 / R29
intel core i7-6700 cpu @ 3.40ghz
RAM: 32GB
64Bit

erstellt am: 21. Nov. 2019 11:34    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 bgrittmann,

genaugesagt will ich im CatPart alle grünen Körper im Y+ Bereich suchen. und zum Körpernamen "GESPIEGELT" hinzufügen


PS:zumindest habe ich die richtige Literatur bestellt.


Besten Dank.

------------------
Ich will es gar nicht wissen, aber ich muss.....Das Leben verlangt es.

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: 10957
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 21. Nov. 2019 11:50    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 BLD1983 10 Unities + Antwort hilfreich

Servus

Ich würde so vorgehen:

  • Schleife über alle Bodies laufen lassen
  • falls der Körper "verboolet" ist (InBooleanOperation) diesen überspringen
  • Referenz vom Körper bilden (CreateReferenceFromObject)
  • per Measurable den Schwerpunkt bestimmen (GetCOG)
  • Schwerpunkt auswerten und falls erforderlich Körper umbenennen (vorher prüfen ob dieser schon umbenannt wurde)
Gruß
Bernd

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

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

BLD1983
Mitglied
Konstrukteur


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

Beiträge: 37
Registriert: 27.09.2019

Catia V5 / R28 / R29
intel core i7-6700 cpu @ 3.40ghz
RAM: 32GB
64Bit

erstellt am: 29. Nov. 2019 10:38    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


SCR.jpg

 
Hallo.

Diese Herausforderung hätte ich mal für mich gelöst.

Danke.

Nun hätte ich zwei Fragen:

1) kann man GetTechnologicalObject überhaupt auch auf einen Körper anwenden? Oder nur auf Part/Product?

2) Wie Messe ich die Hauptträgheitsmomente/G (siehe Anhang)

mfg
BLD

------------------
Ich will es gar nicht wissen, aber ich muss.....Das Leben verlangt es.

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: 10957
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 29. Nov. 2019 10:43    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 BLD1983 10 Unities + Antwort hilfreich

Servus

Die Hauptträgheitsmomente sollten über GetPrincipalMoments gehen. (siehe Doku)
Siehe dazu auch: hier.

Gruß
Bernd

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

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

BLD1983
Mitglied
Konstrukteur


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

Beiträge: 37
Registriert: 27.09.2019

Catia V5 / R28 / R29
intel core i7-6700 cpu @ 3.40ghz
RAM: 32GB
64Bit

erstellt am: 29. Nov. 2019 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 den Link habe ich auch schon entdeckt.
schaffe es aber nur das ganze Part zu messen, nicht die einzelnen Körper.(den selektierten Körper)


-------------------------------------------------------------------------------
Sub CATMain()

Dim ADoc As PartDocument
Set ADoc = CATIA.ActiveDocument

Dim P1 As Product
Set P1 = ADoc.Product

Set Inertia1 = P1.GetTechnologicalObject("Inertia")

Dim oValues(2)
Inertia1.GetPrincipalMoments oValues

V0 = oValues(0)* 10000000
V1 = oValues(1)* 10000000
V2 = oValues(2)* 10000000

V0 = round(V0,3)
V1 = round(V1,3)
V2 = round(V2,3)

MsgBox V0 & " _ " & V1 & " _ " & V2

End Sub

------------------
Ich will es gar nicht wissen, aber ich muss.....Das Leben verlangt es.

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: 10957
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 29. Nov. 2019 12:29    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 BLD1983 10 Unities + Antwort hilfreich

Servus

Dann schau dir mal auf meiner verlinkten Seite die Function GetBodyInertia und den Beispielaufruf Sub Test_GetBodyInertia an.
Für den selektierten Körper müsstest du zB oSel.item2(1).Value an die Funktion übergeben.

Gruß
Bernd

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

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

BLD1983
Mitglied
Konstrukteur


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

Beiträge: 37
Registriert: 27.09.2019

Catia V5 / R28 / R29
intel core i7-6700 cpu @ 3.40ghz
RAM: 32GB
64Bit

erstellt am: 02. Dez. 2019 08:44    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


Gleichteil.jpg

 
Guten Morgen Bernd.

Danke, Irgendwie habe ich es geschafft den benötigten Code zusammenzustellen besser gesagt zu kopieren.

Aber wie überprüft man ob ein Körper schon umbenannt wurde? (siehe Anhang)

mfg
Dragan

------------------
Ich will es gar nicht wissen, aber ich muss.....Das Leben verlangt es.

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: 10957
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 02. Dez. 2019 09:43    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 BLD1983 10 Unities + Antwort hilfreich

Servus

Indem du den Namen des Körpers auswertest (oBody.Name).
Dazu kannst du entsprechende Methoden für Strings/Zeichenketten verwendest (ich würde es mal mit Left probieren)

Gruß
Bernd

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

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

BLD1983
Mitglied
Konstrukteur


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

Beiträge: 37
Registriert: 27.09.2019

Catia V5 / R28 / R29
intel core i7-6700 cpu @ 3.40ghz
RAM: 32GB
64Bit

erstellt am: 16. Jan. 2020 13: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


STEHER_1.jpg


STEHER_2.jpg

 
Hallo.

Brauche eure Hilfe 

Irgendwie schaffe ich es nicht das doppelte Umbenennen zu verhindern.(siehe Bilder)

Steher_40x40_1, Steher_40x40_1 und Steher_40x40_1 sind Gleichteile.

würde gerne so unbennant haben:

Steher_40x40_1
GT_zu_Steher_40x40_1
GT_zu_Steher_40x40_1
...
...
...

'-------------------------------ANFANG--------------------------------------------------------
Sub CatMain()

  Dim objPart As Part
  Dim objBody As Body
  Dim objInertia As Inertia

Dim Selection1 As Selection
Set Selection1 = CATIA.ActiveDocument.Selection
Set objPart = CATIA.ActiveDocument.Part

selection1.clear
selection1.Search "CATPrtSearch.BodyFeature.Name=STEHER_40x40_*,all"

Dim Value(2)
Dim Value1(2)

Dim Text
Dim Text3
Dim Text4

Imax = Selection1.count
'-------------------------------------------------------------------------------------------

For J = 1 to Selection1.count

Set objBody1 = Selection1.item2(J).Value
MsgBox objBody1.Name


'--------------------------------------------------------------------------------------------

'Do while Imax

Text=objBody1.Name ' Zeichenfolge definieren
Text3 = Left(Text,2)      ' liefert GT_zu_
Text4 = "GT"


'If Text3=Text4 then y=x+1
'If NOT(Text3=Text4) then x=x+1

'If Text3=Text4 then Set objBody1 = Selection1.item2(y).Value
'If NOT(Text3=Text4) then Set objBody1 = Selection1.item2(x).Value

'loop

'--------------------------------------------------------------------------------------------

Set objBody1 = Selection1.item2(J).Value
Set objInertia = GetBodyInertia(objPart, objBody1)

objInertia.GetPrincipalMoments Value

'V1 = Value(0)
'V2 = Value(1)
'V3 = Value(2)

V1=round(Value(0),9)*10000000
V2=round(Value(1),9)*10000000
V3=round(Value(2),9)*10000000


'MsgBox "REFERENZ____"& objBody1.Name & vbNewLine  & "M1=" & V1 & vbNewLine  & "M2=" & V2 & vbNewLine  & "M2=" & V3 '----------------------------------

'------------------------------------------------------------------------------------------

For K = J+1 to Imax

Set body2 = Selection1.Item2(K).Value
Set objInertia = GetBodyInertia(objPart, body2)
objInertia.GetPrincipalMoments Value1

'V11 = Value1(0)
'V21 = Value1(1)
'V31 = Value1(2)

V11=round(Value1(0),9)*10000000
V21=round(Value1(1),9)*10000000
V31=round(Value1(2),9)*10000000

'MsgBox "UNTERKOERPER__"& body2.Name  & vbNewLine  & "M1=" & V11 & vbNewLine  & "M2=" & V21 & vbNewLine  & "M2=" & V31 '----------------------------------

IF (V11=V1) and (V21=V2) and (V31=V3) then body2.Name = "GT_zu_" & objBody1.Name


'-------------------------------------------------------------------------------------------

Next
Next

MsgBox "FERTIG"
End Sub


'----------------------------------------------------------------------------------------
Function GetBodyInertia(ByRef iPart As Part, ByRef iBody As Body) As Inertia


  Dim objSPAWorkbench As Workbench
  Dim objInertia As PrincipalMoments


  On Error Resume Next

  Set objSPAWorkbench = iPart.Parent.GetWorkbench("SPAWorkbench")
  Set objInertia = objSPAWorkbench.Inertias.Add(iBody)
  If Err.Number = 0 Then
    Set GetBodyInertia = objInertia
  Else
    Set GetBodyInertia = Nothing
  End If
'-------------------------------------------------------------------------------------

End Function

'-------------------------------ENDE--------------------------------------------------

------------------
Ich will es gar nicht wissen, aber ich muss.....Das Leben verlangt es.

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: 10957
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 16. Jan. 2020 13:35    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 BLD1983 10 Unities + Antwort hilfreich

Servus

Mein Vorschlag (ungetestet, nur das Umbenennen):

Code:

dim sPrefix as String
sPrefix = "GT_zu_"

selection1.Search "CATPrtSearch.BodyFeature.Name=STEHER_40x40_*,all"

if selection1.Count > 1 then
   for i = 2 to selection1.Count 'erstes Element muss nicht umbenannt werden
      Set oBody = selection1.item2(i).Value
      if left(oBody.Name, Len(sPrefix ) <> sPrefix  then 'geht das so?
         oBody.Name = sPreFix & oBody.Name
      end if
   next
end if



Gruß
Bernd

PS: wenn du "sprechende" Namen für deine Variablen/Objekte verwendest tust du dir leichter beim verstehen/lesen/ändern/Fehlersuchen

PS2: Um eine doppelte Umbenennung zu vermeiden: am Anfang der Schleife For K = J+1 to Imax prüfen ob der Körper schon umbenannt wurde

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

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

BLD1983
Mitglied
Konstrukteur


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

Beiträge: 37
Registriert: 27.09.2019

Catia V5 / R28 / R29
intel core i7-6700 cpu @ 3.40ghz
RAM: 32GB
64Bit

erstellt am: 17. Jan. 2020 06: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

Vielen Dank Bernd.

Werde es mal versuchen umzusetzen...

Wie kann ich dir einen Kaffee spendieren?

mfg
BLD

------------------
Ich will es gar nicht wissen, aber ich muss.....Das Leben verlangt es.

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