| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co. |
| |
 | KISTERS 3DViewStation: Mit Modellbasiertem Design zum Modellbasierten Unternehmen , eine Pressemitteilung
|
Autor
|
Thema: Makro wiederholen Schleife erzeugen (2091 / mal gelesen)
|
Picturato Mitglied Techniker
 Beiträge: 8 Registriert: 04.01.2017 Catia V5 19 Service Pack 2
|
erstellt am: 04. Jan. 2017 14:43 <-- editieren / zitieren --> Unities abgeben:         
Möchte auf eine Fläche eine Senkrechte basierend auf einem Punkt auf der Fläche erstellen. Da ich nun über 100 Punkte auf der Fläche ( Punkt 1 Punkt 2 usw) habe, benötoge ich eine schleife des Macro die für alle Punkte eine Senkrechte generiert. Vielen Dank für Euer Feedback PS: meine Stärken liegen sicherlich nicht beim erstellen eines Makro http://ww3.cad.de/foren/ubb/icons/icon6.gif Language="VBSCRIPT" Sub CATMain() Set partDocument1 = CATIA.ActiveDocument Set part1 = partDocument1.Part Set hybridShapeFactory1 = part1.HybridShapeFactory Set parameters1 = part1.Parameters Set hybridShapeSurfaceExplicit1 = parameters1.Item("Fläche.1") Set reference1 = part1.CreateReferenceFromObject(hybridShapeSurfaceExplicit1) Set hybridBodies1 = part1.HybridBodies Set hybridBody1 = hybridBodies1.Item("Point") Set hybridShapes1 = hybridBody1.HybridShapes Set hybridShapePointOnSurface1 = hybridShapes1.Item("Punkt.1") Set reference2 = part1.CreateReferenceFromObject(hybridShapePointOnSurface1) Set hybridShapeLineNormal1 = hybridShapeFactory1.AddNewLineNormal(reference1, reference2, 0.000000, 20.000000, False) Set hybridBody2 = hybridBodies1.Item("Senkrechte") hybridBody2.AppendHybridShape hybridShapeLineNormal1 part1.InWorkObject = hybridShapeLineNormal1 part1.Update
End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12054 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 04. Jan. 2017 14:50 <-- editieren / zitieren --> Unities abgeben:          Nur für Picturato
Servus Willkommen im Forum. Bitte Systeminfo ausfüllen. Wenn du keine Ahnung von Programmierung hast wären folgende Schritte angebracht: 1. allgemein in VB(A) einarbeiten 2. deinen aufgezeichneten Code verstehen dazu auch mal in die Literatur von Catia schauen 3. deine unter 1. erhaltenen Kenntnisse auf deinen Code anwenden und ergänzen (Aufbau, Schleifen, ...) Gruß Bernd PS: Manchmal liefert auch die Forensuche schon was fast passendes. ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Picturato Mitglied Techniker
 Beiträge: 8 Registriert: 04.01.2017 Catia V5 19 Service Pack 2
|
erstellt am: 04. Jan. 2017 16:04 <-- editieren / zitieren --> Unities abgeben:         
Vielen Dank, für Deine Hilfe. Bin leider nicht weitergekommen. ( Makro im Link ist leider ohne Funktion) Bitte entschuldige, ich dachte es ist ein leichtes mir hier eine Schleife einzubauen. Nun dies scheint aber ohne tiefere Kenntnisse nicht möglich zu sein. Vielen Dank dennoch Arthur
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12054 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 04. Jan. 2017 16:17 <-- editieren / zitieren --> Unities abgeben:          Nur für Picturato
Servus Hast du das Makro als CATScipt gespeichert? Handelt es sich bei den Punkten um 3D-Punkt (Punkte in Skizzen gehen mit dem Code nicht)? Hast du die Anmerkungen zum dem Code gelesen? Im Code ist noch ein Fehler: in der Zeile mit Set oLineNormal muss es sel.Item2(i).Reference heißen. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Picturato Mitglied Techniker
 Beiträge: 8 Registriert: 04.01.2017 Catia V5 19 Service Pack 2
