Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  IF problem

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:  IF problem (1370 mal gelesen)
DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 10. Jan. 2012 23: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

Hallo Alle,

ich habe eine Programm mit einen IF Befehl. Und zwar folgendes:

Ich habe zwei Produkte LH Produkt und RH Produkt. Ich versuche einen Makro zu erstellen der die Produkte mit einander vergleicht. In RH können die gleichen Bauteile verbaut werden wie in LH oder aber auch spiegelteile. Die spiegelteile unterscheiden sich in der Benennung. Falls das Bauteil aus LH nicht in RH vorhanden ist soll eine Sub Routine gestartet werden, der Prüft ob das Bauteil evtl mit andere (Spiegel) Nummer existiert.

Code:
'check LH content against RH
FOR n = 1 TO nrOfLHChildren
Set ProdToCheck = LHAssy.Products.Item(n)
ProdToCheckName = ProdToCheck.PartNumber
IF (RHAssy.Products.Item(ProdToCheckName)) = False Then
MirrorPartCheck ProdToCheck
Exit Sub
End If
Next

Erklärung des Codes:
nrOfLHChildren = Anzahl der Kinder von LH Produkt
LH[RH]Assy = LH[RH] Produckt

Nun bricht das Makro immer beim IF ab, verständlich, aber ich finde keine Lösung.

Ideen?

Vielen Dank im Voraus...

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 11. Jan. 2012 07:47    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 DasDon 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von DasDon:
Code:
'check LH content against RH
FOR n = 1 TO nrOfLHChildren
Set ProdToCheck = LHAssy.Products.Item(n)
ProdToCheckName = ProdToCheck.PartNumber
IF (RHAssy.Products.Item(ProdToCheckName)) = False Then
MirrorPartCheck ProdToCheck
Exit Sub
End If
Next


Hallo,
versuch es mal so...

Code:
'check LH content against RH
FOR n = 1 TO nrOfLHChildren
Set ProdToCheck = LHAssy.Products.Item(n)
ProdToCheckName = ProdToCheck.PartNumber
IF (RHAssy.Products.Item(ProdToCheckName)) = Nothing Then
MirrorPartCheck ProdToCheck
Exit Sub
End If
Next

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

Beiträge: 1118
Registriert: 29.05.2008

DELL PRECISION T3500
Intel(R) Xeon(R) CPU W3540 @ 2.93GHz
12285 MB RAM
NVIDIA Quadro FX 1800
Microsoft Windows 7 Enterprise Service Pack 1
CATIA V5 R19 SP09 HF69
VB6.5
CAA RADE CDC

erstellt am: 11. Jan. 2012 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 Nur für DasDon 10 Unities + Antwort hilfreich

Objekte auf Nothing prüfen tut man meines Wissens nach mit is, also

IF (RHAssy.Products.Item(ProdToCheckName)) is Nothing Then

Wenn Du eine Fehlermeldung bekommst erleichtert das unsere Hilfsleistung imemr ungemein, wenn Du diese auch mitteilst, denn in denen Steht oft, wenn man die Erfahrung hat, die Antwort. :-)

------------------
Mit freundlichen Grüßen,
Henry Schneider
alias Lila

Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren:
Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen,
die Natur versucht, immer bessere Idioten zu bauen

Xing

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

DanielFr.
Moderator
Manager


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

Beiträge: 2506
Registriert: 10.08.2005

HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3

erstellt am: 11. Jan. 2012 08:53    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 DasDon 10 Unities + Antwort hilfreich

Henry hat recht...Objekte können nur mit einem

If objXXX is Nothing then
...
End If

geprüft werden. Die Verwendung des Operator "=" ist nicht zulässig!

------------------
MFG Daniel

Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)

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

DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 11. Jan. 2012 12: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

Vielen Dank erstmal für die Hilfe.
Leider hat es nicht funktioniert.

Als fehler meldung bekomme ich:
Source: CATIAProducts
Description: The method Item failed.
Line: 49. (also das IF Line)
Column: 1

Als Lösung kann ich natürlich einen Array erstellen mit alle Kinder von RHAssys und vergleiche diese dann mit hilfe einer FOR-Schleife gegen ProdToCheckName. Aber das ist umständlich und würde das Macro erheblich verlangsamen. Des Wegen schaue ich nach alternativen Lösungen.
Gibt es einen IF EXISTS für das Spezifikationenbaum? ich kenne es nur in Verbindung mit Dateien.

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

Beiträge: 1118
Registriert: 29.05.2008

DELL PRECISION T3500
Intel(R) Xeon(R) CPU W3540 @ 2.93GHz
12285 MB RAM
NVIDIA Quadro FX 1800
Microsoft Windows 7 Enterprise Service Pack 1
CATIA V5 R19 SP09 HF69
VB6.5
CAA RADE CDC

erstellt am: 11. Jan. 2012 12:53    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 DasDon 10 Unities + Antwort hilfreich

Hm... habe jetzt auch nicht alles im Kopf, aber Der Aufruf von Item ist falsch.

Das kann meiner Meinung nach drei Ursachen haben:

1. RHAssy ist gar kein Produkt
2. die Item-Methode gibt es nicht
3. Ein Item mit dem Wert <ProdToCheckName> gibt es nicht

Da Du letzteres ja sowieso prüfen willst und ich unterstelle, dass der Rest richtig ist, würde ich es so machen:

Code:

'check LH content against RH
dim objBuffer as object
FOR n = 1 TO nrOfLHChildren
Set ProdToCheck = LHAssy.Products.Item(n)
ProdToCheckName = ProdToCheck.PartNumber
set objBuffer = nothing
on error resume next
set objBuffer = RHAssy.Products.Item(ProdToCheckName)
on error goto 0
IF (objBuffer is Nothing) Then
MirrorPartCheck ProdToCheck
Exit Sub
End If
Next

------------------
Mit freundlichen Grüßen,
Henry Schneider
alias Lila

Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren:
Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen,
die Natur versucht, immer bessere Idioten zu bauen

Xing

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 11. Jan. 2012 19: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 Nur für DasDon 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von HoBLila:
Objekte auf Nothing prüfen tut man meines Wissens nach mit is, also

Ja geht teilweise auch anders, aber egal... Hast aber natürlich Recht und ich wohl zu wenig Zeit 

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

DasDon
Mitglied
Konstruktuer


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

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 12. Jan. 2012 08: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

Mit dem Error Handler lässt es sich gut abfangen. Vielen Dank für die Antwort.
Gruß,

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