| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
 | EMO 2025, eine Veranstaltung am 22.09.2025
|
Autor
|
Thema: API: Text eines Hinweis formatieren (5004 mal gelesen)
|
tbd Mitglied Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 25. Mrz. 2011 11:51 <-- editieren / zitieren --> Unities abgeben:         
Hallo API-Freaks, ich möchte in einer SolidWorks Zeichnung einen Hinweis einfügen. Inhalt ist "Pos. X (M X:X)", wobei X für ausgelesene Werte steht. Das Einfügen des Hinweis ist nicht das Problem sondern die Formatierung des Text. "Pos. X" soll in Schriftgröße 5mm und "(M X:X)" in Schriftgröße 3,5mm formatiert werden. Nur leider weis ich nicht wie ich das machen soll. habe bereits mit dem "Text format" Objekt herrumgespielt. Aber leider ändert sich immer nur die Schriftgröße des kompletten Text. Hier mal ein Auszug meines Markos:
Code:
'Hinweis einfügen Set oSwNote = oSwModel.InsertNote( _ sPosText & " " & sScaleText) 'Wurde der Hinweis eingefügt? If Not oSwNote Is Nothing Then oSwNote.SetBalloon _ SwConst.swBS_None, SwConst.swBF_Tightest 'Annotation Objekt des Hinweis Set oSwAnnotation = oSwNote.GetAnnotation If Not oSwAnnotation Is Nothing Then 'Hinweislinien Einstellungen oSwAnnotation.SetLeader3 _ SwConst.swNO_LEADER, SwConst.swLS_SMART, _ True, False, False, False 'Text formatieren Set oSwTextFormat = oSwAnnotation.GetTextFormat(0) oSwTextFormat.CharHeight = 0.005 oSwAnnotation.SetTextFormat 0, False, oSwTextFormat End If End If
GetTextFormat und SetTextFormat erwarten ja einen Index. Aber wie kann ich definieren für welchen Text ein Index steht und wie kann ich ein weiteren (zweiten) TextFormat Index erstellen?Meine Frage ist also: Wie kann ich bestimmte Passagen meines Textes in einem einzigen Hinweis unterschiedlich formatieren? Danke schon mal für alle Tipps und Hinweise! ------------------ Mfg Daniel www.MySldWorks.de - SolidWorks API Snippets Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Metallica88 Mitglied Konstrukteur; CAD Admin
 
 Beiträge: 379 Registriert: 01.04.2009 Win7 Pro 64bit SolidWorks 2015 SP5 MaxxDB 2015 Fujitsu Celsius M470-2 / M720 Quadro 2000 / Quadro K2000 Intel Xeon W3690 6x3,46GHz (3,73GHz) / Intel Xeon E5-1650 6x3,2GHz (3,8GHz) 12GB RAM / 16GB RAM 120GB SSD
