Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Parts und Products in Struktur Fixen VB.Net (catCstTypeReference)

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:  Parts und Products in Struktur Fixen VB.Net (catCstTypeReference) (4102 mal gelesen)
makebeth
Mitglied



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

Beiträge: 12
Registriert: 21.03.2009

Dell Precision T3400; Vista x64; CATIA V5 R16 32Bit;

erstellt am: 23. Mrz. 2009 21:08    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 zusammen,

ich habe in vb.net eine anwendung geschrieben, die es ermöglicht über eine treeview standardstrukturen zu erstellen, zu bearbeiten und zu speichern. das übertragen in catia ist kein problem. was mir kopfschmerzen bereitet ist das fixen der parts und produkte.

Code:

'CATIA V5 GSMInterfaces Object Library
'CATIA V5 InfInterfaces Object Library
'CATIA V5 ProductStructureInterfaces Object Library
'CATIA V5 MecModInterface Object Library
'CATIA V5 KnowledgeInterfaces Object Library
'als Referenz eingebunden

Sub Run(rootNode As TreeNode, rootProd as Product)
    Dim subNode As TreeNode
    Dim subProd As Product
    Dim subPRef As Reference
    Dim rootCol As INFITF.Collection '#### deklaration direkt über INFITF, um konflikte zu verhindern
    Dim subType As String
    For Each subNode In rootNode.Nodes
        If subNode.ImageIndex = 0 Then
            subType = "Product"
        Else If subNode.ImageIndex = 1 Then
            subType = "Part"
        Else
            subType = "Component"
        End If
        subProd = rootProd.Products.AddNewComponent(subType, subNode.Text)
        Try
            Dim rootDoc As ProductDocument
            rootDoc = rootProd.Parent
            msgbox(rootDoc.Name)
            Dim oInstNameChangeProd As Product = CATIA.Documents.Item(subProd.Parent.Parent.ReferenceProduct.Parent.Name)
            Dim oInstNameChangeItem As Product = oInstNameChangeProd.Product.Products.Item(subProd.Name)
            oInstNameChangeItem.Name = subNode.Name
        Catch
            subProd.Name = subNode.Name
        End Try

        subPRef = subProd.CreateReferenceFromName(rootProd.PartNumber + "/" + subProd.Name + "/!" + rootProd.PartNumber + "/" + subProd.Name + "/")
        rootCol = rootProd.Connections("CATIAConstraints")
        rootCol.AddMonoEltCst(catCstTypeReference, subPRef) '#### schlägt fehl, da catCstTypeReference nicht deklariert ist
        If Not subNode.GetNodeCount(False) = 0 Then
            Run(subNode, subProd)
        End If
    Next
End Sub


wo finde ich "catCstTypeReference"? das ganze funktioniert als CATScript ohne probleme.

vielen dank im voraus

EDIT:

Code:
   '#### alter code
   '## Dim rootCol As INFITF.Collection
   '## rootCol.AddMonoEltCst(catCstTypeReference, subPRef)
   '#### ersetzt durch
   Dim rootCol As MECMOD.Constraints
   rootCol.AddMonoEltCst(MECMOD.CatConstraintType.catCstTypeReference, subPRef)


soweit passt nun die deklaration und der constrainttype,
doch trotzdem bleibt noch ein fehler beim ausführen:

Ausnahme System.Runtime.InteropServices.COMException wurde im ausgeführten Programm ausgelöst:
Beim Aufruf einer COM-Komponente wurde ein HRESULT E_FAIL-Fehler zurückgegeben.鏒䃲耀V

[Diese Nachricht wurde von makebeth am 23. Mrz. 2009 editiert.]

[Diese Nachricht wurde von makebeth am 23. Mrz. 2009 editiert.]

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

zoltan.bekesi
Mitglied



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

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 24. Mrz. 2009 18: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 makebeth 10 Unities + Antwort hilfreich

Hallo makebeth,

in welcher Zeile tritt diese Meldung auf?

Gruß,
Zoltan

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

makebeth
Mitglied



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

Beiträge: 12
Registriert: 21.03.2009

Dell Precision T3400; Vista x64; CATIA V5 R16 32Bit;

erstellt am: 24. Mrz. 2009 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

Hier der Aktuelle Code:

Code:

Sub Run(rootNode As TreeNode, rootProd as Product)
  Dim subNode As TreeNode
  Dim subProd As Product
  Dim subPRef As INFITF.Reference
  Dim rootCol As MECMOD.Constraints
  Dim rootCon As MECMOD.Constraint
  Dim subType As String
  For Each subNode In rootNode.Nodes
    If subNode.ImageIndex = 0 Then
      subType = "Product"
    Else If subNode.ImageIndex = 1 Then
      subType = "Part"
    Else
      subType = "Component"
    End If

    subProd = rootProd.Products.AddNewComponent(subType, subNode.Text)

    Dim oInstNameChangeProd As ProductDocument = CATIA.Documents.Item(rootProd.PartNumber + ".CATProduct")
    Dim oInstNameChangeItem As Product = oInstNameChangeProd.Product.Products.Item(subProd.Name)
    If oInstNameChangeItem.Name.Length >= 50 Then
      oInstNameChangeItem.Name = subNode.Name  + oInstNameChangeItem.Name.Substring(50)
    Else
      oInstNameChangeItem.Name = subNode.Name
    End If

    'Try
      subPRef = rootProd.CreateReferenceFromName(rootProd.PartNumber + "/" + subProd.Name + "/!" + rootProd.PartNumber + "/" + subProd.Name + "/")
      rootCol = rootProd.Connections("CATIAConstraints")
      rootCon = rootCol.AddMonoEltCst(CatConstraintType.catCstTypeReference, subPRef)
    'Catch
      'nix
    'End Try

    If Not subNode.GetNodeCount(False) = 0 Then
      Run(subNode, subProd)
    End If
  Next
