Autor
|
Thema: Punkte bemassen in geöffneter Skizze (750 mal gelesen)
|
V5-Maxe Mitglied CAD-Konstrukteur, CATIA V5
Beiträge: 37 Registriert: 16.06.2005 Windows7 Prof x64 CATIA V5R19 Dell Precision T5500 12GB NVIDIA Quadro FX 580 512MB
|
erstellt am: 24. Nov. 2008 09:56 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich möchte in einer bereits geöffnetten Skizze ausgewählte Punkte bezüglich der V- und H-Achse bemassen. Die Auswahl funktioniert auch soweit, nur mit der Deklaration der schon geöffneten Skizze und der Vereinbarung der Referenzen für die Bemassung (AddBiEltCst(Ref1,Ref2)) komme ich nicht weiter. Hat jemand eine Idee? Gruß V5-Maxe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ogard1 Mitglied Verfahrenstechniker
Beiträge: 442 Registriert: 12.09.2004 R19 SP2
|
erstellt am: 24. Nov. 2008 11:35 <-- editieren / zitieren --> Unities abgeben: Nur für V5-Maxe
Hallo, in deinem Code fehlt die Angabe was für ein Typ des Constraint du erstellen möchtest Dim oConstraints As Constraints Set oConstraints = oCurrentSketch.Constraints Dim oConstraint As Constraint Typ Offset: ( catCstTypeDistance, Ref1,Ref2 ) Typ Fix: AddMonoEltCst(catCstTypeReference, _ Ref) und so weiter, CAA Hilfe durchlesen Gruß
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
V5-Maxe Mitglied CAD-Konstrukteur, CATIA V5
Beiträge: 37 Registriert: 16.06.2005 Windows7 Prof x64 CATIA V5R19 Dell Precision T5500 12GB NVIDIA Quadro FX 580 512MB
|
erstellt am: 24. Nov. 2008 12:48 <-- editieren / zitieren --> Unities abgeben:
Danke, das klingt gut! Mein momentanes Problem ist, dass ich nicht weiss, wie ich meinen oCurrentSketch vereinbare... Ich bin schon drin Dim oCurrentSketch As Sketch Set oCurrentSketch = ...??? ist bestimmt ganz trivial Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ogard1 Mitglied Verfahrenstechniker
Beiträge: 442 Registriert: 12.09.2004 R19 SP2
|
erstellt am: 24. Nov. 2008 13:30 <-- editieren / zitieren --> Unities abgeben: Nur für V5-Maxe
|
CAMiCADse Mitglied
Beiträge: 177 Registriert: 17.02.2006 V5,R19,SP9
|
erstellt am: 24. Nov. 2008 14:17 <-- editieren / zitieren --> Unities abgeben: Nur für V5-Maxe
Hallo V5-Maxe, wenn du schon ein GeoElement des Sketches als Objekt hast, dann über .Parent.Parent aber was du wahrscheinlich brauchst ist die Methode "FindObject" der Selection: Code: '# Voraussetzung: Ein GeoElement des Sketches ist selektiert Dim sk as Sketch Set sk = CATIA.ActiveDocument.Selection.FindObject("CATIASketch")
Gruß CAMiCADse Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
V5-Maxe Mitglied CAD-Konstrukteur, CATIA V5
Beiträge: 37 Registriert: 16.06.2005 Windows7 Prof x64 CATIA V5R19 Dell Precision T5500 12GB NVIDIA Quadro FX 580 512MB
|
erstellt am: 24. Nov. 2008 14:17 <-- editieren / zitieren --> Unities abgeben:
Danke, aber muss ich wirklich den Namen oder Index meines aktiven Sketches und seinen Platz im Strukturbaum wissen, um eine Bemaßung in meinem aktiven Sketch zu setzen? Es muesste doch eine Möglichkeit geben, den aktiven Sketch zu deklarieren. Oder fehlt hier noch was anderes??? Mein aktueller Code sieht so aus: Sub CATMain() Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument Dim MyPart As Part Set MyPart = partDocument1.Part Dim sel1 As Selection Dim HAxis, VAxis As Line2D Dim oCurrentSketch As Sketch 'Set oCurrentSketch=?? 'Hier suche ich die Punkte im aktiven Sketch und dann sehe ich alt aus sel1.Search ("Sketcher.Punkt;in") Set HAxis = oCurrentSketch.AbsoluteAxis.HorizontalReference Set VAxis = oCurrentSketch.AbsoluteAxis.VerticalReference Dim oConstraints As Constraints Set oConstraints = oCurrentSketch.Constraints sel1.Search ("Sketcher.Punkt;in") For I = 1 To sel1.Count 'hier soll jedem Punkt eine Bemassung bzgl. V-Axis und H-Axis zugewiesen werden Next End Sub Gruß
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
V5-Maxe Mitglied CAD-Konstrukteur, CATIA V5
Beiträge: 37 Registriert: 16.06.2005 Windows7 Prof x64 CATIA V5R19 Dell Precision T5500 12GB NVIDIA Quadro FX 580 512MB
|
erstellt am: 24. Nov. 2008 14:40 <-- editieren / zitieren --> Unities abgeben:
@CAMiCADse DANKE, das wars (fast) Sub CATMain() Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument Dim MyPart As Part Set MyPart = partDocument1.Part Dim sel1 As Selection Set sel1 = partDocument1.Selection Dim HAxis, VAxis As Line2D Dim Ref1, Ref2 As Reference Dim oCurrentSketch As Sketch Dim oConstraints As Constraints Dim Abstand As Constraint sel1.Search ("Sketcher.Punkt;in") Set oCurrentSketch = CATIA.ActiveDocument.Selection.FindObject("CATIASketch") Set oConstraints = oCurrentSketch.Constraints Set HAxis = oCurrentSketch.AbsoluteAxis.HorizontalReference Set VAxis = oCurrentSketch.AbsoluteAxis.VerticalReference For I = 1 To sel1.Count Set Ref1 = sel1.Item(I).Value Set Abstand = oConstraints.AddBiEltCst(catCstTypeDistance, HAxis, Ref1) Next sel1.Clear End Sub "Typen unverträglich" in der Zeile>> Set Abstand...
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAMiCADse Mitglied
Beiträge: 177 Registriert: 17.02.2006 V5,R19,SP9
|
erstellt am: 24. Nov. 2008 15:10 <-- editieren / zitieren --> Unities abgeben: Nur für V5-Maxe
Hallo Maxe, da stimmen so einige Typen nicht, Deklarier mal alles ordentlich, dann bricht das Makro schon vorher ab: Dim Ref1 As Reference, Ref2 As Reference Dim HAxis, VAxis As Line2D' <-- AddBiEltCst erwartet Referenzen keine Line2D Nutze einfach mal den Makrorekorder, du mußt nur darauf achten, den Sketch auch zu schließen bevor du den Rekorder beendest, sonst zeichnet er nichts auf! Gruß CAMiCADse P.S. Bei FindObject geht dir ein Punkt der Selection verloren, den mußt du vorher zwischenspeichern und dann wieder .Add'en Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
V5-Maxe Mitglied CAD-Konstrukteur, CATIA V5
Beiträge: 37 Registriert: 16.06.2005 Windows7 Prof x64 CATIA V5R19 Dell Precision T5500 12GB NVIDIA Quadro FX 580 512MB
|
erstellt am: 25. Nov. 2008 07:52 <-- editieren / zitieren --> Unities abgeben:
Hallo CAMiCADse, dank deiner Hilfe ist jetzt alles gut! 10Unis 4U Der Hinweis mit Skizze zu vor Aufzeichnungsende war Klasse, bisher war das aufgezeichnete Macro immer leer. Auch für alle anderen hier der Code, der zumindest bei mir funzt! Option Explicit Sub CATMain() On Error Resume Next Dim I As Integer Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument Dim MyPart As Part Set MyPart = partDocument1.Part Dim sel1 As Selection Set sel1 = partDocument1.Selection Dim HAxis, VAxis As Line2D Dim Ref1 As Reference Dim Ref2 As Reference Dim Ref3 As Reference Dim oCurrentSketch As Sketch Dim oConstraints As Constraints Dim Abstand As Constraint sel1.Search ("Sketcher.Punkt;in") Set oCurrentSketch = CATIA.ActiveDocument.Selection.FindObject("CATIASketch") Set oConstraints = oCurrentSketch.Constraints Set HAxis = oCurrentSketch.AbsoluteAxis.HorizontalReference Set Ref2 = MyPart.CreateReferenceFromObject(HAxis) Set VAxis = oCurrentSketch.AbsoluteAxis.VerticalReference Set Ref3 = MyPart.CreateReferenceFromObject(VAxis) For I = 1 To sel1.Count Set Ref1 = MyPart.CreateReferenceFromObject(sel1.Item(I).Value) Set Abstand = oConstraints.AddBiEltCst(catCstTypeDistance, Ref1, Ref2) Set Abstand = oConstraints.AddBiEltCst(catCstTypeDistance, Ref1, Ref3) Next sel1.Clear If Err.Number = 0 Then MsgBox "Macro finished without Error", vbInformation, "MACRO END" Else MsgBox "Macro finished with Error: " & Chr(13) & Err.Description, vbInformation, "MACRO END" End If End Sub Gruß und Dank
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denyo_1 Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 25. Nov. 2008 08:25 <-- editieren / zitieren --> Unities abgeben: Nur für V5-Maxe
Hallo V5-Maxe, hab noch ne kleine Anmerkung zu deinem Code. Ich würde Laufzeitfehler nicht über den ganzen Code abfangen. Falls bei einer "riskanten" Zeile ein Fehler auftretten kann ist das mit "On error Resume next" sicherlich ok, aber wenn du das über das ganze Script machst, wird es extrem schwer den Fehler zu finden falls dein Skript einen produziert. ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
V5-Maxe Mitglied CAD-Konstrukteur, CATIA V5
Beiträge: 37 Registriert: 16.06.2005 Windows7 Prof x64 CATIA V5R19 Dell Precision T5500 12GB NVIDIA Quadro FX 580 512MB
|
erstellt am: 25. Nov. 2008 10:34 <-- editieren / zitieren --> Unities abgeben:
|