Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API: Skizzenbild auf Zeichnung ein/ausblenden bzw. löschen

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
  
TeamTec Hausmesse
Autor Thema:  API: Skizzenbild auf Zeichnung ein/ausblenden bzw. löschen (2332 mal gelesen)
bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 16. Jun. 2016 11: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 zusammen,

ich würde gern per API ein vorhandenes Skizzenbild auf einer Zeichnung ein-/ausblenden oder wenn das nicht geht dieses ersetzen/löschen.
Mein Problem liegt nun daran wie ich ein Skizzenbild in der Zeichnung (Auf dem Zeichnungsblatt) per API Selektiert bekomme und im Traumfall dieses dann noch ein bzw. ausblenden kann, im Modell ist das kein Problem nur eben in einer Zeichnung bekomme ich es einfach nicht selektiert.

Hat von euch einer eine Idee wie ich das hin bekomme.

Hintergrund ist, dass als Wasserzeichen benutzerabhängig immer das Produktlogo auf der Zeichnung verwendet werden soll. Organisatorisch soll aber nicht für jeden Bereich eine eigene Vorlagen erstellt werden, sondern eben nur per Macro das Skizzenbild (Wasserzeichen) ausgetausch werden.


Gruß
Bernd
Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

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

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



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

Beiträge: 2675
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
------------------
Zuletzt beruflich:
- SWX2020 SP5;
- SAP/PLM+ECTR;
- DriveWorks Pro;
- Programmierung:
VBA, aktuell Visual Studio 2022/VB.Net
------------------
ab 2024 (privat):
Onshape und anderes

erstellt am: 16. Jun. 2016 13:30    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 bk.sc 10 Unities + Antwort hilfreich

Hmm..einfach austauschen wird schwierig, da das Bild wohl nicht auf die Originaldatei referenziert ist.

Löschen des Skizzenbildes sollte relativ einfach sein:
(Bei aktiver Zeichnung) so in etwa:

Code:
Set Drw = swApp.ActiveDoc
boolstatus = Drw.ActivateView("Zeichenansicht1")
boolstatus = Drw.Extension.SelectByID2("Skizzenbild1", "SKETCHBITMAP", 0, 0, 0, False, 0, Nothing, 0)
Drw.EditDelete

Das Einfügen gestaltet sich schon schwieriger, dazu musst du wohl wieder in das Part und die Skizze editieren.
Dann

Code:
Dim SkPicture As Object
Set SkPicture = Part.SketchManager.InsertSketchPicture(<Dein bildname>)
Part.ClearSelection2 True
boolstatus = Part.ForceRebuild3(True)

Das Dumme dabei: Du kannst dabei weder Größe noch Position noch Eigenschaften beeinflussen.

------------------
Klaus

www.al-ko.com | mein Gästebuch

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

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 16. Jun. 2016 13: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 Klaus,

danke für deinen Input.

Das bearbeiten, eines Skizzenbild ist das kleinere Problem wenn es mal selektiert ist, siehe das ISketchPicture Objekt in der API-Hilfe. 
Aber das Aktivieren des Zeichenblattes bevor ich das Skizzenbild versuche zu selektieren klingt sinnvoll.

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

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

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 16. Jun. 2016 14: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

Hallo Klaus,

leider hat das aktivieren der Ansicht bzw. des Blattformates keine Auswirkung auf das finden bzw. aktivieren des Skizzenbildes. 

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

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

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



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

Beiträge: 2675
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
------------------
Zuletzt beruflich:
- SWX2020 SP5;
- SAP/PLM+ECTR;
- DriveWorks Pro;
- Programmierung:
VBA, aktuell Visual Studio 2022/VB.Net
------------------
ab 2024 (privat):
Onshape und anderes

erstellt am: 16. Jun. 2016 15:24    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 bk.sc 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von bk.sc:
Das bearbeiten, eines Skizzenbild ist das kleinere Problem wenn es mal selektiert ist, siehe das ISketchPicture Objekt in der API-Hilfe.
Jetzt wo du das sagst, habe ich das auch gefunden 

------------------
Klaus

www.al-ko.com | mein Gästebuch

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

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 19. Apr. 2017 13:18    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 zusammen,

gut Ding will weile haben, hab das Problem gelöst bekommen und wollte es euch nicht vorenthalten.
Die SelectByID2 Methode scheint auf Grund eines Bugs bei Skizzenbildern nicht zu funktionieren. Hab es jetzt über die SelectByName Methode gemacht, hierzu muss natürlich beim einfügen des Skizzenbildes ein Name vergeben werden der auch Selektiert werden kann. Hoffe die Kommentierung ist ausreichend.  

Das Macro bzw. die Sub ist jetzt nur für zwei mögliche Logos und 3 Blattformate ausgelegt.

Code:
Sub SetLogo(ByVal VisibleState As Boolean, Optional StandardLogo As Boolean)

Dim dblSketchPicAngle As Double 'Winkel für Skizzenbild in Radiant
Dim varSketchPicOrgin(1) As Variant 'Einfügepunkt des Skizzenbild (X,Y)
Dim varSketchSize(1) As Variant 'Skalierung des Skizzenbildes (Höhe, Breite)
Dim SketchPicPath As String 'Pfad wo die Logos liegen

