Autor
|
Thema: SelectElement2; Daten weiterverarbeiten (3240 mal gelesen)
|
NTjaz Mitglied Konstrukteur
Beiträge: 12 Registriert: 11.10.2013 MS Windows 7 Professional 64Bit, Intel Xenon CPU E5-1620 0 @ 3.60GHz, 16 GB DDR3, Nvidia Quadro 4000, Catia V5R19
|
erstellt am: 22. Okt. 2013 13:22 <-- editieren / zitieren --> Unities abgeben:
Hallo an alle hab da ein etwas größeres Problem. Bin mich grade ein paar Wochen mit der Makroprogrammierung am beschäftigen und bekomme es einfach nicht auf die Reihe. Also es geht um folgendes, ich will/soll ein Makro erstellen was - einen Körper einfügt (check), - verschiedene geo. Sets in diesen Körper einfügt (check), - beim aufrufen des Makros eine Inputbox öffnet in der der Benutzer den Körpernamen eingibt (check), - die geo. Sets automatisch die Endung der Inputbox erhalten (check) nun der Teil bei dem ich hänge: - wenn alles erstellt und umbenannt wurde soll eine Messagebox erscheinen die dem Anwender sagt er soll eine Bezugsfläche auswählen (ok auch noch check), diese Fläche befindet sich jedoch nicht in meinem Part, sondern in dem Produkt in dem das Part als Bauteil steht. Diese ausgewählte Fläche soll dann als Datum in eines meiner geo. Sets eingefügt werden. - weiterhin soll, jetzt im Part eine Linie ausgewählt werden die ebenfalls in eines der geo. Sets eingefügt wird. - mit diesen beiden Selektionen wird dann weiter konstruiert. Verschiedenste Ebenen, Linien, Punkte etc. sollte ich noch schaffen, bin aber noch nicht so weit gekommen. Also es geht mir eher um die Selektion, wie kann ich die ausgewählten Elemente in meine geo. Sets einfügen???
Hier mal ein Auszug aus meinem Skript der betroffenen Stelle:
Language="VBSCRIPT" . . . . 'Auswahl Bezugsfläche MsgBox "Bitte Bezugsfläche auswählen", vbOKOnly,makroname+" "+version Set Selection1 = activedoc.Selection Dim InputObjectType(0) InputObjectType(0) = "Face" Status=Selection1.SelectElement2(InputObjectType, "Bezugsfläche auswählen", False) If(Status="Cancel")Then MsgBox "Makro wurde abgebrochen", 16, makroname+" "+version Exit Sub End If . . . End Sub Danke schonmal an alle Helferlein
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: 22. Okt. 2013 15:11 <-- editieren / zitieren --> Unities abgeben: Nur für NTjaz
Ich glaub Du musst Selection.Copy und Selection.PasteSpecial verwenden. Dafür ist aber wichtig, dass Du Dich im richtigen Kontext befindest. Also PartDesign. Dafür musst Du Dich über das ProductDesign durchhangeln. Also immer die Workbench wechseln. :-) Ich glaub die Workbench kannst Du über das CATIA-objekt wechseln. ------------------ 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 |
Randle Mitglied CAD/PLM Consultant
Beiträge: 695 Registriert: 12.04.2003 Win10 x64 CATIA V5 R18, R19, R21, R27-29
|
erstellt am: 23. Okt. 2013 11:18 <-- editieren / zitieren --> Unities abgeben: Nur für NTjaz
Hallo zusammen, die Selection, bzw. das Selection-Object muss glaube ich von deinem Part stammen. Ich nehme mal an das es sich hierbei um das "activedoc" handelt. Dann geht es nach erfolgreicher Auswahl deiner Face mit Selection1.copy weiter Dann würde ich das Geoset (wo das Datum rein soll) deiner Selection hinzufügen Selection1.Add "Objektname des Geosets" Selection1.Paste oder Selection1.PasteSpecial Bei Special musst du noch den Typ mit angeben. Am besten mal in die Automation.chm schauen. Diese liegt im gleichen Ordner wie die CNEXT.ext Hope it helps Gruß Randle ------------------ MfG Randle ! It's not a bug, it's a feature ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NTjaz Mitglied Konstrukteur
Beiträge: 12 Registriert: 11.10.2013 MS Windows 7 Professional 64Bit, Intel Xenon CPU E5-1620 0 @ 3.60GHz, 16 GB DDR3, Nvidia Quadro 4000, Catia V5R19
|
erstellt am: 24. Okt. 2013 13:32 <-- editieren / zitieren --> Unities abgeben:
ok danke schonmal habe es jetzt so weit am laufen, dass ich eine fläche auswählen kann und er sie auch in das von mir gewünschte set einfügt. ABER er gibt mir immer die Fehlermeldung "Element erforderlich" aus weiterhin bekomme ich die fläche nicht umbenannt, habe schon mehrere varianten ausprobiert, aber nichts hilft. vielleicht hat ja jemand eine Idee. Code: . . . 'AUSWAHL BEZUGSFLÄCHE 'MsgBox JA/NEIN Box=MsgBox ("Bitte Bezugsfläche auswählen", 4,makroname+" "+version) 'WENN JA If Box = 6 Then 'SELEKTION Set Selection1 = activedoc.Selection Dim InputObjectType(0) InputObjectType(0) = "Face" Status=Selection1.SelectElement2(InputObjectType, "Bezugsfläche auswählen", False) If(Status="Cancel") Then MsgBox "Makro wurde abgebrochen", 16, makroname+" "+version Exit Sub End If Else 'WENN NEIN MsgBox "Makro wurde abgebrochen", 16, makroname+" "+version Exit Sub End If 'Bezugsfläche einfügen Set bodies1 = part1.Bodies Set body1 = bodies1.Item(BodyName) Set hybridBodies1 = body1.HybridBodies Set hybridBody1 = hybridBodies1.Item("Position_"&BodyName) Set Selection1=UserSel.Item(1).Value Selection1.Copy Selection1.Clear Selection1.Add hybridBodies1.Item("Position_"&BodyName) Selection1.PasteSpecial "CATPrtResultWithOutLink" Selection1.Clear part1.update . . .
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. Okt. 2013 15:15 <-- editieren / zitieren --> Unities abgeben: Nur für NTjaz
Was soll Set Selection1=UserSel.Item(1).Value machen? Das sieht völlig falsch aus. Mindestens Selection1.Add() und warum überhaupt? Es sit doch schon selektiert, oder nicht? ------------------ 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 |
NTjaz Mitglied Konstrukteur
Beiträge: 12 Registriert: 11.10.2013 MS Windows 7 Professional 64Bit, Intel Xenon CPU E5-1620 0 @ 3.60GHz, 16 GB DDR3, Nvidia Quadro 4000, Catia V5R19
|
erstellt am: 24. Okt. 2013 16:20 <-- editieren / zitieren --> Unities abgeben:
da haben sie völlig recht Herr schneider ohne das Set Selection1=UserSel.Item(1).Value läuft es. Ich sehe halt auch grad vor lauter bäumen den wald nicht mehr, wie gesagt seit zwei Wochen beschäftige ich mich, auch eher unregelmäßig mit dem Thema Makroprogrammierung und Vorkenntnisse sind auch nicht vorhanden. Noch ein Tipp bezgl. der Umbenennung der Fläche?
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: 25. Okt. 2013 13:31 <-- editieren / zitieren --> Unities abgeben: Nur für NTjaz
Selection1.Item2(1).Value.Name = "Blubb" könnte schon funktionieren. Ich würde Dir empfehlen Selection1.Item2(1).Value in ein eigenes Objekt zu schreiben und vor allem mal im Watchfenster (Debugger) schauen was darin landet. Es hat bestimmt eine Nameneigenschaft. Es gäbe noch eine Methode über GetItem(), die würde ich Dir als Laien aber noch nicht empfehlen. ------------------ 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 |
ptit.tom Mitglied CAD-Berater
Beiträge: 114 Registriert: 11.02.2005 win10, CATIA R19 bis R30
|
erstellt am: 30. Okt. 2013 13:50 <-- editieren / zitieren --> Unities abgeben: Nur für NTjaz
Hallo, Um die Kopie zu selektieren kann man die HybridShapes-Sammlung verwenden. Das kopiertes Element landet normalerweise am Ende des Geometrical Set (bei mir oTargetGS). Die Folgende Zeile benennt das letzte Element in GeoSet oTarget GS: oTargetGS.HybridShapes.Item(oTargetGS.HybridShapes.Count).Name = "Blubb" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NTjaz Mitglied Konstrukteur
Beiträge: 12 Registriert: 11.10.2013 MS Windows 7 Professional 64Bit, Intel Xenon CPU E5-1620 0 @ 3.60GHz, 16 GB DDR3, Nvidia Quadro 4000, Catia V5R19
|
erstellt am: 01. Nov. 2013 09:58 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|