Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Methode Planes Between als Makro??

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:  Methode Planes Between als Makro?? (2517 mal gelesen)
studmija
Mitglied
Student


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

Beiträge: 49
Registriert: 22.11.2010

System:
Microsoft Windows XP
Professional x64 Edition
Version 2003
Sevice Pack 2
Computer:
Intel(R)Xeon(R)CPU
2,80GHz, 12 GB RAM
Software:
CATIA V5R19

erstellt am: 26. Nov. 2010 13: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

Servus!
Habe direkt noch eine Frage.

Ich möchte zwischen 2 parallelen Ebenen beliebig viele Ebenen erzeugen.
Wie sieht die Methode "Planes between" als Quelltext aus?
Kann man über Input-Fenster die Anzahl der zu erzeugenden Ebenen steuern?

Gruß
Micha

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

Starbirth
Mitglied
Konstrukteur


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

Beiträge: 119
Registriert: 22.10.2009

erstellt am: 26. Nov. 2010 15:11    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 studmija 10 Unities + Antwort hilfreich

Planes Between kann man soweit ich weiss nicht direkt ansprechen. Genau wie Poins and Planes Repitition. Ist aber auch gar nicht nötig. Sowas lässt sich mit anderen Funktionen gut nachbilden.

Für die Planes:
Du misst den Abstand deiner beiden Planes aus, teilst diesen durch die eingegebene Anzahl der "Zwischenplanes" und erzeugst dann in einer For-Schleife die ganzen Planes als PlaneOffset (also offset einer der beiden Eingabeplanes) wobei der Offsetwert dem errechneten Abstand zwischen den Planes*deinem Schleifenzähler entspricht.

Zur Eingabe der Planeanzahl:
Hängt hauptsächlich davon ab ob du dein Makro als CATScript oder CATVBA schreiben willst.
Bei CATScript bist du auf einfache (aber zweckmäßige) Inputboxen limitiert. Wenn nur eine Angabe abgefragt werden soll geht das OK, bei mehreren wirds nervig.
Im CATVBA könntest du ein kleines GUI mit mehreren Textfeldern aufbauen. Der User gibt hier die gewünschten Werte ein und du kannst diese später im Makro nach belieben  abfragen nud weiter verwenden.

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

studmija
Mitglied
Student


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

Beiträge: 49
Registriert: 22.11.2010

System:
Microsoft Windows XP
Professional x64 Edition
Version 2003
Sevice Pack 2
Computer:
Intel(R)Xeon(R)CPU
2,80GHz, 12 GB RAM
Software:
CATIA V5R19

erstellt am: 26. Nov. 2010 15: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

ahh okay. 

Kann ich den Abstand direkt im Makro bestimmen?Also durch irgendeine Methode & anschließend als Referenz verwenden???
Wie gesagt bin ein totaler Beginner 

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 26. Nov. 2010 15: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 Nur für studmija 10 Unities + Antwort hilfreich

Servus
Verwende mal den Makrorecorder um "Planes Between" aufzunehmen.
Dann hast du schon mal ein grobes Gerüst für dein Makro (klar muss noch etwas aufgeräumt werden)

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

Starbirth
Mitglied
Konstrukteur


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

Beiträge: 119
Registriert: 22.10.2009

erstellt am: 26. Nov. 2010 16:12    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 studmija 10 Unities + Antwort hilfreich

Dein Makro von Nebenan sah nicht nach absolutem Beginner aus 

Ich vermute du meinst den Abstand der beiden Planes? Den kannst du direkt im Makro messen und in eine Variable schreiben.

Hier ein kurzer Beispielcode zum Messen:

Code:
Dim WirdGemessen As Object 'As HybridShapePlane
Set WirdGemessen = iGeoSet.HybridShapes.Item("Plane 1") 'Plane 1 liegt in GeoSet Objekt "iGeoSet" (muss vorher zugewiesen sein)
   
Dim Ref_CurSurface As Reference
Set Ref_CurSurface = ActivePart.CreateReferenceFromObject(WirdGemessen)

Dim TheSPAWorkbench As Workbench
Dim TheMeasurable As Measurable
Dim Abstand As Double
           
