Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Zeichnungsrahmen mit Makro einfügen

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:   Zeichnungsrahmen mit Makro einfügen (1037 mal gelesen)
LaBam
Mitglied
Entwicklungsingenieur

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

Beiträge: 2
Registriert: 14.12.2017

Catia V5 R24

erstellt am: 14. Dez. 2017 13: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 liebe Forengemeinde,

bin als passiver User schon länger im Forum unterwegs und habe schon so einige hilfreiche Infos zur Makroprogrammierung erhalten. Dafür mal eine herzliches Dankeschön.

Nun bin ich aber auf ein Problem gestoßen, dass ich auch nach langer Recherche nicht lösen kann...
Ich nutze den CATIA "Standard Zeichnungsrahmen" (Programmiert in CATScript) der Customized wurde. Dieses Skript will ich nun in ein anderes VBA Makro einbauen. Das Starten des CATSkript via VBA klappt mit:

Code:

Dim CatSysServ As Variant
Dim Param()

Set CatSysServ = CATIA.SystemService
CatSysServ.ExecuteScript Pfad_Rahmen, catScriptLibraryTypeDirectory, Rahmen_Test, "CATMain", Param


Das Problem ist die Deklaration im CATScript die ich nicht hinbekomme. Das targetSheet ist als CATIABase im original Quelltext deklariert. Das ist warscheinlich notwendig für das manuelle Auswahl des Makros über Backround View --> Insert --> Drawing --> Frame and Title Block. Meine Frage ist nun wie muss die Variable targetSheet deklarieren damit der Zeichnungsrahmen auf dem aktuellen Drawingsheet eingefügt wird?

Code:
Sub CATMain()
  If Not CATInit(targetSheet) Then Exit Sub
  On Error Resume Next
    name = Texts.GetItem("Reference_" + GetMacroID()).Name
  If Err.Number <> 0 Then
    Err.Clear
    name = "none"
  End If
  On Error Goto 0
  If (name = "none") Then
    CATDrw_Erstellen
  Else  
    CATDrw_Blattformat
    CATDrw_Aktualisieren
  End If
  CATExit
End Sub

Function CATInit( targetSheet as CATIABase )
  '-------------------------------------------------------------------------------
  'How to init the dialog and create main objects
  '-------------------------------------------------------------------------------
  Set Selection    = CATIA.ActiveDocument.Selection
  Set Sheet        = targetSheet
  Set Sheets       = Sheet.Parent
  Set ActiveDoc    = Sheets.Parent
  Set Views        = Sheet.Views
  Set View         = Views.Item(2)'Get the background view
  Set Texts        = View.Texts
  Set Fact         = View.Factory2D
 
  If GetContext()="Unexpected" Then
      Msg = "The macro runs in an inappropriate environment."&chr(13)&"The script will terminate wihtout finishing the current action."
      Title ="Unexpected environement error"
      MsgBox Msg,16, Title
    CATInit=FALSE 'Exit with error
      Exit Function
  End If

  Selection.Clear
  CATIA.HSOSynchronized=False

  'Exit without error
  CATInit=TRUE 'Exit without error
End Function


Sub CATDrw_Erstellen( targetSheet as CATIABase )
  '-------------------------------------------------------------------------------
  'How to create the FTB
  '-------------------------------------------------------------------------------
  If Not CATInit(targetSheet) Then Exit Sub 
  If CATCheckRef(1) Then Exit Sub 'To check whether a FTB exists already in the sheet
  CATCreateReference          'To place on the drawing a reference point
  CATFrame      'To draw the frame 
  CATCreateTitleBlockFrame    'To draw the geometry
  CATTitleBlockText     'To fill in the title block
  CATColorGeometry 'To change the geometry color
  CATExit targetSheet      'To save the sketch edition
  CATCreateTitleBlockStandard()
End Sub


Fehler ist folgender:

Ich hoffe jemand kann mir weiterhelfen.
Schon mal vielen Dank. Gruß LaBam


[Diese Nachricht wurde von LaBam am 14. Dez. 2017 editiert.]

[Diese Nachricht wurde von LaBam am 15. Dez. 2017 editiert.]

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: 10840
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 14. Dez. 2017 14: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 Nur für LaBam 10 Unities + Antwort hilfreich

Servus

Du könntest entweder das Blatt an das Makro als Parameter übergeben, oder im CATScript das Blatt der Variable TargetSheet zuweisen zB (ungetestet)

Code:
Sub CATMain()
Set targetSheet = catia.activedocument.sheets.ActiveSheet
  If Not CATInit(targetSheet) Then Exit Sub
Gruß
Bernd

PS: Wie wird den das Script im Beispiel aufgerufen?

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

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

C.Samer
Mitglied
CAD Administrator


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

Beiträge: 70
Registriert: 03.05.2017

erstellt am: 15. Dez. 2017 10: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 LaBam 10 Unities + Antwort hilfreich

Von einem Makro eine Variable an ein anderes Makro übergeben, klingt für mich, ohne das aufgerufene Makro anzupassen, unmöglich. Ich würde den CATIA "Standard Zeichnungsrahmen" anpassen.

Statt

Code:
If Not CATInit(targetSheet) Then Exit Sub
würde ich z.B.
Code:
If Not CATInit(CATIA.ActiveDocument.DrawingRoot.Sheets.ActiveSheet) Then Exit Sub
versuchen, wobei ich nicht weiß wie targetSheet bei dir deklariert ist.

Liebe Grüße aus Wien,
Christoph 

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

LaBam
Mitglied
Entwicklungsingenieur

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

Beiträge: 2
Registriert: 14.12.2017

Catia V5 R24

erstellt am: 15. Dez. 2017 11:00    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

Habs hinbekommen! Vielen Dank an bgrittmann für den Denkanstoß.

War eigentlich nur ein typischer Anfängerfehler... Hab die Variable nicht an die Functionen übergeben... Is mir jetzt fast ein wenig peinlich 


Code:

Sub CATMain()
  Set targetSheet = catia.activedocument.sheets.ActiveSheet
  If Not CATInit( (targetSheet)) Then Exit Sub
  On Error Resume Next
    name = Texts.GetItem("Reference_" + GetMacroID()).Name
  If Err.Number <> 0 Then
    Err.Clear
    name = "none"
  End If
  On Error Goto 0
  If (name = "none") Then
    CATDrw_Erstellen (targetSheet)
  Else 
    CATDrw_Blattformat (targetSheet)
    CATDrw_Aktualisieren (targetSheet)
  End If
  CATExit (targetSheet)
End Sub

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)2019 CAD.de | Impressum | Datenschutz