Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Kreismuster wird willkürlich erstellt

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:  Kreismuster wird willkürlich erstellt (1998 mal gelesen)
Math.random
Mitglied
Ing

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

Beiträge: 8
Registriert: 23.02.2010

erstellt am: 02. Mrz. 2010 20:03    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 Forum!

Ich möchte ein Kreismuster (Circular Pattern) erstellen, indem ich eine Linie mehrfach um eine andere Linie drehe.
Hier folgendes Test-Makro (*.catvbs):

Code:
Sub CATMain()
'~~~~~Drehachse und zu drehende Linie erstellen~~~~~
Set MachGeo = CATIA.ActiveDocument.Part.HybridShapeFactory
Set GeoSet = CATIA.ActiveDocument.Part.HybridBodies.Add()
Set Pkt1 = MachGeo.AddNewPointCoord(0, 0, 0)
Set Pkt2 = MachGeo.AddNewPointCoord(100, 0, 0)
Set Pkt3 = MachGeo.AddNewPointCoord(80, 0, 20)
Set Achse = MachGeo.AddNewLinePtPt(Pkt1, Pkt2)
Set Dreh_mich = MachGeo.AddNewLinePtPt(Pkt3, Pkt2)
GeoSet.AppendHybridShape Achse
GeoSet.AppendHybridShape Dreh_mich

'~~~~~Kreismuster erzeugen~~~~~
Set Kreismuster = CATIA.ActiveDocument.Part.ShapeFactory.AddNewSurfacicCircPattern _
  (Dreh_mich, 1, 5, 0., 90., 1, 1, Nothing, Achse, True, 0., True, False)
CATIA.ActiveDocument.Part.Update
End Sub


Zum Testen genügt ein neues leeres Part.
Das Kreismuster wird nach Vorgabe erstellt, ich würde es als das Ende eines 4-armigen Wurfankers beschreiben.

Es gibt jedoch folgendes Problem:
Wurde im entsprechenden Part bereits vorher ein Kreismuster erstellt, dann übernimmt Catia bei Makro-Ausführung die Parameter dieses vorherigen Kreismusters!
Ein einfacher Test: Neues Part, obiges Makro starten, erzeugtes (korrektes) Kreismuster ändern (z.B. Instances 5 -> 7, Angular spacing 90deg -> 40deg; Crown: Circles 1 -> 3, Circle spacing 0mm -> 20mm), Makro ein zweites Mal starten.
Es wird ein neues Kreismuster erzeugt, dass plötzlich genauso aussieht, wie das geänderte Muster! (getestet mit V5R16 und V5R19)
Offenbar merkt sich Catia die Einstellungen des zuletzt im Part erzeugten Kreismusters.
Man z.B. kann auch per Hand ein Solid-Kreismuster erstellen, alle Muster löschen, das Teil speichern, Catia neu starten, das Test-Makro aufrufen ==> das erzeugte Kreismuster hat jetzt die gleichen Parameter, wie das nicht mehr vorhandene Solid-Kreismuster.

Meine Frage: Gibt es vielleicht einen Skriptbefehl, mit welchem sich erzwingen lässt, dass das Skript nicht x-beliebig ausgeführt wird, sondern bitte schön so, wie es im Skript steht?!!

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: 02. Mrz. 2010 22:12    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 Math.random 10 Unities + Antwort hilfreich

Hallo,
ja.. CATIA ist schon toll 

Ohne es jetzt zu getestet zu haben würde es vielleicht funktionieren, wenn die jeweiligen Parameter für das Muster nachträglich (erneut) zugewiesen werden. Dann sollte es (eigentlich) auf jeden Fall funktionieren.

SG

Jens Hansen

------------------
Inoffizielle CATIA-Hilfeseite
Homepage von Jens Hansen
Kochbuch - CATIA V5 automatisieren

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



Internal PLM Consultant (f/m/d)

Our solutions are a key part of most industries - electronics, medical research, renewable energy, food production, infrastructure and many more. Working with us means working with the latest technologies and groundbreaking, sustainable innovations. Join us on our journey for a better tomorrow.

Atlas Copco is seeking a motivated individual to join its global PLM team, possessing ...

Anzeige ansehenConsulting, Engineering
Math.random
Mitglied
Ing

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