|
erstellt am: 25. Mrz. 2011 12:01 <-- editieren / zitieren --> Unities abgeben:          Nur für tbd
Hilft dir das evtl. weiter? Set oSwNote = oSwModel.InsertNote("<FONT size=14PTS><FONT color=5395026>$status") >> statt PTS müsstest du auch mm eingeben können... Mfg Metallica88 [Diese Nachricht wurde von Metallica88 am 25. Mrz. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Mitglied Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 25. Mrz. 2011 12:07 <-- editieren / zitieren --> Unities abgeben:         
Hallo Metallica88, Bing Bing Bing! Das ist die Lösung. Wo hast das her? Wo steht das? Wie kann SolidWorks so etwas nicht auch einfach in die API Hilfe schreiben, oder habe ich was übersehen? Jetzt kann ich beruhigt ins Wochenende. Ganz herzlichen Dank! ------------------ Mfg Daniel www.MySldWorks.de - SolidWorks API Snippets Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Metallica88 Mitglied Konstrukteur; CAD Admin
 
 Beiträge: 379 Registriert: 01.04.2009 Win7 Pro 64bit SolidWorks 2015 SP5 MaxxDB 2015 Fujitsu Celsius M470-2 / M720 Quadro 2000 / Quadro K2000 Intel Xeon W3690 6x3,46GHz (3,73GHz) / Intel Xeon E5-1650 6x3,2GHz (3,8GHz) 12GB RAM / 16GB RAM 120GB SSD
|
erstellt am: 25. Mrz. 2011 12:19 <-- editieren / zitieren --> Unities abgeben:          Nur für tbd
Hi, weiß gar nicht mehr wo ich das her hab (evtl. mal einfach ein Makro mit aufgezeichnet...) Habe auf alle Fälle auch einige Zeit danach gesucht ;-) Was mich auch weiter verwirrte war die Farbangabe (da ich das vorher wie im HTML angeben wollte), in VB wird dies allerdings im 24bit angegeben... Freut mich auf alle Fälle geholfen zu haben... Mfg Metallica88 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Mitglied Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 25. Mrz. 2011 12:28 <-- editieren / zitieren --> Unities abgeben:         
Für alle die es interessiert hier nun der angepasste Code: Code:
'Hinweis einfügen Set oSwNote = oSwModel.InsertNote( _ "<FONT size=5mm>" & sPosText & _ " <FONT size=3.5mm>" & sScaleText) 'Wurde der Hinweis eingefügt? If Not oSwNote Is Nothing Then ...
Nochmals herzlichen Dank!------------------ Mfg Daniel www.MySldWorks.de - SolidWorks API Snippets Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)

 Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 25. Mrz. 2011 13:30 <-- editieren / zitieren --> Unities abgeben:          Nur für tbd
Hi Daniel, Zitat: Original erstellt von tbd: Wo hast das her? Wo steht das? Wie kann SolidWorks so etwas nicht auch einfach in die API Hilfe schreiben, oder habe ich was übersehen?
Ich weiß nicht genau wo Metallica88 das her hat, aber es gibt einen Trick, wie man an diese Formatierungen ran kommt. Ist ein wenig merkwürdig, aber klappt: - Beschriftung erstellen, die die Formatierung so hat, wie man es gerne möchte
- Aus dieser Beschriftung einen Block machen
- Den Block bearbeiten, die Beschriftung im Block wählen und der einen Attributnamen geben. Dadurch kann die Beschriftung auch geändert werden, wenn man nicht in der Blockdefinition ist, sondern die Blockinstanz vor der Nase hat.
- Block bearbeiten wieder verlassen (jetzt zurück auf Zeichenebene)
- Block markieren und auf den Knopf "Attribute ..." im Propertymanager klicken
- Im Dialogfeld steht jetzt der Text samt seinen Formatierungsbefehlen drin
Cool, nicht? Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog 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...

 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: 29. Mrz. 2011 15:12 <-- editieren / zitieren --> Unities abgeben:          Nur für tbd
|
Metallica88 Mitglied Konstrukteur; CAD Admin
 
 Beiträge: 379 Registriert: 01.04.2009 Win7 Pro 64bit SolidWorks 2015 SP5 MaxxDB 2015 Fujitsu Celsius M470-2 / M720 Quadro 2000 / Quadro K2000 Intel Xeon W3690 6x3,46GHz (3,73GHz) / Intel Xeon E5-1650 6x3,2GHz (3,8GHz) 12GB RAM / 16GB RAM 120GB SSD
|
erstellt am: 30. Mrz. 2011 12:50 <-- editieren / zitieren --> Unities abgeben:          Nur für tbd
Hallo zusammen, bin bei uns mit dieser Schreibweise <FONT size=14PTS> auf ein Problem gestoßen: Zwar wird in der Formatierung die Größe richtig angezeigt >> gehe ich aber auf Schriftgröße steht die Größe auf 1pts (statt 14pts). Das fällt zuerst gar nicht auf da der Text richtig angezeigt wird und selbst ein STRG+Q nichts verändert. Sobald ich aber gespeichert habe, wurde die Textgröße auf 1 gesetzt. Gelöst habe ich dies indem ich statt <FONT size=14PTS> nun die Größe mit myTextFormat.CharHeightInPts = 14 angebe (.CharHeight = 0.0035 wär die Angabe in mm...) Mfg Metallica88 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...

 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: 30. Mrz. 2011 12:57 <-- editieren / zitieren --> Unities abgeben:          Nur für tbd
