Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Kochbuch Makro ändern (Rohmasse ausgeben)

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
  
Die Gewinne der Zukunft werden mit intelligenten, autonomen Elektrofahrzeugen eingefahren. (3DEXPERIENCE)
Autor Thema:  Kochbuch Makro ändern (Rohmasse ausgeben) (4575 mal gelesen)
Andreas Müller 1977
Mitglied
Konstrukteur


Sehen Sie sich das Profil von Andreas Müller 1977 an!   Senden Sie eine Private Message an Andreas Müller 1977  Schreiben Sie einen Gästebucheintrag für Andreas Müller 1977

Beiträge: 43
Registriert: 28.08.2010

erstellt am: 10. Okt. 2010 18:20    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 Leute,
habe im Kochbuch vom Ansatz her ein brauchbares Makro kann es so aber nicht so in der Praxis einsetzen.
In dem Makro sollen die Rohmasse ermittelt werden, dazu wird hier ein Achsensystem auf einen Schwerpunkt erzeugt.
Ich möchte aber ein bereits bestehendes Achsensystem selektieren und dessen Richtungen weiterverwenden.
Ich gehe davon aus das nicht jeder das Buch hat, deswegen stelle ich es zur Ansicht rein.
Makro ist CATVBA
Ich arbeite mit CATIA V5 R19
Ich hoffe es kann mir jemand weiterhelfen.

Kochbuchmakro (Rezept 17):

Dim version, makroname
Sub CATMain()
1    version = "1.0"
2    makroname = "Rohteil-Abmessung"

3    On Error Resume Next
4    Set activedoc = CATIA.ActiveDocument
5    If Err.Number <> 0 Then
6        MsgBox "Es ist kein Bauteil (CATPart) geöffnet", 16, makroname + " " + version
7        Exit Sub
8    End If
             
      'Auslesen der Dokumentart -----
9    If (Right(activedoc.Name, 7) <> "CATPart") Then
10        MsgBox "Aktives Dokument ist kein Bauteil", 16, makroname + " " + version
11        Exit Sub
12    End If
         
        '~~~ Meldung an den Anwendern bezüglich der Anwendung ~~~~
        'Zeilenumbruch durch '& Chr(13)'
13      MsgBox "Wählen Sie den zu untersuchenden Körper aus", vbInformation, makroname + " " + version
        '~~~ Meldung-Ende ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        '### Haupteil des Makros #################################
        'V5 wird direkt durch 'CATIA' angesprochen
        'z.B. CATIA.ActiveDocument
        '- - - - - - - - - - - - - - -
14      Set selection1 = activedoc.Selection
        Dim InputObjectType(0)
15      InputObjectType(0) = "Body"
       
16      Status = selection1.SelectElement2(InputObjectType, "Wählen Sie den Körper aus", False)
17      If (Status = "Cancel") Then
18        MsgBox "Makro wurde abgebrochen", 16, makroname + " " + version
19        Exit Sub
20      Else
       
21      Set usersel = selection1.Item(1).Value
       
22      Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
23      Set Inertia1 = TheSPAWorkbench.Inertias.Add(usersel)
         
        Dim Components1(8)
24      Inertia1.GetPrincipalAxes Components1
       
25      Set part1 = activedoc.Part
       
        'Schwerpunkt
26      Set reference1 = part1.CreateReferenceFromObject(usersel)
27      Set Measurable1 = TheSPAWorkbench.GetMeasurable(reference1)
          Dim Gcoord(2)
28        Measurable1.GetCOG Gcoord
         
29    Set hybridBodies1 = part1.HybridBodies
30    Set hybridBody1 = hybridBodies1.Add
31    hybridBody1.Name = "Extremum_" + usersel.Name

32    Set hybridShapeFactory1 = part1.HybridShapeFactory
      Dim directions1(2)
33    Set directions1(0) = hybridShapeFactory1.AddNewDirectionByCoord(Components1(0), Components1(3), Components1(6))
34    Set directions1(1) = hybridShapeFactory1.AddNewDirectionByCoord(Components1(1), Components1(4), Components1(7))
35    Set directions1(2) = hybridShapeFactory1.AddNewDirectionByCoord(Components1(2), Components1(5), Components1(8))

      'Neues Achsensystem im Schwerpunt
