Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Makro Befehl zum Erzeugen eines Koordinatensystems

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:  Makro Befehl zum Erzeugen eines Koordinatensystems (4992 mal gelesen)

Ex-Mitglied

erstellt am: 02. Aug. 2010 10:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hallo,

gibt es einen Befehl für das Erzeugen eines Koordinatensystems.
So ähnlich wie Set Point für einen Punkt?

DanielFr.
Moderator
Manager


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

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: 02. Aug. 2010 10:59    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  ,

es gibt eine Collection für Achsensysteme. Diese will über das Part-Objekt angesprochen werden. Hier gibt es die Methode .Add() um ein neues Achsensystem einzufügen. Im Anschluss kannst du dieses Objekt über die entsprechenden Eigenschaften (OriginPoint, XAxisDirection, YAxisDirection und ZAxisDirection) im Raum ausrichten. Zur näheren Erläuterung dieser Eigenschaften kannst du auch die V5Automation.chm lesen. Diese Datei findest du im Ordner in der sich auch deine CNEXT.exe befindet.

Wenn du nicht weiter kommen solltest kannst du auch einmal den Makrorecorder starten. Der nimmt das Erzeugen von Achsensystem auch auf 

------------------
MFG Daniel

Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)

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


Ex-Mitglied

erstellt am: 02. Aug. 2010 11:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Ich habe folgenden Quelltext, der mir Punkte aus EXCEL in CATIA einliest.
Besteht die Möglichkeit auf diese erzeugten Punkte ebenfalls über das Makro ein Koordinatensystem zu erzeugen?


Sub CATMain()

  Dim Excel As Application
  Dim WB As Workbook
  Dim WS As Worksheet
  Dim Element As Text
  Dim XCoord As Double
  Dim YCoord As Double
  Dim ZCoord As Double
  Dim nRow As Integer
  Dim Part1 As Part
  Dim HybShapeFac As Factory
  Dim Point As HybridShapePointCoord
  Dim HKoerper As HybridBodies
  Dim measurement_points As HybridBody
  Dim oEingabe
  Dim cDateiPfad
 
CATIA.DisplayFileAlerts = False
Dim Message, Style, Title, Response, MyString
Message = ("Dieses Makro importiert Punkte aus einer Exceltabelle. Bitte folgendes beachten:" &_
""&(chr(13))&_
(chr(13)) &_
" - Punktname und Koordinaten erst ab Zeile 2"&_
(chr(13)) &_
" - Spalten A-D verwenden = Name - X - Y - Z (Werte als normale Zahl mit . getrennt)"&_
(chr(13)) &_
""&(chr(13))&_
"Möchten Sie fortfahren ?")
Style = vbYesNo + vbDefaultButton2    'Define buttons.
Title = "Punkte importieren " 
Response = MsgBox(Message, Style, Title)
If Response = vbYes Then    ' User chose Yes.
  MyString = "Ja"

oEingabe="C:\Temp\ExcelPunkte.xls"
oEingabe=InputBox("Bitte Dateipfad der Excel Datei angeben:","Auswahl Excel Tabelle",oEingabe)
cDateiPfad=oEingabe


  Set Excel = CreateObject("Excel.Application")   ' Excel starten
  Excel.Visible = True   ' arbeitsmappe öffnen
  Set WB = Excel.Workbooks.Open(cDateiPfad)   ' tabelle holen
  Set WS = WB.Worksheets.Item(1)
 
  ' aktives part holen
  Set Part1 = CATIA.ActiveDocument.Part   ' factory zu erstellen der Punkte
  Set HybShapeFac = Part1.HybridShapeFactory
' hauptkörper holen zum einfügen der Punkte
  Set HKoerper = CATIA.ActiveDocument.Part.HybridBodies
  Set measurement_points = HKoerper.Add()
 
  ' Koordianten beginnen in der 2 Zeile der Tabelle
  nRow = 2
 
  ' Zeilen solange einlesen bis nichts mehr drin steht
  Do
    ' Spalte 1 = Name // Spalte 2,3,4 = Werte
    Element = (WS.Cells(nRow, 1).Text)
    XCoord = CDbl(WS.Cells(nRow, 2).Value)
    YCoord = CDbl(WS.Cells(nRow, 3).Value)
    ZCoord = CDbl(WS.Cells(nRow, 4).Value)
   
    ' Punkt mit den Koordinaten erstellen
    Set Point = HybShapeFac.AddNewPointCoord(XCoord, YCoord, ZCoord) ' Punkt ein Hauptkörper einfügen
    measurement_points.AppendHybridShape Point
    Point.Name = Element
    nRow = nRow + 1 ' Zeile hochzählen
   
   

    ' Schleife verlassen, wenn Zelle leer ist
  Loop While (WS.Cells(nRow, 2).Text <> "")
 
 
  Part1.Update     ' Part aktualisieren
  Excel.Quit   ' Ecxel schliessen

