Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Im CATProduct Part auswählen durch Pos.Nr.

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:  Im CATProduct Part auswählen durch Pos.Nr. (1889 mal gelesen)
CadV5UserR
Mitglied
Dipl.Ing. Maschinenbau


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

Beiträge: 78
Registriert: 18.04.2008

Windows 7 x64 Professional SP1
Dell Precision T3500
Intel Xeon CPU W3580 3.33GHz
24Gb Ram
NVIDIA Qudro 4000
Catia V5R20 Sp6
SmarTeam V5R20 SP6

erstellt am: 05. Jun. 2008 15: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

Hallo Leute,


Ich habe einige Baugruppen mit etwa 100 Bauteilen.
Jetzt muss ich dazu 2d Zusammenstellung mit Positionsnummern erzeugen.

Die Zuordnung 3d Teil mit Pos.Nr der Stückliste bereitet mir Probleme da ich etliche Winkel und Kabel verbaut habe.

Um mir die Arbeit zu erleichtern möchte ich ein Makro schreiben in dem man eine Positionsnummer eingibt, und alle Teile mit dieser Positionsnummer sollen wie bei einer suche im Strukturbaum sichtbar gesetzt werden.

Die Positionsnummer lese ich aus den Eigenschaften - produkt.Products.Item(A).Nomenclature
aus.

Ich habe mir einige Beiträge durchgelesen und dann folgendes Makro kurze geschrieben

***********************************************************************************************

Language="VBSCRIPT"

'ExampleName
'--------------------------------------------------------------------------------
' Script zum anzeigen einer Teils/Baugruppe anhand der Pos.Nr.
'
'
'
' V0.1 05.06.2008
'
'
'
'--------------------------------------------------------------------------------

Dim documents1 As Documents
Dim document1 As Document
Dim drawingDocument1 As Document
Dim drawingSheets1 As DrawingSheets
Dim drawingSheet1 As DrawingSheet


Dim produkts As Products
Dim produkt As Product
Dim BenAttrib As Parameters
Dim part1 As Part
Dim ProductDoc As ProductDocument
Dim ProductObj As Product

Dim selection1 As Selection

Sub CATMain()


If CATIA.Documents.Count = 0 Then
    Box = MsgBox("Es wurde kein aktives Dokument identifiziert" + Chr(10) + "Bitte oeffnen Sie zuerst ein Dokument und starten Sie dann das Makro erneut", vbInformation, "Hinweis")
    Exit Sub
End If

PosNrAusw=0
PosNrAusw = InputBox ("Bitte geben Sie die gesuchte Positionsnummer an!" & chr(13) & chr(10) & chr(13) & chr(10) &chr(13) & chr(10) &"Es kann eine mehfache selektion möglich sein."& chr(10) &chr(13) & chr(10)  ,Position )


anzahl=1
Set produkt = CATIA.ActiveDocument.Product

s="Gesamtteile = " & produkt.Products.Count & vbCrLf

For A=1 To produkt.Products.Count

If produkt.Products.Item(A).Nomenclature = PosNrAusw Then
s=s & produkt.Products.Item(A).PartNumber & "__" & produkt.Products.Item(A).Nomenclature & vbCrLf
anzahl = anzahl+1
End If

Next


MsgBox "Ergebnis :" & vbCrLf & " Gefunden : " & anzahl & vbCrLf & s

End Sub
***********************************************************************************************


Was mir noch fehlt ist das Highlighten der Bauteile. ( Ein oder mehr Bauteile )


Habt Ihr dazu eine Idee?

Grüße Ralf

[Diese Nachricht wurde von CadV5UserR am 05. Jun. 2008 editiert.]

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

Lusilnie
Mitglied



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

Beiträge: 1486
Registriert: 13.07.2005

erstellt am: 05. Jun. 2008 22:14    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 CadV5UserR 10 Unities + Antwort hilfreich

Hallo CadV5UserR,