Set TheSPAWorkbench = ActiveDoc.GetWorkbench("SPAWorkbench")
Set TheMeasurable = TheSPAWorkbench.GetMeasurable(Plane 2)  'Plane 2 muss als Objekt auch vorher zugewiesen sein
Abstand = TheMeasurable.GetMinimumDistance(Ref_CurSurface)  'Abstand ist dann deine Variable die den Abstand der beiden Planes enthält


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

studmija
Mitglied
Student


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

Beiträge: 49
Registriert: 22.11.2010

System:
Microsoft Windows XP
Professional x64 Edition
Version 2003
Sevice Pack 2
Computer:
Intel(R)Xeon(R)CPU
2,80GHz, 12 GB RAM
Software:
CATIA V5R19

erstellt am: 30. Nov. 2010 10: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

Hi!
Ja ich habe diesen Abstand gemeint!
Das mit der Abstandermittlung hab ich verstanden & auch in meinem Makro umgesetzt.
Danke Starbirth!
Die Vorgehensweise ist jetzt klar für mich,allerdings kann ich nicht den Offset zw. den einzelnen Ebenen ermitteln (Wie muss die Funktion aussehen)und auch die For-Schleife bereitet mit Probleme.
Ich weiß halt nicht wie der Quelltext aussehen soll!??
Habe hier im Forum & auch in meinen Büchern kein passendes Bsp gefunden.
Die benötigten Variablen "Abstand" (gemessener Abstand)  und "AnzPln" (Anzahl der Zwischenebenen) stehn ja schon mal!
Hier mein bisheriges Makro(ab den Sternen weiß ich nicht genau was ich programmieren soll):

' VORAUSSETZUNG: GS "Ebenen" mit "den PARALLELEN Ebenen Plane.1 und Plane.2"

Sub CATMain()

' 3D-Werkzeugkasten deklarieren ----------------------------------------------------------------------

Dim ActiveDoc
Set ActiveDoc = CATIA.ActiveDocument

Dim NewPart As Part
Set NewPart = CATIA.ActiveDocument.Part

Dim Wzk3D As HybridShapeFactory
Set Wzk3D = NewPart.HybridShapeFactory

' Geometrisches Set "Ebenen" deklarieren ------------------------------------------------------------------

Dim GS As HybridBody
Set GS = NewPart.HybridBodies.Item ("Ebenen")

' Geo deklarieren ---------------------------------------------

Dim PLN1, PLN2
Set PLN1 = GS.HybridShapes.Item ("Plane.1")
Set PLN2 = GS.HybridShapes.Item ("Plane.2")

' Referenzen deklarieren ----------------------------------------------------------------------

Dim Ref1, Ref2 As Reference
Set Ref1 = NewPart.CreateReferenceFromObject (PLN1)
Set Ref2 = NewPart.CreateReferenceFromObject (PLN2)

' Abstand zwischen den zwei Referenzebenen ermitteln ======================================================
' Objekte für Messung deklarieren

Dim TheSPAWorkbench As Workbench
Dim TheMeasurable As Measurable
Dim Abstand As Double
         
Set TheSPAWorkbench = ActiveDoc.GetWorkbench("SPAWorkbench")
Set TheMeasurable = TheSPAWorkbench.GetMeasurable(Ref1)
Abstand = TheMeasurable.GetMinimumDistance(Ref2) ' "Abstand" ist eine Variable die den Abstand der beiden Planes enthält

' Benutzer Eingabe für Anzahl der Zwischenebenen ====================
' Inputbox deklarieren ----------------------------------------

Dim EingAnzPln
EingAnzPln = InputBox ("Bitte geben Sie die Anzahl der Zwischenebenen ein.", "Eingabe Anzahl der Zwischenebenen", Eingabe)


' "Anzahl der Zwischenebenen" als Parameter anlegen (damit im nachhinein die Anzahl geändert werden kann) -------------------------------------------

Dim Params As Parameters
Set Params = NewPart.Parameters
Dim AnzPln
Set AnzPln = Params.CreateInteger ("Anzahl Zwischenebenen",EingAnzPln)


'*********************************************************************

'Berechnung Offsetwert zw. den einzelnen Zwischenebenen ====================================================

