Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Makro Bauteilbeschriftung

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:  Makro Bauteilbeschriftung (1885 / mal gelesen)
Mark1345
Mitglied
Konstruktionsingenieur

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

Beiträge: 7
Registriert: 21.10.2019

V5 R21

erstellt am: 23. Okt. 2019 08:43    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


Bsp_zu_grose_Polylines.PNG

 
Moin,

ich habe ein Makro zur Bauteilbeschriftung geschrieben, aber wenn die Beschriftung zu kurz ist, skaliert mir das Programm die Polylines viel zu groß (siehe Bsp im Anhang).
Kann mir jemand sagen woran das liegt und wie ich das beheben kann?

Anbei dann auch der betreffende Code, ich hoffe ihr könnt etwas damit anfangen.

Ich habe ein Rechteck auf eine Fläche gelegt und daraus ein Fill als Referenz für die Sketch für die Bauteilnummer. Dann bekomme ich über vorher festgelegte Parameter die Lange und Höhe des Rechtecks und passé dann je nach Lange der Bauteilnummer die Schriftgröße an das Rechteck an, sodass die hineingeschrieben wird.
Das funktioniert soweit auch, aber sobald die Nummer zu kurz wird macht das Programm Blödsinn...

Danke und Gruß
Mark

Code:

wnmb = InputBox("Please insert the serial number(W-number)", "Input", "", 2500, 3000)
       
        Dim oFill1 As HybridShapeFill
        Set oFill1 = ohyShapes.Item("Fill_W_Number")
       
        Dim refFill1
        Set refFill1 = oDoc.Part.CreateReferenceFromObject(oFill1)
               
        oDoc.Part.InWorkObject = refFill1.Parent
       
        Dim Sketch_W_Number As Sketch
        Set Sketch_W_Number = orderedGeoSet.OrderedSketches.Item("Sketch_W_Number")
       
               
        Dim StartPoint("RefPoint_W_Number")
        Set StartPoint = orderedGeoSet.HybridShapes.Item("RefPoint_W_Number")
       
        Dim refPoint1 As Reference
        Set refPoint1 = oDoc.Part.CreateReferenceFromObject(StartPoint)
       
        Dim pointarray1(2)
        StartPointW.GetCoordinates pointarray1
       
        Dim W_Number_Length
        W_Number_Length = oPart.Parameters.Item("W_Number_Length").ValueAsString
        W_Number_Length = Left(W_Number_Length, Len(W_Number_Length) - 2)
       
        Dim W_Number_Height
        W_Number_Height = oPart.Parameters.Item("W_Number_Height").ValueAsString
        W_Number_Height = Left(W_Number_Height, Len(W_Number_Height) - 2)
               
               
        '''''''''''''''''''' Creating of Drw for W-Number ''''''''''''''''''''
        Dim DrwDoc1 As DrawingDocument
        Set DrwDoc1 = CATIA.Documents.Add("Drawing")
       
        Dim DrwSheet1 As DrawingSheet
        Set DrwSheet1 = DrwDoc1.Sheets.ActiveSheet
       
        Dim DrwView1 As DrawingView
        Set DrwView1 = DrwSheet1.Views.Add("W-Number")
       
        Dim DrwViewGenerativeBehavior1 As DrawingViewGenerativeBehavior
        Set DrwViewGenerativeBehavior1 = DrwView1.GenerativeBehavior
       
        DrwViewGenerativeBehavior1.DefineFrontView 1, 0, 0, 0, 1, 0
        DrwView1.X = 0
        DrwView1.Y = 0
        DrwView1.Scale2 = 1
        DrwView1.Activate
       
        Dim DrwText1 As DrawingText
        Set DrwText1 = DrwView1.Texts.Add(wnmb & "", 0, 0)
       
        'how many characters does the W-Number have -> W = No. of characters
        Dim W
        Dim inStrPos1 As Integer
        Dim lastCell1 As Boolean
       
        W = 0
        lastCell1 = False
       
        Do Until lastCell1 = True
            inStrPos1 = InStr(wnmb, "")
            If inStrPos1 = "0" Then
                lastCell1 = True
                Exit Do
            End If
            wnmb = Right(wnmb, Len(wnmb) - inStrPos1)
            W = W + 1
        Loop
       
        'which is the driving factor - height or length of the fill? (depends on number of characters of partnumber)
        Dim characterheight1
        characterheight1 = (W_Number_Height - 0.2)
       
        Dim characterlength1
        characterlength1 = ((W_Number_Length - 0.2) / W) / 0.87
       
        Dim textsize1
        If characterheight1 < characterlength1 Then
            textsize1 = characterheight1
        Else
            textsize1 = characterlength1
        End If
       
        DrwText1.SetFontSize 0, 0, textsize1
       
        'save the drawing as ig2 file
        DrwDoc1.ExportData "S:\Temp\drawing1.ig2", "ig2"
        DrwDoc1.Close
       
        Dim Ig2Doc1 As Document
        Set Ig2Doc1 = CATIA.Documents.Open("S:\Temp\drawing1.ig2")
       
        ' Copy polylines from part number drawing
        Dim Ig2Selection1 As Selection
        Set Ig2Selection1 = CATIA.ActiveDocument.Selection
       
        Ig2Selection1.Search "Drafting.Polyline,all"
       
        Ig2Selection1.Copy
       
        oDoc.Activate
       
        ' create a sketch on the fill and put it in the PartBody
        Set TargetSketch1 = oPart.MainBody.Sketches.Add(refFill1)
       
        ' paste polylines from ig2 file (part number label) in the sketch
        TargetSketch1.OpenEdition
       
        oSelection3.Clear
        oSelection3.Add TargetSketch1
        oSelection3.Paste
        oSelection3.Clear
       
        Dim myAxisCoordinate1(8)
        TargetSketch1.GetAbsoluteAxisData myAxisCoordinate1
       
        myAxisCoordinate1(0) = (pointarray1(0) + 0.112) '0,1mm distance to left border
        myAxisCoordinate1(1) = pointarray1(1)
        myAxisCoordinate1(2) = (pointarray1(2) + (0.386 * textsize1) - 0.1) '0,1mm distance to upper border
       
        TargetSketch1.SetAbsoluteAxisData myAxisCoordinate1
       
        oPart.Update
       
        TargetSketch1.CloseEdition
       
        oPart.Update
       
        ' close and delete ig2 document
        Ig2Doc1.Close
        CATIA.FileSystem.DeleteFile ("S:\Temp\drawing1.ig2")


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: 23. Okt. 2019 09: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 Nur für Mark1345 10 Unities + Antwort hilfreich

