Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Probleme äußerster Punkt/Ebenen zwischen

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:  Probleme äußerster Punkt/Ebenen zwischen (3118 mal gelesen)
breitinger
Mitglied



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

Beiträge: 18
Registriert: 30.03.2009

Catia V5 R16

erstellt am: 19. Apr. 2009 19:21    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,

meine Probleme hängen eigentlich zusammen, deshalb nur ein Thema.

Ich definiere mit der Funktion "äußerster Punkt" jeweils ein Minimum und ein Maximum in die Hauptausdehnungsrichtungen meiner Fläche. Dabei habe ich bei einigen Flächen das Problem, dass Catia mir eine Linie anstatt eines Punktes definiert. Das macht mir ein Problem bei der darauffolgenden Definition der eingrenzenden Ebenen. Gibt es eine Möglichkeit eine Schleife anzuhängen, die kontrolliert ob Punkt oder Linie gefunden wurde und falls eine Line gefunden wurde einen Punkt darauf erzeugt?

Dann erstelle ich die eingrenzenden Ebenen und danach habe ich das nächste Problem. Man soll mit InputBox wählen können wieviele Ebene man ertsellen will. Das funktioniert auch aber alle Ebenen werden daraufhin identisch auf einer eingrenzenden Ebene erstellt. Ich poste hier mal den Ausschnitt indem ich den Fehler vermute:

Set hybridShapePlaneOffset1 = hybridShapeFactory1.AddNewPlaneOffset(reference1, 0.000000, True)
hybridShapePlaneOffset1.Name="EbeneX_" & 1
hybridBody1.AppendHybridShape hybridShapePlaneOffset1


part1.InWorkObject = hybridShapePlaneOffset1

dim count
count=InputBox("Ebenanzahl: ")

Set relations1 = part1.Relations

Set length1 = hybridShapePlaneOffset1.Offset

'Set formula1 = relations1.CreateFormula("", "", length1, "(distance(`Geometrisches Set.1\PlaneMaxX`,`Geometrisches Set.1\PlaneMinX`)) / (count + 1)")

For z=1 To count - 1

  Set reference2 = part1.CreateReferenceFromObject(hybridShapePlaneOffset1)

  Set hybridShapePlaneOffset2 = hybridShapeFactory1.DuplicateGSMSpec(reference2)
  hybridShapePlaneOffset2.Name="EbeneX_" & z +1

  Set reference3 = part1.CreateReferenceFromObject(hybridShapePlaneOffset2)

  Set reference4 = part1.CreateReferenceFromObject(hybridShapePlaneOffsetPt1)

  hybridShapeFactory1.SetReferenceElemForMultiple reference3, reference4

  Set relations2 = part1.Relations

  Set length2 = hybridShapePlaneOffset2.Offset

  Set formula2 = relations2.CreateFormula("", "",length2, "(distance(`Geometrisches Set.1\PlaneMaxX`,`Geometrisches Set.1\PlaneMinX`)) * z / (count + 1)")


Next

Danke für eventuelle Antworten
breitinger

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

zoltan.bekesi
Mitglied



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

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 19. Apr. 2009 21:10    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 breitinger 10 Unities + Antwort hilfreich

Hallo Breitinger,

1)
Hier könntest du auf den Extrememum eine Messung mit SPAWorkbench machen und vom Measurable die GeometryName abfragen. Da steht drin, ob es sich um ein Punkt oder was anderes handelt. Wenn es kein Punkt ist, kannst du eine Mittelpunkt auf der Kurve erstellen, dann hast du mit Sicherheit ein Punkt.

2)
Du hast im Relation im String Variablen aus der Skript, welche CATIA so nicht interpretieren kann: " * z / ( count +1 ) "

Gruß,
Zoltan

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

breitinger
Mitglied



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

Beiträge: 18
Registriert: 30.03.2009

Catia V5 R16

erstellt am: 20. Apr. 2009 14: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

Hallo Zoltan,

danke erstmal für deine Antwort. Da ich (wie du wahrscheinlich gemerkt hast) totaler Anfänger bin und eigentlich alles nach dem Prinzip "try and error" mache. Noch einige Fragen:

1) Könntest du mir deine Methode ein wenig genauer beschreiben. Iich habe es mit einer if Schleife probiert komme aber auf keinen grünen Zweig.

2)Bitte sag mir wie ich es anders machen könnte.

Danke für deine ev Antwort
schöne Grüße
breitinger

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