Function AusgabeDivision As Double      --> FEHLER !?
AusgabeDivision = Abstand / AnzPln
End Function

' FOR-Schleife: Erzeugung der Zwischenebenen =========================================================

Dim I As Integer
For I=1 To AnzPln

Function OffReal As Double
' soll den Offsetwert für die Ebenen berechnen
OffReal = AusgabeDivision * I
End Function

' NeueEbene deklarieren ----------------------------------------------------------------------

Dim NewPln As HybridShapePlaneOffset
Set NewPln = Wzk3D.AddNewPlaneOffset (Ref1, OffReal, True)

GS.AppendHybridShape NewPln

Next

NewPart.Update


End Sub


________________
Bin für jeden Tip /Bsp. dankbar 

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

Starbirth
Mitglied
Konstrukteur


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

Beiträge: 119
Registriert: 22.10.2009

erstellt am: 30. Nov. 2010 10:53    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 studmija 10 Unities + Antwort hilfreich

Das sieht doch schon mal ganz gut aus.

Nimm die Division mal nicht als einzelne Function mit rein. Bei so kleinen Rechnungen ist das ähnlich wie die Sache mit den Kanonen und Spatzen...

Versuch es mal damit:

Code:
Dim AbstandEinzelplanes as Double
AbstandPlanes=( Abstand / AnzPln )

Dim I As Integer
For I=1 To AnzPln

   Dim OffReal as Double
   OffReal = AbstandEinzelplanes * I
   ' NeueEbene deklarieren ----------------------------------------------------------------------

   Dim NewPln As HybridShapePlaneOffset
   Set NewPln = Wzk3D.AddNewPlaneOffset (Ref1, OffReal, True)

GS.AppendHybridShape NewPln

Next


EDIT: Rechtschreibung

EDIT2: Nachtrag
Wenn du doch mit einer Function arbeiten willst, um es mal zu üben oder so, schau dir bitte vorher noch mal den Eintrag dazu in der VB Hilfe an. Du hast das Ganze ein wenig falsch implementiert.

Functions kommen nicht mitten in den Code, sondern gleicberechtigt neben die Subs. Dort werden sie mit den benötigten Inputs deklariert und im Code auch mit den entsprechenden Inputs aufgerufen.

[Diese Nachricht wurde von Starbirth am 30. Nov. 2010 editiert.]

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

studmija
Mitglied
Student


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

Beiträge: 49
Registriert: 22.11.2010

System:
Microsoft Windows XP
Professional x64 Edition
Version 2003
Sevice Pack 2
Computer:
Intel(R)Xeon(R)CPU
2,80GHz, 12 GB RAM
Software:
CATIA V5R19

erstellt am: 30. Nov. 2010 11: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

Danke
gut aussehen ist ja das eine, funktionieren das andere 

Hab es mal mit deinem Vorschlag probiert, aber er meckert immer noch 
...ich weiß nicht woran es liegt!

bis zu den Sternen ist alles beim Alten...


'*********************************************************************************************************************

'Berechnung Offsetwert zw. den einzelnen Zwischenebenen ====================================================

Dim AbstandEinzelplanes as Double
AbstandEinzelplanes = ( Abstand / AnzPln )  '  ---> FEHLERMELDUNG!!! Das Objekt unterstützt die Eigenschaft oder Methode nicht.

Dim I As Integer
For I=1 To AnzPln

  Dim OffReal as Double
  OffReal = AbstandEinzelplanes * I

' NeueEbene deklarieren ----------------------------------------------------------------------

  Dim NewPln As HybridShapePlaneOffset
  Set NewPln = Wzk3D.AddNewPlaneOffset (Ref1, OffReal, True)

GS.AppendHybridShape NewPln

Next

NewPart.Update


End Sub

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 30. Nov. 2010 11:47    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 studmija 10 Unities + Antwort hilfreich

Servus
versuch es mal mit:
AbstandEinzelplanes = ( Abstand / AnzPln.Value )

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

studmija
Mitglied
Student


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

Beiträge: 49
Registriert: 22.11.2010

System:
Microsoft Windows XP
Professional x64 Edition
Version 2003
Sevice Pack 2
Computer:
Intel(R)Xeon(R)CPU
2,80GHz, 12 GB RAM
Software:
CATIA V5R19

