Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Probleme Joint Erstellung (PointCurve und PointSurface)

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:  Probleme Joint Erstellung (PointCurve und PointSurface) (1738 mal gelesen)
Hezarfen
Mitglied
Konstrukteur


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

Beiträge: 42
Registriert: 30.11.2005

Catia V5 R16 SP5

erstellt am: 26. Jul. 2007 16: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

Hallo,

ich habe ein Problem mit der Erstellung einer Kinematik bzw. Mechanik über ein Makro. Es geht um die Joints PointCurve und PointSurface.
Beim Befehl:
Set oNewJoint = oNewMechanism.AddJoint("CATKinPointCurveJoint",aVar1)
kommt eine Fehlermeldung. Unten sieht ihr den gesamten Code.

Ich verwende Catia V5 R16SP5.
Ich hoffe jemand kann mir helfen.

Gruss
Hezarfen


Sub CATMain()

MechanismDefinition


End Sub


'-------------------------------------------------------------------------------------------
Function MechanismDefinition

  Dim oRootProduct As AnyObject
  Set oRootProduct = CATIA.ActiveDocument.Product

  Dim oProductToFix As Product
  Set oProductToFix = oRootProduct.Products.Item(2)

  oRootProduct.ApplyWorkMode DESIGN_MODE

  Dim sRefName As String
   
  sRefName =  "Kinematikmodul/Kinematikelement1/!Kurve"
  Dim oReferenceCurve1 As Reference
  Set oReferenceCurve1 = oRootProduct.CreateReferenceFromName  ( sRefName )
   
  sRefName =  "Kinematikmodul/Kinematikelement2/!Punkt 1"
  Dim oReferencePoint1 As Reference
  Set oReferencePoint1 = oRootProduct.CreateReferenceFromName  ( sRefName )

  Dim cTheMechanisms As AnyObject
  Set cTheMechanisms = oRootProduct.GetTechnologicalObject("Mechanisms")

  Dim oNewMechanism As Mechanism
  Set oNewMechanism = cTheMechanisms.Add()

  Dim iNbmech As Integer
  iNbmech =cTheMechanisms.Count
 
  if iNbmech >1 then
      cTheMechanisms.Remove(1)
  end if

  Dim sMechanismName As String
  sMechanismName = oNewMechanism.Name

  oNewMechanism.FixedPart = oProductToFix

  Dim aVar1(2)
  Set aVar1(0) = oReferencePoint1
  Set aVar1(1) = oReferenceCurve1

  Dim oNewJoint as Joint
  Set oNewJoint = oNewMechanism.AddJoint("CATKinPointCurveJoint",aVar1) <---Fehlermeldung
....

End Function
'-------------------------------------------------------------------------------------------------------------------

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

Lidef
Mitglied



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

Beiträge: 11
Registriert: 04.07.2007

erstellt am: 31. Jul. 2007 15:05    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 Hezarfen 10 Unities + Antwort hilfreich

Hi Hezarfen,

probier mal die Referenzen "ReferenceFromName" so zu erzeugen:

  sRefName =  "Kinematikmodul/Kinematikelement1.1/!Kurve"
  Dim oReferenceCurve1 As Reference
  Set oReferenceCurve1 = oRootProduct.CreateReferenceFromName  ( sRefName )
   
  sRefName =  "Kinematikmodul/Kinematikelement2.1/!Punkt 1"
  Dim oReferencePoint1 As Reference
  Set oReferencePoint1 = oRootProduct.CreateReferenceFromName  ( sRefName )

So erzeugst du die Referenz über die Instanz.

Welche Fehlermeldung kommt denn überhaupt?

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

Hezarfen
Mitglied
Konstrukteur


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

Beiträge: 42
Registriert: 30.11.2005

Catia V5 R16 SP5

erstellt am: 31. Jul. 2007 16:01    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


Fehlermeldung01.gif

 
Danke Lidef für deine Hilfe,
aber leider funktioniert das auch nicht. Die Fehlermeldung siehst du im angehängten Bild.
Ich habe auf der IBM Seite folgendes gelesen, aber für V5R13:

-----------------------------------------------------------------
Problem conclusion
THIS MODIFICATION WILL BE INCLUDED IN CATIA DOCUMENTATION DELIV
ERED WITH CATIA VERSION 5 RELEASE 13.
.
Incident Diagnosis
VBScript: the method AddJoint fails.
.
Correction Explanation
There were some type mistakes in the VB
documentation of DMU Kin. It has been corrected
.
Answer and By-Pass
You have to modify the macro in order to create
the joint:
line 89-90:
replace
Set aVar1(0) = oReferenceLine1
Set aVar1(1) = oReferencePoint1
by
Set aVar1(0) = oReferencePoint1
Set aVar1(1) = oReferenceLine1
.
line 98, replace
Set oNewJoint = oNewMechanism.AddJoint
("CATKinPointOnCurveJoint",aVar1)
by
Set oNewJoint = oNewMechanism.AddJoint
("CATKinPointCurveJoint",aVar1)
.
With these modifications, it works properly
---------------------------------------------------------

Jedoch funktionert es auch nicht mit der Modifikation...
Auf der DS API Seite steht auch nichts anderes.

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

Lidef
Mitglied



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

Beiträge: 11
Registriert: 04.07.2007

erstellt am: 31. Jul. 2007 17:45    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 Hezarfen 10 Unities + Antwort hilfreich

