Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Problem mit Array initialisierung

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:  Problem mit Array initialisierung (1717 mal gelesen)
JR85
Mitglied


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

Beiträge: 3
Registriert: 20.06.2011

erstellt am: 20. Jun. 2011 08:36    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,

vorweg gesagt: Ich bin absoluter VBA Neuling!

ich möchte ein MultiExtract einer vorhandenen Kurve erstellen. Bei der Initialisierung des Arrays gibt es ein Problem und ich bin da ziemlich ratlos. Wär super, wenn mir jmd helfen könnte.


Code:
Sub Kurve_Ableiten()

' Element-Selektion aus Catia und umwandlung in Reference
Dim Usel As Selection
Set Usel = CATIA.ActiveDocument.Selection


Dim Ref(1 To 100) As Reference

Usel.Item (1)
Set Ref(1) = Usel.SelectedElement.Reference

Set Linie = Wzk3D.AddNewExtractMulti(Ref(1))

If i > 1 Then
For i = 2 To Usel.Count

    Usel.Item (i)
    Set Ref(i) = Usel.SelectedElement.Reference

    Dim Mehrfach As AnyObject
    Set Mehrfach = AnyObject.HybridShape.HybridShapeExtractMulti
    Mehrfach.AddConstraint Ref(i), i, True, True, 0.1, 1

Next

End If

' Erzeugung der Ableitung

Hilfselemente.AppendHybridShape Linie

MeinPart.Update

End Sub


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: 20. Jun. 2011 10:49    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 JR85 10 Unities + Antwort hilfreich

Servus
Müsste es nicht:
Set Ref(1) = Usel.Item2(1).Reference
bzw später:
Set Ref(i) = Usel.Item(i).Reference
heißen?
Wo wird bei dir i eine Wert zu gewiesen? (sonst mach "if i > 1 then" keinen Sinn)

Gruß
Bernd

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

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: 20. Jun. 2011 16: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 Nur für JR85 10 Unities + Antwort hilfreich

Code:

Usel.Item (1)

macht auch recht wenig Sinn

und bei

Code:

Set Ref(1) = Usel.SelectedElement.Reference

fehlt auch der Index, denke mal das wird auch das sein, was Bernd meint

Das Array an sich sieht aber okay aus.
Ich würde aber kein Array, sondern dieselbe Variable einfach immer wieder verwenden.

Bei Fehlerangaben ist es immer hilfreich, wenn Du die Systeminfo ausfüllst, sagst in welcher Zeile der Fehler auftritt und mit welcher Meldung.

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

JR85
Mitglied


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

Beiträge: 3
Registriert: 20.06.2011

erstellt am: 20. Jun. 2011 17:56    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ürde gern Kanten eines Bodies mit Punkten versehen. Gerade Kanten mit 3 Punkten(Anfangspunkt,Mittelpunkt, Endpunkt), Kurvige Kanten mit n Punkten(Anfangspunkt, Endpunkt, dazwischen die Punkte in 5mm Abstand). Dazu muss ich die Kanten zunächst einmal extrahieren.

Ist leider nicht ganz so einfach wie erhofft. Vllt kann mir jmd einen Tipp geben, wie ich das am besten anstellen kann. Dafür wär ich sehr dankbar

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: 21. Jun. 2011 17:09    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 JR85 10 Unities + Antwort hilfreich

Servus
Ich würde das Problem so angehen:
- Über Userselsection den Körper auswählen lassen
- über die Suche die Kanten innerhalb der Selection (=Körper) selektieren (gff mit Makroaufzeichnung den Suchstring ermitteln)
- mit einer Schleife die Kanten abarbeiten
- für jede Kante eine Extract erstellen
- auf jedem Extract die Punkte erzeugen (Vorsicht bei Kreisen und Ellipsen, ggf kein Anfangspunkt vorhanden)
IMHOIn my humble oppinion (Meiner Meinung nach) wird das Programm aber schon recht kompliziert und ist ggf sehr langsam.
Für was brauchst du den die Punkte?

Gruß
Bernd

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

[Diese Nachricht wurde von bgrittmann am 21. Jun. 2011 editiert.]

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

JR85
Mitglied


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

Beiträge: 3
Registriert: 20.06.2011

erstellt am: 24. Jun. 2011 11:16    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 bekomme einen fehler bei "Linie.AddConstraintTolerant ..". Die Funktion wird nicht erkannt. Weiss jmd woran das liegen könnte ?

Code:
Sub CATMain()

'Anfangsdeklarationen --------------------------------------------------------------------------------------------

Dim MeinPart As Part
Set MeinPart = CATIA.ActiveDocument.Part
Dim Wzk3D As HybridShapeFactory
Set Wzk3D = MeinPart.HybridShapeFactory

' Geometrisches Set deklarieren
Dim Hilfselemente As HybridBody
Set Hilfselemente = MeinPart.HybridBodies.Item("Hilfselemente")

' Geometrisches Set deklarieren
Dim Messpunkte As HybridBody
Set Messpunkte = MeinPart.HybridBodies.Item("Messpunkte")


'Extract erzeugen --------------------------------------------------------------------------------------------

    Dim Was(0)
    Was(0) = "Edge"
   
    Set UserSel = CATIA.ActiveDocument.Selection
    UserSel.Clear

    Dim Ergebnis
    Ergebnis = UserSel.SelectElement3(Was, "Bitte Kurven selektieren", False, CATMultiSelTriggWhenUserValidatesSelection, False)

    If Ergebnis = "Normal" Then
        Dim Sel As Reference
        Set Sel = UserSel.Item(1).Reference
    Else
        MsgBox ("Abbruch")
    End If
        Dim Linie As HybridShape

        Set Linie = Wzk3D.AddNewExtractMulti(Sel)
   
      For i = 2 To UserSel.Count
        Set Sel = UserSel.Item(i).Reference
        Linie.AddConstraintTolerant Sel, 3, False, False, 0.1, 0.5, 0.98, i 
Next
   
    Hilfselemente.AppendHybridShape Linie
    MeinPart.InWorkObject = Linie

    UserSel.Clear

    MeinPart.Update

end sub

    UserSel.Clear


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