MsgBox "Punkterzeugung erfolgreich abgeschlossen !" & vbCrLf & s '

Else    ' User chose No.
  MyString = "No"
End If

End Sub

DanielFr.
Moderator
Manager


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

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: 02. Aug. 2010 11:11    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  ,

ja die Möglichkeit besteht. Ich habe sie dir im letzten Beitrag schon aufgezeigt. Ich verstehe nicht wo genau jetzt dein Problem liegt? Wenn du deine Problemstellung nicht ausreichend spezifizierst dann kann dir keiner helfen! Willst du auf jeden erstellten Punkt ein Achsensystem haben? Wie ist die Ausrichtung der Achsensysteme. Diese Fragen musst du erst einmal abklären. Dann ist die Implementierung ein Kinderspiel 

------------------
MFG Daniel

Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)

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


Ex-Mitglied

erstellt am: 02. Aug. 2010 11:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Ja, ich möchte auf jeden Punkt automatisch ein Achsenkreuz erstellen.
Die Ausrichtung derAchsensysteme soll durch weitere Koordinaten in der EXCEL Liste bestimmt werden.

DanielFr.
Moderator
Manager


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

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: 02. Aug. 2010 13:31    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


Beispieldatei_Punkte.zip

 
Hallo  ,

Schau dir mal das folgende Beispielscript an. Die *.xlsx Datei welche ich als Vorlage genommen habe befindet sich im Anhang des Posts. Die Richtungen der Koordinatensysteme werden über die Eigenschaft catAxisSystemAxisByCoordinates festgelegt. Hier musst du eventuell das Script auf deine Bedürfnisse anpassen


Code:

Option Explicit
'------------------------------------------------------------------------------
'---------------------------PointAndAxisReader v1.0---------------------------
'------------------------------------------------------------------------------
'
'Author:    Daniel Frauenrath
'Mail:      daniel.frauenrath@gmx.com
'Release:  02.08.2010
'Version:  1.0
'
'********************************************************************************
'<<<<<<<<<<<<<<<<<<<<<<<<<<Beschreibung / Discription>>>>>>>>>>>>>>>>>>>>>>>>>>>>
'********************************************************************************
'DE:
'
'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
'EN:
'
'*********************************************************************************
'<<<<<<<<<<<<<<<<<<<<<<<<<<Veränderungen / Change log>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
'*********************************************************************************
'Autor:            Datum:          Zeile:    Modul:      Anmerkung:
'---------------------------------------------------------------------------------
'
'**********************************************************************************
'<<<<<<<<<<<<<<<<<<<<<<<<<<globale Variablen>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
'**********************************************************************************
'
'
'**********************************************************************************
'<<<<<<<<<<<<<<<<<<<<<<<<<<Hauptmakro (CATMain)>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
'**********************************************************************************
Sub CATMain()

'***DEKLARATIONEN***
    Dim intWindowsObj As Windows
    Dim intDocObj As Document
    Dim intEXCELObj As Object
    Dim intWorkbookObj As Object
    Dim intWorksheetObj As Object
    Dim intEXCELFilePathStr As String
    Dim intStartRowLng As Long 'STARTZEILE FUER KOORDINATENWERTE
    Dim intStartColumnLng As Long 'STARTSPALTE FUER KOORDINATENWERTE
    Dim intColumnCountLng As Long
    Dim intPointColl As New Collection
    Dim intPartObj As Part
    Dim intHybBodyObj As HybridBody
    Dim intHybShapeFacObj As HybridShapeFactory
    Dim intPointCoordObj As HybridShapePointCoord
    Dim intAxisSystemsObj As AxisSystems
    Dim intAxisSysObj As Object 'AxisSystem
    Dim i As Long
    Dim intAxisCoordDirArr(2)
   