Die Fehlermeldung ist echt komisch.

Ich habe auch eine Kinematik mit diesen Joints erzeugt und bei mir ist der Quellcode fast der gleiche wie bei dir.
Ich hatte ein Problem mit den Referenzen, das habe ich gelöst indem ich diese über die Instanz erzeugt habe.
Was bei dir das "Kinematikmodul" ist, müsste auch das RootProduct sein.
Bei mir im Quellcode steht es so:

  sRefName =  "Kinematikmodul/Kinematikelement1/!Kurve"
  Dim oReferenceCurve1 As Reference
  Set oReferenceCurve1 = Kinematikmodul.CreateReferenceFromName  ( sRefName )

Vielleicht hast du da was durcheinander gebracht.
Ansonsten fällt mir auch nichts ein.

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

Hezarfen
Mitglied
Konstrukteur


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

Beiträge: 42
Registriert: 30.11.2005

Catia V5 R16 SP5

erstellt am: 01. Aug. 2007 10:17    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


Struktur.zip

 
Hi,
ich versteh das auch nicht. Ich habe mal eine ganz simple Produktstruktur mit dem Makro beigefügt. Vielleicht kannst du das mal ausprobieren bei dir. Vielleicht findest du ja meinen Fehler? Eventuell kannst du das Script so umbauen wie bei dir, so dass es funktioniert.

Danke
Hezarfen

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

Lidef
Mitglied



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

Beiträge: 11
Registriert: 04.07.2007

erstellt am: 01. Aug. 2007 14:43    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 Hezarfen 10 Unities + Antwort hilfreich

Hi Hezarfen,

Nach dem Studieren deines Quellcodes sind mir 2 Fehler aufgefallen.
1. Beim Referenzfeld müsste in Klammern eine (1) stehen.
2. Du hast die Referenzen vertauscht. Du beziehst dich auf den Namen "Point.1" nennst die Referenz aber: "oReferenceCurve1"
Damit verwirrst du dich selbst.
Deshalb musst du hier dir Referenzen vertauschen:
    Set aVar1(0) = oReferenceCurve1
    Set aVar1(1) = oReferencePoint1


Hier der Quellcode, der funktionieren sollte:
(allerdings habe ich die "Verwirrungen" nicht verbessert, so siehst du es nochmal)

Option Explicit
Dim Language as String
Language="VBSCRIPT"

Sub CATMain()


  Dim oRootProduct As AnyObject
  Set oRootProduct = CATIA.ActiveDocument.Product


    Dim oProductToFix As Product
    Set oProductToFix =  oRootProduct.Products.Item(1)

'    oRootProduct.ApplyWorkMode DESIGN_MODE


    Dim sRefName As String
 

sRefName =  "Product1/Part2.1/!Point.1"
    Dim oReferenceCurve1 As Reference
    Set oReferenceCurve1 =  oRootProduct.CreateReferenceFromName  ( sRefName )


sRefName =  "Product1/Part3.1/!Line.1"
    Dim oReferencePoint1 As Reference
    Set oReferencePoint1 = oRootProduct.CreateReferenceFromName  ( sRefName )

    Dim cTheMechanisms As AnyObject
    Set cTheMechanisms = oRootProduct.GetTechnologicalObject("Mechanisms")

    Dim oNewMechanism As Mechanism
    Set oNewMechanism = cTheMechanisms.Add()


    Dim iNbmech As Integer
    iNbmech =cTheMechanisms.Count
 
    ' delete old mech----------------------------------------
'    if iNbmech >1 then
'      cTheMechanisms.Remove(1)
'    end if
    '-------------------------------------------------------------


    Dim sMechanismName As String
    sMechanismName = oNewMechanism.Name

    oNewMechanism.FixedPart = oProductToFix

    Dim aVar1(1)
    Set aVar1(0) = oReferenceCurve1
    Set aVar1(1) = oReferencePoint1
 

    Dim oNewJoint 'as Joint
    Set oNewJoint = oNewMechanism.AddJoint("CATKinPointCurveJoint", aVar1)

  End Sub

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

Hezarfen
Mitglied
Konstrukteur


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

Beiträge: 42
Registriert: 30.11.2005

Catia V5 R16 SP5

erstellt am: 01. Aug. 2007 15: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

Super Danke, es hat geklappt   
Vielleicht noch eine Frage: Wie kann ich ein command bzw. Befehl zu diesem Mechanismus hinzufügen, unten habe ich ein Teil, aber weiter weiss ich leider nicht Bescheid. Weißt du, ob man aus dem Makro eine Simulation und ein Replay generieren kann? Oder muss man die Simulation aus einer Rule oder einem Law definieren?
   
    Dim oNewCommand1 as MechanismCommand
    Set oNewCommand1 = oNewMechanism.AddCommand("CATKinLengthCmd",oNewJoint)

Grüße
Hezarfen

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

Lidef
Mitglied



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

Beiträge: 11
Registriert: 04.07.2007

erstellt am: 01. Aug. 2007 16:17    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 Hezarfen 10 Unities + Antwort hilfreich

Also der Command-Befehl stimmt so.
Ob man Simulationen und Replays generieren kann, weiß ich leider nicht. Würd mich auch interessieren.
Nachdem du den Command-Befehl definiert hast, kannst du dein bewegliches Part bewegen, das ist alles.

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