Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Abstand zw.2 Elementen in 2 Parts

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:  Abstand zw.2 Elementen in 2 Parts (2738 mal gelesen)
Daeumling
Mitglied
Student


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

Beiträge: 23
Registriert: 26.01.2009

erstellt am: 29. Jan. 2009 14:45    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 an alle,

ich lese hier schon seit einiger Zeit mit und habe nun leider ein Problem bei dem ich irgendwie absolut nicht weiter komme.
Bei der Suchfunktion wurde ich leider auch nicht so recht fündig darum versuch ich es einfach mal hier. Auch v5automation half mir so recht nicht weiter.

Also ich möchte den Abstand zwischen 2 Punkten ermitteln, welche sich je in 2 Parts von einem Product befinden. Diesen Abstand benötige ich dann, um eine Rohrlänge automatisch zu ermitteln und wollte dann halt den Abstand als Parameter der Länge des Rohrs übergeben.

Mit dem hier gefundenen Code kann ich (nach minimaler Abwandlung)schonmal auf die Punkte zugreifen:
-----------------------------------------------------------
-----------------------------------------------------------

Sub CATMain ()

  Dim TheSPAWorkbench
  Dim TheMeasurable
  Dim mySel
  Dim mySuchStr(0)
  mySuchStr(0) = "Point"
  Set mySel = CATIA.ActiveDocument.selection
  Call mySel.Clear
  myFeedback = mySel.SelectElement2(mySuchStr, "P. 1", True)
  Set myRef1 = mySel.Item(1).Reference
  Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
  Set TheMeasurable = TheSPAWorkbench.GetMeasurable(myRef1)
  Call mySel.Clear
  myFeedback = mySel.SelectElement2(mySuchStr, "P. 2", True)
  Set myRef2 = mySel.Item(1).Reference

MinDist = TheMeasurable.GetMinimumDistance(myRef2)
MsgBox MinDist
-----------------------------------------------------------
-----------------------------------------------------------

Wenn ich 2 Punkte innerhalb eines Parts messe, dann bekomme ich auch einen "guten" Wert bei heraus.
Leider gibt er aber nur den Wert "0" aus, wenn ich 2 Punkte aus 2 verschiedenen Parts ermitteln will.
Ich denke es liegt daran, dass er es auf das lokale Koordinatensystem bezieht (die Punkte liegen je auf dem Ursprung) und er deshalb den Abstand zueinander nicht ermitteln kann.
Kann ich nun diesen Punkt je auf das globale Koordinatensystem des Products beziehen?
Oder kann ich irgendwie die 2 Punkte zu einer Linie verbinden (über AddNewLinePtPt oder sowas) und die Länge der Lineie ermitteln?

Es müssen auch nicht zwangsläufig Punkte sein. Ich kann auch die Ebenen der Parts nutzen oder was hat dafür gebraucht wird.


Zudem würde ich später gern die Parts und deren Punkte von selber aufrufen lassen, sodass die Selection entfällt. Wie stelle ich das am dümmsten an? (Die Parts heißen eh immer gleich und die gesuchten Punkte ändern sich auch nicht)

Es wäre schön, wenn ihr mir weiterhelfen könntet, da ich sonst echt verzweifle. Ich bin für jeden Rat dankbar. Ihr könnt mir auch gern eine andere Vorgehensweise aufzeigen. Nur zu.
Ich bin erst vor kurzem bei der Makroprogrammierung eingestiegen und habe deshalb noch viel zu lernen.

schöne Grüße
Tobias

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

denyo_1
Moderator
Manager


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

Beiträge: 2506
Registriert: 10.08.2005

HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3

erstellt am: 30. Jan. 2009 09:44    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 Daeumling 10 Unities + Antwort hilfreich

Hallo Tobias,

also bei mir funktioniert dein Skript einwandfrei. Kann es sein, das du zufälligerweise zweimal den selben Punkt angeklickt hast. Da müsste noch ein Abfrage rein sonst kann das passieren und der Abstand ist natürlich null.

Ich Frage mich aber ob das was du vorhast so sinnvoll ist. Du willst die Messung hernehmen um die Länge eines Rohres zu definieren? Gehen wir mal davon aus, das die 3 Parts in deinem Produkt hast. Im ersten ist der erste Punkt, im zweiten der zweite und im dritten ist die Geometrie für dein Rohr. Publiziere die beiden Punkte und nutze sie zur Definition der Achse (des dritten Parts). So kannst du eine direkte Verbindung (link) herstellen und brauchst dafür kein Makro. Dein Parameter den du sonst erzeugst beruht nämlich auf einer Messung (die nicht im Baum abgelegt wird). Von dem her wird dir der Parameter zwar die Länge anzeigen zur Laufzeit des Makro´s, es kann ja aber sein, das sich die Punkte nochmal verschieben. Dann musst du das Makro nochmal starten um die Länge erneut zu messen und an den Parameter zu übergeben.

