Autor
|
Thema: Verständnisproblem DMU Sectioning Makro (2504 mal gelesen)
|
pfannensepp Mitglied
Beiträge: 74 Registriert: 03.11.2011 HP Z800 12x 2,66Ghz 24GB RAM CATIA V5 R19
|
erstellt am: 03. Jul. 2012 17:14 <-- editieren / zitieren --> Unities abgeben:
Hallo Gemeinde ich erstelle gerade ein Makro welches mir u.a. Verschiedene Schnitte aus einem Produkt ausspielen soll. Es funktioniert alles allerdings komme ich aber nicht diesem "Position-Vektor" klar. Aus der Hilfe habe ich folgendes... ' The position of the section 'oComponents( 0) is the X component of the X-axis 'oComponents( 1) is the Y component of the X-axis 'oComponents( 2) is the Z component of the X-axis 'oComponents( 3) is the X component of the Y-axis 'oComponents( 4) is the Y component of the Y-axis 'oComponents( 5) is the Z component of the Y-axis 'oComponents( 6) is the X component of the Z-axis 'oComponents( 7) is the Y component of the Z-axis 'oComponents( 8) is the Z component of the Z-axis 'oComponents( 9) is the X component of the origin 'oComponents(10) is the Y component of the origin 'oComponents(11) is the Z component of the origin Was bedeuten die Komponenten. Was muss ich auf 1 bzw 0 setzten wenn ich einen Y/X/Z Schnitt will? Kann mir da jemand weiterhelfen wie dieser Array beschrieben werden muss? danke schonmal pfannensepp 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: 03. Jul. 2012 17:34 <-- editieren / zitieren --> Unities abgeben: Nur für pfannensepp
Hallo pfannensepp, kein Problem, steht ja quasi schon alles da. den X-Vektor (z.B. 1;0;0) gibst Du mit oComponents(0) = 1 oComponents(1) = 0 oComponents(2) = 0 an Y-Vektor mit oComponents(3) = 0 oComponents(4) = 1 oComponents(5) = 0 Z mit --> Normale oComponents(6) = 0 oComponents(7) = 0 oComponents(8) = 1 und dann noch den Ursprung mit oComponents(9) = 0 oComponents(10) = 0 oComponents(11) = 0 Hätteste Code dazu gepostet, hätte ich es Dir gleich in Deinen Stil übersetzt. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing [Diese Nachricht wurde von HoBLila am 03. Jul. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pfannensepp Mitglied
Beiträge: 74 Registriert: 03.11.2011 HP Z800 12x 2,66Ghz 24GB RAM CATIA V5 R19
|
erstellt am: 03. Jul. 2012 17:43 <-- editieren / zitieren --> Unities abgeben:
Hi danke für die schnelle antwort. Aber ich versteh die logik grad immer noch nicht :-) vll liegts an der späten uhrzeit... ich hab ne funktion der ich einen STring mit schnitt in X/Y/Z übergeb und dann noch eine höhe in welcher er schneiden soll... hab schonmal soweit geschrieben wie ich komm:-) nur komm ich nicht rauf wie die einzelen arrays beschrieben werden...
Code:
Function CreateSection(SecHeight As Single, SecDir As String) Dim oprod As Product Set oprod = CATIA.ActiveDocument.Product Set TheSections = oprod.GetTechnologicalObject("Sections") Set cSections = CATIA.ActiveDocument.Product.GetTechnologicalObject("Sections") Dim oMasterSection As Object Set oMasterSection = cSections.Add oMasterSection.Width = 10000 oMasterSection.Height = 10000 Dim MatrixPos(11) On Error Resume Next If i < 10 Then 'standard section erstellen For i = 0 To 11 MatrixPos(i) = 0 Next End If Select Case SecDir Case "X" MatrixPos(0) = 0 MatrixPos(1) = 1 MatrixPos(2) = 0 MatrixPos(3) = 0 MatrixPos(4) = 1 MatrixPos(5) = 0 MatrixPos(6) = 0 MatrixPos(7) = 1 MatrixPos(8) = 0 MatrixPos(9) = 0'SecHeight MatrixPos(10) = 0 MatrixPos(11) = 0 ViewAngle = 2 Case "Y" MatrixPos(0) = 1 MatrixPos(1) = 0 MatrixPos(2) = 0 MatrixPos(3) = 1 MatrixPos(4) = 0 MatrixPos(5) = 0 MatrixPos(6) = 1 MatrixPos(7) = 0 MatrixPos(8) = 0 MatrixPos(9) = 0 MatrixPos(10) = 0'SecHeight MatrixPos(11) = 0 ViewAngle = 2 Case "Z" MatrixPos(0) = 0 MatrixPos(1) = 0 MatrixPos(2) = 1 MatrixPos(3) = 0 MatrixPos(4) = 0 MatrixPos(5) = 1 MatrixPos(6) = 0 MatrixPos(7) = 0 MatrixPos(8) = 1 MatrixPos(9) = 0 MatrixPos(10) = 0 MatrixPos(11) = 0 'SecHeight ViewAngle = 2 End Select oMasterSection.SetPosition MatrixPos oMasterSection.Name = "Schnitt in " & SecDir & "=" & SecHeight & "mm" oMasterSection.CutMode = 1 '+++Ansicht wechseln +++ Dim ThatCamera As Camera Set ThatCamera = CATIA.ActiveDocument.Cameras.Item(ViewAngle) CATIA.ActiveWindow.ActiveViewer.Viewpoint3D = ThatCamera.Viewpoint3D
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DasDon Mitglied Konstruktuer
Beiträge: 169 Registriert: 25.07.2011 R18 SP2. WIN
|
erstellt am: 03. Jul. 2012 20:49 <-- editieren / zitieren --> Unities abgeben: Nur für pfannensepp
Moin, ganz klar ist es mir auch nicht. In Mathe bin ich auch kein Genie und die Erklärung auf Wiki ist mir zu komplex: Drehmatrix Aber die ersten 9 (0-8) zeigen die jeweiligen Vektoren der Achse. X Achse Array(0) = x:x Array(1) = x:y Array(2) = x:z Y Achse Array(3) = y:x Array(4) = y:y Array(5) = y:z Z Achse Array(6) = z:x Array(7) = z:y Array(8) = z:z Ein Bauteil welches nicht positioniert ist hat dem entsprechend die folgenden Vektorenwerte: 100#010#001 Bei einer 90° Drehung um die Z Achse(gegen Uhrzeigersinn) wären die werten 0,1,0#-1,0,0#0,0,1 die x achse würde positiv im y Richtung zeigen und gar nicht in x oder z. Die y achse ist nun in die -x Richtung und gar nicht in y oder z. und die Z Achse bleibt im Positiven. Warum aber die werte bei einer 45 grad drehung nicht 0.5,0.5,0#-0.5,0.5,0#0,0,1 sein können weiß nur der lieber Gott (0.707,0.707,0#-0.707,0.707,707#0,0,1 wären's meines Wissens). Um die gewünschte Rotationsmatrix zu finden positioniere ich einen Bauteil in ein Produkt mit den gewünschten Position/Rotation und benutze dann das folgende Macro um mir die Werte Anzeigen zulassen. Code: Sub CATMain()DIM What(0) What(0) = "Product" DIM coordiantes(11) Do until xi =1 STATUS =CATIA.ActiveDocument.Selection.SelectElement2(what,"select a product of which the rotation matrx will be displayed",false) IF STATUS = "Cancel" OR STATUS = "" THEN EXIT SUB CATIA.ActiveDocument.Selection.Item(1).Value.Position.GetComponents coordiantes MSGBOX _ "x:xVec:" & coordiantes(0) & chr(10) & _ "x:yVec:" & coordiantes(1) & chr(10) & _ "x:zVec:" & coordiantes(2) & chr(10) & _ chr(10) & _ "y:xVec:" & coordiantes(3) & chr(10) & _ "y:yVec:" & coordiantes(4) & chr(10) & _ "y:zVec:" & coordiantes(5) & chr(10) & _ chr(10) & _ "z:xVec:" & coordiantes(6) & chr(10) & _ "z:yVec:" & coordiantes(7) & chr(10) & _ "z:zVec:" & coordiantes(8) & chr(10) _ ,,"ROTATION VECTORS" Loop End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pfannensepp Mitglied
Beiträge: 74 Registriert: 03.11.2011 HP Z800 12x 2,66Ghz 24GB RAM CATIA V5 R19
|
erstellt am: 04. Jul. 2012 09:07 <-- editieren / zitieren --> Unities abgeben:
Ah.. Drehmatrix..da war doch etwas :-) Ja vielen dank für deine Hilfestellungen. so langsam kommt licht ins Dunkle. Auch dein Makro ist ganz Hilfreich. Vielen Dank. Jetzt muss ich's nur noch schaffen die Section irgendwie zu exportieren und dann mit dieser section weiterzuarbeiten. also extrempunkte finden u.ä. lg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pfannensepp Mitglied
Beiträge: 74 Registriert: 03.11.2011 HP Z800 12x 2,66Ghz 24GB RAM CATIA V5 R19
|
erstellt am: 04. Jul. 2012 18:10 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von pfannensepp: Jetzt muss ich's nur noch schaffen die Section irgendwie zu exportieren und dann mit dieser section weiterzuarbeiten. also extrempunkte finden u.ä.
da hab ich mich mal wieder zu früh gefreut. jetzt hab ich meine Section genau so wie ich sie haben will und kann damit nichts mehr anfangen. Gibt es eine möglichkeit die section als *.catpart zu exportieren, damit ich damit weiterarbeiten kann? gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DasDon Mitglied Konstruktuer
Beiträge: 169 Registriert: 25.07.2011 R18 SP2. WIN
|
erstellt am: 04. Jul. 2012 19:33 <-- editieren / zitieren --> Unities abgeben: Nur für pfannensepp
Moin, die section als *catpart damit du da mit weiter arbeiten kannst? Was/wie willst du da mit weiter arbeiten? So weit ich es weiß ist die Section nur einen "Ansichtsänderung" die parts werden nicht "wirklich" geschnitten. Du kannst es meines Wissens nicht als catpart speichern. Falls du eine Baugruppe hast die du schneiden willst und das Ergebniss als CATPART haben willst, dann vielleicht einen All_CATPART davon erzeugen und die Bodies dann schneiden? Gruß, Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pfannensepp Mitglied
Beiträge: 74 Registriert: 03.11.2011 HP Z800 12x 2,66Ghz 24GB RAM CATIA V5 R19
|
erstellt am: 04. Jul. 2012 19:38 <-- editieren / zitieren --> Unities abgeben:
Hi Ja..ich habe eine Baugruppe und möchte da einen Schnitt durchlegen. Auf der Schnittlinie sollen dann extrempunkte erzeugt werden. ich habe mir gedacht ich exportiere die Section und hab dann ein Part mit einem sketch drin, welches ich verwenden kann. folgenden ansatz habe ich... Dim oNewPartDocument As Object Set cSections = CATIA.ActiveDocument.Product.GetTechnologicalObject("Sections") Set oNewPartDocument = cSections.Item(1).Export.SaveAs("c:\temp\test1.catpart") er erstellt dann auch das Catpart, aber gleichzeitig kommt der fehler "Object required". wenn ich das Part öffne, ist darin der sketch, aber ich kann ihn nicht aktivieren und bearbeiten. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |