Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Solid Edge
  API: Schnittverläufe formatieren

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:   API: Schnittverläufe formatieren (1587 mal gelesen)
HerrJemineh
Mitglied



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

Beiträge: 10
Registriert: 08.09.2011

Solid Edge ST3, Visual Basic 2010 Express

erstellt am: 08. Sep. 2011 14:38    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 schreibe gerade ein Makro in Excel, das Schnittansichten und Einzelheiten formatieren soll (also Werte für TextColor in den DrawingViews-Items ändern).

Das ganze funktioniert insofern gut, dass die Ansichten korrekt umformatiert werden. Ich würde jedoch auch gerne die Schnittverläufe und Einzelheitsmarkierungen auf die selbe Weise formatieren. Die finde ich nicht in "SolidEdge Spy" und weiß daher nicht, wie ich es angehen soll.

Google und Suchfunktion halfen mir nicht. Weiß jemand Rat?

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

HerrJemineh
Mitglied



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

Beiträge: 10
Registriert: 08.09.2011

Solid Edge ST3, Visual Basic 2010 Express

erstellt am: 09. Sep. 2011 10:49    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

Die Verläufe und Einzelheitsmarkierungen habe ich mittlerweile gefunden. Diese liegen unter Application/ActiveDocument/ActiveSheet/DrawingViews/Items/DrawingView XYZ/Annotation.

Auch hier lässt sich TextColor einstellen. Aber wie stelle ich das mit VisualBasic an?

Die anderen Formatierungen habe ich so hinbekommen (abgeguckt beim draftscale-Makro):

Code:

    Private Sub setColor()
        Dim mApp As SolidEdgeFramework.Application
        Dim mDraft As SolidEdgeDraft.DraftDocument
        Dim oViews As Object

        mApp = GetObject(, "SolidEdge.Application")
        mDraft = mApp.ActiveDocument
        For Each oViews In mDraft.ActiveSheet.DrawingViews
            oViews.TextColor = "16711680" 'blau
        Next
    End Sub



Jetzt muss jedoch noch "tiefer" in die Datenhierachie und für jedes Item die TextColor in Annotations setzen, falls es eine Annotations-Eigenschaft gibt.

Weiß jemand, wie ich das anstelle?

[Diese Nachricht wurde von HerrJemineh am 09. Sep. 2011 editiert.]

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

Arne Peters
Ehrenmitglied V.I.P. h.c.
CAD Dokumentation / Training / Programmierung / Datenbanken


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

Beiträge: 6547
Registriert: 05.2002.24

Solid Edge Seminarunterlagen
Training, Beratung, Programmierung

erstellt am: 09. Sep. 2011 10:54    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 HerrJemineh 10 Unities + Antwort hilfreich

Der Editor hat doch einen Objektbrowser, der Auskunft über die Eigenschaften der Objekte gibt. Oder sind die Objekte da nicht drin.

------------------
Arne

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

HerrJemineh
Mitglied



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

Beiträge: 10
Registriert: 08.09.2011

Solid Edge ST3, Visual Basic 2010 Express

erstellt am: 09. Sep. 2011 11:20    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

Zitat:
Original erstellt von Arne Peters:
Der Editor hat doch einen Objektbrowser, der Auskunft über die Eigenschaften der Objekte gibt. Oder sind die Objekte da nicht drin.

Den hat er, aber ich komme nicht an die einzelnen Items ran. Bis zu dieser Strukturtiefe komme ich:

Code:
Application
  \- ActiveDocument
      \- ActiveSheet
          \- DrawingViews

Allerdings kann ich mir die Items, die in DrawingViews stecken, nicht aufschlüsseln lassen. Die Struktur sieht in meinem Fall zum Beispiel so aus:

Code:
Application
  \- ActiveDocument
      \- ActiveSheet
          \- DrawingViews
              \- Items
                  \- DrawingView 43865
                  \- DrawingView 43986
                  \- DrawingView 44006
                  \- DrawingView 44861
                      \- Annotation

VBA bietet mir zwar ".Item" (ohne s am Ende) an, aber ich weiß nicht, wie ich damit umgehen muss, um die DrawingViews weiter aufzuschlüsseln. Ich möchte wie gesagt an die Zeile "Annotation" heranzukommen, durch die Vervollständigung von VBA komme ich da jedoch nicht ran -- aber ich weiß ja auch die ID-Nummern der DrawingViews vorher nicht.

Vermutlich müssen die einzelnen Items mit einer Schleife "aufgeklappt" und editiert werden!? Aber wie? Ein Code-Beispiel konnte ich leider noch nicht finden.

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

Arne Peters
Ehrenmitglied V.I.P. h.c.
CAD Dokumentation / Training / Programmierung / Datenbanken


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

Beiträge: 6547
Registriert: 05.2002.24

Solid Edge Seminarunterlagen
Training, Beratung, Programmierung

erstellt am: 09. Sep. 2011 11:27    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 HerrJemineh 10 Unities + Antwort hilfreich

Das DrwaingView-Objekt enthält doch diverse Methoden, Eigenschaften und Objekte.

------------------
Arne

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

HerrJemineh
Mitglied



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

Beiträge: 10
Registriert: 08.09.2011

Solid Edge ST3, Visual Basic 2010 Express

erstellt am: 09. Sep. 2011 11: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

Zitat:
Original erstellt von Arne Peters:
Das DrwaingView-Objekt enthält doch diverse Methoden, Eigenschaften und Objekte.

Das ändert leider nichts an der Tatsache, dass ich nicht weiß, wie ich an "Annotation" herankomme.   

Wie gesagt klappt es gut, dass ich TextColor von meinen DrawingViews-Items ändern kann. Wie ich aber TextColor ItemXYZ.Annotation ändere, weiß ich eben nicht.

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

wksyspro
Mitglied
Dipl.-Ing.


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

Beiträge: 193
Registriert: 19.11.2004

erstellt am: 09. Sep. 2011 12:04    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 HerrJemineh 10 Unities + Antwort hilfreich

Hallo Jemineh,

deklariere die Laufvariable für eine einzelne DrawingView, sowie der DrawingViews-Auflistung explizit mit dem korrekten Solid Edge Datentyp anstatt Object. Dann erhältst Du auch die gewünschte IntelliSense-Hilfe zur Auswahl der Eigenschaften und Methoden eines DrawingView Objekts.
Anbei Dein dazu leicht abgeänderter Code:

Code:

Private Sub setColor()
        Dim mApp As SolidEdgeFramework.Application
        Dim mDraft As SolidEdgeDraft.DraftDocument
        Dim oView  As SolidEdgeDraft.DrawingView  ' Einzelnes DrawingView Objekt!
        mApp = GetObject(, "SolidEdge.Application")
        mDraft = mApp.ActiveDocument
        For Each oView In mDraft.ActiveSheet.DrawingViews
            oView.TextColor = "16711680" 'blau
           
        Next
    End Sub

------------------
Viele Grüße,

Wolfgang Kunert
www.wksyspro.de

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

HerrJemineh
Mitglied



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

Beiträge: 10
Registriert: 08.09.2011

Solid Edge ST3, Visual Basic 2010 Express

erstellt am: 12. Sep. 2011 11: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

Zitat:
Original erstellt von wksyspro:
Hallo Jemineh,

deklariere die Laufvariable für eine einzelne DrawingView, sowie der DrawingViews-Auflistung explizit mit dem korrekten Solid Edge Datentyp anstatt Object. Dann erhältst Du auch die gewünschte IntelliSense-Hilfe zur Auswahl der Eigenschaften und Methoden eines DrawingView Objekts.[...]



Danke, das ist schon mal ein guter Hinweis.

Mein oben beschriebenes Problem ist leider immer noch nicht gelöst -- ich weiß  nicht, wie ich an die einzelnen Items "herankomme". Falls jemand noch einen Hinweis parat hat, würde ich mich freuen!

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