Oder verstehe ich dich komplett falsch?

------------------
MFG Daniel

Die KATJA ist halt doch nur ne zickige Französin

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

Daeumling
Mitglied
Student


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

Beiträge: 23
Registriert: 26.01.2009

erstellt am: 30. Jan. 2009 12:24    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 Daniel,

danke für deine Hilfe.

Nein, das sind 2 verschiedene Punkte welche ich im Strukturbaum ausgewält habe (CENTER_IN aus Part 01 und CENTER_OUT aus Part 2)
Beide Punkte liegen auf ihrem Achsenzentrum also (X=0;y=0;z=0)
Kann es vllt. daran liegen?

Okay. Da könntest du Recht haben.
Ich hatte mir das nämlich so gedacht.
Ich habe eine Achse an der ich eine Art Schelle anbringen muss.
Auf der anderen Seite ist ein Punkt an den er hin muss.
Dazwischen wir ein weiteres Part mit einer Schelle eingefügt werden, an der das Rohr und dessen Länge mit integriert ist.
Erst wollte ich das Rohr als zu lang einfügen, dann den Abstand der Punkte messen und Abzüglich der Länge bis zu ihren Aufnahmen dann das Rohr halt auf die Länge anpassen.
Das Problem ist hier auch, dass ich quasi nicht bis direkt an die Punkte konstruieren kann, sondern in einem gewissen Offset. Ich könnte aber einen Punkt ins Part setzen bis wohin er ran konstruieren soll, oder?
Das klingt echt sinnig.. manchmal macht man sich es glaube ich viel zu schwer im Leben..

Ich werde mal sehen das sich machen lässt..danke für den Tip..manchmal ist man glaube ich viel zu versteift auf eine Lösung, sodass man das Einfache nicht mehr sieht.

Danke nochmal und bis nachher denke ich 

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

denyo_1
Moderator
Manager


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

Beiträge: 2506
Registriert: 10.08.2005

HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3

erstellt am: 30. Jan. 2009 12:40    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 Daeumling 10 Unities + Antwort hilfreich

Hallo,

puh, kannst du mal ein Bild reinstellen? Das sagt manchmal mehr als tausend Worte  . ich denke aber dein Problem lässt sich ganz einfach mit den Puplications lössen.

------------------
MFG Daniel

Die KATJA ist halt doch nur ne zickige Französin

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

Daeumling
Mitglied
Student


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

Beiträge: 23
Registriert: 26.01.2009

erstellt am: 30. Jan. 2009 12:56    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


Problem.JPG

 
Anbei mal ein Bild.
Ich hoffe da erkennt man es besser

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

Daeumling
Mitglied
Student


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

Beiträge: 23
Registriert: 26.01.2009

erstellt am: 30. Jan. 2009 13:05    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

Ich bins dann nochmal,

ich habe versucht das Problem anders anzugehen. AUch wenn es der umständliche Weg ist habe ich noch eine Frage dazu, warum es nicht funktioniert.
Hier erstmal der Quelltext:

-------------------
-------------------

Sub CATMain()

' Neues CATProduct erzeugen -------------------------------------
Dim aDoc As Documents
Set aDoc = CATIA.ActiveDocument
Dim Wurzel As Product
Set Wurzel = aDoc.Product

' CATPart erzeugen / umbenennen --------------------------
Dim P1 As Product
Set P1 = Wurzel.Products.AddNewComponent ("Part", "ROHR")

CATIA.ActiveDocument.Product.Products.Item(5).Name = "ROHR_L" 'auf oberster Ebene Hilfspart zur Laengenmessung erstellt (5.Stelle im Ordner)


Set docs = CATIA.Documents
Set PartDoc = docs.Item("ROHR.CATPart")
Set Part1 = PartDoc.Part
Set hybridBodies1 = Part1.HybridBodies
Set hybridBody1 = hybridBodies1.Add()
Set hybridShapeFactory1 = Part1.HybridShapeFactory
Set parameters1 = Part1.Parameters


Set product1 = CATIA.Documents.Item("TTM_KONSTR_B1-38D222222.CATProduct").Product

