Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Parametrisiertes Produkt über Userform/Inputbox steuern

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:  Parametrisiertes Produkt über Userform/Inputbox steuern (807 / mal gelesen)
hauharms89
Mitglied
Student

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

Beiträge: 6
Registriert: 15.12.2018

CATIA V5-6R2016 SP3

erstellt am: 08. Apr. 2019 14: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


Unbenannt5.PNG

 
Hallo,

ich habe ein parametrisiertes Produkt und möchte über eine Userform/Inputbox die Werte der Produktparameter ändern. Leider gelingt mir dies nicht obwohl ich sehr viel in der V5Automation.chm, hier im Forum und auch in den Büchern von Jens Hansen und Dieter Ziethen gelesen habe.
Hier mal mein Code:

Code:
Public Class Form1

    Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click

        '##### Variablendeklaration
        Dim CATIA As INFITF.Application
        Dim oDocs1 As Documents
        Dim oProdDoc1 As ProductDocument
        Dim oProd1 As Product
        Dim oParams1 As Parameters
        Dim oParamSet1 As ParameterSet
        Dim length1 As Length

        Try '##### Fehlerabfangroutine
            CATIA = System.Runtime.InteropServices.Marshal.GetActiveObject("CATIA.Application") '##### Catia-Sitzung holen
        Catch ex As System.Runtime.InteropServices.COMException
            MessageBox.Show("Catia nicht gefunden!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) '##### Falls kein Catia gefunden wird, Meldung an Benutzer
            End '##### Programm komplett schließen und beenden
        End Try '##### Ende Fehlerabfangroutine

        Try '##### Fehlerabfangroutine
            oDocs1 = CATIA.Documents
            oProdDoc1 = oDocs1.Open("Z:\xx\xx\xxxx.CATProduct") '##### Holen des Produkts aus Dateipfad
        Catch ex As Exception
            MessageBox.Show("Datei-Öffnen Fehler!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) '##### Falls kein CATPart geöffnet werden kann, Meldung an Benutzer
            End '##### Programm komplett schließen und beenden
        End Try '##### Ende Fehlerabfangroutine

        MsgBox("Dies ist ein Tool zur schnellen Erzeugung einer Einpressvorrichtung für geschlitze Gummilager" & vbNewLine & vbNewLine & "Folgende Angaben sind notwendig:" & vbNewLine & vbNewLine & "-Einbaudurchmesser des Lenkerauges" & vbNewLine & "-Außendurchmesser des entspannten Lagers" & vbNewLine & "-Höhe der Stufe im Trichter" & vbNewLine & "-Höhe der Stufe in der Spreizhülse" & vbNewLine & "-Wandstärke der Stufe in der Spreizhülse", vbOKOnly, "Einführung")

        '##### Variablen der Anwendereingaben #####
        Dim d_einbau As String '### Durchmesser


        '##### Anwendereingaben #####

        Do
            d_einbau = InputBox("Geben Sie den kleinsten Einbaudurchmesser des Lenkers an. Dieses ergibt sich aus dem Nennmaß abzüglich der unteren Toleranz.", "Lenkerauge", "49", -1, -1) '##### Eingabebox
            If d_einbau = "" Then Exit Sub '##### bei Abbbruch oder keiner Eingabe wird das Programm geschlossen
        Loop Until IsNumeric(d_einbau) '##### Dauerschleife bis die Eingabe eine Zahl ist

        '##### Ende der Anwendereingabe #####
        Dim x As Double
        x = Val(d_einbau)
        oProd1 = oProdDoc1.Product
        oProd1 = oProd1.ReferenceProduct
        oParams1 = oProd1.Parameters
        oParamSet1 = oParams1.RootParameterSet
        length1 = oParams1.Item("D_Einbau")
        length1.Value = x

        oProd1.Update() '##### Produkt aktualisieren

    End Sub
End Class


Nach der Eingabe des Wertes bricht das Programm mit [System.Runtime.InteropServices.COMException: "Beim Aufruf einer COM-Komponente wurde ein HRESULT E_FAIL-Fehler zurückgegeben."] ab.
Ich habe soweit alle Catia Verweise gesetzt, die mir zur Verfügung standen.

Ich schreibe mit Visual Studio Community 2017. Hoffentlich kann mir jemand aus meiner -mittlerweile verzweifelten- Lage helfen.

Mit freundlichen Grüßen

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: 08. Apr. 2019 15: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 hauharms89 10 Unities + Antwort hilfreich

Servus

Willkommen im Forum.
Der Code sieht auf den ersten Blick recht gut aus. (soweit ich das mit meinen VBA-Kenntnissen beurteilen kann)
Wo steigt denn der Code aus (Schrittweise ausführen).
Die Zeile mit RefererenceProduct kommt mir komisch vor. (mal ohne probieren)
Falls die Wertzuweisung nicht funktioniert mal ein CDbl statt ein Val nutzen.

Gruß
Bernd

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

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

hauharms89
Mitglied
Student

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

Beiträge: 6
Registriert: 15.12.2018

CATIA V5-6R2016 SP3

erstellt am: 09. Apr. 2019 10:00    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,

Vielen Dank für die schnelle Antwort.

Leider funtioniert es weder mit CDbl noch ohne ReferenceProduct. Ich habe es auch mit length1.ValuatefromString(d_einbau) versucht, dies führt zum gleichen Ergebnis. Das Programm steigt -auch mit schrittweisem Durchlaufen- immer bei der Wertzuweisung, also in der vorletzten Zeile, aus.

Durch ein Beispiel im der Automation.chm bin ich einen anderen Weg gegangen und habe length1 als Parameter deklariert. Nun tritt als Fehler "nur noch" auf "The Method Value failed".

Ich habe auch hier im Forum diverse Beiträge zum Ändern von Parametern gefunden und den Code in angepasster Form übernommen, leider ohne Erfolg.

Woran kann das liegen? Ich habe bereits daran gedacht, dass mein Code prinzipiell funktionieren sollte und es an Einstellungen in Catia liegt? Kann dazu jemand was sagen? Könnte vielleicht eine Lizenz fehlen?

Gruß
Hauke Harms


EDIT: Ich habe den Code mal auf ein einfaches Part mir nur einem Parameter umgebaut und es funktioniert einwandfrei. 

[Diese Nachricht wurde von hauharms89 am 09. Apr. 2019 editiert.]

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

hauharms89
Mitglied
Student

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

Beiträge: 6
Registriert: 15.12.2018

CATIA V5-6R2016 SP3

erstellt am: 09. Apr. 2019 14:07    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

Problem gelöst:

Es lag daran, dass ich den Namen des Parameters mit dem Namen anspreche und es den gleichen Parameternamen auch in einem enthaltenen Part gibt. So jedenfalls meine Vermutung. Ich habe den Steuerparameter umbenannt und nun läuft es wie es soll.

Gruß
Hauke

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: 09. Apr. 2019 19: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 Nur für hauharms89 10 Unities + Antwort hilfreich

Servus Hauke

Du kannst auch mal folgendes probieren:

Code:
oProductParams = oParams1.RootParameterSet.DirectParameters
length1 = oProductParams.Item("D_Einbau")
length1.Value = x
Zuvor hattest du nicht speziell auf die Parameter des CATProducts zugegriffen sondern alle Parameter in der Baugruppe (auch in den Einzelteilen)

Gruß
Bernd

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

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

hauharms89
Mitglied
Student

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

Beiträge: 6
Registriert: 15.12.2018

CATIA V5-6R2016 SP3

erstellt am: 10. Apr. 2019 11:10    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,

Vielen Dank für den Hinweis. Dein Code funktioniert super. Das mit dem DirectParameters war mir so noch nicht klar.

Vielen Dank für deine Hilfe

Gruß
Hauke

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