Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  CATIA V5 Programmierung
  Makro für CurveSmooth

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co.
  
Dassault PLM Integrationen mit der 3DViewStation, eine Pressemitteilung
Autor Thema:  Makro für CurveSmooth (1618 mal gelesen)
F.lix
Mitglied
Student


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

Beiträge: 15
Registriert: 10.10.2014

erstellt am: 29. Okt. 2014 17:27    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


Fehler.PNG

 
Hallo an alle,

ich würde gerne selektierte Kurven automatisch mit dem Marko smoothen lassen (mit den gleichen Parametern). Ich habe schon ein mal ein bisschen rumgebastelt und mit mit dem Makrorekorder und begrenztem Makrowissen zu folgendem Ergebnis gekommen:

Code:
Sub CATMain()


  Dim mySelection as Selection
  Set mySelection = Catia.ActiveDocument.Selection

  Dim AnzahlSelekt as integer
  AnzahlSelekt = mySelection.count  ' Gibt an wieviele Elemente selektiert wurden

Dim I as integer
Dim oSelElem as Object
Dim reference1 As Reference
Dim hybridShapeCurveSmooth1 As HybridShapeCurveSmooth
dim HybShapeFac As Factory

  Set Part1 = CATIA.ActiveDocument.Part ' aktives part holen
  Set partDocument1 = CATIA.ActiveDocument
  Set HybShapeFac = Part1.HybridShapeFactory            'factory zu erstellen der Punkte

For I = 1 to AnzahlSelekt

Set oSelElem = mySelection.Item(I)

Set hybridShapeCurveSmooth1 = HybShapeFac.AddNewCurveSmooth(oSelElem)

hybridShapeCurveSmooth1.SetTangencyThreshold 0.500000

hybridShapeCurveSmooth1.CurvatureThresholdActivity = False

hybridShapeCurveSmooth1.MaximumDeviationActivity = True

hybridShapeCurveSmooth1.SetMaximumDeviation 0.010000

hybridShapeCurveSmooth1.TopologySimplificationActivity = True

hybridShapeCurveSmooth1.CorrectionMode = 3

Next

part1.Update

End Sub


In der Zeile "Set hybridShapeCurveSmooth1 = HybShapeFac.AddNewCurveSmooth(oSelElem)" kommt die Fehlermeldung .

Kann mir jemand begabteres vielleicht weiterhelfen?

Danke

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: 12054
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 29. Okt. 2014 17:34    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 F.lix 10 Unities + Antwort hilfreich

Servus
Probiere mal das selektierte Element zu übergeben:
Code:
Set oSelElem = mySelection.Item2(I).Value

oder eine Referenz des selektierten Elements zu übergeben:
Code:
Set oSelElem = mySelection.Item2(I).Reference
ggf musst du die Referenz zB über CreateReferenceFromObject erzeugen.

Gruß
Bernd

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

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

F.lix
Mitglied
Student


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

Beiträge: 15
Registriert: 10.10.2014

erstellt am: 30. Okt. 2014 09:23    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 Bernd,

ich habe jetzt

Code:
Set oSelElem = mySelection.Item(I)

mit

Code:
Set oSelElem = mySelection.Item2(I).Value

ersetzt. Läuft jetzt auch ohne Fehler, leider bringt er mir überhaupt kein Ergebnis. Es passiert also nix.

Mit der Referenz komme ich auch nicht weiter:

Code:
Sub CATMain()


  Dim mySelection as Selection
  Set mySelection = Catia.ActiveDocument.Selection

  Dim AnzahlSelekt as integer
  AnzahlSelekt = mySelection.count  ' Gibt an wieviele Elemente selektiert wurden

Dim I as integer
Dim oSelElem as Object
Dim reference1 As Reference
Dim hybridShapeCurveSmooth1 As HybridShapeCurveSmooth
dim HybShapeFac As Factory

  Set Part1 = CATIA.ActiveDocument.Part ' aktives part holen
  Set partDocument1 = CATIA.ActiveDocument
  Set HybShapeFac = Part1.HybridShapeFactory            'factory zu erstellen der Punkte

For I = 1 to AnzahlSelekt

Set oSelElem = mySelection.Item(I).value

Set reference1 = part1.CreateReferenceFromObject(oSelElem)

Set hybridShapeCurveSmooth1 = HybShapeFac.AddNewCurveSmooth(reference1)

hybridShapeCurveSmooth1.SetTangencyThreshold 0.500000

hybridShapeCurveSmooth1.CurvatureThresholdActivity = False

hybridShapeCurveSmooth1.MaximumDeviationActivity = True

hybridShapeCurveSmooth1.SetMaximumDeviation 0.010000