Set reference1 = product1.CreateReferenceFromName("TTM_KONSTR_B1-38D222222/T_VERBINDER_VMR/!CENTER_OUT")
Set reference2 = product1.CreateReferenceFromName("TTM_KONSTR_B1-38D222222/KUGELVERBINDER_VMR/!CENTER_IN")


Set hybridShapeLinePtPt1 = hybridShapeFactory1.AddNewLinePtPt(reference1, reference2) ' hier Fehler

hybridBody1.AppendHybridShape hybridShapeLinePtPt1

part1.InWorkObject = hybridShapeLinePtPt1
part1.Update

End Sub

.-----------
------------

Es sollte mir quasi "nur" eine Hilfslinie erstennen in einem neuen Part.
Nun sollte er je die Public Punkte aus den anderen Parts direkt als Referenz nehmen.
Da meckert er aber rum, dass er das nicht kann.
Hat jemand eine Idee warum?
Also mich interessiert nur warum dies nicht geht. Weil mit Achsen aus versch. Parts ging es eigetnlich diese als Referenzen für Constrains zu nehmen.
Mir gehts nur darum den Fehler meines denkens zu verstehen und nicht den umständlichen Weg weiterzuverfolgen 
Weil nützlich kann sowas ja immer mal sein, darum
Vllt. hat ja jmd. einen Rat?

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

Daeumling
Mitglied
Student


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

Beiträge: 23
Registriert: 26.01.2009

erstellt am: 02. Feb. 2009 10:02    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

Habe es versucht anders zu lösen:

Ich habe nun eine Ebene in den T Verbinder gesetzt und als external Referenz ins Part vom Rohr eingefügt und verschneide es damit.

NUN
habe ich aber das Problem, dass die T Verbinder 8 mal eingefügt werden sollen und auch dementsprechend immer anders heißen.
Weiß jemand wie ich auf deren Namen am besten immer zugreifen kann bzw. ans Part übergeben kann?
Also sodass er nach dem Einfügen meiner 8 Rohre auch immer die im zugeordnete Ebene zugewiesen wird mit der er verschnitten werden soll?!

Vielen Dank schonmal für die Hilfe..
und Danke an Daniel für den Tip des einfachen Weges!

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

denyo_1
Moderator
Manager


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

Beiträge: 2506
Registriert: 10.08.2005

HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3

erstellt am: 02. Feb. 2009 10:44    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 Daeumling 10 Unities + Antwort hilfreich

Hallo Daeumling,

das versteh ich jetzt nicht ganz. Sind deine Rohre immer gleich lang oder hast du 8 verschiedene. Warum willst du auf den Namen zugreifen. Erstell die Ebene in dem T-Verbinder, füg alle zum Produkt hinzu, füg deine 8 Rohre hinzu, und Splitte direkt im Produkt an dein Ebenen. Das sollte doch gehen

------------------
MFG Daniel

Die KATJA ist halt doch nur ne zickige Französin

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

Daeumling
Mitglied
Student


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

Beiträge: 23
Registriert: 26.01.2009

erstellt am: 02. Feb. 2009 11:36    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 Daniel,

danke für deine Hilfe.

Also die Rohre werden 8mal reingeladen(das Bild oben stellt quasi das ganze nur einmal von 8 dar!) und umbenannt abgespeichert, sodass auch alle eine unterschiedliche Länge haben können.

Mir wurde gesagt, dass es nur geht, wenn ich in dem T Verbinder die Ebene als Publikation veröffentliche und halt beim Rohr als external Ref. reinlade.

Ich werde mal sehen, ob und vor allem wie ich es hinbekomme die Ebene da im Produkt zu veröffentlichen.
So bewandert bin ich in diesen Parametern leider nicht, welche voneinander abhängig sind...

Grüße
Tobias

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

denyo_1
Moderator
Manager


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

Beiträge: 2506
Registriert: 10.08.2005

HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3

erstellt am: 02. Feb. 2009 13:06    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 Daeumling 10 Unities + Antwort hilfreich


ROHRMITVERBIDNUNGEN.zip

 
Hi,

hab hier mal ein kleines Beispielprodukt gemacht wie sowas aussehen könnte. Der Ablauf ist wie folgt:

1. Ebene in den T-Verbindern erstellen (an der gesplittet werden soll). Da du ja immer den selben Verbinder hernimmst, hast du die Ebene in allen Instanzen verfügbar
2. Zurück ins RootProdukt wechseln und dort unter Tools -> Publications alle Ebenen publizieren (das ist aber nicht zwingend notwendig, kommt auf die Einstellungen an)
3. Die Rohre einfügen und positionieren
4. In den Options nachschauen ob folgendes Kästen aktiviert ist:
    => Tools -> Options -> Infrastructure -> Part Infrastructure -> Generell -> Keep link with selected