wksyspro
Mitglied
Dipl.-Ing.


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

Beiträge: 193
Registriert: 19.11.2004

erstellt am: 12. Sep. 2011 17:39    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 HerrJemineh 10 Unities + Antwort hilfreich

@HerrJemineh,

innerhalb der obigen Schleife erhältst Du mittels oView.Annotation eine Referenz vom Typ Object. Diesen Object-Typ kannst Du in diesem Fall in den Typ DetailEnvelope konvertieren (per CType). Dann erschließt sich Dir auch der Zugriff auf die TextColor-Eigenschaft der Annotation usw.

CType(oView.Annotation, SolidEdgeDraft.DetailEnvelope).TextColor

------------------
Viele Grüße,

Wolfgang Kunert
www.wksyspro.de

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

HerrJemineh
Mitglied



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

Beiträge: 10
Registriert: 08.09.2011

Solid Edge ST3, Visual Basic 2010 Express

erstellt am: 13. Sep. 2011 10:58    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

Zitat:
Original erstellt von wksyspro:
@HerrJemineh,

innerhalb der obigen Schleife erhältst Du mittels oView.Annotation eine Referenz vom Typ Object. Diesen Object-Typ kannst Du in diesem Fall in den Typ DetailEnvelope konvertieren (per CType). Dann erschließt sich Dir auch der Zugriff auf die TextColor-Eigenschaft der Annotation usw.

CType(oView.Annotation, SolidEdgeDraft.DetailEnvelope).TextColor



Danke, das hat mir sehr geholfen, super!


Mein Code sieht in reduzierter Form momentan so aus:

Code:
Dim mApp As SolidEdgeFramework.Application
Dim mDraft As SolidEdgeDraft.DraftDocument
Dim oColor As Integer

oColor = "16711680"  'blau
mApp = GetObject(, "SolidEdge.Application")
mDraft = mApp.ActiveDocument

For Each oView In mDraft.ActiveSheet.DrawingViews

    ' Färbe Captions für Schnitte und Einzelheiten
    oView.TextColor = oColor


    ' Wenn die Ansicht eine Annotation (Schnitt, Einzelheit, ...) hat, versuche das
    ' jeweilige Detail einzufärben:

    If oView.Annotation IsNot Nothing Then
        Try
            ' Wenn es eine Einzelheit ist, versuche zu färben:
            CType(oView.Annotation, SolidEdgeDraft.DetailEnvelope).TextColor = oColor
        Catch
            ' ... ansonsten versuche, ob es als Schnittverlauf klappt:
            Try
                CType(oView.Annotation, SolidEdgeDraft.CuttingPlane).TextColor = oColor
            Catch ex As Exception
                ' Wenn auch das nicht klappt, gib einen Hinweis aus:
                MsgBox("Ein Detail konnte nicht gefärbt werden." + vbNewLine + ex.Message)
            End Try
        End Try
    End If
Next



Das ist natürlich ziemlich quick+dirty, aber es funktioniert vorerst. Wenn jemand einen Tipp hat, wie man um die verschachtelte Try-Anweisung herumkommen kann, immer her damit.

Ansonsten bin ich soweit zufrieden. Danke für eure Tipps!

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

wksyspro
Mitglied
Dipl.-Ing.


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

Beiträge: 193
Registriert: 19.11.2004

erstellt am: 13. Sep. 2011 11: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 Nur für HerrJemineh 10 Unities + Antwort hilfreich

@HerrJemineh,

nun, statt des verschachtelten Try/Catch Konstrukts und Verwendung von CType, das eine Ausnahme auslöst, wenn die Konvertierung nicht möglich ist, kannst Du TryCast verwenden. TryCast liefert im Fehlerfall Nothing zurück, so dass Du das Ergebnis mit IsNot Nothing überprüfen kannst und dann davon abhängig den Zugriff auf den gewandelten Objekttyp wagen kannst.

------------------
Viele Grüße,

Wolfgang Kunert
www.wksyspro.de

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