eine Variante ist die Nutzung der schon deklarierten Selektion, z.B. in folgender Weise:

Code:
...
s="Gesamtteile = " & produkt.Products.Count & vbCrLf
Set selection1 = produkt.Selection

For A=1 To produkt.Products.Count

If produkt.Products.Item(A).Nomenclature = PosNrAusw Then
    s = s & produkt.Products.Item(A).PartNumber & "__" & produkt.Products.Item(A).Nomenclature & vbCrLf
    anzahl = anzahl+1
    selection1.Add produkt.Products.Item(A)
End If

Next
...


Die aus meiner Sicht elegantere Lösung ist die nur über die Suche. Du suchst einfach alle Produkte (Products), deren "Nomenklatur" gleich der gesuchten Positionsnummer ist. (Diese Suche zeichnest Du auf, um den richtigen "Suchstring" zu bekommen!) Die Anzahl der Elemente ergibt sich aus "selection1.Count" bzw. "selection1.Count2", je nach verwendeter CATIA-Version.
Allerdings hat die "Suche" den Nachteil, dass sie oft sehr langsam ist!!!


PS: Ich glaube, anstelle von vbCrLF reicht auch vbLf, genauso wie anstelle von "& chr(13) & chr(10)" auch "& chr(10)" bzw. "vbLf" reicht. Falls Du als "CATScript" programmierst hast Du damit auch keine Probleme bei Unix...


mfg,
Lusilnie


------------------

Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!!

frei nach größeren Geistern

[Diese Nachricht wurde von Lusilnie am 05. Jun. 2008 editiert.]

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

CadV5UserR
Mitglied
Dipl.Ing. Maschinenbau


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

Beiträge: 78
Registriert: 18.04.2008

Windows 7 x64 Professional SP1
Dell Precision T3500
Intel Xeon CPU W3580 3.33GHz
24Gb Ram
NVIDIA Qudro 4000
Catia V5R20 Sp6
SmarTeam V5R20 SP6

erstellt am: 06. Jun. 2008 08: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

Hallo Lusilnie,


Danke für die schnelle Antwort!

Genau das habe ich gesucht!      10 Unities !!!

Hatte es gestern nur leider falsch probiert. Jetzt wo ich deine Antwort lese ist es klar.
( selection1.Item ( I ) = produkt.Products.Item(A) geht natürlich nicht      !!! )


Du schreibst das selection1.Count bzw. selection1.Count2 bei verschiedenen Catia-Versionen nötig ist. Das ist mir nicht bekannt. Welche Versionen sind das denn?
Wir benutzen WinXp mit CatiaV5R16 wobei selection1.Count bei mir funktioniert.


*****************************************************************
Language="VBSCRIPT"

' Assembly PosNr Abfragen
'--------------------------------------------------------------------------------
' Script zum anzeigen einer Teils/Baugruppe anhand der Pos.Nr.
'
'
'
' V0.1 05.06.2008
'
'
'
'--------------------------------------------------------------------------------

Dim documents1 As Documents
Dim document1 As Document

Dim produkts As Products
Dim produkt As Product

Dim selection1 As Selection

Sub CATMain()


If CATIA.Documents.Count = 0 Then
    Box = MsgBox("Es wurde kein aktives Dokument identifiziert" + Chr(10) + "Bitte oeffnen Sie zuerst ein Dokument und starten Sie dann das Makro erneut", vbInformation, "Hinweis")
    Exit Sub
End If

PosNrAusw=0
PosNrAusw = InputBox ("Bitte geben Sie die gesuchte Positionsnummer an!" & chr(13) & chr(10) & chr(13) & chr(10) &chr(13) & chr(10) &"Es kann eine mehfache selektion möglich sein."& chr(10) &chr(13) & chr(10)  ,Position )

anzahl=0
einmal=0

Set produkt = CATIA.ActiveDocument.Product


Set productDocument1 = CATIA.ActiveDocument
Set selection1 = productDocument1.Selection