36    Set AxisSystem1 = part1.AxisSystems.Add()
37    AxisSystem1.PutOrigin Gcoord
         
      Dim vectorXCoord(2)
38    vectorXCoord(0) = Components1(0)
39    vectorXCoord(1) = Components1(3)
40    vectorXCoord(2) = Components1(6)

      Dim vectorYCoord(2)
41    vectorYCoord(0) = Components1(1)
42    vectorYCoord(1) = Components1(4)
43    vectorYCoord(2) = Components1(7)

44    AxisSystem1.PutVectors vectorXCoord, vectorYCoord
      'axisSystem1.IsCurrent = 1

45    Set reference1 = part1.CreateReferenceFromObject(usersel)

46    selection1.Clear

47    For i = 0 To 2
48        Set ertremum1_max = hybridShapeFactory1.AddNewExtremum(reference1, directions1(i), 1)
49        hybridBody1.AppendHybridShape ertremum1_max
         
50        Set ertremum1_min = hybridShapeFactory1.AddNewExtremum(reference1, directions1(i), 0)
51        hybridBody1.AppendHybridShape ertremum1_min
52    Next

53    part1.Update

      Dim distances1(8)
      Dim roughpart(2)

54    For i = 0 To 2
55        Set reference1 = part1.CreateReferenceFromObject(hybridBody1.HybridShapes.Item((i * 2) + 1))
56        Set reference2 = part1.CreateReferenceFromObject(hybridBody1.HybridShapes.Item((i * 2) + 2))
57        Set Measurable1 = TheSPAWorkbench.GetMeasurable(reference1)
58        Measurable1.GetMinimumDistancePoints reference2, distances1
         
59        Set point1 = hybridShapeFactory1.AddNewPointOnCurveFromPercent(reference1, 0.5, False)
60        hybridBody1.AppendHybridShape point1
61        part1.Update
62        If Err.Number <> 0 Then
63            selection1.Add point1
64            selection1.Delete
65            Set point1 = hybridShapeFactory1.AddNewPointCoord(distances1(0), distances1(1), distances1(2))
66            Err.Clear
67        End If
68        Set reference3 = part1.CreateReferenceFromObject(point1)
         
69        Set point2 = hybridShapeFactory1.AddNewPointOnCurveFromPercent(reference2, 0.5, False)
70        hybridBody1.AppendHybridShape point2
71        part1.Update
72        If Err.Number <> 0 Then
73        selection1.Add point2
74            selection1.Delete
75            Set point2 = hybridShapeFactory1.AddNewPointCoord(distances1(3), distances1(4), distances1(5))
76            Err.Clear
77        End If
78        Set reference4 = part1.CreateReferenceFromObject(point2)
         
79        Select Case i
              Case 0
80                Set reference0 = part1.CreateReferenceFromBRepName("RSur Face Brp " & part1.AxisSystems.Item(part1.AxisSystems.Count).Name & ";2);None );Cf11 ));WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR15)", AxisSystem1)
81            Case 1
82                Set reference0 = part1.CreateReferenceFromBRepName("RSur Face Brp " & part1.AxisSystems.Item(part1.AxisSystems.Count).Name & ";3);None );Cf11 ));WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR15)", AxisSystem1)
83        Case 2
84                Set reference0 = part1.CreateReferenceFromBRepName("RSur Face Brp " & part1.AxisSystems.Item(part1.AxisSystems.Count).Name & ";1);None );Cf11 ));WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR15)", AxisSystem1)
85        End Select
         
86        Set hybridShapePlaneOffsetPt1 = hybridShapeFactory1.AddNewPlaneOffsetPt(reference0, reference3)
87        hybridBody1.AppendHybridShape hybridShapePlaneOffsetPt1
         
88        Set hybridShapePlaneOffsetPt2 = hybridShapeFactory1.AddNewPlaneOffsetPt(reference0, reference4)
89        hybridBody1.AppendHybridShape hybridShapePlaneOffsetPt2
         
90        part1.Update
91        Set reference5 = part1.CreateReferenceFromObject(hybridShapePlaneOffsetPt1)
92        Set reference6 = part1.CreateReferenceFromObject(hybridShapePlaneOffsetPt2)
         
93        Set Measurable1 = TheSPAWorkbench.GetMeasurable(reference5)
94        roughpart(i) = Measurable1.GetMinimumDistance(reference6)
95    Next