zoltan.bekesi
Mitglied



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

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 20. Apr. 2009 19:55    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 breitinger 10 Unities + Antwort hilfreich

Hallo Breitinger,

anbei ein Beispiel für 1) und 2) zusammen. Es läuft nur, wenn ein Part geöffnet ist und wahrscheinlich nur unter VBA (wegen die verwendeten CATIA-Enums beim GeometryName). Die Abstand der mittleren Ebenen ist nicht von der Messergebnis assoziativ abhängig. So wäre es noch etwas komplexer, ich habe aber die zu ändernde Stellen markiert. Die Anzahl kann nicht abhängig sein, es sei denn du machst ein RectPattern.

Code ist nicht getestet, müsste aber funktionieren.

Code:
'Extremum, die du bereits erzeugt hast
dim oExtremum1 as HybridShapeExtremum 'oder was ähnliches

dim oReferenceOnExtremum1 as Reference
set oReferenceOnExtremum1 = CATIA.Activedocument.Part.CreateReferenceOnObject(oExtremum1)

Dim TheSPAWorkbench as SPAWorkbench
Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")

dim oMeasurableExtremum1 as Measurable
set oMeasurableExtremum1 = TheSPAWorkbench.GetMeasurable(oReferenceOnExtremum1)

dim oReferenceToMeasure as Refernce
dim oPointOnCurve as HybridShapePointOnCurve

if oMeasurableExtremum1.GeometryName=CatMeasurablePoint then
    'Extremum ist ein Punkt
    set oReferenceToMeasure = oReferenceOnExtremum1
elseif (oMeasurableExtremum1.GeometryName = CatMeasurableLine or oMeasurableExtremum1.GeometryName = CatMeasurableCurve  or oMeasurableExtremum1.GeometryName = CatMeasurableCircle)
    'Extremum ist eine Linie, Kurve oder Kreis(Stück)
    'also müssen wir ein Punkt in der Mittelpunkt der Kurve erstellen
    set oPointOnCurve= hybridShapeFactory1.AddNewPointOnCurveFromPercent(oReferenceOnExtremum1 , 0.5, true)
    hybridBody1.AppendHybridShape oPointOnCurve
    set oReferenceToMeasure = CATIA.Activedocument.Part.CreateReferenceOnObject(oPointOnCurve )
else
    msgbox("Unbekannter Ergebnis von Extremum")
end if

dim oPlaneThrougExtremum1 as HybridShapePlaneOffsetPt
'Hier wird eine Ebene parallel zu deine HybridShapePlane1 durch den neuen Punkt erzeugt
set oPlaneThrougExtremum1 = hybridShapeFactory1.AddNewPlaneOffsetPt(reference1, oReferenceToMeasure )

'somit haben wir eine Ebene
'hier könntest du die andere in der anderen Richtung erzeugen
set oPlaneThrougExtremum2 = ... 'du hast die andere Ebene erzeugt

dim dDistanceBetweenExtrema as double
dim oMeasureableExtrema as Measurable
dim oRefOnExtremum1 as Reference
dim oRefOnExtremum2 as Reference
set oRefOnExtremum1 = CATIA.Activedocument.Part.CreateReferenceOnObject(oPlaneThrougExtremum1)
set oRefOnExtremum2 = CATIA.Activedocument.Part.CreateReferenceOnObject(oPlaneThrougExtremum2)
set oMeasureableExtrema = TheSPAWorkbench.GetMeasurable(oRefOnExtremum1)
'Hier hast du den Abstand zwischen den zwei Ebenen
dDistanceBetweenExtrema = oMeasureableExtrema.GetMinimumDistance(oRefOnExtremum2)
'für eine assoziative Abhängigkeit diesen Abstand in einen Parameter mit "Messung" erzeugen, den Formel hattest du praktisch schon in deiner Code.

dim count
count=InputBox("Ebenanzahl: ")
if not IsNumeric(count) then
  msgbox("Bitte eine Zahl angeben!")
  exit sub
end if

dim z as integer
For z=1 To cint(count - 1)

  'falls du assoziative Abhängigkeit brauchst, musst du der Offset dieser Plane mit einen Relation versehen
  Set hybridShapePlaneOffset2 = hybridShapeFactory1.AddNewPlaneOffset(oRefOnExtremum1, dDistanceBetweenExtrema * z / (count + 1) , true)
  hybridShapePlaneOffset2.Name="EbeneX_" & cstr(z +1)
  hybridBody1.AppendHybridShape hybridShapePlaneOffset2

Next


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