hybridShapeCurveSmooth1.TopologySimplificationActivity = True

hybridShapeCurveSmooth1.CorrectionMode = 3

Next

part1.Update

End Sub


Vielleicht noch Ideen? Danke

Grüße

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: 12054
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 30. Okt. 2014 09:41    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 F.lix 10 Unities + Antwort hilfreich

Servus
Du musst wohl die CurveSmooth noch einen GeoSet zuweisen zB:
Code:
Dim hybridBodies1 As HybridBodies
Set hybridBodies1 = part1.HybridBodies

Dim hybridBody1 As HybridBody
Set hybridBody1 = hybridBodies1.Item(1)

hybridBody1.AppendHybridShape hybridShapeCurveSmooth1 'ggf das Obejt im Klammern


Gruß
Bernd

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

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

F.lix
Mitglied
Student


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

Beiträge: 15
Registriert: 10.10.2014

erstellt am: 30. Okt. 2014 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

Also das Makro sieht jetzt folgendermaßen aus:
Code:
Sub CATMain()


  Dim mySelection as Selection
  Set mySelection = Catia.ActiveDocument.Selection

  Dim AnzahlSelekt as integer
  AnzahlSelekt = mySelection.count  ' Gibt an wieviele Elemente selektiert wurden

Dim I as integer
Dim oSelElem as Object
Dim hybridShapeCurveSmooth1 As HybridShapeCurveSmooth
Dim HybShapeFac As Factory
Dim hybridBodies1 As HybridBodies


  Set Part1 = CATIA.ActiveDocument.Part ' aktives part holen
  Set partDocument1 = CATIA.ActiveDocument
  Set HybShapeFac = Part1.HybridShapeFactory            'factory zum Erstellen der Kurve
  Set hybridBodies1 = part1.HybridBodies

For I = 1 to AnzahlSelekt

Set oSelElem = mySelection.Item(I).value

msgbox oSelElem.name

Set hybridBody1 = hybridBodies1.Item(I)

Set hybridShapeCurveSmooth1 = HybShapeFac.AddNewCurveSmooth(oSelElem)

hybridShapeCurveSmooth1.SetTangencyThreshold 0.500000

hybridShapeCurveSmooth1.CurvatureThresholdActivity = False

hybridShapeCurveSmooth1.MaximumDeviationActivity = True

hybridShapeCurveSmooth1.SetMaximumDeviation 0.010000

hybridShapeCurveSmooth1.TopologySimplificationActivity = True

hybridShapeCurveSmooth1.CorrectionMode = 3

hybridBody1.AppendHybridShape(hybridShapeCurveSmooth1)

Next

part1.Update

End Sub


Läuft immer noch ohne Fehlercode, liefer jedoch immer noch kein Ergebnis. Die Kurven findet er, dass sagt mir die Msgbox. Nur was danach kommt, scheint nicht zu funktionieren.

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: 12054
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 30. Okt. 2014 10:19    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 F.lix 10 Unities + Antwort hilfreich

Servus
Bei mir läuft der Code. Wo selektierst du die Kurven? Im Baum oder im 3D? (im Baum selektieren klappt bei mir)
Vermutlich muss eine Kurve und keine BREP übergeben werden.

Gruß
Bernd

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

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

F.lix
Mitglied
Student


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

Beiträge: 15
Registriert: 10.10.2014

erstellt am: 30. Okt. 2014 10:52    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

Hi,

es sind keine Regelgeometrien, sondern 3D-Kurven, die als Split von zwei Surface entstanden sind. Könnnte das irgendwie das Problem sein? Ich selektiere im Baum, benutze ein .CATpart (versuchsweise) und arbeite im GSD.

Vielleicht sollt eich nochmal neu Anfangen 

Eigentlich habe ich ein .CATProduct und er soll mir alle gefundenen 3D-Kurven smoothen. Der Makrorekorder war dafür wahrscheinlich der falsche Ansatz. . .

Grüße
Felix

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: 12054
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 30. Okt. 2014 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 Nur für F.lix 10 Unities + Antwort hilfreich

Servus
Aus dem CATProduct wird das ganze aber interessanter.
In welchem CATPart soll die Geometrie denn erzeugt werden?

Gruß
Bernd

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

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

F.lix
Mitglied
Student


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

Beiträge: 15
Registriert: 10.10.2014

erstellt am: 30. Okt. 2014 14:04    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

Hi,

am Liebsten wahrscheinlich in ein extra Part, da aber in jeden einzelnen Part 3D-Kurven stecken könnten, wird das schwierig oder?

Alternativ ginge auch in ein Einziges beliebiges Part, wo sie gesammelt werden.

Grüße
Felix

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