| | |
 | CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min 48 |
| | |
 | Mit der Kisters 3DViewStation komplexeste 3D CAD-Daten beherrschen, eine Pressemitteilung
|
|
Autor
|
Thema: Problem mit Array initialisierung (1907 mal gelesen)
|
JR85 Mitglied
 Beiträge: 3 Registriert: 20.06.2011
|
erstellt am: 20. Jun. 2011 08:36 <-- editieren / zitieren --> Unities abgeben:         
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
       
 Beiträge: 12117 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 20. Jun. 2011 10:49 <-- editieren / zitieren --> Unities abgeben:          Nur für JR85
Servus Müsste es nicht: Set Ref(1) = Usel.Item2(1).Referencebzw später: Set Ref(i) = Usel.Item(i).Referenceheiß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
   
 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 / zitieren --> Unities abgeben:          Nur für JR85
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
 Beiträge: 3 Registriert: 20.06.2011
|
erstellt am: 20. Jun. 2011 17:56 <-- editieren / zitieren --> Unities abgeben:         
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
       
 Beiträge: 12117 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 21. Jun. 2011 17:09 <-- editieren / zitieren --> Unities abgeben:          Nur für JR85
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) IMHO  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
 Beiträge: 3 Registriert: 20.06.2011
|
erstellt am: 24. Jun. 2011 11:16 <-- editieren / zitieren --> Unities abgeben:         
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 |