96    selection1.Add hybridBody1
97    selection1.Add AxisSystem1
98    selection1.Delete

      Dim wert1, wert2, wert3
99    wert1 = roughpart(0)
100  wert2 = roughpart(1)
101  wert3 = roughpart(2)

102  MsgBox "Die Rohteilabmessungen lauten:" & Chr(13) & "Richtung1 = " & CInt(wert1) & "mm" & Chr(13) & "Richtung2 = " & CInt(wert2) & "mm" & Chr(13) & "Richtung3 = " & CInt(wert3) & "mm" & Chr(13), vbInformation, makroname + " " + version
         
103    End If
        '### Haupteil-Ende ######################################

        '+++ Ausgabe der Fehler ++++++++++++++++++++++++++++
104    iErr = Err.Number
105    If (iErr <> 0) Then
106  MsgBox (Err.Description)
107  Exit Sub
108    End If
        '+++ Fehler-Ende ++++++++++++++++++++++++++++++++++
End Sub

------------------
Mit freundlichem Gruß
Andreas

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

roccat
Mitglied
Konstrukteur


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

Beiträge: 165
Registriert: 19.02.2010

WinXP/Win7
Office XP/2007
Catia V5 R16-R19, VB6.0, VBA, BASCOM-AVR
VB .Net 2010

erstellt am: 13. Okt. 2010 13:15    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 Nur für Andreas Müller 1977 10 Unities + Antwort hilfreich

Hallo Andreas,

also erstmal würde ich "Breps" vermeiden wo es nur geht.
Als erstes würde ich an deiner Stelle erstmal ein Makro aufzeichnen wie du eine Offsetplane auf einer Achsensystemplane (z.B. XY) erzeugst.
Im Code steht dann das BRep wie du es für dieses Achsensystem brauchst und das mußt du dann versuchen allgemeingültig hinzubasteln.

Bei dir wird für das Brep der Name des Achsensystems verwendet das ist aber eigendlich nich richtig. Denn für Breps werden die Internen Namen verwendet und nicht die angezeigten Namen. Da das Achsensystem aber gerade erst erzeugt wurde ist Name=interner Name.

Bei deimen Code:

Code:
Set reference0 = part1.CreateReferenceFromBRepName("RSur Face Brp " & part1.AxisSystems.Item(part1.AxisSystems.Count).Name & ";2);None );Cf11 ));WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR15)", AxisSystem1)

an den internen Namen kommst du über:

Code:
AxisSystem1.GetItem("ModelElement").InternalName

Ich stimme dir zu das es für Rohteilabmessungen Bestimmung wenig Sinn macht das Schwerpunkt Achsensystem zuverwenden. Ich kenne zwar das Kochbuch nicht aber ich finde das Beispiel etwas kompliziert und glaube nicht unbedingt das es immer korrekte Werte liefert.
Z.B.: die Erzeugung der Extremums kann unterschiedliche Ergebnisse haben zB Punkt, Linie, Kurve oder mehreres gleichzitig. Die Selection würde ich z.B. nicht bis zum Schluß mit durchschleppen sondern sofort an eine Variable übergeben, da der Nutzer evtl. während das Makro laufs auf irgend etwas drückt.

Ich bestimme die Rohteilabmessung indem der Nutzer eine ebene Fläche am Körper anwählt. (eine Grundfläche gibt es bei uns eigendlich immer)
Und eine zweite Anlage am Körper oder im Raum z.B. Fläche Achsensystem und darauf kann ich sofort Offsetplans erzeugen. Diese schiebe ich dann ausreichend weit in Plus und Minus. Messe dann die MinimumDistanz zum Körper und kann so meine Abmessungen bestimmen.
Damit erspare ich mir sämtliche Breps und Extremums.

Hoffe das war erstmal verständlich.

mfG
Mario

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

Andreas Müller 1977
Mitglied
Konstrukteur


Sehen Sie sich das Profil von Andreas Müller 1977 an!   Senden Sie eine Private Message an Andreas Müller 1977  Schreiben Sie einen Gästebucheintrag für Andreas Müller 1977

Beiträge: 43
Registriert: 28.08.2010

erstellt am: 13. Okt. 2010 19:18    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