'***Abfrage Dokumente****
    Set intWindowsObj = CATIA.Windows
    If intWindowsObj.Count = 0 Then
        MsgBox "Es ist kein Dokument geladen!" + Chr(10) + "Das Makro kann nicht ausgeführt werden und wird beendet!" _
                , vbCritical, "Keine Dokument geladen"
        Exit Sub
    End If
    Set intDocObj = CATIA.ActiveDocument
    If TypeName(intDocObj) <> "PartDocument" Then
        MsgBox "Das aktive Dokument ist kein CATPart!" + Chr(10) + "Das Makro kann nicht ausgeführt werden!", _
                vbCritical + vbOKOnly, "Falscher Dateityp"
        Exit Sub
    End If

'***EXCEL OBJEKT ERZEUGEN
    On Error Resume Next
    Set intEXCELObj = GetObject(, "EXCEL.Application")
    If Err.Number <> 0 Then
        Set intEXCELObj = CreateObject("EXCEL.Application")
    End If
    If intEXCELObj Is Nothing Then
        MsgBox "Das EXCEL Objekt konnte nicht erzeugt werden!" + vbNewLine + _
                "Stellen Sie sicher das EXCEL instelliert und ordnungsgemaess registriert wurde", vbCritical, "ABBRUCH: KEIN EXCEL"
        Exit Sub
    Else
        'intEXCELObj.Visible = False
        Err.Clear
        On Error GoTo 0
    End If
   
'***DATEI ÖFFNEN / Worksheet zuweisen
    intEXCELFilePathStr = CATIA.FileSelectionBox("Bitte waehlen Sie die Exceldatei aus in der sich die Koordinaten befinden", "*.xlsx", CatFileSelectionModeOpen)
    If intEXCELFilePathStr = "" Then
        MsgBox "Sie haben die Auswahl der Exceldatei abgebrochen" + vbNewLine + _
                "Das Makro wird beendet", vbExclamation, "ABBRUCH DURCH ANWENDER"
        Exit Sub
    End If
   
    Set intWorkbookObj = intEXCELObj.Workbooks.Open(intEXCELFilePathStr)
    Set intWorksheetObj = intWorkbookObj.Worksheets.Item(1)
   
'***COLLECTION MIT EXCEL WERTEN FUELLEN (1. Name, 2. X-Koord, 3. Y-Koord, 4. Z-Koord, 5. X-Richtung, 6. Y-Richtung, 7. Z-Richtung, usw.)
    intStartColumnLng = 1 '(= A)

    For intStartRowLng = 3 To intWorksheetObj.Cells(intWorksheetObj.Rows.Count, intStartColumnLng).End(-4162).Row
        If intEXCELObj.WorkSheetFunction.CountIf(intWorksheetObj.Range(intWorksheetObj.Cells(2, intStartColumnLng), intWorksheetObj.Cells(intStartRowLng, intStartColumnLng)), _
          intWorksheetObj.Cells(intStartRowLng, intStartColumnLng)) = 1 Then
            intPointColl.Add intWorksheetObj.Cells(intStartRowLng, intStartColumnLng).Formula
            For intColumnCountLng = intStartColumnLng + 1 To 7
                intPointColl.Add intWorksheetObj.Cells(intStartRowLng, intColumnCountLng).Formula
            Next
        End If
    Next
   
'***GEOMETRISCHES SET ERSTELLEN
    Set intPartObj = intDocObj.Part
    Set intHybBodyObj = intPartObj.HybridBodies.Add
    intHybBodyObj.Name = "__POINT_IMPORT"
   