selection1.Clear

For A=1 To produkt.Products.Count

If produkt.Products.Item(A).Nomenclature = PosNrAusw Then
If einmal=0 Then
s=s & "TeileNr.: " & produkt.Products.Item(A).PartNumber & "  Pos.Nr.: " & produkt.Products.Item(A).Nomenclature & vbCrLf
einmal=1
End If
anzahl = anzahl+1
selection1.Add produkt.Products.Item(A)
End If


' If produkt.Products.Item(A).Nomenclature = "" Then
If produkt.Products.Item(A).ReferenceProduct.Parent.Name = produkt.Products.Item(A).Parent.Parent.ReferenceProduct.Parent.Name Then
For N=1 To produkt.Products.Item(A).Products.Count
If produkt.Products.Item(A).Products.Item(N).Nomenclature = PosNrAusw Then
anzahl=anzahl+1
selection1.Add produkt.Products.Item(A).Products.Item(N)
End If
Next
End If


Next


MsgBox "Ergebnis :" & vbCrLf & vbCrLf & "Gesamtteile = " & produkt.Products.Count & vbCrLf & vbCrLf & " Gefunden : " & anzahl & vbCrLf & vbCrLf & s

End Sub

***************************************************************


Gruß Ralf


[Diese Nachricht wurde von CadV5UserR am 06. Jun. 2008 editiert.]

[Diese Nachricht wurde von CadV5UserR am 10. Jun. 2008 editiert.]

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

Lusilnie
Mitglied



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

Beiträge: 1486
Registriert: 13.07.2005

erstellt am: 06. Jun. 2008 20: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 Nur für CadV5UserR 10 Unities + Antwort hilfreich

Hallo CadV5UserR,

zu deiner Frage zu Selection.Count bzw. .Count2:

Offiziell ist .Count ab V5R16 nicht mehr unterstützt, d.h. normalerweise, dass diese Funktion ab R17 oder R18 nicht mehr funktioniert. Wenn Du Dein Script auch unter späteren Releases nutzen willst, solltest Du auf .Count2 umstellen, vorausgesetzt Du benötigst das Script nicht für Releases unterhalb R16.


mfg,
Lusilnie

------------------

Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!!

frei nach größeren Geistern

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



Technischer Projektleiter (m/w/d) Bereich Glasarchitektur

Jeden Tag meistern Sie neue Herausforderungen und lieben es, selbst­ständig zu arbeiten. Sie möchten echten Erfolg mit­ge­stal­ten. Haben Sie auch einen Arbeit­geber, der das zu schätzen weiß? Rund 1300 Mitarbeitende bei LAMILUX schon! Deswegen sind wir eines der wachs­tums­stärksten Familien­unter­nehmen Ober­frankens und welt­weit führend in unseren Märkten: Wir produ­zieren faser­ver­stärkte Kunst­stoffe für den welt­weiten Bau von Nutz­fahr­zeugen, Caravans oder auch Bussen....

Anzeige ansehenProjektmanagement
CadV5UserR
Mitglied
Dipl.Ing. Maschinenbau


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

Beiträge: 78
Registriert: 18.04.2008

Windows 7 x64 Professional SP1
Dell Precision T3500
Intel Xeon CPU W3580 3.33GHz
24Gb Ram
NVIDIA Qudro 4000
Catia V5R20 Sp6
SmarTeam V5R20 SP6

erstellt am: 10. Jun. 2008 08: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 Lusilnie,


Danke noch mal für die schnelle Antwort!
Werde meine Scripte mal anpassen. Dauert aber bei uns noch etwas bis V5 R18.

Für das Script gibt es noch eine interessante Erweiterung wenn man auch nach Komponenten sucht.

Ist von TomTom1972 schon mal beschrieben worden. http://ww3.cad.de/foren/ubb/Forum137/HTML/001998.shtml

Danke noch mal und 10U’s für Lusilnie und TomTom1972

Gruß CadV5UserR

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