Zitat: Original erstellt von Metallica88: ... Gelöst habe ich dies indem ich statt <FONT size=14PTS> nun die Größe mit myTextFormat.CharHeightInPts = 14 angebe (.CharHeight = 0.0035 wär die Angabe in mm...) ...
Ohne es probiert zu haben: Damit setzt du doch wieder die Textgröße der gesamten Note und nicht für einzelne Bereiche des Inhalts, oder? Und genau das war ja der Sinn der Aktion. ------------------ Klaus www.al-ko.com | mein Gästebuch | privat... | Nasenheim Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Metallica88 Mitglied Konstrukteur; CAD Admin
 
 Beiträge: 379 Registriert: 01.04.2009 Win7 Pro 64bit SolidWorks 2015 SP5 MaxxDB 2015 Fujitsu Celsius M470-2 / M720 Quadro 2000 / Quadro K2000 Intel Xeon W3690 6x3,46GHz (3,73GHz) / Intel Xeon E5-1650 6x3,2GHz (3,8GHz) 12GB RAM / 16GB RAM 120GB SSD
|
erstellt am: 30. Mrz. 2011 13:10 <-- editieren / zitieren --> Unities abgeben:          Nur für tbd
|
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...

 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: 01. Apr. 2011 13:08 <-- editieren / zitieren --> Unities abgeben:          Nur für tbd
noch ein Hinweis: Die Formatierung per <FONT ...> funktioniert nicht nur bei "normalen" Notes, sondern z.B. auch bei Texten in einer SolidWorks-Tabelle. Und zwar kann man es hier entweder direkt reinschreiben (wenn auch blind, sobald man <FONT geschrieben hat, wird die Anweisung unsichtbar). Oder man verwendet es bei eingeblendeten Dateieigenschaften ($PRPSHEET...etc.). Diese lassen sich ja einfach per Dialog oder per API befüllen. Die <FONT...>-Formatierung funktioniert auch damit.
<FONT size=5mm> Schriftgröße 5 mm <FONT style=I> Kursiv <FONT style=RI> Kursiv wieder aus <FONT style=B> Fett <FONT style=RB> Fett wieder aus <FONT effect=U> _Unterstrichen_ <FONT effect=RU> Unterstrichen wieder aus. <FONT effect=S> -Durchgestrichen- <FONT effect=RS> Durchgestrichen wieder aus <FONT color=0x0050647d> Farbig <FONT color=D> Farbig aus
Wie die Farbe hier codiert ist, ist mir allerdings schleierhaft. Vielleicht hat ja jemand ne Idee dazu. Das Beispiel mit dem Code 0x0050647d hat die dezimal RGB-Werte 125;100;80 bzw. Farbton 18, Sättigung 53 und Intensität 96. In Hex übersetzt komme ich nicht auf diesen Code. Jetzt fehlt mir nur noch ein "richtiger" Zeilenumbruch.
------------------ Klaus www.al-ko.com | mein Gästebuch | privat... | Nasenheim Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Mitglied Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 01. Apr. 2011 13:28 <-- editieren / zitieren --> Unities abgeben:         
|
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)

 Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 01. Apr. 2011 13:30 <-- editieren / zitieren --> Unities abgeben:          Nur für tbd
Hallo Klaus, Zitat: Original erstellt von KMassler: Wie die Farbe hier codiert ist, ist mir allerdings schleierhaft. Vielleicht hat ja jemand ne Idee dazu. Das Beispiel mit dem Code 0x0050647d hat die dezimal RGB-Werte 125;100;80 bzw. Farbton 18, Sättigung 53 und Intensität 96. In Hex übersetzt komme ich nicht auf diesen Code.
Das ist der VB-Farbcode, der ist so aufgebaut : &H00BBGGRR, also ein Longwert mit dem Rotfarbwert im unteren Byte (Bits 0-7), dem Grünfarbwert im zweiten von unten (Bit 8-15), Blau im dritten (16 24) und im Highbyte einfach nur eine 00. Also dein Beispiel: Rot 125 = &H7D, Grün 100 = &H64, Blau 80 = &H50, von hinten nach vorne &H0050647D Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog 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...

 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: 04. Apr. 2011 08:22 <-- editieren / zitieren --> Unities abgeben:          Nur für tbd
|