Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  BrowseForFolder Kontrolle

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:  BrowseForFolder Kontrolle (5049 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: 01. Mai. 2009 23:35    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 hab bei einem Makro, das mir nur andere Makros nach der Reihe aufruft Probleme mit der Kontrolle bei der BrowseForFolder. Der Fehler kommt schon in der Zeile: Ordner = ....
Weiters funktioniert es nur ausgeschrieben nicht aber in der For-Schleife. Dies ist zwar nicht so wichtig, aber fürs Verständnis wärs interessant.

Ich danke euch für eventuelle Antworten

breitinger


Code:

Sub CATMain()

'--------------Makroordner zuweisen

Dim Kontrolle()

Call MsgBox ("Bitte den Ordner in dem die Makros gespeichert sind auswaehlen!")

'--------------PROBLEME MIT KONTROLLE

Dim sShell

Dim Ordner

Set sShell = CreateObject("Shell.Application")

Ordner = sShell.BrowseForFolder(0, "Ordner der Makros", 0).Self.Path

'If Ordner = vbsCancel Then

    'Call MsgBox ("Auf Wunsch abgebrochen!",Abbruch)   

    'Exit Sub

'End If

'----------------Namen der Makros

Makro1 =  "1minima_maxima.catvbs"

Makro2 =  "2limit_planes.catvbs"

Makro3 = "3plane_groupX.catvbs"

Makro4 = "4plane_groupZ.catvbs"

Makro5 = "5cut_beams.catvbs"

Makro6 = "6cut_points.catvbs"

Makro7 = "7normals.catvbs"

Makro8 = "8readout.catvbs"

Dim oParams()


'-----------------------------PROBLEM FOR-SCHLEIFE FUNKTIONIERT NICHT

'For i=1 To 8

    'Call MsgBox ("Makro" & i & "wird ausgeführt!")

    'MakroName = "Makro"& i

    'CATIA.SystemService.ExecuteScript Ordner, catScriptLibraryTypeDirectory, MakroName, "CATMain",oParams

'-------------------Ausführen Makro 1

Call MsgBox ("Makro 1 wird ausgeführt!")

    CATIA.SystemService.ExecuteScript Ordner, catScriptLibraryTypeDirectory, Makro1, "CATMain",oParams

'-------------------Ausführen Makro 2

Call MsgBox ("Makro 2 wird ausgeführt!")

    CATIA.SystemService.ExecuteScript Ordner, catScriptLibraryTypeDirectory, Makro2, "CATMain",oParams

'-------------------Ausführen Makro 3

Call MsgBox ("Makro 3 wird ausgeführt!")

    CATIA.SystemService.ExecuteScript Ordner, catScriptLibraryTypeDirectory, Makro3, "CATMain",oParams

'-------------------Ausführen Makro 4

Call MsgBox ("Makro 4 wird ausgeführt!")

    CATIA.SystemService.ExecuteScript Ordner, catScriptLibraryTypeDirectory, Makro4, "CATMain",oParams

'-------------------Ausführen Makro 5

Call MsgBox ("Makro 5 wird ausgeführt!")

    CATIA.SystemService.ExecuteScript Ordner, catScriptLibraryTypeDirectory, Makro5, "CATMain",oParams

'-------------------Ausführen Makro 6

Call MsgBox ("Makro 6 wird ausgeführt!")

    CATIA.SystemService.ExecuteScript Ordner, catScriptLibraryTypeDirectory, Makro6, "CATMain",oParams

'-------------------Ausführen Makro 7

Call MsgBox ("Makro 7 wird ausgeführt!")

    CATIA.SystemService.ExecuteScript Ordner, catScriptLibraryTypeDirectory, Makro7, "CATMain",oParams

'-------------------Ausführen Makro 8

Call MsgBox ("Makro 8 wird ausgeführt!")

    CATIA.SystemService.ExecuteScript Ordner, catScriptLibraryTypeDirectory, Makro8, "CATMain",oParams

End Sub


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

Smerg
Mitglied
Student


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

Beiträge: 43
Registriert: 20.03.2008

erstellt am: 04. Mai. 2009 15: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 Nur für breitinger 10 Unities + Antwort hilfreich

hier mein Code, wie ich ihn benutze...
vielleicht findest du dein Fehler. Bin auf Arbeit und kann nicht weiter schauen. Vielleicht hab ich heut abend mehr Zeit...

Code:
Private Sub ...()
   
    Dim x As String
    Dim Shell As Object

    Set Shell = CreateObject("Shell.Application")
 
    On Error GoTo likethis
'Verhindert absturz beim druecken von >Abbruch<
 
    x = Shell.BrowseForFolder(0, "Please select a folder.",0).Self.path
   
    If Not x = "" Then
      'mache irgendetwas mit dem Pfad
    End If
   

likethis:
    'Abbruch
   
   
End Sub


------------------
ODI PROFANUM VULGUS

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: 04. Mai. 2009 16:01    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,

für BrowseForFolder funktioniert folgendes bei mir einwandfrei:

Code:

Function BrowseForFolder(Optional OpenAt As Variant) As Variant
'Function purpose:  To Browser for a user selected folder.
'If the "OpenAt" path is provided, open the browser at that directory
'NOTE:  If invalid, it will open at the Desktop level

    Dim ShellApp As Object

    'Create a file browser window at the default folder
    Set ShellApp = CreateObject("Shell.Application"). _
                  BrowseForFolder(0, "Please choose a folder", 0, OpenAt)

    'Set the folder to that selected.  (On error in case cancelled)
    On Error Resume Next
    BrowseForFolder = ShellApp.self.Path
    On Error GoTo 0

    'Destroy the Shell Application
    Set ShellApp = Nothing

    'Check for invalid or non-entries and send to the Invalid error
    'handler if found
    'Valid selections can begin L: (where L is a letter) or
    '\\ (as in \\servername\sharename.  All others are invalid
    Select Case Mid(BrowseForFolder, 2, 1)
        Case Is = ":"
            If Left(BrowseForFolder, 1) = ":" Then GoTo Invalid
        Case Is = "\"
            If Not Left(BrowseForFolder, 1) = "\" Then GoTo Invalid
        Case Else
            GoTo Invalid
    End Select

    Exit Function

Invalid:
    'If it was determined that the selection was invalid, set to False
    BrowseForFolder = False

End Function

'Aufruf
Sub Irgendwas()
    dim sVerzeichnis
    dim sStartverzeichnis as String
    sStartverzeichnis ="d:\"
    sVerzeichnis = BrowseForFolder(sStartVerzeichnis)
End Sub


Knackpunkt wird die kurzzeitige Ausschaltung der Fehlerüberwachung und die Abfrage sein.

Beim zweiten Teil verstehe ich dein Ziel nicht.
Ich sehe für jede Zeile ein eigener MsgBox. Das geht bis eine Weile, aber irgendwann wird es zu lang.
Ich schlage dir vor, entweder über einen Inputbox zu verfahren, oder in VBA ein Form zu erstellen.
Für ersteres ein kurzer Beispiel:

Code:
dim sMeldung as string
sMeldung = "1: Makro 1 " & vbcrlf & "2: Makro 2" 'usw.
Dim sAntwort As String
sAntwort = InputBox(sMeldung, "Bitte Makro per Zahleingabe wählen (Titel der Inputbox)", "1 (Default)")
if sAntwort="" then
  msgbox "Kein Makro wird gestartet"
elseif sAntwort="1"
  'Start Makro 1
  'usw.
end if

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: 04. Mai. 2009 22: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 Smerg! Hallo Zoltan!

Danke für die Antworten hab mir daraus was zurechtgebaut. Funktioniert noch nicht ganz aber wenn ich dann wieder mehr Zeit habe sollte es kein Problem sein.

Mittlerweile habe ich aber ein neues Problem:

Catia führt zwar alle Makros aus und erstellt auch alles was es sollte, jedoch aktualisiert es den Strukturbaum erst nach dem 3. Makro. Gibts da was tum Strukturbaumakualisieren? Ich habe nämlich im Forum und in meinem Buch nichts gefunden.
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: 05. Mai. 2009 17: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 breitinger 10 Unities + Antwort hilfreich

Hallo breitinger,

meinst du etwa CATIA.ActiveDocument.Product.Update oder das gleiche für ein Part/Product?

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: 05. Mai. 2009 20: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

Hallo Zoltan,

Danke für deine Antwort. Aber das was du geschrieben hast mache ich eigentlich eh durch "part1.Update".
Ich beschreibe mein Problem konkreter:
Wenn ich Makro1 ausführe erstellt es mir 4 Punkte. Diese sind dann auch in der Zeichnung vorhanden. Im Strukturbaum erscheinen sie aber erst im dritten Makro. Die nächsten Makros benutzen die Punkte auch ganz normal. Im Mastermakro kann ich nicht überprüfen ob sie erstellt worden sind, weil sie über eine Selection nicht gefunden werden.
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: 05. Mai. 2009 21: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 Nur für breitinger 10 Unities + Antwort hilfreich

Hallo breitinger,

in diesen Fall können wir dir höchstens weiterhelfen, wenn du den fraglichen Teil deiner Code hier reinstellst, damit es analysiert werden kann.

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: 06. Mai. 2009 13:22    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,

Das erste  Makro in meinem ersten Post startet mir 1minima_maxima.catvbs. Funktioniert auch bis auf die Kontrolle da im Strukturbaum nur ein Punkt der 4 erscheint.

Bitte nicht auf Schönheit achten....war mein allererstes Makro.
Partr1.Update steht durch den Makrorekorder 2 mal hintereinander macht aber keinen Unterschied.
Ich bin echt komplett planlos warum er mir den Strukturbaum nicht sofort aktualisiert.

Code:

Sub CATMain()

Dim EnableSelectionFor(0)

Dim EnableSelectionFor1(0)

  '-------------- Geo Set Selektion und umbenennen

  EnableSelectionFor (0) = "HybridBody"


  Set sSel = CATIA.ActiveDocument.Selection
  sSel.Clear
  Call MsgBox("Bitte Geometrisches Set der Flaeche auswaehlen!")
  UserSelection = sSel.SelectElement2(EnableSelectionFor, "GeoSet waehlen", False)

 
  If UserSelection <> "Normal" Then
      MsgBox "Fehler bei der Auswahl"
      Exit Sub
  Else
    Set oHybridShape = sSel.Item(1).Value
  ' MsgBox (sSel.Item(1).Value.Name)
  oHybridShape.Name="SideShield"

  End If


  '-------------- Flaeche Selektion und umbenennen

  EnableSelectionFor1 (0) = "HybridShape"


  Set sSel1 = CATIA.ActiveDocument.Selection
  sSel1.Clear
  Call MsgBox("Bitte Flaeche auswaehlen!")
  UserSelection1 = sSel1.SelectElement2(EnableSelectionFor1, "Flaeche waehlen", False)

 
  If UserSelection1 <> "Normal" Then
      MsgBox "Fehler bei der Auswahl"
      Exit Sub
  Else
    Set oHybridShape1 = sSel1.Item(1).Value
  ' MsgBox (sSel1.Item(1).Value.Name)
  oHybridShape1.Name="WindowShape"

  End If

' -----------------------------------------Auflösung

Set partDocument1 = CATIA.ActiveDocument

Set part1 = partDocument1.Part

Set hybridShapeFactory1 = part1.HybridShapeFactory

Set hybridBodies1 = part1.HybridBodies

Set hybridBody1 = hybridBodies1.Item("SideShield")

Set hybridShapes1 = hybridBody1.HybridShapes

Set hybridShape = hybridShapes1.Item("WindowShape")


'-------------------Finden von MaxX


Set axisSystems1 = part1.AxisSystems

Set axisSystem1 = axisSystems1.Item("Absolute Axis System")

Set reference1 = part1.CreateReferenceFromBRepName("REdge:(Edge:(Face:(Brp:(AxisSystem.1;1);None:();Cf11:());Face:(Brp:(AxisSystem.1;3);None:();Cf11:());None:(Limits1:();Limits2:());Cf11:());WithPe rmanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR14)", axisSystem1)

Set hybridShapeDirection1 = hybridShapeFactory1.AddNewDirection(reference1)

Set reference2 = part1.CreateReferenceFromObject(hybridShape)

Set hybridShapeExtremum1 = hybridShapeFactory1.AddNewExtremum(reference2, hybridShapeDirection1, 1)

hybridShapeExtremum1.Name="MaxX"

Set reference3 = part1.CreateReferenceFromBRepName("REdge:(Edge:(Face:(Brp:(AxisSystem.1;3);None:();Cf11:());Face:(Brp:(AxisSystem.1;2);None:();Cf11:());None:(Limits1:();Limits2:());Cf11:());WithPe rmanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR14)", axisSystem1)

Set hybridShapeDirection2 = hybridShapeFactory1.AddNewDirection(reference3)

hybridShapeExtremum1.Direction2 = hybridShapeDirection2

hybridShapeExtremum1.ExtremumType2 = 1

hybridBody1.AppendHybridShape hybridShapeExtremum1


part1.InWorkObject = hybridShapeExtremum1


part1.Update

part1.Update

'----------------------Finden von MinX

Set reference3 = part1.CreateReferenceFromBRepName("REdge:(Edge:(Face:(Brp:(AxisSystem.1;1);None:();Cf11:());Face:(Brp:(AxisSystem.1;3);None:();Cf11:());None:(Limits1:();Limits2:());Cf11:());WithPe rmanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR14)", axisSystem1)

Set hybridShapeDirection2 = hybridShapeFactory1.AddNewDirection(reference3)

Set reference4 = part1.CreateReferenceFromObject(hybridShape)

Set hybridShapeExtremum2 = hybridShapeFactory1.AddNewExtremum(reference4, hybridShapeDirection2, 0)

hybridShapeExtremum2.Name="MinX"

Set reference6 = part1.CreateReferenceFromBRepName("REdge:(Edge:(Face:(Brp:(AxisSystem.1;3);None:();Cf11:());Face:(Brp:(AxisSystem.1;2);None:();Cf11:());None:(Limits1:();Limits2:());Cf11:());WithPe rmanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR14)", axisSystem1)

Set hybridShapeDirection4 = hybridShapeFactory1.AddNewDirection(reference6)

hybridShapeExtremum2.Direction2 = hybridShapeDirection4

hybridShapeExtremum2.ExtremumType2 = 0

hybridBody1.AppendHybridShape hybridShapeExtremum2

part1.InWorkObject = hybridShapeExtremum2

part1.Update

part1.Update

'----------------------Finden von MaxZ

Set reference5 = part1.CreateReferenceFromBRepName("REdge:(Edge:(Face:(Brp:(AxisSystem.1;3);None:();Cf11:());Face:(Brp:(AxisSystem.1;2);None:();Cf11:());None:(Limits1:();Limits2:());Cf11:());WithPe rmanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR14)", axisSystem1)

Set hybridShapeDirection3 = hybridShapeFactory1.AddNewDirection(reference5)

Set reference6 = part1.CreateReferenceFromObject(hybridShape)

Set hybridShapeExtremum3 = hybridShapeFactory1.AddNewExtremum(reference6, hybridShapeDirection3, 1)

hybridShapeExtremum3.Name="MaxZ"

Set reference9 = part1.CreateReferenceFromBRepName("REdge:(Edge:(Face:(Brp:(AxisSystem.1;1);None:();Cf11:());Face:(Brp:(AxisSystem.1;3);None:();Cf11:());None:(Limits1:();Limits2:());Cf11:());WithPe rmanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR14)", axisSystem1)

Set hybridShapeDirection6 = hybridShapeFactory1.AddNewDirection(reference9)

hybridShapeExtremum3.Direction2 = hybridShapeDirection6

hybridShapeExtremum3.ExtremumType2 = 1

hybridBody1.AppendHybridShape hybridShapeExtremum3

part1.InWorkObject = hybridShapeExtremum3

part1.Update

part1.Update

'----------------------Finden von MinZ

Set reference7 = part1.CreateReferenceFromBRepName("REdge:(Edge:(Face:(Brp:(AxisSystem.1;3);None:();Cf11:());Face:(Brp:(AxisSystem.1;2);None:();Cf11:());None:(Limits1:();Limits2:());Cf11:());WithPe rmanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR14)", axisSystem1)

Set hybridShapeDirection4 = hybridShapeFactory1.AddNewDirection(reference7)

Set reference8 = part1.CreateReferenceFromObject(hybridShape)

Set hybridShapeExtremum4 = hybridShapeFactory1.AddNewExtremum(reference8, hybridShapeDirection4, 0)

hybridShapeExtremum4.Name="MinZ"

Set reference12 = part1.CreateReferenceFromBRepName("REdge:(Edge:(Face:(Brp:(AxisSystem.1;1);None:();Cf11:());Face:(Brp:(AxisSystem.1;3);None:();Cf11:());None:(Limits1:();Limits2:());Cf11:());WithPe rmanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR14)", axisSystem1)

Set hybridShapeDirection8 = hybridShapeFactory1.AddNewDirection(reference12)

hybridShapeExtremum4.Direction2 = hybridShapeDirection8

hybridShapeExtremum4.ExtremumType2 = 0

hybridBody1.AppendHybridShape hybridShapeExtremum4

part1.InWorkObject = hybridShapeExtremum4

part1.Update

part1.Update

sSel.Clear

sSel1.Clear

End Sub


Hier noch die Kontrolle nach dem ausführen von Makro 1 im Mastermakro:

Code:

'------------------------Kontrolle ob Makro1 Richtig ausgeführt wurde

set TestListe = CATIA.ActiveDocument.Selection

TestListe.Clear

On Error Resume Next

TestListe.Add hybridShapes1.Item("MaxX")
TestListe.Add hybridShapes1.Item("MinX")
TestListe.Add hybridShapes1.Item("MaxZ")
TestListe.AddhybridShapes1.Item("Minz")

On Error GoTo 0

TestListeCount = TestListe.count

If Not TestListeCount = 4Then

Call MsgBox ("Abbruch!")

TestListe.Clear

Exit Sub

End If

TestListe.Clear


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: 06. Mai. 2009 17: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 breitinger 10 Unities + Antwort hilfreich

Hallo breitinger,

aus diesen Code ist kein Problem ersichtlich. Könntest du noch den Teil reinstellen, wo dann endlich der Baum aktualisiert wird?
Es ist sowohl AppendHybridShape, als auch Update vorhanden. Über andere Notwendigkeiten weiß ich nicht.

Bei mir sind übrigens (aus VBA aufgerufen) alle 4 Punkte im Baum sofort erschienen.

Der Code ist zwar nicht schön, aber auch nicht so schlimm.
Was ich dir aber raten würde, wäre die hässliche B-Reps mit part1.OriginElements.PlaneXY auszutauschen. Evtl musst du es in ein part1.CreateReferenceFromObject(part1.OriginElements.PlaneXY) reinpacken, aber das würde dein Code um einiges lesbarer machen.

Gruß,
Zoltan

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


Ex-Mitglied

erstellt am: 06. Mai. 2009 17:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hallo breitinger,

zu deinem Problem mit der "For-Schleife" gibt es eine einfache Erklärung

In deinem Script ist Makro1 eine Variable, der Inhalt ist der Scriptname z. B. 1minima_maxima.catvbs

In der For-Schleife enthält MakroName einen Text z. B. Makro1 und nicht den Inhalt von der Variablen Makro1

Das Problem läßt sich sehr einfach lösen


Dim Makro(8)

Makro(1) =  "1minima_maxima.catvbs"

Makro(2) =  "2limit_planes.catvbs"

Makro(3) = "3plane_groupX.catvbs"

Makro(4) = "4plane_groupZ.catvbs"

Makro(5) = "5cut_beams.catvbs"

Makro(6) = "6cut_points.catvbs"

Makro(7) = "7normals.catvbs"

Makro(8) = "8readout.catvbs"

Dim oParams()


'-----------------------------PROBLEM FOR-SCHLEIFE FUNKTIONIERT NICHT

For i=1 To 8

    Call MsgBox ("Makro" & i & "wird ausgeführt!")

    MakroName = Makro(i)

    CATIA.SystemService.ExecuteScript Ordner, catScriptLibraryTypeDirectory, MakroName, "CATMain",oParams
Next

'Next am Ende nicht vergessen

------------------
mb 

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: 07. Mai. 2009 00:59    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,

den Strukturbaum akualisiert mir Catia bei Makro5. Hier der Code. Ich bin echt planlos.

Code:

Sub CATMain()

'-------------Suchen der x bzw z Ebenen

Set ListeX = CATIA.ActiveDocument.Selection

ListeX.Search "..NAME=PlaneX_*;All"

                                                            'Call MsgBox ("Anzahl der PlaneX_* ist:" & ListeX.count & "",EbenanzahlX)

ListeX.VisProperties.SetShow catVisPropertyNoShowAttr

CountX = ListeX.count

ListeX.Clear

Set ListeZ = CATIA.ActiveDocument.Selection

ListeZ.Search "..NAME=PlaneZ_*;All"

                                                          'Call MsgBox ("Anzahl der PlaneZ_*ist:" & ListeZ.count & "",EbenanzahlZ)

ListeZ.VisProperties.SetShow catVisPropertyNoShowAttr

CountZ = ListeZ.count

ListeZ.Clear

'--------------Auflösung Planes

Set partDocument1 = CATIA.ActiveDocument

Set part1 = partDocument1.Part

Set hybridShapeFactory1 = part1.HybridShapeFactory

Set hybridBodies1 = part1.HybridBodies

Set hybridBody1 = hybridBodies1.Item("SideShield")

Set hybridShapes1 = hybridBody1.HybridShapes

'---------------Verschneidung

CutBeamnumber = 0

For x=1 To CountX


        Set hybridShapePlaneOffset1 = hybridShapes1.Item("PlaneX_"&x)

        Set reference1 = part1.CreateReferenceFromObject(hybridShapePlaneOffset1)

                For z=1 To CountZ

                        CutBeamNumbermNew = CutBeamNumber + 1

                        Set hybridShapePlaneOffset2 = hybridShapes1.Item("PlaneZ_"&z)

                        Set reference2 = part1.CreateReferenceFromObject(hybridShapePlaneOffset2)

                        Set hybridShapeIntersection1 = hybridShapeFactory1.AddNewIntersection(reference1, reference2)

                        hybridShapeIntersection1.PointType = 0

                        hybridShapeIntersection1.Name="CutBeam_" & CutBeamNumbermNew

                        hybridBody1.AppendHybridShape hybridShapeIntersection1

                        part1.InWorkObject = hybridShapeIntersection1

                        part1.Update

                        CutBeamNumber = CutBeamNumbermNew
           
              Next

Next

End Sub


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: 07. Mai. 2009 06:59    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,

ich kann in diesen Skript auch nichts entdecken, was die Aktualisierung bewirken könnte, außer weiter Updates.
Versuche am Anfang deiner Kontrolle nochmals einen Update aufzurufen. Vielleicht mag CATIA nicht, so viele Skripte nacheinander aufzurufen und die Skripte sind schneller ausgeführt, wie CATIA mit den Sachen fertig.

Wenn es nicht gehen sollte, bleibt meine Idee nur, die ganze als ein Skript mit mehrere Prozeduren zu erstellen. Dazu brauchst du nur die Inhalt der Skripte in eine Datei kopieren und die CATMain der "Unterskripte" auf eine aussagekräftige Name zu ändern (z.B. die Dateiname) und diese einfach aus der Hauptskript aufrufen (anstatt ExecuteScript einfach die Name der Prozedur angeben).
Was spricht eigentlich dafür, die ganze als x Stück Skripte zu haben? War der Grund, dass du die einzelne Schritte so aufgezeichnet hattest?

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: 11. Mai. 2009 16: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,

ich habs mittlerweile hinbekommen und zwar hab ich einfach die Startanweisung der Makros in eine Unterroutine gelegt. Danke für die Ideeanregung Zoltan. Danke Smerg und Marbat für die Antworten.
Schöne Grüße
Breitinger

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