|
erstellt am: 04. Jan. 2017 19:58 <-- editieren / zitieren --> Unities abgeben:         
Vielen Dank, für Deine Unterstützung. Habe alle so umgesezt wie beschrieben. ( siehe unten) Punkte sind 3D Punkte und die Fläche ist in einem eigenem Geoset. Problem ich bekomme eine Fehlermeldung und im script ist die lezte Zeile oPart.Update () rot. solltest Du nochmals Zeit habe würde ich mich freuen. Gruß Arthur ------------- Language="VBSCRIPT" Sub CATMain() Dim sel As Selection Set sel = CATIA.ActiveDocument.Selection
Dim oPartDocument As PartDocument Set oPartDocument = CATIA.ActiveDocument Dim oPart As Part Set oPart = oPartDocument.Part sel.clear Dim sFilter(0) sFilter(0) = "HybridBody" Dim Status As String Status = sel.selectelement2(sFilter,"GeometricalSet Selektieren in dem sich die Flaeche befindet",false) Dim oHybridbody As Hybridbody Set oHybridbody = sel.item(1).value sel.clear Dim oHybridshape As Hybridshape Set oHybridshape = oHybridbody.Hybridshapes.item(1) Dim oHybridShapeFact 'As HybridShapeFactory Set oHybridShapeFact = oPart.HybridShapeFactory Dim refSurface As Reference Set refSurface = oPart.CreateReferenceFromObject(oHybridshape) sel.Search "CATPrtSearch.Point,all" Dim i as Integer for i = 1 to sel.Count2 Dim oLineNormal As HybridShapeLineNormal sel.Item2(i).Reference = oHybridShapeFact.AddNewLineNormal(refSurface, sel.Item2(1).Reference, 20, -20, false) oHybridbody.AppendHybridShape oLineNormal oPart.InWorkObject = oLineNormal oPart.Update () next sel.Clear End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12054 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 04. Jan. 2017 20:11 <-- editieren / zitieren --> Unities abgeben:          Nur für Picturato
Servus Wie lautet die Fehlermeldung? Die von mir verbesserte Zeile muss Code: Set oLineNormal = oHybridShapeFact.AddNewLineNormal(refSurface, sel.Item2(i).Reference, 20, -20, false)
heißen. ggf musst du auch bei oPart.Update die Klammer weglassen. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Picturato Mitglied Techniker
 Beiträge: 8 Registriert: 04.01.2017 Catia V5 19 Service Pack 2
|
erstellt am: 04. Jan. 2017 20:31 <-- editieren / zitieren --> Unities abgeben:         
|
Picturato Mitglied Techniker
 Beiträge: 8 Registriert: 04.01.2017 Catia V5 19 Service Pack 2
|
erstellt am: 04. Jan. 2017 20:40 <-- editieren / zitieren --> Unities abgeben:         
|
Picturato Mitglied Techniker
 Beiträge: 8 Registriert: 04.01.2017 Catia V5 19 Service Pack 2
|
erstellt am: 04. Jan. 2017 20:42 <-- editieren / zitieren --> Unities abgeben:         
Und das aktuelle script. ----------------------------- Language="VBSCRIPT" Sub CATMain() Dim sel As Selection Set sel = CATIA.ActiveDocument.Selection
Dim oPartDocument As PartDocument Set oPartDocument = CATIA.ActiveDocument Dim oPart As Part Set oPart = oPartDocument.Part sel.clear Dim sFilter(0) sFilter(0) = "HybridBody" Dim Status As String Status = sel.selectelement2(sFilter,"GeometricalSet Selektieren in dem sich die Flaeche befindet",false) Dim oHybridbody As Hybridbody Set oHybridbody = sel.item(1).value sel.clear Dim oHybridshape As Hybridshape Set oHybridshape = oHybridbody.Hybridshapes.item(1) Dim oHybridShapeFact 'As HybridShapeFactory Set oHybridShapeFact = oPart.HybridShapeFactory Dim refSurface As Reference Set refSurface = oPart.CreateReferenceFromObject(oHybridshape) sel.Search "CATPrtSearch.Point,all" Dim i as Integer for i = 1 to sel.Count2 Dim oLineNormal As HybridShapeLineNormal Set oLineNormal = oHybridShapeFact.AddNewLineNormal(refSurface, sel.Item2(i).Reference, 20, -20, false) oHybridbody.AppendHybridShape oLineNormal oPart.InWorkObject = oLineNormal oPart.Update next sel.Clear End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12054 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 04. Jan. 2017 20:48 <-- editieren / zitieren --> Unities abgeben:          Nur für Picturato
|
Picturato Mitglied Techniker
 Beiträge: 8 Registriert: 04.01.2017 Catia V5 19 Service Pack 2
|
erstellt am: 04. Jan. 2017 21:28 <-- editieren / zitieren --> Unities abgeben:         
|