'***PUNKTE UND ACHSENSYSTEME ERSTELLEN
    Set intAxisSystemsObj = intPartObj.AxisSystems
    Set intHybShapeFacObj = intPartObj.HybridShapeFactory
   
    For i = 1 To intPointColl.Count Step 7
        '***MESSPUNKTE ERSTELLEN
        Set intPointCoordObj = intHybShapeFacObj.AddNewPointCoord(CDbl(intPointColl.Item(i + 1)), _
                                                                  CDbl(intPointColl.Item(i + 2)), CDbl(intPointColl.Item(i + 3)))
        intHybBodyObj.AppendHybridShape intPointCoordObj
        intPointCoordObj.Name = CStr(intPointColl.Item(i))
       
        intPartObj.Update
       
        '***ACHSENSYSTEM ERSTELLEN
        Set intAxisSysObj = intAxisSystemsObj.Add
        intAxisSysObj.OriginType = catAxisSystemOriginByPoint
        intAxisSysObj.OriginPoint = intPartObj.CreateReferenceFromObject(intPointCoordObj)
       
        intAxisSysObj.XAxisType = catAxisSystemAxisByCoordinates
        intAxisCoordDirArr(0) = CDbl(intPointColl.Item(i + 4))
        intAxisCoordDirArr(1) = 0
        intAxisCoordDirArr(2) = 0
        intAxisSysObj.PutXAxis intAxisCoordDirArr
       
        intAxisSysObj.YAxisType = catAxisSystemAxisByCoordinates
        intAxisCoordDirArr(0) = 0
        intAxisCoordDirArr(1) = CDbl(intPointColl.Item(i + 5))
        intAxisCoordDirArr(2) = 0
        intAxisSysObj.PutYAxis intAxisCoordDirArr
       
        intAxisSysObj.ZAxisType = catAxisSystemAxisByCoordinates
        intAxisCoordDirArr(0) = 0
        intAxisCoordDirArr(1) = 0
        intAxisCoordDirArr(2) = CDbl(intPointColl.Item(i + 6))
        intAxisSysObj.PutZAxis intAxisCoordDirArr
       
        intAxisSysObj.Name = CStr(intPointColl.Item(i))
       
        intPartObj.Update
               
        '***OBJEKTE LEEREN
        Set intPointCoordObj = Nothing
        Set intAxisSysObj = Nothing
       
    Next


End Sub


------------------
MFG Daniel

Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)

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


Ex-Mitglied

erstellt am: 02. Aug. 2010 13:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hallo Daniel,

vielen Dank für deinen Hinweis. Ich werde das gleich mal ausprobieren...


Ex-Mitglied

erstellt am: 02. Aug. 2010 14:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat


fehler.jpg

 
Zitat:
Original erstellt von DanielFr.:
Hallo   ,

Schau dir mal das folgende Beispielscript an. Die *.xlsx Datei welche ich als Vorlage genommen habe befindet sich im Anhang des Posts. Die Richtungen der Koordinatensysteme werden über die Eigenschaft catAxisSystemAxisByCoordinates festgelegt. Hier musst du eventuell das Script auf deine Bedürfnisse anpassen


[code]
Option Explicit
'


Hallo Daniel,

ich kann das Makro bei mir nicht ausführen. Was mache ich falsch?
Ich habe es einmal versucht als catvbs bzw. als CATScript zu starten...

DanielFr.
Moderator
Manager


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

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: 02. Aug. 2010 16:25    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  ,

sorry hatte ich vergessen zu erwähnen  . Das Ganze ist ein *.catvba. *.catvbs sowie *.catscript funktionieren beide nicht. *.catvbs deklariert seine Variablen selber (und unterstützt keine Collections) und *.catscript unterstützt keine Collection. Diese wird im Beispiel aber verwendet um die Punktkoordinaten sowie Punktnamen aus Excel zu lesen (könnte ggf. auch in ein Array gewandelt (umgeschrieben) werden)

------------------
MFG Daniel

Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)

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


Ex-Mitglied

erstellt am: 02. Aug. 2010 16:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hallo Daniel,
ich hab von programmieren ehrlich gesagt keine Ahnung. Kannst du mir helfen, damit ich dieses Makro auch als CATSkript zum laufen bringen kann? ...

Vielen Dank

DanielFr.
Moderator
Manager


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

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: 03. Aug. 2010 10:10    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


PointAndAxisReader_v1.zip

 
Hallo   ,

anbei nun das CATScript. Im Ordner befindet sich wieder die Beispieldatei die ich zum Einlesen der Punkte genutzt habe. Du musst das *.zipt File jetzt auf deiner Festplatte entpacken. Im Anschluss klickst du auf Tools -> Macro -> Macros -> Macro library (Library type = Directory) -> Add existing library (Pfad zu dem entpacken CATScript auswählen) -> OK. Jetzt kannst du das Makro starten  

[EDIT]Anhang vergessen  [/EDIT]

------------------
MFG Daniel

Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)

   

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


Ex-Mitglied

erstellt am: 03. Aug. 2010 11:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hallo Daniel,

vielen Dank für deinen Hinweis, jetzt funktioniert das Makro einwandfrei!

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