Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Aufmassfläche via Makro

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:  Aufmassfläche via Makro (1848 mal gelesen)
CabinMaster
Mitglied
Diplomingenieur L&R


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

Beiträge: 19
Registriert: 31.07.2009

Windows XP
Catia V5 R18
[und nein: Katja mag nur einen Prozessor zur Zeit benutzen]
Makro mit CATVBS

erstellt am: 04. Aug. 2009 08:44    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


SS_Fus.jpg

 
Guten Tag!

Ich bin noch Neuling in der Makroprogrammierung und generell mit CATIA (wir kennen uns erst seit knapp zwei Wochen). Natürlich stolpert man über vieles, oder eigentlich anfangs über alles, aber meist findet sich ne Lösung mit Makroaufzeichung, Buch oder diesem Forum.

Bei folgendem Problem bin ich allerdings etwas gekniffen: ich erstelle aus (sehr!) vielen Punkten Splines, welche ich zu einem Loft zusammen füge. Dafür habe ich als Grundlage das CATIA-interne Excel Makro als Basis genommen. Schlussendlich habe ich die Sache aber so angepasst, dass alle Punkte direkt aus einer ASCII Datei geladen werden. Klappt auch gut, Splines und Lost entstehen wie gewünscht.

Siehe Bild:

Will ich dies allerdings zu einer Aufmaßfläche machen, gibt es einen Laufzeitfehler. Das erstaunliche: die manuelle Aktion funktioniert. Allerdings kommt es bei der manuellen Aktion zu einer Warnung, welche mit OK übergangen werden kann.
Die Warnung: "Das aktuelle Objekt in Bearbeitung befindet sich nicht in einem Körper. Die neue Volumenkomponente wird hinter der letzten Komponente des Hauptkörpers erzeugt."

Kurz die relevanten Textzeilen meines Makros:

Code:

[...laufende For-Schleife ...]
        ' create the points
For k = 1 To Points
  Set PointArray(k) = Wzk3D.AddNewPointCoord(x(frame_number),y(k),z(k))
  If MakePoints Then
Victim.AppendHybridShape PointArray(k)
CS.Part.Update
CATIA.ActiveWindow.ActiveViewer.Reframe
  End If
Next

Set spline = CS.Part.HybridShapeFactory.AddNewSpline
spline.SetSplineType 0
spline.SetClosing 0

'Creates and adds points to the spline
For i = 1 To counter
Set ReferenceOnPoint = CS.Part.CreateReferenceFromObject(PointArray(i))
spline.AddPointWithConstraintExplicit ReferenceOnPoint, Nothing, -1, 1, Nothing, 0
Next
If MakeSplines Then
Victim.AppendHybridShape spline
CS.Part.Update
CATIA.ActiveWindow.ActiveViewer.Reframe
End If


' Do the loft
Set LocalRefSpline = CS.Part.CreateReferenceFromGeometry(spline)
Loft.AddSectionToLoft LocalRefSpline, 1, Nothing
Loft.Name = "Fuselage Shell"

Next

' create Loft
Victim.AppendHybridShape Loft
CS.Part.Update

' create object with finite thickness
Set Fuselage = CS.Part.ShapeFactory.AddNewThickSurface(Loft, 0, 1.000000, 0.000000)
Set Stuff = Fuselage.TopOffset
Stuff.Value = 3.000000


Die letzte Aktion mit AddNewThickSurface schlägt fehl.
Hat jemand Ideen?

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

CabinMaster
Mitglied
Diplomingenieur L&R


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

Beiträge: 19
Registriert: 31.07.2009

Windows XP
Catia V5 R18
[und nein: Katja mag nur einen Prozessor zur Zeit benutzen]
Makro mit CATVBS

erstellt am: 04. Aug. 2009 08: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


SS_Fus2.jpg

 
Hier noch ein Bild während der manuellen Nutzung der Funktion.
Siehe Bild.

Dies ist die Aufzeichung des Makro-Rekorders, gewohnt kryptisch  .

Code:
Language="VBSCRIPT"

Sub CATMain()

Set partDocument1 = CATIA.ActiveDocument

Set part1 = partDocument1.Part

Set bodies1 = part1.Bodies

Set body1 = bodies1.Item("Hauptkörper")

part1.InWorkObject = body1

Set shapeFactory1 = part1.ShapeFactory

Set reference1 = part1.CreateReferenceFromName("")

Set thickSurface1 = shapeFactory1.AddNewThickSurface(reference1, 0, 1.000000, 0.000000)

Set hybridBodies1 = part1.HybridBodies

Set hybridBody1 = hybridBodies1.Item("Fuselage 3D Wire Model")

Set hybridShapes1 = hybridBody1.HybridShapes

Set hybridShapeLoft1 = hybridShapes1.Item("Fuselage Shell")

Set reference2 = part1.CreateReferenceFromObject(hybridShapeLoft1)

thickSurface1.Surface = reference2

Set length1 = thickSurface1.TopOffset

length1.Value = 2.000000

length1.Value = 3.000000

part1.Update

End Sub



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

Randle
Mitglied
CAD/PLM Consultant


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

Beiträge: 695
Registriert: 12.04.2003

Win10 x64
CATIA V5 R18, R19, R21, R27-29

erstellt am: 04. Aug. 2009 09:43    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 CabinMaster 10 Unities + Antwort hilfreich

