Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Eltern von z.B. einer Linie finden

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:  Eltern von z.B. einer Linie finden (1467 mal gelesen)
McWumpus
Mitglied



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

Beiträge: 11
Registriert: 05.03.2007

Core2Duo 3.16 GHz
3GB Ram
NVIDIA Quadro FX 1700
XP Prof. SP2
V5 R16 SP5

erstellt am: 18. Aug. 2008 11:48    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,

ich erzeuge via Macro hunderte Linien über die Funktion "Senkrecht zur Fläche" mit der Option "von Fläche zu Fläche". Wie kann ich mir, sozusagen rückwärts, die Erzeugerelemente (Punkt und mindestens 2 Flächen) wieder ausgeben lassen? Mir würde erstmal eine Ausgabe via MsgBox reichen.

Schon mal Dank vorab.

Gruß Jan

[Diese Nachricht wurde von McWumpus am 18. Aug. 2008 editiert.]

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

Augustiner
Mitglied
Konstrukteur


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

Beiträge: 188
Registriert: 02.12.2005

HP Workstation
Windows XP Professional
Visual Studio 2005 Professional
CATIA V5 R14SP5 & R17SP3

erstellt am: 19. Aug. 2008 10: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 Nur für McWumpus 10 Unities + Antwort hilfreich

Hallo

probiers mal so:

Code:

Dim oLine As HybridShapeLineNormal
Set oLine = "Deine Linie"

Dim refPunkt,refFlaeche As Reference
Set refPunkt = oLine.Point
Set refFlaeche = oLine.Surface

Msgbox(refPunkt.DisplayName & "/" & refFlaeche.DisplayName)


Gruß Andi

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: 19. Aug. 2008 12: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 McWumpus 10 Unities + Antwort hilfreich

Ich verstehe die Aufgabe nicht ganz. ^^

Wollte aber Adni mal einen Hinweis geben:

Dim refPunkt,refFlaeche As Reference

bewirkt, dass rePunkt vom Typ Variant ist und refFlaeche vom Typ Referenz, das ist eien Besonderheit von VB,
alle Dims müssen in ne extra zeile, oder geht das in CATScript besser?

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

Augustiner
Mitglied
Konstrukteur


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

Beiträge: 188
Registriert: 02.12.2005

HP Workstation
Windows XP Professional
Visual Studio 2005 Professional
CATIA V5 R14SP5 & R17SP3

erstellt am: 19. Aug. 2008 12:26    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 McWumpus 10 Unities + Antwort hilfreich

Das wusste ich nicht, ich programmier mit VB2005 da ist das kein Problem.
Ich hab es so verstanden das er wieder die Referenzelemente seiner Linien sich ausgeben lassen möchte.
Und das geht mit dem untenstehenden Script
hier nochmal die richtige Version

Code:

Dim oLine As HybridShapeLineNormal
Set oLine = "Deine Linie"

Dim refPunkt As Reference
Dim refFlaeche As Reference

Set refPunkt = oLine.Point
Set refFlaeche = oLine.Surface

Msgbox(refPunkt.DisplayName & "/" & refFlaeche.DisplayName)



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

McWumpus
Mitglied



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

Beiträge: 11
Registriert: 05.03.2007

Core2Duo 3.16 GHz
3GB Ram
NVIDIA Quadro FX 1700
XP Prof. SP2
V5 R16 SP5

erstellt am: 19. Aug. 2008 12: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 Augustiner,

meinen Dank und 10Us an Dich. Da hatte ich schon den ganzen Tag probiert und auch beim Herrn Ziehten nachgelesen und sogar die Zeile "Linie.Point" gefunden, aber dann ging es nicht weiter.    Nun ja, manchmal sieht man den Wald vor lauter Bäume nicht.

@HoBLila

Die von mir per Makro erzeugten Linien (im vorliegenden Fall 2900 vom Typ "LineNormal") brauchen wir für FEM-Berechnungen. Damit werden vereinfacht Schweißpunktverbindungen dargestellt. Um sicher zu gehen, dass keine Linien doppelt vorhanden sind, lass ich mir die Referenzelemente der erzeugten Linien nach EXCEL wieder ausgeben und lass dort nach doppelten Elementen suchen. In einem weiteren Step werde ich mir die erzeugten Punkte (auf denen die Linien aufbauen) nach EXCEL transportieren und kann dort nach fehlenden und/oder doppelten Elementen suchen.

Wenn es jemand interessiert, anbei nun eine erste Variante wie ich sie verwende (noch nicht vollständig!):

Nach Selektion eines Geosets voller Linien (alle vom Typ "LineNormal") werden der Name des Referenzpunktes, der Name der Surface auf der die Linie normal steht, die Namen der beiden Begrenzungsflächen und die Koordinaten der Linienendpunkte ausgegeben.

Sub CATMain()

  ' Was soll selektierbar sein
  Dim sSel
  Dim UserSelection
  Dim EnableSelectionFor(0)
  Dim oHybridbody
  Dim aPoints(8)
  Dim oShapes
  Dim ii
  Dim oSpaWB
  Dim oMeas
  Dim oExcel
  Dim iRow, iColumn
  Dim oPoint
  Dim oFlaeche
  Dim oBegrenz1
  Dim oBegrenz2
 

'Excel starten---------------------------------------------------