5. Die Rohre an den Ebene im PartDesign (also in die Bauteilbearbeitung für jedes Rohr) Splitten

ACHTUNG: Falls du irgendein PDM System nutzt, musst du schaun wie die Links dort verwaltet werden. Da aber bei deinem Teil alle Bauteile eine eigene Dok-Nummer haben sollten sollte das kein Problem darstellen.

Schau dir einfach mal den Aufbau von dem Beispiel an. 

------------------
MFG Daniel

Die KATJA ist halt doch nur ne zickige Französin

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

Daeumling
Mitglied
Student


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

Beiträge: 23
Registriert: 26.01.2009

erstellt am: 10. Feb. 2009 13:08    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,

hab leider das Probramm erst jetzt Testen können, da sich noch anderen Probleme im Vorfeld aufgetan hatten.

Danke erstmal für deine Mühe!

Leider geht das Verschneiden leider nicht so wie ich es mir erhofft hatte.
Die Ebenen im T Verbinder kann ich und habe dort auch die Public Ebenen zum Verschneiden eingefügt.
Bei den Rohren denke ich nicht, dass das so einfach möglich ist, denn jedes Rohr heißt z.B: Kugel_VR, Kugel_VMR, ..
Jeder T-Verbinder wird beim EInfügen auch also Adapter_VR. Adapter_VMR, .. umbenannt.
Wenn ich im Hauptpart (wodraus Adapter, Kugel genommen, umbenannt und abgespeichert wird) aber eine external Referenze einbinde bezieht sich diese ja genau auf eine bestimmte Ebene.

Kann ich irgendwie auf die Zuordnung der ext.Ref. zugreifen? Also den Pfad dazu ändern oder vorm Spliten neu anlegen?

Hab auch mal versucht die ganze Prozedur mit dem Makrorekorder aufzuzeichnen..
Nachdem ich alles wieder Rückgängig gemacht habe hat er Makro nicht mehr funktioniert -.-
Irgendwie hat Catia auch aotomatisch ext. Referenzes angelegt, diese aber nicht im Makrorecorder aufgenommen.
Weil genau das wäre es was ich benötige, sodass es Funktioniert.

Kann mir wer helfen? :/

Schöne Grüße
Tobi

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

denyo_1
Moderator
Manager


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

Beiträge: 2506
Registriert: 10.08.2005

HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3

erstellt am: 10. Feb. 2009 14: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 Nur für Daeumling 10 Unities + Antwort hilfreich

Hallo,

externe Komponenten legt CATIA automatisch im Hintergrund an falls du Funktion "keep link with selected.." aktiviert ist. Das kann der Makrorekorder nicht mit aufnhmen, da der Makrorekorder keine Paste-Operation kennt.

D.h. du musst in deinem Skript erst mal die Ebene von deinem Verbinder in das Part des Rohres mit as Result "with Link" kopieren und anschließend diese Ebene hernehmen. Die refernz erzeugst du dann während des Kopiervorgangs automatisch.

------------------
MFG Daniel

Die KATJA ist halt doch nur ne zickige Französin

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

Daeumling
Mitglied
Student


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

Beiträge: 23
Registriert: 26.01.2009

erstellt am: 12. Feb. 2009 10:18    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!

Hab es endlich gelöst bekommen..irgendwie  
Hab es nun doch umständlich über Ausmessen und Vergleichen gemacht und auf die Public-Elemente zugegriffen. Die kann er komischerweise gegeneinander vermessen.
Um auch endlich mal etwas zurückzugeben hier der Quelltext:

Function Is_On ()
Set ActivePub = CATIA.ActiveDocument.Product.Publications   
    Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")

Set oPub2 = CATIA.ActiveDocument.Product.Products.Item(4).Products.Item("Ebene")
Set oPublic2 = oPub2.Publications.Item("POINT_Name") 'greift auf Publ. der Ebene
Set Ref_T = oPublic2.Valuation

DIM Drauf 'as boolean
Drauf = false
For j = 1 To 4
Dim PktName 'As String
Dim LaufNr 'As Integer
Dim Pkt 'As String
Set RefBalkenP1 = ActivePub.Item("PktName1").Valuation 'alle ungeraden Pkt mit

Set RefBalkenP2 = ActivePub.Item("PktName2").Valuation 'allen geraden vergleichen

