Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  CATIA & VB.NET

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:  CATIA & VB.NET (2844 mal gelesen)
nreim1
Mitglied
Konstrukteur


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

Beiträge: 36
Registriert: 18.01.2008

erstellt am: 26. Mrz. 2008 21: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

Ich wünsche erstmal allen hier ein freundliches Hallo

Ich habe momentan in echt bescheidenes Problem mit meinem VB.Net (VB 2005 EE) Programm. Nachdem ich mein Programm nun soweit fertig gestellt habe ist uns ein echt beschissener Fehler aufgefallen und ich hoffe das ihr mier hier unter die arme greifen könnt, denn das Problem macht mich echt Fertig ...

Folgendes:
Neben etlichen anderen Programm abschnitten gibt ed ein tool welches mir ein Assembly Umbenennen Soll ( also welches den Part/Prdukt Namen ändern soll ) Dieses Tool arbeitet sich so also durch die Koplette Struktur ( Rukursiv ) Das klappt ja soweit auch alles Tadellos AAABBBEEEERRRRRRRR nun nachdem wir gedacht haben " ALLES TOLL" kommt der schlag ins gesicht. Alle Links innerhalb des Assemblys sind Kaputt ( to solve ), und ich kann mir einfach nicht erklären wieso.

Mein Makro ( CatSkript ) welches nahezu genau den selben ablauf hat Macht die Arbeit ebenfalls sehr gut und das Ohne die Links zu zerstören ...

Meine eindruck ist jetzt irgendwie das wenn ich das Externe Programm starte ( VB Programm ) das Die Parts in Catia einfach nicht mitbekommen das das Produkt umbenannt wurde und somit den Link verlieren... Aber wieso passiert das nicht mit dem CatScript !

Wieso wir das alles als Externes Programm wünchen.. ganz einfach, weil wir uns dort eine wesendlich Kompfortablere Oberfläche aufbauen können als uns das CatScript zuer verfügung stellen kann !

Lange rede kurzer Sinn: Ich stelle nun hier mal die eigentliche Renamingroutine zur verfügung damit mir vieleicht einer von euch Gurus hier helfen kann ( VB.NET Code ) auf das wichtigste eingekürzt.

Code:

Public Class die_rename

Public CATIA As INFITF.Application

CATIA = System.Runtime.InteropServices.Marshal.GetActiveObject("CATIA.Application")

Dim oldstring As String = txttoreplace.Text
Dim newstring As String = txtnewstring.Text

Dim Aktprod As Product
Aktprod = CATIA.ActiveDocument.Product

' Die Rekursive suche wird aufgerufen um alle Parts und Produkte umzubenennen
        SPSRenaming(Aktprod, oldstring, newstring)


    '---------------------------------------------------------------------------------------------
    '  Scanning all the Product Structure, all levels
    '---------------------------------------------------------------------------------------------
    Sub SPSRenaming(ByVal Aktprod As Product, ByVal oldstring As String, ByVal newstring As String)

        On Error Resume Next

        Dim currentprod As Product

        Dim i As Integer

        For i = 1 To Aktprod.Products.Count

            Err.Clear()
            currentprod = Aktprod.Products.Item(i)

            'Wenn der zähler größer 0 ist handelt es sich um ein Produkt
            If currentprod.Products.Count > 0 Then

                If InStr(currentprod.Name, oldstring) Then
                    currentprod.Name = Replace(currentprod.Name, oldstring, newstring)
                End If

                If InStr(currentprod.PartNumber, oldstring) Then
                    currentprod.PartNumber = Replace(currentprod.PartNumber, oldstring, newstring)
                End If

                'Wenn es sich um ein Produkt handelt wird der Scanprozess direkt
                'nochmal gestartet bis ein part gefunden wird
                '**************************************************************
                SPSRenaming(currentprod.ReferenceProduct, oldstring, newstring)
                '**************************************************************

            Else ' Wenn der zähler = 0 ist handelt es sich um ein Part

                If InStr(currentprod.Name, oldstring) Then
                    currentprod.Name = Replace(currentprod.Name, oldstring, newstring)
                End If

                If InStr(currentprod.PartNumber, oldstring) Then
                    currentprod.PartNumber = Replace(currentprod.PartNumber, oldstring, newstring)
                End If

            End If

        Next

    End Sub

End Class


PS: Ich habe in den Projektverweisen auch meiner meinung nach alle nötigen DLLs verwiesen und den Namespace Importiert. Wie gesagt das Renaming Funktioniert tadellos, aber die Links sind im Arsch !!

Ich wäre dankbar über alle möglichen Tipps !

Mfg: Nico

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

Jens Hansen
Mitglied
Senior Consult


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

Beiträge: 1055
Registriert: 05.08.2000

Win7
CATIA V5 R19
VB.Net
C#

erstellt am: 27. Mrz. 2008 07: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 Nur für nreim1 10 Unities + Antwort hilfreich

Hallo,
das Problem ist die externe Deklaration auch v5 vie den interopilierten DLL... (hä???) .. d.h. dein Programm arbeitet zum Teil schneller als V5 selbst ... V5 kommt manchmal (oft) nicht mit den Anweisungen eines externen Zugriffs hinterher. Daher steh deinem Programm dann benötigte Infos oder Zustände von V5 (noch) nicht zur Verfügung und es kommt zum Fehler; den du aber mit Error Resume Next abwürgst.
Lösung:
- V5 über LateBinding machen, oder
- eine Zustandsabfrage (mit Warteschleife) einbauen, oder
- provokativ das Programm für einen Zeitraum schalfen legen damit V5 hinterher kommt