If VisibleState Then 'Skizzebild Einfügen
   
    If StandardLogo Then
        SketchPicName = "Standard-LOGO"
    Else
        SketchPicName = "Spezial-LOGO"
    End If
    
    For i = 0 To UBound(vSheetProperties) 'vSheetProperties enthält u.a. Blattzähler, Blattnamen, Blattformate (swDwgPaperSizes_e Enumeration), wird bereits Initialisieren des Gesamtmacros ermittelt
   
    swModelDoc.SelectByName 0, "LOGO" & "-" & vSheetProperties(i, 0) 'vSheetProperties(i,0) = Zähler Blatt, Blattname
   
        If swModelDoc.SelectionManager.GetSelectedObjectType3(1, -1) = swSelSKETCHBITMAP Then
   
            'Debug.Print vSheetProperties(i, 0) & " Bereits Logo vorhanden"
       
        Else
           
            Select Case vSheetProperties(i, 1) 'vSheetProperties(i,1) = Blattzähler, Blattformat
            Case 7 'A4 Hoch
                    dblSketchPicAngle = 0.873 'Winkel
       
                    varSketchSize(0) = 0.16 'Breite
                    varSketchSize(1) = 0.0832 'Höhe
               
                If StandardLogo Then
                    varSketchPicOrgin(0) = 0.08 'Position X
                    varSketchPicOrgin(1) = 0.095 'Position Y
                Else
                    varSketchPicOrgin(0) = 0.092 'Position X
                    varSketchPicOrgin(1) = 0.095 'Position Y
                End If
            Case 8 'A3 Quer
                    dblSketchPicAngle = 0.61 'Winkel
       
                    varSketchSize(0) = 0.225 'Breite
                    varSketchSize(1) = 0.117 'Höhe
               
                If StandardLogo Then
                    varSketchPicOrgin(0) = 0.13 'Position X
                    varSketchPicOrgin(1) = 0.055 'Position Y
                Else
                    varSketchPicOrgin(0) = 0.15 'Position X
                    varSketchPicOrgin(1) = 0.04 'Position Y
                End If
            Case 9 'A2 Quer
                    dblSketchPicAngle = 0.61 'Winkel
       
                    varSketchSize(0) = 0.3 'Breite
                    varSketchSize(1) = 0.156 'Höhe
               
                If StandardLogo Then
                    varSketchPicOrgin(0) = 0.18 'Position X
                    varSketchPicOrgin(1) = 0.08 'Position Y
                Else
                    varSketchPicOrgin(0) = 0.22 'Position X
                    varSketchPicOrgin(1) = 0.065 'Position Y
                End If
            End Select
           
            boolstatus = swDrawingDoc.ActivateSheet(vSheetProperties(i, 0))
            Set swSheet = swDrawingDoc.Sheet(vSheetProperties(i, 0))
           
            swDrawingDoc.EditTemplate
           
            Set swView = swModelDoc.GetFirstView
            Set swSketch = swView.GetSketch
            Set swSketchMgr = swModelDoc.SketchManager
            Set swSketchPicture = swSketchMgr.InsertSketchPicture(SketchPicPath & SketchPicName & ".png")
       
            swSketchPicture.Angle = dblSketchPicAngle
            swSketchPicture.SetOrigin varSketchPicOrgin(0), varSketchPicOrgin(1)
            swSketchPicture.SetTransparency swSketchPictureTransparencyUserDefined, 1, 16777215, 0
            swSketchPicture.SetSize varSketchSize(0), varSketchSize(1), True
           
            swSketchPicture.GetFeature.Name = "LOGO" & "-" & vSheetProperties(i, 0)
   
            swApp.RunCommand 1463, "Schließen der PropertyManagerPage, da diese sonst einfach geöffnet bleibt"
   
            swDrawingDoc.EditSheet
   
        End If
   
    Next i

ElseIf VisibleState = False Then 'Skizzenbild entfernen
  
    For j = 0 To UBound(vSheetProperties)
   
    boolstatus = swDrawingDoc.ActivateSheet(vSheetProperties(j, 0))
    Set swSheet = swDrawingDoc.Sheet(vSheetProperties(j, 0))
   
    '    swModelDoc.SelectByName 0, SketchPicName ' über den Namen selektieren, der SelectByID2 hat wohl einen Bug: https://forum.solidworks.com/thread/267
       
    swModelDoc.SelectByName 0, "LOGO" & "-" & vSheetProperties(j, 0)
       
        If swModelDoc.SelectionManager.GetSelectedObjectType3(1, -1) = swSelSKETCHBITMAP Then
            swModelDoc.EditDelete
        Else
            'Debug.Print vSheetProperties(j, 0) & " Kein Logo zum löschen vorhanden"
        End If
    Next j
End If

boolstatus = swDrawingDoc.ActivateSheet(sCurrentSheet) 'sCurrentSheet wird bereits Initialisieren des Gesamtmacros ermittelt

End Sub


[EDIT] Fast vergessen, die Information hatte ich übrigens von Herr Cikos der im MaxxDB Forum moderiert, hatte bei Ihm eine API Schulung 

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete  

[Diese Nachricht wurde von bk.sc am 19. Apr. 2017 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)2024 CAD.de | Impressum | Datenschutz