Autor
|
Thema: Solid Datum Explicit (2729 mal gelesen)
|
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 10. Jan. 2013 14:54 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich hätte mal wieder eine Denksportaufgabe. :-) Ich würde gern ein Solid aus verschiedenen Geometrien erzeugen und zwar als dumme Geometrie, also irgend ne Verlinkung und Co. Dafür schwebt mir eine Funktion ähnlich dem AddNewCircleDatum() vor, wo ich eine Reference übergebe und dumme Geometrie zurückbekomme. Klar kann ich jetzt mit Selection und über Copy & PaseSpecial ein ähnliches Ergebnis herbeiführen. In meinem Fall kann ich aber nicht mit der Zwischenablage arbeiten und bin daher auf der Suche nach einer anderen Lösung. Vielleicht habt ihr einen guten Ansatz. :-) ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 10. Jan. 2013 16:04 <-- editieren / zitieren --> Unities abgeben:
Okay, ich bin nun so weit es einzugrenzen: Ich brauche die Shaft-Geometrie, aber dumm. Den Shaft erzeuge ich im Makro selbst, könnte das Volumen also auch auf andere Weise erzeugen, wenn ihr Vorschläge habt. Wichtig ist nur, dass am Ende ein dummes Solid rasukommt und das Ganze von der Performance her geht. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 10. Jan. 2013 21:20 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
Servus Henry Schöne Denksportaufgabe. Wenn du mit einem Volumen (also kein Solid) leben könntest funktioniert es über "AddNewVolumeDatum" (der HybridShapeFactory). Code: Dim oVolume As HybridShapeVolumeExplicit Set oVolume = HybridShapeFactory.AddNewVolumeDatum(oref)
Für ein Solid, was du bestimmt suchst, habe ich keine Lösung.Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 11. Jan. 2013 09:30 <-- editieren / zitieren --> Unities abgeben:
Boah! Manchmal kommt man auf die einfachsten Dinge nicht. :-D Bernd, das hört sich nach nem sehr guten Kompromiss an! Ich hab's noch nicht ausprobiert, aber ein Volumen müsste auch gehen. Da ich kein Konstrukteur bin aber meine Gegenfrage: Was ist der Unterschied zwischen Solid und Volume? Also außer das Feature, gibt es da Unterschiede für andere Prozesse? Werd's gleich mal einbauen und schauen. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 11. Jan. 2013 09:43 <-- editieren / zitieren --> Unities abgeben:
Edit Okay mit der GSO-Lizenz geht es, aber die kann ich zur Laufzeit ja nicht mehr ziehen. Werde es aber als Alternative berücksichtigen. /Edit Darüber muss ich noch einmal sinnieren, im ersten Wurf klappt es nicht
Code:
Dim shaftWork As PARTITF.Shaft Set shaftWork = generateShaft(sketchWork, shFactWork, refOfHAxis) Call i_partWork.UpdateObject(shaftWork) Dim refBlubb As INFITF.Reference Set refBlubb = i_partWork.CreateReferenceFromObject(shaftWork) Dim oVolume As HybridShapeVolumeExplicit Set oVolume = i_hybShFactWork.AddNewVolumeDatum(refBlubb) Call io_hybBodyWork.AppendHybridShape(oVolume) Call makeBodyDatumSolid(bodyWork, i_partWork)
Bei Set oVolume = i_hybShFactWork.AddNewVolumeDatum(refBlubb) bekomme ich AddNewCircleCtrRadWithAngles failed. Die Reference mit Shaft.1 ist okay. In der Doku steht:
Code:
Created Volume Note2: the object passed as parameter to create the datum has to be in the current container. Otherwise, an error occurs.
Das verstehe ich gerade nicht. Habe versucht swohl ein GeoSet, als auch den Shaft und den Body in dem der Shaft ist mal auf InWork zu schalten. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing [Diese Nachricht wurde von HoBLila am 11. Jan. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tsolina Mitglied
Beiträge: 15 Registriert: 10.10.2012 Compaq cx50 :D
|
erstellt am: 17. Jan. 2013 01:02 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
Hallo, so was für die Flächen ist ganz einfach, mann kann Catia.StartCommand "Create datum" bevor erzeugung von Feature nutzen, aber für Solids funktioniert das nicht. ich muss noch ein bisschen nachdenken. ------------------ Catia v5 macros Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 17. Jan. 2013 07:07 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
Hallo HoBLila, folgendes geht auch noch. Ich beschreib dir den manuellen Weg (wenn du den Makrorekorder mitlaufenlässt bekommst du den zugehörigen Code). Erzeuge eine CloseSurface im PartDesign, indem du in der Dialogbox vom CloseSurface-Befehl ins Feld Object to Close mit der Rechten Maustaste (RMT) klickst > CreateExtract wählst > Propagation type auf Point continuity stellst und als Element(s) to extract iregendeine Teilfläche deines Objects (Shafts oder was auch immer) auswählst. Makrorekoreder anhalten. Kurze Erklärung an dieser Stelle: Manuell erzeugt hast du gerade: eine CloseSurface (=Volumen), welche vom Extract abhängt, dieses wiederum vom Shaft (oder was auch immer). Lässt du das Script ablaufen: CloseSurface geht ins Nirvana, da das Extract fehlt/nicht erzeugt wird. Das Phänomen hatte ich mal in einem anderen Zusammenhang (wo ich es eigentlich nicht wollte). Liegt daran, das der Makrorekoreder nicht mehr vollständig aufzeichnet, sobald du irgendetwas über das RMT-Menü ausführst. Dann ist die Verlinkung (die ich damials eigentlich wollte) hin. Aber da du diese ja gerade nicht willst, könnte das eine Lösung für dich sein. Ohne GSO oder sonst was. Auswahl muss nicht übers brep erfolgen (wie im Makrorekorder) sonder wie immer du willst. Per Ref oder Userselektion oder sonstwie. Das CloseSurface kannst du in jeden Body einfügen, ob leer oder nicht. Die Rekorderrei sollte nur das Phänomen selbst verdeutlichen. Falls es dir hilft ... Gruß ------------------ tomtom1972
[Diese Nachricht wurde von tomtom1972 am 17. Jan. 2013 editiert.] [Diese Nachricht wurde von tomtom1972 am 17. Jan. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 17. Jan. 2013 10:58 <-- editieren / zitieren --> Unities abgeben:
Hallo tomtom1972, ich komme leider nicht zu der Erkenntnis, die Du hattest. Mein Code sieht so aus: Code:
Sub CATMain()Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument Dim part1 As Part Set part1 = partDocument1.Part Dim shapeFactory1 As ShapeFactory Set shapeFactory1 = part1.ShapeFactory Dim reference1 As Reference Set reference1 = part1.CreateReferenceFromName("") Dim closeSurface1 As CloseSurface Set closeSurface1 = shapeFactory1.AddNewCloseSurface(reference1) Dim hybridShapeFactory1 As HybridShapeFactory Set hybridShapeFactory1 = part1.HybridShapeFactory Dim bodies1 As Bodies Set bodies1 = part1.Bodies Dim body1 As Body Set body1 = bodies1.item("Body.4") Dim shapes1 As Shapes Set shapes1 = body1.Shapes Dim shaft1 As Shaft Set shaft1 = shapes1.item("Shaft.1") Dim reference2 As Reference Set reference2 = part1.CreateReferenceFromBRepName("RSur:(Face:(Brp:(Shaft.1;0:(Brp:(Sketch.1;3)));None:();Cf11:());WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR 15)", shaft1) Dim hybridShapeExtract1 As HybridShapeExtract Set hybridShapeExtract1 = hybridShapeFactory1.AddNewExtract(reference2) hybridShapeExtract1.PropagationType = 1 hybridShapeExtract1.ComplementaryExtract = False hybridShapeExtract1.IsFederated = False Dim reference3 As Reference Set reference3 = part1.CreateReferenceFromObject(hybridShapeExtract1) closeSurface1.Surface = reference3 part1.Update End Sub
Dabei wird sehr wohl ein Extract erzeugt, welches dann wiederum dem ClosedSurface zugewiesen wird, weshalb ich dann auch wieder die Abhängigkeiten habe. Wahrscheinlich habe ich etwas falsch verstanden. Könntest Du es noch einmal mit anderen Worten beschreiben? ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 17. Jan. 2013 13:41 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
Hallo, beim manuellen vorgehen, ja. Wenn du das Extract und die CloseSurface danach löschst und das aufgezeichnete Script ablaufen lässt (sodass alles noch mal per Script erzeugt wird) ist das Extract bei dir vorhanden? Bei mir gibts dann nur das CloseSurface, welches keine Parents oder Children hat. Gruß
------------------ tomtom1972 [Diese Nachricht wurde von tomtom1972 am 17. Jan. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 17. Jan. 2013 13:59 <-- editieren / zitieren --> Unities abgeben:
Klar ist das Extract da, wird ja auch im Code angelegt. ich mein wie soll's denn sonst funktionieren? Das ClosedSurface kann ja nicht raten wie es aussehen soll. :-) Aber die Wege von CATIA sind unergründlich... :-) Von daher mache ich vielleicht etwas anders als Du? ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 17. Jan. 2013 14:49 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
Nochmals Hallo, dann muss ich mir mein altes Script mal raussuchen. Wundert mich jetzt. Wenn ich mir deinen Code oben ansehe fehlt da auch das .AppendHybridShape (welches das Script eben nicht aufzeichet), deshalb fliegt das Extract ins Nirvana. Aber vieleicht erinnere ich micht falsch. Ich melde mich. Gruß ------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 18. Jan. 2013 14:16 <-- editieren / zitieren --> Unities abgeben:
;-) Okay, das ist ein Erfahrungswert, den man im Umgang mit dem Scripting erst sammeln muss. :-) Solange die Geometrie die Eingangsquelle für eine andere ist, wie in diesem Fall und für den User uninteressant, so brauche ich sie dem GeoSet auch nicht hinzufügen. Dadurch ist sie aber dem eigentlichen Feature hinzugefügt. Nehmen wir an Du machst eine Projektion eines Punktes, den Du auch erzeugst. Diesen Punkt musst Du auch keinem GeoSet hinzufügen, bevor Du die Projektion machst. Da der Punkt nicht weiter verwendet wird, hängt er dann unter der Projection, er ist aber dennoch da. :-) Nutze den Effekt sehr oft, weil er praktisch ist. Im CAA kann man sogar so dreist sein und fast jedes beliebige Feature unter andere Features hängen. Im VBA braucht man dafür einen Link, in dem Fall durch .Surface gewährleistet. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |