| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| CAD/CAM-Workshop in Suhl-Friedberg: SolidCAM + SOLIDWORKS |
Autor
|
Thema: API - Name von Blattformat (656 mal gelesen)
|
Thomas Rolf Mitglied Dipl.-Ing. / CAD-Admin
Beiträge: 189 Registriert: 02.07.2001 SWX 2015 SP4.0
|
erstellt am: 10. Sep. 2002 16:33 <-- editieren / zitieren --> Unities abgeben:
Hallo z'sammen; Ich suche eine Möglichkeit, per API an den Namen des Blattformats des aktuellen Blatts zu kommen. Bei mir heißt das eigentlich immer "Blattformat1", es sei denn, man fügt mehrere Blätter ein. Dann bekommt das Blattformat eine neue Nummer. z.B. "Blattformat3" Wahrscheinlich kann man den Namen noch nicht mal ändern. Aber kann man ihn wenigstens herausbekommen? Danke im voraus Thomas 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: 11. Sep. 2002 07:46 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas Rolf
Hallo Thomas, ich war zuerst etwas verwirrt, Blattformat gibt es in SolidWorks genau 12 Stück, die Namen davon stehen in der swconst.bas Aber ich vermute, du meinst den Namen des aktuellen Blattes selbst. Diesen Namen kannst du ohne Schwierigkeiten herausbekommen und auch ändern, gar kein Problem. Beispielcode:
Code:
Dim swApp As Object Dim DrawingDoc As Object Dim Sheet As ObjectSub main() Set swApp = CreateObject("SldWorks.Application") Set DrawingDoc = swApp.ActiveDoc Set Sheet = DrawingDoc.GetCurrentSheet ' aktueller Name MsgBox Sheet.GetName ' neuen Namen fragen Sheet.SetName (InputBox("Neuen Namen eingeben")) End Sub
Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Rolf Mitglied Dipl.-Ing. / CAD-Admin
Beiträge: 189 Registriert: 02.07.2001 SWX 2015 SP4.0
|
erstellt am: 11. Sep. 2002 08:11 <-- editieren / zitieren --> Unities abgeben:
Hi Stefan; war schon 'ne tolle Antwort, trifft aber nicht ganz das, was ich brauche. Also noch etwas konkreter: Wenn ich innerhalb eines Blattes die rechte Maustaste drücke und "Blattformat bearbeiten" wähle, wechselt SWX auf das Blattformat, welches ich meine. Dies passiert per API auch mit "EditTemplate". In diesem Blattformat habe ich zwei Blöcke liegen (CustomSymbol) , die aber an der gleichen Stelle positioniert sind. Einen dieser beiden Blöcke möchte ich per API selektieren. Um dies hinzukriegen, brauche ich den Object-Namen des Blocks, da die Position allein nicht ausreicht. Den eigentlichen Namen (z.B. "Block47") habe ich schon herausgefunden, um ihn aber zu selektieren, brauche ich auch den Namen des Blattformats. Dann kann ich beides zu z.B. "Block47@Blattformat5" zusammensetzen und mit - Dwgdoc.selectbyid "Block47@Blattformat5", "CUSTOMSYMBOL", ... - meinen Block zu packen kriegen. Den Namen des Blattes kriege ich ja mit Deinem Code heraus, aber wie ermittele ich dann den zughörigen Blattformatnamen? Falls Du eine Idee hast, sag' ich schon mal Danke. Thomas 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: 12. Sep. 2002 07:45 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas Rolf
Hallo Thomas, tut mir leid, da muss ich die Segeln streichen. Alles was dann kommen würde wären Vvermutungen, also lass ich es besser. Frag am Besten beim APISupport nach, die wissen das bestimmt, ob es geht oder eben nicht. Sorry für die schlechte Meldung am frühen Morgen, Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
3Defacto Mitglied Ingenieurbüro
Beiträge: 33 Registriert: 02.04.2001
|
erstellt am: 12. Sep. 2002 08:15 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas Rolf
Hallo Thomas, ich muss mich der Antwort von Stefan anschliessen. Habe gestern rumgestöbert und auch keine brauchbare Lösung gefunden. Würde mich aber auch interessieren, wenn Du beim Support einen Befehl oder ein Woraround genannt bekommst - ich habe nicht's in der Hilfe und in den Beispielen gefunden. Gruß Mathias 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: 12. Sep. 2002 09:06 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas Rolf
Hallo, vielleicht kann ich noch etwas Licht in das Dunkel bringen (hoffentlich steh ich jetzt nicht ganz daneben): wenn ich mich recht erinnere, dann hieß das, was in der aktuellen SWX -Version "Vorlage1", "Vorlage2" ... heißt, früher "Blattformat1", "Blatformat2" ... -und diesen Namen muß man wissen, um an ein Objekt auf Blattformatebene zu kommen. Ganz dumm wirds, wenn man dann womöglich mit Zeichnungen aus anderssprachigen Installationen arbeiten muß, da heißt das dann z.B. "template1" usw. ciao ------------------ Klaus Massler Alois Kober GmbH http://www.al-ko.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MartinKirchmayer Mitglied
Beiträge: 79 Registriert: 14.05.2002
|
erstellt am: 12. Sep. 2002 10:59 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas Rolf
Hallo zusammen, ich glaube, ich habe da was: [codeschnipsel start] mySwDoc.SetAddToDB True ' this is to avoid snapping ' Get the selection manager class Set SelMgr = mySWDoc.SelectionManager() Set myFeature = mySWDoc.FirstFeature ' traverse the feature structure While Not myFeature Is Nothing Set mySubFeat = myFeature.GetFirstSubFeature ' While we have a valid Sub-feature While Not mySubFeat Is Nothing ' Get the name of the Sub-feature If mySubFeat.GetTypeName() = "DrTemplate" Then mySubFeatName = mySubFeat.Name ' create the attribute name myAttrName = "Block47" & "@" & mySubFeatName ret = mySWDoc.SelectByID(myAttrName, "NOTE", 0, 0, 0) End If
Set mySubFeat = mySubFeat.GetNextSubFeature ' Continue until the last Sub-feature is done Wend Set myFeature = myFeature.GetNextFeature() Wend
[code-schnipsel ende] Das verwende ich (etwas aufgebohrt um die PDM-Daten) um einen Block mit der Änderungshistorie zu löschen bevor eine Zeichnung im PDM gespeichert wird. Es sollte weiterhelfen (sorry, daß ich nicht mehr Zeit habe, das genauer zu dokumentieren, aber vielleicht hat ja der ein oder andere SW-API-Guru hier im Forum etwas mehr Zeit). Grüße aus Franngn, Martin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
d_b Mitglied vorhanden
Beiträge: 88 Registriert: 15.03.2001 42
|
erstellt am: 12. Sep. 2002 11:51 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas Rolf
Hallo zusammen, so sollte es auch funken: -------------------------- Cut Option Explicit Dim swApp As Object Dim draw As Object Dim selmgr As Object Dim selobj As Object Dim templmode As Boolean Dim typx As Long Sub main() Set swApp = CreateObject("SldWorks.Application") Set draw = swApp.ActiveDoc typx = draw.GetType If (typx <> 3) Then Exit Sub templmode = draw.GetEditSheet If (templmode) Then draw.EditTemplate draw.ClearSelection draw.SelectByID "", "SHEET", 0.001, 0.001, 0 Set selmgr = draw.SelectionManager Set selobj = selmgr.GetSelectedObject(1) If (Not selobj Is Nothing) Then MsgBox selobj.GetName Else MsgBox "Fehler Templatename" End If draw.EditSheet End Sub ------Cut Viel Spaß, Dieter Bruns Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Rolf Mitglied Dipl.-Ing. / CAD-Admin
Beiträge: 189 Registriert: 02.07.2001 SWX 2015 SP4.0
|
erstellt am: 12. Sep. 2002 17:16 <-- editieren / zitieren --> Unities abgeben:
|