Beiträge: 8
Registriert: 23.02.2010

erstellt am: 12. Mrz. 2010 06:50    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 Antwort, das erneute Zuweisen der Parameter funktioniert.
Aber der Weg dorthin war sehr steinig.
Für mich selbst ist das Problem geklärt. Ich verfasse diese Antwort somit, um anderen Usern ähnlichen Ärger mit Kreismustern zu ersparen.

Wie oben ersichtlich, benötigt der Befehl AddNewSurfacicCircPattern 13 Parameter.
Bei vier dieser Parameter besteht das Problem, dass statt der im Skript angegebenen Werte die Werte des zuletzt vom User per OK beendeten, nicht rückgängig gemachten Kreismusters übernommen werden (V5 speichert derartige unsichtbare Informationen bekanntlich in der Part-Datei).
Der Bug der falschen Wertzuweisung betrifft die Parameter Nr. 2) bis 5)  {Circle(s), Instance(s), Circle spacing, Angular spacing}.

Nur diese 4 Parameter müssen also nach AddNewSurfacicCircPattern erneut zugewiesen werden:

Code:
Sub CATMain()
...

'~~~~~Kreismuster erzeugen~~~~~
Set Kreismuster = CATIA.ActiveDocument.Part.ShapeFactory.AddNewSurfacicCircPattern _
  (Dreh_mich, 1, 5, 20., 90., 1, 1, Nothing, Achse, True, 0., True, False)

'~~~~~Parameter erneut zuweisen~~~~~
Kreismuster.RadialRepartition.InstancesCount.Value = 1
Kreismuster.AngularRepartition.InstancesCount.Value = 5
Kreismuster.RadialRepartition.Spacing.Value = 20.  'hier optional
Kreismuster.AngularRepartition.AngularSpacing.Value = 90.

CATIA.ActiveDocument.Part.Update
End Sub


Da in meinem Beispiel die Anzahl der Circles (Crown Definition => Circle(s)) nicht größer 1 ist, ist es egal, welcher Wert unter "Circle spacing" steht. In diesem Fall würden auch drei statt vier Wert-Neuzuweisungen genügen.

Der obige Code wurde unter R16 und R19 erfolgreich getestet. Ich erlaube mir zu erwähnen, dass die Wert-Neuzuweisungen das Ergebnis stundenlanger Rumraterei sind. Wenn schon der Befehl AddNewSurfacicCircPattern fehlerhaft ausgeführt wird, darf man wenigstens erwarten, dass in der Hilfe Punkt für Punkt beschrieben wird, wie man die Parameter 2) bis 5) neu zuweisen kann! Doch bereits der unter "CircPattern" beschriebene Befehl SetInstanceAngularSpacing funktioniert nicht.
Erst durch Tests mit dem Makrorekorder und das Kombinieren von über die gesamte Hilfe verteilten Bruchstücken bin ich zur Lösung gelangt.
Um sowas den anderen Forum-Nutzern zu ersparen, zähle ich im Folgenden auf, auf welche Methoden der Wert-Neuzuweisung ich bei den anderen Parametern des Befehls AddNewSurfacicCircPattern gestoßen bin:

Parameter Nr.
1)  'zu drehendes Objekt (keine Neuzuweisung möglich?)
6)  Kreismuster.RadialDirectionRow.Value = 4 '(Bsp.) (More => Row in radial direction)
7)  Kreismuster.AngularDirectionRow.Value = 4 '(Bsp.) (More => Row in angular direction)
8)  'Rotation Center (Dreh-Punkt statt Dreh-Achse ist im 3D-Raum irgendwie sinnfrei?)
9)  Kreismuster.SetRotationAxis Achse_neu '(Drehachse)
10) Kreismuster.RotationOrientation = False '(=> Drehung entgegen der natürlichen Richtung)
11) Kreismuster.RotationAngle.Value = 23 '(Bsp.) (More => Rotation angle)
12) Kreismuster.RadialAlignment = False '(=> Objekt wird nur verschoben, nicht gedreht)
13) 'Complete Crown (Muster wird auf 360° verteilt => i.d.R. Widerspruch zu Nr. 5) ?)

Für kritische Anmerkungen bin ich jederzeit zu haben 

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