Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Ersetzen der

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:  Ersetzen der (1927 mal gelesen)
Wishmaster
Mitglied


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

Beiträge: 5
Registriert: 14.06.2010

erstellt am: 14. Jun. 2010 09:57    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 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


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

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 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 Wishmaster 10 Unities + Antwort hilfreich

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


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

Beiträge: 5
Registriert: 14.06.2010

erstellt am: 14. Jun. 2010 15:09    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


Prob_1.jpg

 
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


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

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 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 Wishmaster 10 Unities + Antwort hilfreich

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


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

Beiträge: 5
Registriert: 14.06.2010

erstellt am: 15. Jun. 2010 13: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

Hallo Mario,

vielen Dank!! Funktioniert super! Genau sowas hatte ich gesuch!

Gruß

Wishmaster

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

BigCheese
Mitglied
Dipl-Ing


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

Beiträge: 130
Registriert: 12.05.2004

CATIA V5R19 SP3

erstellt am: 15. Jun. 2010 15:20    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 Wishmaster 10 Unities + Antwort hilfreich

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


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

Beiträge: 5
Registriert: 14.06.2010

erstellt am: 22. Jun. 2010 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

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



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

Beiträge: 1486
Registriert: 13.07.2005

erstellt am: 23. Jun. 2010 00:31    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 Wishmaster 10 Unities + Antwort hilfreich

Hallo Wishmaster,

das geht z.B. mit "Cut & Paste" aus bzw. in die jeweilige Selektion:

Code:
Set iSel = CATIA.ActiveDocument.Selection

iSel.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


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

Beiträge: 5
Registriert: 14.06.2010

erstellt am: 24. Jun. 2010 08:25    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 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


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

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 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 Wishmaster 10 Unities + Antwort hilfreich

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

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