erstellt am: 30. Nov. 2010 12:12    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

Nee Bernd, funzt auch nicht!

Habe auch
                AbstandEinzelplanes = (Abstand.Value/ AnzPln.Value)
probiert...

Das ganze kann doch net so schwer sein???oder???

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

studmija
Mitglied
Student


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

Beiträge: 49
Registriert: 22.11.2010

System:
Microsoft Windows XP
Professional x64 Edition
Version 2003
Sevice Pack 2
Computer:
Intel(R)Xeon(R)CPU
2,80GHz, 12 GB RAM
Software:
CATIA V5R19

erstellt am: 02. Dez. 2010 11:12    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!
Ich bin jetzt ein Stückchen weiter gekommen, aber immer noch nicht am Ziel

Habe nun Paramter für die gemessene Länge, Anzahl der Zwischenebenen und AbstandEinzelplanes eingefügt.
Letzteres ermittel ich mit Hilfe einer Formel.
Meine For-Schleife für die Erstellung der Zwischenebenen funktioniert jedoch noch nicht.
Habe die Fehlerzeile kenntlich gemacht!

Code:
'*** VORAUSSETZUNG: GS "Ebenen" mit 2  PARALLELEN Ebenen "REF_PLN" und "LAST_PLN"

Sub CATMain()

'*** 3D-Werkzeugkasten deklarieren -----------------------------------------------------------------------------

Dim ActiveDoc
Set ActiveDoc = CATIA.ActiveDocument

Dim NewPart As Part
Set NewPart = CATIA.ActiveDocument.Part

Dim Wzk3D As HybridShapeFactory
Set Wzk3D = NewPart.HybridShapeFactory

'*** Geometrisches Set "Ebenen" deklarieren ------------------------------------------------------------------

Dim GS As HybridBody
Set GS = NewPart.HybridBodies.Item ("Ebenen")

'*** Geo deklarieren ------------------------------------------------------------------------------------------------

Dim PLN1, PLN2
Set PLN1 = GS.HybridShapes.Item ("REF_PLN")
Set PLN2 = GS.HybridShapes.Item ("LAST_PLN")

'**********************************************************************************************************************
'**********************************************************************************************************************

'*** Referenzen deklarieren ---------------------------------------------------------------------------------------

Dim Ref1, Ref2 As Reference
Set Ref1 = NewPart.CreateReferenceFromObject (PLN1)
Set Ref2 = NewPart.CreateReferenceFromObject (PLN2)


'*** Abstand zwischen den zwei Referenzebenen ermitteln ***********************************************************************
'*** Objekte für Messung deklarieren

Dim TheSPAWorkbench As Workbench
Dim TheMeasurable As Measurable
Dim Abstand As Double
         
Set TheSPAWorkbench = ActiveDoc.GetWorkbench("SPAWorkbench")
Set TheMeasurable = TheSPAWorkbench.GetMeasurable(Ref1)
Abstand = TheMeasurable.GetMinimumDistance(Ref2) ' "Abstand" ist eine Variable die den Abstand der beiden Planes enthält

'*** Benutzer Eingabe für Anzahl der Zwischenebenen***********************************************************************
' ***Inputbox deklarieren -------------------------------------------------------------------------------------------

Dim EingAnzPln
EingAnzPln = InputBox ("Bitte geben Sie die Anzahl der Zwischenebenen ein.", "Eingabe Anzahl der Zwischenebenen", Eingabe)


'***Berechnung Offsetwert zw. den einzelnen Zwischenebenen *****************************************************************


'*** Parameter für Abstandsberechnung deklarieren
Dim Params As Parameters
Set Params = NewPart.Parameters
Dim AbstandRefPlanes, AbstandEinzelplanes As Double
Dim AnzahlPlanes As Integer

Set  AbstandReflPlanes  = Params.CreateDimension ("AbstandRefPlanes", "Length",Abstand)
Set  AnzahlPlanes  = Params.CreateInteger ("AnzahlPlanes", EingAnzPln)
Set  AbstandEinzelplanes  = Params.CreateDimension ("AbstandEinzelplanes", "Length",123)