erst einmal recht vielen Dank für deine Mühe.
Vom Prinzip habe ich dich verstanden. Bin in dem Bereich aber nur
Anfänger. Hast du vieleicht da ein ausfürlicheres Beisp.
Währe nicht schlecht wenn der Anwender  beim Ablauf des Makros das entspr. Achsensystem selektieren könnte und von diesem dann die Messungen ablaufen.

------------------
Mit freundlichem Gruß
Andreas

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

roccat
Mitglied
Konstrukteur


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

Beiträge: 165
Registriert: 19.02.2010

WinXP/Win7
Office XP/2007
Catia V5 R16-R19, VB6.0, VBA, BASCOM-AVR
VB .Net 2010

erstellt am: 15. Okt. 2010 10:22    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 Nur für Andreas Müller 1977 10 Unities + Antwort hilfreich

Hallo Andreas,

hab mal versucht dein Beispiel umzubauen.
Habs aber noch nicht in jeder Lebenslage getestet.
Ein Paar Anmerkungen noch dazu:
-Abfrage ob Part offen ist,kann entfallen da es auch im Product funktionieren sollte.
-Bei den Breps kann es sein das für die "CXR14" die "CXR15" stehen muß hängt wohl von der CatiaVersion ab.
-"MyHybBody.AppendHybridShape" kann man auch weglassen, muß die Elemente aber nach dem Messen wieder löschen.
-Evtl. die Hilfselemente zum Schluß wieder löschen um keine "Spuren" zu hinterlassen
-Die Ausgabe ist komfortabler in einer Userform im Modus ShowModal=false zu machen da man weiterabeiten kann und die Box offen hat.
-die Aufmaßrundungsberechnung kann man über die Userform dann auch vom User angepasst werden zum Bsp.: Aufmaß und Rundungsschritt.

Code:
Option Explicit

Sub CATMain()

Dim MyDocument          As Document
Dim MyPart              As Part
Dim MySelection        'As Selection
Dim MyBody              As Body
Dim MyHybBodies        As HybridBodies
Dim MyHybBody          As HybridBody
Dim MyHybShapeFactory  As HybridShapeFactory
Dim MyAxisSystem        As AxisSystem
Dim MyReference(2)      As Reference
Dim MyDirection(2)      As HybridShapeDirection
Dim MyExtremum(5)      As HybridShapeExtremum
Dim MyReferencePlanes(2) As HybridShapePlaneOffsetPt
Dim MyRefBody          As Reference
Dim MyPoint            As HybridShapePointCoord

Dim MyType(0)
Dim Status
Dim i                  As Integer
Dim sString            As String

Dim XValue              As Double
Dim YValue              As Double
Dim ZValue              As Double


Set MyDocument = CATIA.ActiveDocument
Set MySelection = MyDocument.Selection

'Körper wählen
MyType(0) = "Body"
Status = MySelection.SelectElement2(MyType, "Bitte einen Körper auswählen [ESC=Abbruch]", False)
If Status = "Cancel" Then
    End
End If
Set MyBody = MySelection.Item(1).Value
Set MyPart = MyBody.Parent.Parent
MySelection.Clear
     
'Achsensystem wählen
MyType(0) = "AxisSystem"
Status = MySelection.SelectElement2(MyType, "Bitte einen AchsenSystem auswählen [ESC=Abbruch]", False)
If Status = "Cancel" Then
    End
End If
Set MyAxisSystem = MySelection.Item(1).Value
MySelection.Clear

'Directions holen
Set MyHybShapeFactory = MyPart.HybridShapeFactory
Set MyReference(0) = MyPart.CreateReferenceFromBRepName("RSur:(Face:(Brp:(" & MyAxisSystem.GetItem("ModelElement").InternalName & ";1);None:();Cf11:());WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR14)", MyAxisSystem)
Set MyReference(1) = MyPart.CreateReferenceFromBRepName("RSur:(Face:(Brp:(" & MyAxisSystem.GetItem("ModelElement").InternalName & ";2);None:();Cf11:());WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR14)", MyAxisSystem)
Set MyReference(2) = MyPart.CreateReferenceFromBRepName("RSur:(Face:(Brp:(" & MyAxisSystem.GetItem("ModelElement").InternalName & ";3);None:();Cf11:());WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR14)", MyAxisSystem)
Set MyDirection(0) = MyHybShapeFactory.AddNewDirection(MyReference(0))
Set MyDirection(1) = MyHybShapeFactory.AddNewDirection(MyReference(1))
Set MyDirection(2) = MyHybShapeFactory.AddNewDirection(MyReference(2))