Set gXl = CreateObject("Excel.Application")

    gXl.ReferenceStyle = xlR1C1
    gXl.DisplayAlerts = False
    gXl.Visible = True
    Set gBook = gXl.Workbooks.Add
    gBook.Title = gPageName
    gBook.Subject = "Structure"
    Set gWksSheet = gBook.ActiveSheet

iRow = 1
iColumn = 1

gWksSheet.cells(iRow, iColumn).Value = "Benennung"
gWksSheet.cells(iRow, iColumn+1).Value = "Referenzpunkt"
gWksSheet.cells(iRow, iColumn+2).Value = "Flaeche_Normal"
gWksSheet.cells(iRow, iColumn+3).Value = "Begrenzung 1"
gWksSheet.cells(iRow, iColumn+4).Value = "Begrenzung 2"
gWksSheet.cells(iRow, iColumn+5).Value = "X1"
gWksSheet.cells(iRow, iColumn+6).Value = "Y1"
gWksSheet.cells(iRow, iColumn+7).Value = "Z1"
gWksSheet.cells(iRow, iColumn+8).Value = "X1"
gWksSheet.cells(iRow, iColumn+9).Value = "Y2"
gWksSheet.cells(iRow, iColumn+10).Value = "Z2"

iRow = iRow + 2

  EnableSelectionFor(0) = "HybridBody"

  ' Selektion definieren und leeren --------------------------------------------------
  Set sSel = CATIA.ActiveDocument.Selection
  sSel.Clear
  Call MsgBox("Bitte GeoSet selektieren", vbOKOnly)
  UserSelection = sSel.SelectElement2(EnableSelectionFor, "Bitte das Geometrische Set auswählen, welches exportiert werden soll", False)

  ' Auswertung ob Selektion erfolgreich -----------------------------------------------
  If UserSelection <> "Normal" Then
      MsgBox "Fehler bei der Auswahl"
      Exit Sub
  Else
    Set oHybridbody = sSel.Item(1).Value
    sSel.Clear
  End If

  ' Liste der GeoElemente des GeoSets speichern
  Set oShapes = oHybridbody.HybridShapes

  ' Workbench zum Messen holen
  Set oSpaWB = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")

  ' Fehlerbehandlung abschalten
  On Error Resume Next

  ' alle Elemente im GeoSet durchlaufen
  For ii = 1 To oShapes.Count


gWksSheet.cells(iRow, iColumn).Value = oShapes.Item(ii).Name

Set oPoint = oShapes.Item(ii).Point
gWksSheet.cells(iRow, iColumn+1).Value = oPoint.DisplayName

Set oFlaeche = oShapes.Item(ii).Surface
gWksSheet.cells(iRow, iColumn+2).Value = oFlaeche.DisplayName

Set oBegrenz1 = oShapes.Item(ii).FirstUptoElem
gWksSheet.cells(iRow, iColumn+3).Value = oBegrenz1.DisplayName

Set oBegrenz2 = oShapes.Item(ii).SecondUptoElem
gWksSheet.cells(iRow, iColumn+4).Value = oBegrenz2.DisplayName

    'GeoElement in MessObjekt umwandeln
    Set oMeas = oSpaWB.GetMeasurable(oShapes.Item(ii))

      'PointsOnCurve liefert die Start- und Endpunktkoordinaten zurück
      Call oMeas.GetPointsOnCurve(aPoints)
      gWksSheet.cells(iRow, iColumn+5).Value = aPoints(0)
      gWksSheet.cells(iRow, iColumn+6).Value = aPoints(1)
      gWksSheet.cells(iRow, iColumn+7).Value = aPoints(2)
gWksSheet.cells(iRow, iColumn+8).Value = aPoints(6)
gWksSheet.cells(iRow, iColumn+9).Value = aPoints(7)
gWksSheet.cells(iRow, iColumn+10).Value = aPoints(8)

    iRow = iRow + 1

  Next
  ' Fehlerbehandlung wieder einschalten
  On Error GoTo 0

  MsgBox ("Fertig!")
End Sub

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: 20. Aug. 2008 07:07    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 McWumpus 10 Unities + Antwort hilfreich

Na da Hut ab für die Idee.

Eine Frage noch: Warum gehst du den Umweg über ein anderes Programm um die Dubletten zuu finden?
Wenn Du sie einmal in der Hand hast schreib sie doch in ne Collection mit ihrem Namen als Key, dann kannste immer wenn Du einen Punkt findest das Element mit dem Namen aus der Collection ziehen Col.Item(PunktName) und wenn Nothing zurück kommt dann steht der Punkt noch nicht in deiner Collection.
Oder habe ich es noch immer falsch verstanden? 

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

Beny
Mitglied
Konstrukteur - Standardisierung


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

Beiträge: 36
Registriert: 15.11.2010

erstellt am: 30. Apr. 2012 15:28    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 McWumpus 10 Unities + Antwort hilfreich

Hi Leute,

Ist es denn jetzt irgendwie ohne großen Aufwand möglich mit ".getCoordinates" die Koordinaten des Punktes auszulesen?

Also wenn der User eine "HybridShapeLineNormal"-Linie anklickt würde ich gerne die Koordinaten des Referenzpunktes bekommen.


Lg Beny

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: 02. Mai. 2012 09:17    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 McWumpus 10 Unities + Antwort hilfreich

Ja, Referenzpunkt auslesen und getCoordinates darauf wirken.

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