Autor
|
Thema: Ersetzen der (1927 mal gelesen)
|
Wishmaster Mitglied
Beiträge: 5 Registriert: 14.06.2010
|
erstellt am: 14. Jun. 2010 09:57 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, im Rahmen meiner Diplomarbeit befasse ich mich mit assoziativ-parametrischer Konstruktion und benötige daher in einigen Bereichen VB. Bin in diesem Thema leider absoluter Neuling Vielleicht kann mir ja jemand bei meinem Problem Helfen: Ich erhalte aus einem Prozess Punkte, die auf verschiedene Weise ermittelt werden (Point on Curve, Coordinates,...)-> PNT_Ref Zusätzlich habe ich eine Wireframe-Geometrie, die auch auf bei einem Bestimmten Punkt, der aber irgendwo im Raum liegt beginnt. -> PNT_Wireframe Ich habe nun über eine Rule in VBA bestimmt, unter welchen Bedingungen diese Wireframe-Geometrie aktiviert bzw. deaktiviert wird. Der letzte Schritt sollte nun sein, dass ich dach dem Namen eines Punktes innerhalb eines GeoSets suchen kann (Name des PNT_Ref), um dann den Punkt der Wireframegeometrie (PNT_Wireframe) auf diesen mit (0,0,0) legen zu können. Der Punkt liegt bereits auf einem anderen "Vorhaltepunkt", sodass ich eigentlich nur den Referenzpunkt und nicht die Koordinaten selbst ändern muss. Kurz gesagt: Ich brauche eine Translation eines Punktes zu einem anderen, falls dieser Punkt in einem bestimmten Geoset aktiviert ist... Ich hoffe das war einigermaßen verständlich ;-) Vielen Dank schonmal im Voraus! MFG Wishmaster Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
roccat Mitglied Konstrukteur
Beiträge: 172 Registriert: 19.02.2010 WinXP/Win7 Office XP/2007 Catia V5 R16-R19, VB6.0, VBA, BASCOM-AVR VB .Net 2010
|
erstellt am: 14. Jun. 2010 10:37 <-- editieren / zitieren --> Unities abgeben: Nur für Wishmaster
Hallo, ich weiss nicht ob ich dich richtig verstanden habe aber evtl. hilft die das hier. Musst natürlich noch Punkte Namen und Geometrical Set anpassen. Kannst natürlich auch eine UserSelection einbauen um an die Punkte zu kommen. Option Explicit Sub CATMain() Dim MyPartDocument As PartDocument Dim MyPart As Part Dim MyHybShapeFactory As HybridShapeFactory Dim MyHybShapeTranslate As HybridShapeTranslate Dim Reference1 As Reference Dim Reference2 As Reference Dim Reference3 As Reference Dim MyHybBodies As HybridBodies Dim MyHybBody As HybridBody Dim MyHybShapes As HybridShapes Set MyPartDocument = CATIA.ActiveDocument Set MyPart = MyPartDocument.Part Set MyHybShapeFactory = MyPart.HybridShapeFactory Set MyHybBodies = MyPart.HybridBodies 'Name deines GeoSets Set MyHybBody = MyHybBodies.Item("test") Set MyHybShapes = MyHybBody.HybridShapes 'Translate erzeugen Set MyHybShapeTranslate = MyHybShapeFactory.AddNewEmptyTranslate() MyHybShapeTranslate.VectorType = 1 'Element zu verschieben Set Reference1 = MyPart.CreateReferenceFromObject(MyHybShapes.Item("Punkt_zum_verschieben")) MyHybShapeTranslate.ElemToTranslate = Reference1 'von Punkt Set Reference2 = MyPart.CreateReferenceFromObject(MyHybShapes.Item("Startpunkt")) MyHybShapeTranslate.FirstPoint = Reference2 'zum Punkt Set Reference3 = MyPart.CreateReferenceFromObject(MyHybShapes.Item("Endpunkt")) MyHybShapeTranslate.SecondPoint = Reference3 'Name MyHybShapeTranslate.Name = "Punkt_Translation" 'Resulttype MyHybShapeTranslate.VolumeResult = False 'Anzeige im Baum MyHybBody.AppendHybridShape MyHybShapeTranslate 'in Arbeit setzen MyPart.InWorkObject = MyHybShapeTranslate 'Element oder wahlweise Partupdate MyPart.UpdateObject MyHybShapeTranslate MyPart.Update End Sub mfG Mario Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Wishmaster Mitglied
Beiträge: 5 Registriert: 14.06.2010
|
erstellt am: 14. Jun. 2010 15:09 <-- editieren / zitieren --> Unities abgeben:
Hallo Mario, vielen Dank erstmal für die sehr schnelle Antwort! Leider kriege ich das Makro nicht ans laufen...Ich habe mal ein jpg angehängt, in dem ich den Zusammenhang besser erklären kann. Es gibt einen PNT_Matrix (dicker, weißer Punkt im Bild), der irgendwo im Raum liegt. Auf diesem Punkt ist der "PNT_Ref" mit den Koordinaten 0,0,0 referenziert. Ist in dem Geoset "PNT_an den die Wireframe..." der "Brennpunkt" aktiviert, soll der PNT_Ref mit den Koordinaten 0,0,0 auf den Brennpunkt gelegt werden. Wenn ein Punkt mittels "Coordinates" erstellt wird, entstehen normalerweise 5 Paramter (x,y,z, Referenzpunkt sowie Bezugskoordinatensystem). Mein Problem wäre also schon gelöst, wenn ich den Referenzpunkt (Anfangszustand = PNT_Matrix) mithilfe eines Skriptes ändern könnte (Endzustand = Brennpunkt). Gruß Wishmaster Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
roccat Mitglied Konstrukteur
Beiträge: 172 Registriert: 19.02.2010 WinXP/Win7 Office XP/2007 Catia V5 R16-R19, VB6.0, VBA, BASCOM-AVR VB .Net 2010
|
erstellt am: 14. Jun. 2010 16:03 <-- editieren / zitieren --> Unities abgeben: Nur für Wishmaster
Hallo, da habe ich dich falsch verstanden. Ich dachte an eine Translation und nicht an den Austausch des Referencepunktes. Außerdem schreibst du ja Catscript das hab ich auch übersehen. Die Punkte kannst du auf Verschiedene Art holen (kommt auf die Rahmenbedingungen an) -search (muß der Name der Punkte immer gleich sein) -Userselection (Benutzer selektiert die Punkte) -oder wenn die Geosets immer Gleich sind über die HybridBodies Versuchs mal damit: (evtl. Name der Punkte ändern, war bissl schlecht auf dem Bild zuerkennen)
Sub CATMain() Set MyPartDocument = CATIA.ActiveDocument Set MySelection = MyPartDocument.Selection Set MyPart = MyPartDocument.Part 'Name Startpunkt holen MySelection.Clear MySelection.Search "(Name=PNT Matrix & (((((CATStFreeStyleSearch.Point + CATSketchSearch.2DPoint) + CATDrwSearch.2DPoint) + CATPrtSearch.Point) + CATGmoSearch.Point) + CATSpdSearch.Point)),all" Set MyStartPoint = MySelection.Item2(1).Value 'Name Endpunkt holen MySelection.Clear MySelection.Search "(Name=Brennpunkt & (((((CATStFreeStyleSearch.Point + CATSketchSearch.2DPoint) + CATDrwSearch.2DPoint) + CATPrtSearch.Point) + CATGmoSearch.Point) + CATSpdSearch.Point)),all" Set MyEndPoint = MySelection.Item2(1).Value 'Reference erzeugen Set MyReference = MyPart.CreateReferenceFromObject(MyEndPoint) MyStartPoint.PtRef = MyReference 'Element oder wahlweise Partupdate MyPart.UpdateObject MyStartPoint End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Wishmaster Mitglied
Beiträge: 5 Registriert: 14.06.2010
|
erstellt am: 15. Jun. 2010 13:52 <-- editieren / zitieren --> Unities abgeben:
|
BigCheese Mitglied Dipl-Ing
Beiträge: 130 Registriert: 12.05.2004 CATIA V5R19 SP3
|
erstellt am: 15. Jun. 2010 15:20 <-- editieren / zitieren --> Unities abgeben: Nur für Wishmaster
Hallo Wishmaster, eine Alternative wäre das Ganze nur mit Knowledgeware zu erledigen. Das Vorgehen wäre etwa so: Erstelle den PNT_Ref als neuen Parameter vom Typ Punkt. Danach schreibst Du Dir eine Regel, die etwa wie folgt aussieht: Code: If PNT_Brennpunkt\PNT_Brennpunkt\Activity == TRUE { Wireframe\PNT_Ref =PNT_Brennpunkt\PNT_Brennpunkt } else { Wireframe\PNT_Ref =PNT_Matrix\PNT_Matrix }
...nur so als zusätzliche Idee. Grüße Alex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Wishmaster Mitglied
Beiträge: 5 Registriert: 14.06.2010
|
erstellt am: 22. Jun. 2010 09:43 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, vielen Dank für die Antworten! Ich habe das Skript noch erweitert und mit zusätzlichen Funktionen in VBA zum laufen bekommen! Eure Anworten waren sehr Hilfreich! Jetzt habe ich leider eine neue Frage Kann ich ein vorhandenes Geoset bei bedarf unter ein anderes Geoset unterhängen (also in Catia: "change Geometrical set", bei Nachfrage auf "Nein" klicken)? DerMakrorekorder zeichnet leider nichts auf Habe auch in der Suche und in der Litertatur bisher nichts finden können... Vielleicht hat ja jemand eine Idee...Da in diesem Geoset sehr viele Punkte und Kurven sind, und ich zusätzlich ca. 50 Varianten abdecken und dadurch evtl. Geosets verschieben muss, würde ich ungern ein neues Set erzeugen und die Elemente einzeln verschieben Vielen Dank für die Hilfe!
Gruß Wishmaster
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 23. Jun. 2010 00:31 <-- editieren / zitieren --> Unities abgeben: Nur für Wishmaster
Hallo Wishmaster, das geht z.B. mit "Cut & Paste" aus bzw. in die jeweilige Selektion: Code: Set iSel = CATIA.ActiveDocument.SelectioniSel.Clear iSel.Add CATIA.ActiveDocument.Part.HybridBodies.Item("Geometrical Set.2") iSel.Cut iSel.Clear iSel.Add CATIA.ActiveDocument.Part.HybridBodies.Item("Geometrical Set.1").HybridBodies iSel.Paste CATIA.ActiveDocument.Part.Update
Damit kannst Du in einem separat geöffneten CATPart das "Geometrical Set.2" (auf Part-Ebene) unter das (ebenfalls auf Part-Ebene liegende) "Geometrical Set.1" verschieben. mfg, Lusilnie
------------------ Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Wishmaster Mitglied
Beiträge: 5 Registriert: 14.06.2010
|
erstellt am: 24. Jun. 2010 08:25 <-- editieren / zitieren --> Unities abgeben:
Hallo Lusilnie, leider habe ich aber alle Elemente innnerhalb eines Parts. Ich habe innerhalb eines Geosets die Geometrien für verschiedene Varianten einer Wireframe-Geo abgelegt und will diese durch "change geometrical Set" dem Anwender in ein Geoset umhängen, sodass er diese Elemente anwählen und abändern kann... Für meine Anwendung ist es leider absolut notwendig, dass ich Elemente in beliebige Geosets hin und her verschieben kann... Ich bitte noch um weitere Ideen Gruß Wishmaster 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: 24. Jun. 2010 10:46 <-- editieren / zitieren --> Unities abgeben: Nur für Wishmaster
Hallo zusammen, Cut & Paste ist leider nicht Change Geometrical Set, denn hier gehen die Links kaputt. Leider ist ein Change Geometrical Set in der Automation nicht möglich. Bzw. mit fällt nix ein und ich glaube dies hier auch schon einmal gefragt zu haben. ------------------ 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 |