Servus Mark

Ich vermute dass das Problem ist, dass du mit einem String versuchst zu Rechnen (ValueAsString).
Du könntest auch von den Parametern den Wert über .Value auslesen, dann hast du schon eine Double.

Gruß
Bernd

PS: Deine Do-Until-Schleife könntest du ggf durch InStrRev ersetzen.

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

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

Mark1345
Mitglied
Konstruktionsingenieur

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

Beiträge: 7
Registriert: 21.10.2019

V5 R21

erstellt am: 23. Okt. 2019 10: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

Hi Bernd,

danke für die schnelle Antwort. Ich habe deine Verbesserung eingebracht, aber leider besteht das Problem weiterhin.

Gruß
Mark

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: 23. Okt. 2019 11:31    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 Mark1345 10 Unities + Antwort hilfreich

Servus Mark

Wann tritt das Problem auf? (Beispiel welcher Wert klappt und welcher nicht)
Was für Werte hat dann characterheight1 und characterlength1? Sind diese plausibel?
Für was steht die Variabel W? (welchen Zweck hat diese)

Gruß
Bernd

PS: Ich empfehle als Variablen/Objekte "richtig" zu dimensionieren (zB textsize1 als Double). Dann haut dir das Makro auf die Finger falls die Dimension nicht zusammenpassen

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

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

Mark1345
Mitglied
Konstruktionsingenieur

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

Beiträge: 7
Registriert: 21.10.2019

V5 R21

erstellt am: 23. Okt. 2019 12:50    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 Bernd,

der Faktor W gibt einfach die Anzahl der Buchstaben/Zahlen der Bauteilenummer wieder und characterheight und characterlength haben in meinem Beispiel Werte von 2-2.5 mm, also auch plausibel. Das Rechteck in meinem Beispiel hat eine Höhe von 2,5mm und eine Länge von 25mm. Dem entsprechend ist die characterheight 2,3mm und die characterlength ist abhängig von der Anzahl der Buchstaben.

Ich habe herausgefunden, dass das ganze funktioniert, wenn die Bauteilnummer so lang ist, dass die characterlength entscheidend ist. Wenn die Nummer kürzer ist und damit die characterheight als textsize genommen wird tritt das Problem auf.

Gruß
Mark

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: 23. Okt. 2019 13: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 Mark1345 10 Unities + Antwort hilfreich

Servus

Und was geht jetzt an den Problem nicht? (Schriftgröße? Ausrichtung?)
Tritt der Fehler erst beim Importieren auf? Ist es in der Zeichnung noch korrekt? Ist es in der ig2 noch korrekt?

Gruß
Bernd

PS: Warum ermittelst du W nicht einfach über Len?

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

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

Mark1345
Mitglied
Konstruktionsingenieur

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

Beiträge: 7
Registriert: 21.10.2019

V5 R21

erstellt am: 23. Okt. 2019 13:56    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 Bernd,

mmh, das Problem scheint im Übergang zwischen Drawing und Ig2 File zu liegen. Wenn der Name lang genug ist hat die Schrift die richtige Größe, aber wenn er zu kurz ist liegt die Schriftgröße plötzlich bei fast 60mm. Aber im Drawing hat die Schrift noch die richtige Größe. Die Ausrichtung stimmt, das einzige Problem ist die Schriftgröße.

Ja du hast recht, Len erfüllt den gleichen Zweck und ist unkomplizierter, danke für den Tipp 

Gruß
Mark

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: 23. Okt. 2019 14: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 Mark1345 10 Unities + Antwort hilfreich

Servus

Dann schalt mal in den Optionen bei IGES beim Import die Einheit von Automatisch auf mm.

Gruß
Bernd

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

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

Mark1345
Mitglied
Konstruktionsingenieur

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

Beiträge: 7
Registriert: 21.10.2019

V5 R21

erstellt am: 23. Okt. 2019 14: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


Tools_Options_IGES.PNG

 
Hi Bernd,

ich weiß ehrlich gesagt nicht genau, was du meinst, meine Optionen sehen so aus, wie im Bild im Anhang, da kann ich garr nichts mit Einheiten umstellen.

Gruß
Mark

Edit: Ich habs, war IGES2D   Und es funktioniert   Vielen vielen Dank für deine Hilfe!!

[Diese Nachricht wurde von Mark1345 am 23. Okt. 2019 editiert.]

[Diese Nachricht wurde von Mark1345 am 23. Okt. 2019 editiert.]

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