'***Formel erstellen
Dim Rels As Relations   
Set Rels = NewPart.Relations
'***Formel zur Verknüpfung mit dem Parameter (AbstandEinzelplanes)
Dim FName, FKom, FInhalt As CATBSTR
FName = "AbstandEinzelplanes"
FKom = "Berechnung AbstandEinzelplanes"
FInhalt = "AbstandRefPlanes / AnzahlPlanes"
    Set Formel = Rels.CreateFormula (FName, FKom, AbstandEinzelplanes, FInhalt)

'*** FOR-SCHLEIFE **************************************************************
Dim I As Integer

For I=1 To AnzahlPlanes.Value

  Dim OffsetPln As Double
  OffsetPln = ("AbstandEinzelplanes * I")


' NeueEbene deklarieren ----------------------------------------------------------------------

  Dim NewPln As HybridShapePlaneOffset
  Set NewPln = Wzk3D.AddNewPlaneOffset (Ref1,OffsetPln,True)      '   HIER FEHLERMELDUNG!!!!

GS.AppendHybridShape NewPln

Next

NewPart.Update


End Sub


PS: Wenn ich für OffsetPln z.B. einen Wert eingebe, werden auf diesen Offsetwert "I"-viele Ebenen erstellt.
D.h. iwie wird der "berechnete Wert" von OffsetPln nicht "erkannt".... habs auch schon mit OffsetPln.Value probiert.

Korrekturvorschläge???

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

studmija
Mitglied
Student


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

Beiträge: 49
Registriert: 22.11.2010

System:
Microsoft Windows XP
Professional x64 Edition
Version 2003
Sevice Pack 2
Computer:
Intel(R)Xeon(R)CPU
2,80GHz, 12 GB RAM
Software:
CATIA V5R19

erstellt am: 02. Dez. 2010 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

Hat sich erledigt!Hab das Problem selber gelöst!

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

Starbirth
Mitglied
Konstrukteur


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

Beiträge: 119
Registriert: 22.10.2009

erstellt am: 02. Dez. 2010 14:41    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 studmija 10 Unities + Antwort hilfreich

Darf man Fragen in welcher Umgebung du deinen Code schreibst? Der Visual Basic Editor meckert nämlich bei deinem Code schon vor dem Ausführen rum.

In der Zeile:

Code:
Set AnzahlPlanes = Params.CreateInteger("AnzahlPlanes", EingAnzPln)

wird von ihm ein Object erwartet. Darüber und darunter ebenso.
Bedeutet in dem Fall nichts anderes als: Das Set ist zu viel. Du willst ne Variable zuweisen, dafür brauchst du Set nicht. Das dürfte unten auch zu deinem Fehler führen, du versuchst als Objekt zugewiesene, ähm..., Dinger durcheinander zu Teilen, zu multiplizieren nud hinterher als Zahl an die Funktion zu übergeben. dass es da hakt klingt realistisch.

Des Weiteren wird weiter unten beim dimmen von FName und Co als CATBSTR rum gemeckert. Nehme ich das Weg, läufts ein paar Zeilen weiter unten nicht mehr. Schau da evtl. auch noch mal drauf, mit dem Thema kenne ich mich nicht aus.

EDIT: War wohl zu spät. Aus Interesse: Lag ich mit meiner Vermutung richtig?

[Diese Nachricht wurde von Starbirth am 02. Dez. 2010 editiert.]

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

studmija
Mitglied
Student


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

Beiträge: 49
Registriert: 22.11.2010

System:
Microsoft Windows XP
Professional x64 Edition
Version 2003
Sevice Pack 2
Computer:
Intel(R)Xeon(R)CPU
2,80GHz, 12 GB RAM
Software:
CATIA V5R19

erstellt am: 02. Dez. 2010 15:13    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 Schreibe meine Makros bisher mit dem einfachen Makro-Editor.
Sprache ist CATScript.
Was meinst du mit Umgebung? Ich arbeite mit CATIA V5R19 64bit...

Hier mein fertiges Makro
Ich hab zwar jetzt mehr oder weniger 3 unnötige Parameter erzeugt, aber es funktioniert:

Code:

'Makro: PLANES_BETWEEN.CATScript
'Version: 1.0
'Code: CATIA CATScript
'Zweck:         Erzeugung der Zwischenebenen.
'Autor: Michael Janek
'Datum:         02.12.2010
'---------------------------------------------------------------------------------------------------------------------
CATIA.StatusBar = "PLANES_BETWEEN.CATScript, Version 1.0"

'*** VORAUSSETZUNG: GS "Ebenen" mit 2  PARALLELEN Ebenen "REF_PLN" und "LAST_PLN"

Sub CATMain()

'*** 3D-Werkzeugkasten deklarieren -----------------------------------------------------------------------------

Dim ActiveDoc
Set ActiveDoc = CATIA.ActiveDocument

Dim NewPart As Part
Set NewPart = CATIA.ActiveDocument.Part

Dim Wzk3D As HybridShapeFactory
Set Wzk3D = NewPart.HybridShapeFactory

'*** Geometrisches Set "Planes" deklarieren ------------------------------------------------------------------

Dim GS As HybridBody
Set GS = NewPart.HybridBodies.Item ("Planes")

'*** Geo deklarieren ------------------------------------------------------------------------------------------------

Dim PLN1, PLN2
Set PLN1 = GS.HybridShapes.Item ("REF_PLN")
Set PLN2 = GS.HybridShapes.Item ("LAST_PLN")

'**********************************************************************************************************************
'**********************************************************************************************************************

'*** Referenzen deklarieren ---------------------------------------------------------------------------------------

Dim Ref1, Ref2 As Reference
Set Ref1 = NewPart.CreateReferenceFromObject (PLN1)
Set Ref2 = NewPart.CreateReferenceFromObject (PLN2)


'*** Abstand zwischen den zwei Referenzebenen ermitteln ***********************************************************************
'*** Objekte für Messung deklarieren

Dim TheSPAWorkbench As Workbench
Dim TheMeasurable As Measurable
Dim Abstand As Double
         
Set TheSPAWorkbench = ActiveDoc.GetWorkbench("SPAWorkbench")
Set TheMeasurable = TheSPAWorkbench.GetMeasurable(Ref1)
Abstand = TheMeasurable.GetMinimumDistance(Ref2) ' "Abstand" ist eine Variable die den Abstand der beiden Planes enthält

'*** Benutzer Eingabe für Anzahl der Zwischenebenen *************************************************************************
' ***Inputbox deklarieren -------------------------------------------------------------------------------------------

Dim EingAnzPln
EingAnzPln = InputBox ("Bitte geben Sie die Anzahl der Zwischenebenen ein.", "Anzahl der Zwischenebenen", Eingabe)


'Geometrisches Set "Planes between" deklarieren -------------------------

Dim GS2 As HybridBody
Set GS2 = GS.HybridBodies.Add
GS2.Name = "Planes between"


'***Berechnung Offsetwert zw. den einzelnen Zwischenebenen *****************************************************************


'*** Parameter für Abstandsberechnung deklarieren
Dim Params As Parameters
Set Params = NewPart.Parameters
Dim AbstandRefPlanes, AbstandEinzelplanes As Double
Dim AnzahlPlanes As Integer

Set  AbstandReflPlanes  = Params.CreateDimension ("AbstandRefPlanes", "Length",Abstand)
Set  AnzahlPlanes  = Params.CreateInteger ("AnzahlPlanes", EingAnzPln)
Set  AbstandEinzelplanes  = Params.CreateDimension ("AbstandEinzelplanes", "Length",123)

'***Formel erstellen
Dim Rels As Relations   
Set Rels = NewPart.Relations
'***Formel zur Verknüpfung mit dem Parameter (AbstandEinzelplanes)
Dim FName, FKom, FInhalt As CATBSTR
FName = "AbstandEinzelplanes"
FKom = "Berechnung AbstandEinzelplanes"
FInhalt = "AbstandRefPlanes / (AnzahlPlanes+1)"
    Set Formel = Rels.CreateFormula (FName, FKom, AbstandEinzelplanes, FInhalt)

'*** FOR-SCHLEIFE **************************************************************
Dim I As Integer