Noch ein Tip bezügl. Links: Es ist sehr sehr wichtig, dass die Reihenfolge eingehalten wird.. also erst die Parts umbennenen, dann die Unterprodukte und erst zum Schluss das Gesamtprodukt.

Viel Erfolg weiterhin

Jens Hansen

------------------
Inoffizielle CATIA-Hilfeseite
Private Seite
Xing

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

nreim1
Mitglied
Konstrukteur


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

Beiträge: 36
Registriert: 18.01.2008

erstellt am: 27. Mrz. 2008 08:32    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 Herr Hansen

Ich danke ihnen auf jeden fall für die Zeit die sie sich genommen haben um mir eine Antwort zu geben.

Der Tip von ihnen ( Programm läuft schneller als Catia ) hört sich in meinen ohren ziemlich plausibel an...

An sie als Profi würde ich dann gerne noch die frage richten wie ich am besten eine solche zustandsabfrage machen kann. Ich könnte zwar mein Programm auch für gewisse Zeit schlafen legen wie sie schon geschrieben haben, aber ich bin eher ein freund von Tatsachen und nicht von schätzungen.

Damit meine ich Das ich lieber wissen möchte das Catia so weit ist und nicht einfach ins blaue eine Zeit festlege, denn ich fürchte früher oder Später wird es zu dem Problem kommen das ein Part/Produkt länger braucht und PENG....da ist der ärger groß !!

Wenn sie noch so viel Zeit investieren könnten wäre ich ihnen Dankbar wenn sie mir ein Beispiel zeigen könnten wie sie eine Rekursive suche aufbauen würden die in der von ihnen genannten reihenfolge Arbeitet

PARTS-PRODUKTE-ROOTPRODUKT...


Und meine Letzte Frage, wie meinen sie das mit dem Latebinding ? was muss ich da ändern ?

Ich wäre ihnen dankbar für diese weitere Hilfe !

Mfg: Nico

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

Jens Hansen
Mitglied
Senior Consult


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

Beiträge: 1055
Registriert: 05.08.2000

Win7
CATIA V5 R19
VB.Net
C#

erstellt am: 27. Mrz. 2008 08:48    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 nreim1 10 Unities + Antwort hilfreich

Hallo,
Profi .. wie das klingt ??!! 
naja .. also eine Zustandsabfage könnte z.B. sein das Produkt erneut einzulesen (am besten in einer anderen Instanz) und dann den Namen abzufragen. Ist dieser geändert, gehts mit dem Programm weiter.

LateBinding bedeutet einen vermehrten Schreibazfwand bezüglich der Syntax und man hat bei LateBinding in Verbindung mit vb.net kein Intellesense.

Wie LateBinding funktioniert wurde hier an einem Beispiel mit C# besprochen: http://ww3.cad.de/foren/ubb/Forum137/HTML/001984.shtml#000006

Das verfahren ist bei vb.net identisch wobei halt die Syntax natürlich etwas anders ist; am besten da mal in der vb.net-Doku nachschauen

Viel Erfolg

Jens Hansen

------------------
Inoffizielle CATIA-Hilfeseite
Private Seite
Xing

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

nreim1
Mitglied
Konstrukteur


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

Beiträge: 36
Registriert: 18.01.2008

erstellt am: 27. Mrz. 2008 08:58    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

War das wort Profi zu abgehoben ?      sorry wenn sich das zu geschwollen angehört hat, aber ich denke doch das sie einiges mehr an erfahrung haben als ich !?!?!   


OK zwei der drei Fragen wären damit für mich beantwortet, hätte sie denn noch den Tip bzw. ein codebeispiel für mich bezüglich der Abarbeitung ( Rekursives Renaming ) nach dem Schema

PARTS->PRODUKTE->ROOTPRODUKT...

Dann wäre ich ihnen sehr Dankbar und würde aufhören löcher in den Bauch zu fragen       

Mfg: Nico 

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

Jens Hansen
Mitglied
Senior Consult


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

Beiträge: 1055
Registriert: 05.08.2000

Win7
CATIA V5 R19
VB.Net
C#

erstellt am: 27. Mrz. 2008 09:21    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 nreim1 10 Unities + Antwort hilfreich

So auf die Schnelle etwas aus dem Hut zaubern geht nicht.
Schauen Sie aber mal hier: http://ww3.cad.de/foren/ubb/Forum137/HTML/002223.shtml#000001

Ggf. hilt dieser Beitrag weiter

Viel Erfolg

Jens Hansen

------------------
Inoffizielle CATIA-Hilfeseite
Private Seite
Xing

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

nreim1
Mitglied
Konstrukteur


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

Beiträge: 36
Registriert: 18.01.2008

erstellt am: 27. Mrz. 2008 09:39    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

Ok ich werde mich mal ins gefecht stürzen, und Probieren !

Ich bedanke mich erstmal für ihre Gedult !

Ich werde mich bei bedarf oder Totaler Verzweiflung nochmal hier melden !


Mfg: Nico 

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