'GeometricalSet erzeugen
Set MyHybBodies = MyPart.HybridBodies
Set MyHybBody = MyHybBodies.Add()
MyHybBody.Name = "BoundingBox"
MyPart.InWorkObject = MyHybBody

'oberes und unteres Extremum erzeugen
For i = 0 To 2
    Set MyRefBody = MyPart.CreateReferenceFromObject(MyBody)
    Set MyExtremum((i * 2) + 0) = MyHybShapeFactory.AddNewExtremum(MyRefBody, MyDirection(i), 0)
    MyExtremum((i * 2) + 0).Name = "EXTREMUM_" & (i * 2) + 0
    MyHybBody.AppendHybridShape MyExtremum((i * 2) + 0)
    MyExtremum((i * 2) + 0).Compute
    Set MyRefBody = MyPart.CreateReferenceFromObject(MyBody)
    Set MyExtremum((i * 2) + 1) = MyHybShapeFactory.AddNewExtremum(MyRefBody, MyDirection(i), 1)
    MyExtremum((i * 2) + 1).Name = "EXTREMUM_" & (i * 2) + 1
    MyHybBody.AppendHybridShape MyExtremum((i * 2) + 1)
    MyExtremum((i * 2) + 1).Compute
Next

'Schwerpunkt erzeugen
Set MyPoint = CreateCenter(MyBody, MyPart, MyHybShapeFactory)
MyPoint.Name = "CenterPoint"
MyHybBody.AppendHybridShape MyPoint

'ReferencePlanes erzeugen
For i = 0 To 2
    Set MyReferencePlanes(i) = MyHybShapeFactory.AddNewPlaneOffsetPt(MyReference(i), MyPoint)
    MyReferencePlanes(i).Name = "REFERENCE_PLANE_" & i
    MyReferencePlanes(i).Compute
    MyHybBody.AppendHybridShape MyReferencePlanes(i)
Next

'Werte ermitteln
ZValue = Abs(Messen(MyReferencePlanes(0), MyExtremum(0)) + Messen(MyReferencePlanes(0), MyExtremum(1)))
XValue = Abs(Messen(MyReferencePlanes(1), MyExtremum(2)) + Messen(MyReferencePlanes(1), MyExtremum(3)))
YValue = Abs(Messen(MyReferencePlanes(2), MyExtremum(4)) + Messen(MyReferencePlanes(2), MyExtremum(5)))

'Ausgabe
sString = "Ermittelte Werte bezogen auf: " & MyAxisSystem.Name & VBA.vbCrLf & VBA.vbCrLf
sString = sString & "X-Richtung: " & Round(XValue, 2) & " mm" & VBA.vbCrLf
sString = sString & "Y-Richtung: " & Round(YValue, 2) & " mm" & VBA.vbCrLf
sString = sString & "Z-Richtung: " & Round(ZValue, 2) & " mm" & VBA.vbCrLf
sString = sString & VBA.vbCrLf & VBA.vbCrLf
sString = sString & "X-Aufmaß: " & CreateOffset(Round(XValue, 2)) & " mm" & VBA.vbCrLf
sString = sString & "Y-Aufmaß: " & CreateOffset(Round(YValue, 2)) & " mm" & VBA.vbCrLf
sString = sString & "Z-Aufmaß: " & CreateOffset(Round(ZValue, 2)) & " mm" & VBA.vbCrLf
MsgBox sString, vbOKOnly, "Messung: " & MyBody.Name

End Sub

Function Messen(oFirst As Object, oSecond As Object) As Double
Dim MySPAWorkbench  As SPAWorkbench
Dim MyMeasure      As Measurable

Set MySPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
Set MyMeasure = MySPAWorkbench.GetMeasurable(oFirst)
Messen = MyMeasure.GetMinimumDistance(oSecond)

End Function


Function CreateCenter(oFirst As Object, MyPart As Part, MyHybShapeFactory As HybridShapeFactory) As HybridShapePointCoord
Dim MySPAWorkbench  As SPAWorkbench
Dim MyMeasure      'As Measurable
Dim MyReference    As Reference
Dim MyCoord(2)