For I=1 To AnzahlPlanes.Value

  Dim OffsetPln As Double
  OffsetPln = AbstandEinzelplanes.Value*I


' NeueEbene deklarieren ----------------------------------------------------------------------

  Dim NewPln As HybridShapePlaneOffset
  Set NewPln = Wzk3D.AddNewPlaneOffset (Ref1,OffsetPln,True)      ' HIER FEHLERMELDUNG!!!!

GS2.AppendHybridShape NewPln

Next

NewPart.Update


End Sub


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

studmija
Mitglied
Student


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

Beiträge: 49
Registriert: 22.11.2010

System:
Microsoft Windows XP
Professional x64 Edition
Version 2003
Sevice Pack 2
Computer:
Intel(R)Xeon(R)CPU
2,80GHz, 12 GB RAM
Software:
CATIA V5R19

erstellt am: 02. Dez. 2010 15:14    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

Ergänzung das GS muss jetzt als "Planes" benannt sein!

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

studmija
Mitglied
Student


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

Beiträge: 49
Registriert: 22.11.2010

System:
Microsoft Windows XP
Professional x64 Edition
Version 2003
Sevice Pack 2
Computer:
Intel(R)Xeon(R)CPU
2,80GHz, 12 GB RAM
Software:
CATIA V5R19

erstellt am: 06. Dez. 2010 09:11    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


Falsche_Orientierung.JPG

 
Servus!
Ich hab ein Problem mit meinem Makro.
Und zwar kommt es vor, das ich bei der Erstellung der Zwischenebenen die falsche Orientierungsrichtung habe. Die Ebenen werden dann nicht wie gewünscht zwischen den Referenzebenen erzeugt! (siehe Bild) 
wie kann ich sicherstellen, das die Zwischenebenen auch IMMER zwischen den beiden Referenzebenen erzeugt werden???

Gruß
Micha

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

Starbirth
Mitglied
Konstrukteur


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

Beiträge: 119
Registriert: 22.10.2009

erstellt am: 06. Dez. 2010 09: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 Nur für studmija 10 Unities + Antwort hilfreich

Moin,
du könntest, nachdem die erste Offseebene erzeugt wurde, den Abstand zwischen dieser und der Anderen Eingabeebene messen.
Ist dieser kleiner als der ursprüngliche Abstand zwischen den beiden Eingabeebenen arbeitest du in die richtige Richtung.
Sollte dieser allerdings größer sein, lösche die Offsetebene und springe in eine andere Schleife in der du die Offsets mit umgekehrter Normalenrichtung erzeugst.

So solltest du die Planes, unabhängig von Normalenrichtungen, immer zwischen deinen beiden Referenzebenen liegen haben.

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

studmija
Mitglied
Student


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

Beiträge: 49
Registriert: 22.11.2010

System:
Microsoft Windows XP
Professional x64 Edition
Version 2003
Sevice Pack 2
Computer:
Intel(R)Xeon(R)CPU
2,80GHz, 12 GB RAM
Software:
CATIA V5R19

erstellt am: 06. Dez. 2010 10: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

Den Ansatz finde ich gut!Müsste eigentlich klappen.
Sowas in der Art habe ich mir auch schon überlegt...

Mal sehn ob ichs jetzt auch umsetzten kann
Werde jetzt erst mal bisschen dran tüfteln

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

studmija
Mitglied
Student


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

Beiträge: 49
Registriert: 22.11.2010

System:
Microsoft Windows XP
Professional x64 Edition
Version 2003
Sevice Pack 2
Computer:
Intel(R)Xeon(R)CPU
2,80GHz, 12 GB RAM
Software:
CATIA V5R19

erstellt am: 06. Dez. 2010 13:23    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

Zur Info: Der obige Ansatz hat funktioniert!

hier die kurzzusammenfassung von meinem Makro:

-erzeuge die 1. Offsetplane
- messe den "kontrollabstand"
- If-Then-Else Verzweigung
falls Prüfung positiv: For-Next Schleife mit I=2
ansonsten
wird die 1. Offsetplane gelöscht und eine For-Next Schleife mit I=1 und der anderen Orientierungsrichtung bei der Ebenenerzeugung ausgeführt.

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