Hallo,

ich habe mit jetzt deinen Code nicht im Detail angesehen, aber ich habe folgende Vermutung.

Du erzeugst im Vorfeld per Script "jede Menge" Elemente innerhalb eines GeoSets. Dann willst du ein Aufmass erstellen (=Solidelement), in Bearbeitung ist aber immer noch das GeoSet. Nun kommt beim manuellen Erstellen des Aufmasses eine Fehler/Hinweismeldung. Diese kannst du mit deinem Makro nicht abfangen und dein Script steigt aus. Versuche doch mal vor der Erstellung (d)einen Körper in Bearbeitung zu setzen, damit solltest du dann die Fehler/Hinweismeldung umgehen können (ist dann ja nicht mehr notwendig).

Habe es nicht getestet aber die Syntax sollte in etwa so aussehen (in der Doku ist auch ein kleinen Beispiel, suche nach InWorkObject)

part1.InWorkObject = part1.bodies.item(1)

Viel Erfolg

------------------
MfG
Randle

! It's not a bug, it's a feature !

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

Jens Hansen
Mitglied
Senior Consult


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

Beiträge: 1055
Registriert: 05.08.2000

Win7
CATIA V5 R19
VB.Net
C#

erstellt am: 04. Aug. 2009 09:46    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 CabinMaster 10 Unities + Antwort hilfreich

Hallo,
laut Fehlermeldung ist ein Body aktiviert anstatt ein Geometrisches Set.
Ersetze mal
Set bodies1 = part1.Bodies
Set body1 = bodies1.Item("Hauptkörper")
part1.InWorkObject = body1

durch:

Set hybridBodies1 = part1.HybridBodies
Set hybridBody1 = hybridBodies1.Item("Fuselage 3D Wire Model")
part1.InWorkObject = hybridBody1

Habe leider gerade kein V5 im Zugriff daher kann ich nicht testen.

SG

Jens Hansen

------------------
Inoffizielle CATIA-Hilfeseite
Private Seite
Xing
Kochbuch - CATIA V5 automatisieren

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

Jens Hansen
Mitglied
Senior Consult


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

Beiträge: 1055
Registriert: 05.08.2000

Win7
CATIA V5 R19
VB.Net
C#

erstellt am: 04. Aug. 2009 10:02    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 CabinMaster 10 Unities + Antwort hilfreich

Wer lesen kann ist eindeutig im Vorteil 
klar; es muss ein Body aktiv sein um ein Volumenfeature benutzen zu können.
Wenn die Aufmaßfläche im Hauptkörper erstellt werden soll (was man aber nicht macht) dann recht

part1.InWorkObject = part1.MainBody

SG

Jens Hansen

------------------
Inoffizielle CATIA-Hilfeseite
Private Seite
Xing
Kochbuch - CATIA V5 automatisieren

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

CabinMaster
Mitglied
Diplomingenieur L&R


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

Beiträge: 19
Registriert: 31.07.2009

Windows XP
Catia V5 R18
[und nein: Katja mag nur einen Prozessor zur Zeit benutzen]
Makro mit CATVBS

erstellt am: 04. Aug. 2009 14:26    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

Danke für die Antworten!
Habe es noch nicht ausprobiert, aber werde ich heute oder morgen nachholen und dann noch mal hier das Ergebnis posten. Die Sache mit dem referenzieren und VBS generell ist noch etwas gewöhnungsbedürftig.
Set My.VisualBasic.Knowledge = Language.Syntax.Activate

Falls jemand noch konkretere Hinweise bezüglich des Codes braucht bitte einfach hier schreiben (ich denke viele kommen wie ich per Google in bestimmte Themen).

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

CabinMaster
Mitglied
Diplomingenieur L&R


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

Beiträge: 19
Registriert: 31.07.2009

Windows XP
Catia V5 R18
[und nein: Katja mag nur einen Prozessor zur Zeit benutzen]
Makro mit CATVBS

erstellt am: 05. Aug. 2009 08:32    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

Danke noch mal für die Tipps.
Es funktioniert jetzt ohne zicken.
Ich habe im Endeffekt den Makro-Rekorder Code genommen und weitestgehend adaptiert, auch um die Übersichtlichkeit wenigstens ein wenig zu waren.


Code:
' Create Monsieur Fuselage (modified Makro-recorder code)
If MakeLoft Then
' Append Loft created above
Victim.AppendHybridShape Loft
CS.Part.Update
' Set current in work object (circumvent warning in Katja)
CS.Part.InWorkObject = CS.Part.Bodies.Item("Hauptkörper")
Set reference1 = CS.Part.CreateReferenceFromName("")
' create thick surface
Set Fuselage = CS.Part.ShapeFactory.AddNewThickSurface(reference1, 0, 1.000000, 0.000000)
Set hybridBody1 = CS.Part.HybridBodies.Item("Fuselage 3D Wire Model")
Set hybridShapeLoft1 = hybridBody1.HybridShapes.Item("Fuselage Shell")
Set reference2 = CS.Part.CreateReferenceFromObject(hybridShapeLoft1)
Fuselage.Surface = reference2
Set Stuff = Fuselage.TopOffset
' ste actual thickness
Stuff.Value = 2.000000
CS.Part.Update
End If

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