Set MyReference = MyPart.CreateReferenceFromObject(oFirst)
Set MySPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
Set MyMeasure = MySPAWorkbench.GetMeasurable(MyReference)
MyMeasure.GetCOG MyCoord

Set CreateCenter = MyHybShapeFactory.AddNewPointCoord(MyCoord(0), MyCoord(1), MyCoord(2))
CreateCenter.Compute

End Function

Function CreateOffset(MyValue As Double) As Double
Dim d      As Double
Dim i      As Integer
Dim dStep  As Double

'Aufmaß Variablen
d = 10  'mindest Aufmaß von 10mm
i = 5  'auf volle Fünfer aufrunden

'Aufmaß berechnen
dStep = (i / 2) - 0.01
CreateOffset = Round((MyValue + d + dStep) / i, 0) * i

End Function


P.S.: Ich finde aber die Variante mit dem Achsensystem trotzdem etwas Aufwendiger da wir nicht immer ein passendes Achsensystem zur optimalen Rohmaßlage für jedes Teil haben, und dieses dann erst Erzeugen müßten.

mfG
Mario

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

Andreas Müller 1977
Mitglied
Konstrukteur


Sehen Sie sich das Profil von Andreas Müller 1977 an!   Senden Sie eine Private Message an Andreas Müller 1977  Schreiben Sie einen Gästebucheintrag für Andreas Müller 1977

Beiträge: 43
Registriert: 28.08.2010

erstellt am: 18. Okt. 2010 19:58    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 Mario

vielen, vielen Dank für deine Mühe.
Bin noch nicht dazu gekommen es auszuprobieren.
Werd mich am Wochenende in einer ruhigen damit beschäftigen.
Auf jeden Fall bin ich dir dankbar das du dir die Zeit genommen hast
dich mit mein Problem auseinander zu setzen.

------------------
Mit freundlichem Gruß
Andreas

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

ghfjdksla
Mitglied
Konstrukteur


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

Beiträge: 10
Registriert: 25.09.2020

CATIA V5/R19

erstellt am: 06. Apr. 2021 13:01    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 Nur für Andreas Müller 1977 10 Unities + Antwort hilfreich

Hallo zusammen,

meine Programmierskills bzgl. CATIA halten sich leider sehr in Grenzen... 

Ich würde gerne das Makro so umschreiben, dass es für "Products" funktioniert und im Idealfall anhand der äußersten Flächen(-farben) vordefinierte Aufmaße addiert.
-> Also wenn Flächenfarbe bei z.B. "EXTREMUM_0" = xyz then Offset +0,5/5/10mm

Außerdem wäre es gut wenn ich nicht für jedes Bauteil eine Achse vorgeben müsste, sondern automatisch das kleinstmögliche Maß erkannt wird.

Vielen lieben Dank.

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11342
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 06. Apr. 2021 13:22    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 Nur für Andreas Müller 1977 10 Unities + Antwort hilfreich

Servus

Der hier in dieser Diskussion betrachtet Weg geht wohl nur im CATPart.
Hier findest du Ansätze für solch eine BoundingBox im Product.
Programmieren musst du das wohl selber.
Zur minimalen Ausrichtung: je nach Geometrie können dir da die Hauptträgheitsachsen weiterhelfen.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

ghfjdksla
Mitglied
Konstrukteur


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

Beiträge: 10
Registriert: 25.09.2020

CATIA V5/R19

erstellt am: 07. Apr. 2021 07:45    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 Nur für Andreas Müller 1977 10 Unities + Antwort hilfreich

Vielen Dank für den Link. Das Problem scheint also recht komplex zu sein.
In 95% der Fälle sollte bei mir die NC-Achse als minimale BoundingBox funktionieren.

Konkret handelt es sich bei mir um Formbacken die aus dem Vollen gefräst werden. Je nach Flächenfarben an den Extremen/äußersten Kanten werden +0,5/+5/+10mm Aufmaß addiert.
Ist es denkbar die Flächenfarben an den Extremen (EXTREMUM_0-5) ausgeben zu lassen?

Ich habe es versucht aber leider nicht hinbekommen...

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

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)2021 CAD.de | Impressum | Datenschutz