End Sub


Der Fehler tritt beim erzeugen des Constraints auf. Für die direkt im Hauptprodukt liegenden Elemente wird ein Fix erzeugt. Alles darunter schlägt fehl.
Dies ist der Stand unter R16 SP05 HF70 32Bit auf Vista x64. Ich habe die Gelegenheit genutzt es auch unter R19 64Bit auf Vista x64 zu testen. Dort werden garkeine Constraints erzeugt.

Code:
rootCon = rootCol.AddMonoEltCst(CatConstraintType.catCstTypeReference, subPRef)  '#fehler

Ausnahme System.Runtime.InteropServices.COMException wurde im ausgeführten Programm ausgelöst:
10 20 40            Beim Aufruf einer COM-Komponente wurde ein HRESULT E_FAIL-Fehler zurückgegeben.鏒砸⌴䱘耀?Oꆌ掷က掶ᖭ؀

Run() - E:\SharpDevelopPortable\Projects\CATIA_Leerstruktur\MainForm.vb:311,5
Run() - E:\SharpDevelopPortable\Projects\CATIA_Leerstruktur\MainForm.vb:317,5
go_Click() - E:\SharpDevelopPortable\Projects\CATIA_Leerstruktur\MainForm.vb:205,3
RaiseEvent()
OnClick()
HandleClick()
HandleMouseUp()
FireEventInteractive()
FireEvent()
OnMouseUp()
OnMouseUp()
WmMouseUp()
WndProc()
WndProc()
WndProc()
WndProc()
OnMessage()
WndProc()
DebuggableCallback()
System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop()
RunMessageLoopInner()
RunMessageLoop()
Run()
OnRun()
DoApplicationModel()
Run()
Main() - 17d14f5c-a337-4978-8281-53493378c1071.vb:81,13

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

zoltan.bekesi
Mitglied



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

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 24. Mrz. 2009 19: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 Nur für makebeth 10 Unities + Antwort hilfreich

Hallo,

bei mir funktioniert auf R16 was ähnliches, wird aber nur für die erste Productebene notwendig.
Ich vermute den Fehler bei tiefer liegenden Products/Parts beim CreateReferenceByName.
Versuche diese Constraints per Hand zu erzeugen, während du die Schritte aufzeichnest.
Bei tieferen Elementen kann sich diese Name unterscheiden.
Das ist zwar VBA/VBScript, kann aber sehr nützlich sein.

Auf 64 bit habe ich kein Zugriff, würde aber dort Schritt für Schritt ausführen und nachsehen, welcher Schritt nicht geht.

Die Fehlermeldung ist nur eine allgemeine Fehlermeldung. Hast du nicht zufällig ein Part aktiviert (blau hinterlegt)? Beim Löschen aus einer Selection war es bei mir das Problem...

Gruß,
Zoltan

[Diese Nachricht wurde von zoltan.bekesi am 24. Mrz. 2009 editiert.]

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

makebeth
Mitglied



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

Beiträge: 12
Registriert: 21.03.2009

Dell Precision T3400; Vista x64; CATIA V5 R16 32Bit;

erstellt am: 24. Mrz. 2009 20:12    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,

Durch die Aufzeichnung bin ich bis hier hin gekommen. Der Pfad ist bei der Aufzeichnung immer gleich.
Ich erzeuge eine neue Datei und lege hiermit die Struktur neu an. Somit kann eine Selektion nicht das Problem sein. Vielleicht vertraue ich der zickigen Dame lieber nicht und spiele etwas mit den Pfaden.


EDIT:

Ein Constraint kann nur innherhalb eines Produktes geeriert werden. Öffne ich das unterprodukt in einem extra Fenster, so kann ich alle darin liegenden Elemente fixen. Wie kann ich die Constarints setzen ohne jedes mal das Produkt in einem neuen Fenster zu öffnen? Das jeweilige Produkt zu aktivieren (Blaue Selektion) würde sicher auch helfen. Habe dazu aber noch keine Funktion in der Referenz gefunden.

[Diese Nachricht wurde von makebeth am 24. Mrz. 2009 editiert.]

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

makebeth
Mitglied



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

Beiträge: 12
Registriert: 21.03.2009

Dell Precision T3400; Vista x64; CATIA V5 R16 32Bit;

erstellt am: 25. Mrz. 2009 18: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

Nach einer weile bin ich nun sebst drauf gekommen.
Mit CATIA.Documents.Read läufts ohne Probleme.

Code:

Dim path As String
path = rootProd.PartNumber + "/" + subProd.Name + "/!" + rootProd.PartNumber + "/" + subProd.Name + "/"
subPRef = rootProd.CreateReferenceFromName(path)
rootCol = rootProd.Connections("CATIAConstraints")
Try
  rootCon = rootCol.AddMonoEltCst(CatConstraintType.catCstTypeReference, subPRef)
Catch
  Dim docNewWin As ProductDocument = CATIA.Documents.Read(rootProd.PartNumber + ".CATProduct")
  rootProd = docNewWin.Product
  path = rootProd.PartNumber + "/" + subProd.Name + "/!" + rootProd.PartNumber + "/" + subProd.Name + "/"
  subPRef = rootProd.CreateReferenceFromName(path)
  rootCol = rootProd.Connections("CATIAConstraints")
  rootCon = rootCol.AddMonoEltCst(CatConstraintType.catCstTypeReference, subPRef)
End Try

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