Dim Gesamtlength
Set Measurable1 = TheSPAWorkbench.GetMeasurable(RefBalkenP1)
Gesamtlength = Measurable1.GetMinimumDistance(RefBalkenP2)

Dim distanceP1PM
Set Measurable1 = TheSPAWorkbench.GetMeasurable(RefBalkenP1)
distanceP1PM = Measurable1.GetMinimumDistance(Ref_T)
'MsgBox ("P1PM: " & distanceP1PM & "mm")

Dim distancePMP2
Set Measurable1 = TheSPAWorkbench.GetMeasurable(RefBalkenP2)
distancePMP2 = Measurable1.GetMinimumDistance(Ref_T)
'MsgBox ("PMP2: " &distancePMP2 & "mm")

'Msgbox ("Gesamt: " &distanceP1PM+distancePMP2)
Gesamt = distanceP1PM+distancePMP2
        If Gesamt = Gesamtlength then
Drauf = true
MsgBox ("Der liegt drauf")
End If

Next
If Drauf = false then
MsgBox("Liegt nicht drauf")
Else
MsgBox("Liegt drauf der Wurm!")
End If

[Diese Nachricht wurde von Daeumling am 12. Feb. 2009 editiert.]

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

Schorschie
Mitglied
Student Maschinenbau


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

Beiträge: 14
Registriert: 28.11.2006

erstellt am: 24. Feb. 2009 16:29    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 Daeumling 10 Unities + Antwort hilfreich

Hallo Forum,

Ich hab das letzte Listing nicht ganz begriffen, aber denke, dass das ursrpüngliche Problem:

"Wie messe ich den Abstand zweier Punkte in verschiedenen Parts?"

nicht gelöst wurde.

Ich hab nämlich gerade dasselbe Problem und wäre für einenen Lösungsansatz dankbar.
Mein erster Versuch war "dem des Däumlings" ähnlich und auch bei mir liefert das Skript nicht die gewünschten Ergebnisse:

Code:

    Set MyOriginElements = MyOriginPart.OriginElements
    Set RefToYZPlane = MyOriginPart.CreateReferenceFromObject(MyOriginElements.PlaneYZ)
    Set RefToZXPlane = MyOriginPart.CreateReferenceFromObject(MyOriginElements.PlaneZX)
    Set RefToXYPlane = MyOriginPart.CreateReferenceFromObject(MyOriginElements.PlaneXY)
   
    Set RefToPoint = MyPartOfPoint.CreateReferenceFromObject(MySelectedPoint)
    Set MyMeasure = MySPAWorkbench.GetMeasurable(RefToPoint)
   
    vCoordinates(0) = MyMeasure.GetMinimumDistance(RefToYZPlane)
    vCoordinates(1) = MyMeasure.GetMinimumDistance(RefToZXPlane)
    vCoordinates(2) = MyMeasure.GetMinimumDistance(RefToXYPlane)

Das Ergebnis entspricht den Koordinaten des Punktes in seinem Part und nicht im "OriginPart".

[Diese Nachricht wurde von Schorschie am 24. Feb. 2009 editiert.]

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

Daeumling
Mitglied
Student


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

Beiträge: 23
Registriert: 26.01.2009

erstellt am: 24. Feb. 2009 18:32    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,

bei mir ging es nur, wenn ich die Linien oder Punkte vorhher als Publics (Tools -> Publications) veröffentlicht habe.
Dann konnte ich die Punkte aus versch. Parts gegeneinander vermessen

Grüße

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

CadV5UserR
Mitglied
Dipl.Ing. Maschinenbau


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

Beiträge: 78
Registriert: 18.04.2008

Windows 7 x64 Professional SP1
Dell Precision T3500
Intel Xeon CPU W3580 3.33GHz
24Gb Ram
NVIDIA Qudro 4000
Catia V5R20 Sp6
SmarTeam V5R20 SP6

erstellt am: 26. Feb. 2009 08:44    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 Daeumling 10 Unities + Antwort hilfreich

Hallo Daeumling,


Ich hatte vor einiger Zeit ein ähnliches Problem.
Bei mir funktionierte das so auch nicht.
Erst nachdem ich den >kompletten Pfad< mit in die Reference speicherte klappte es.

Probier mal folgendes aus:

Beispiel:
product1.CreateReferenceFromName("Product1/Part2.1/!Punkt.1")
Set ref2 = product1.CreateReferenceFromName(PfadName01)

Für beide Reference suche.

Gruß
CadV5UserR

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