| | |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | | |  | SolidWorks Kurs mit IHK-Zertifzierung , ein Kurs (bis zu 100% förderbar mit Bildungsgutschein)
|
|
Autor
|
Thema: Dokument-Infos über API bei drw nur zur Ansicht (992 mal gelesen)
|
MartinKirchmayer Mitglied

 Beiträge: 79 Registriert: 14.05.2002
|
erstellt am: 14. Mai. 2002 13:44 <-- editieren / zitieren --> Unities abgeben:         
Hallo API  -Programmierer, ich verfolge nun dieses Forum schon einige Zeit und habe immer wieder hilfreiche Anregungen für SWX  und auch ab und zu SmarTeam (unsere Systeme hier) gefunden. Jetzt komme ich aber mit einem Problem nicht mehr weiter: Ich möchte bei einer automatischen ps-Erstellung aus SWX die drw's nur zur Ansicht laden, aus Performance-Gründen. Nun muss ich aber (per VB) herausfinden, welches Format die Zeichnung hat, um die Druckereinstellungen entsprechend vorzunehmen. Ist dies irgendwie möglich? Habe gerade nach Versuchen nur aus dem Sheet.GetProperties - Array die paper width und height rauslesen können, aber weder das benutzte Template noch die PaperSize. Danke schon mal im Voraus, MK Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gismo Mitglied DriveWorks Support
   
 Beiträge: 1047 Registriert: 05.03.2001 HP Z Book17 G5; 32GB Ram; Quadro P4200 WIN10 Pro; Alle SWX ;)
|
erstellt am: 14. Mai. 2002 14:02 <-- editieren / zitieren --> Unities abgeben:          Nur für MartinKirchmayer
Hallo Martin, erstmal herzlich willkommen in unserem (spitzen) Forum! doch nun zu Deiner Frage: Ich hab ein Makro, das mir das Blattformat und den Masstab ausgibt. (auch hier aus dem Forum) Hier der Code: Code:
Dim swApp As Object Dim DrawingDoc As Object Dim Sheet As Object Dim SheetProp As Variant Dim Size As String Dim Model As Object Dim typ As Long Sub main()
Set swApp = CreateObject("SldWorks.Application") swApp.visible = True Set Model = swApp.ActiveDoc If Model Is Nothing Then Call MsgBox("Kein SolidWorks Dokument geöffnet", vbOKOnly, "Information") Exit Sub End If 'typ = Model.gettype 'swApp.sendmsgtouser (typ) If (Model.gettype <> 3) Then swApp.sendmsgtouser ("Das klappt nur bei 2D - Ableitungen") Exit Sub ' Verlassen, wenn keine Drawing End If Set DrawingDoc = swApp.ActiveDoc Set Sheet = DrawingDoc.GetCurrentSheet SheetProp = Sheet.GetProperties Size = "" If SheetProp(0) = 7 Then Size = "DIN A4" If SheetProp(0) = 8 Then Size = "DIN A3" If SheetProp(0) = 9 Then Size = "DIN A2" If SheetProp(0) = 10 Then Size = "DIN A1" If SheetProp(0) = 11 Then Size = "DIN A0" If Size = "" Then Size = "keine Ahnung"
' 7 Doubles mit Eigenschaften: ' paperSize, templateIn, scale1, scale2, firstAngle, width, height MsgBox ("Blattmaßstab ist " & SheetProp(2) & " : " & SheetProp(3) & Chr$(13) & "Blattformat: " & Size) End Sub
Ich denke, wenn es das ist, was Du gesucht hast, kannst Du es sicher gut auf Deine Bedürfnisse anpassen. ------------------ Viele Grüße aus dem Schwarzwald gismo  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MartinKirchmayer Mitglied

 Beiträge: 79 Registriert: 14.05.2002
|
erstellt am: 14. Mai. 2002 14:09 <-- editieren / zitieren --> Unities abgeben:         
Danke gismo, damit hab ich's schon probiert. Das wichitge ist: Das Dokument ist nur zur Ansicht geladen (also nur das Vorschaubild!!) Und da geben aus den Sheetprops nur die letzten beiden Einträge was her (Höhe und Breite). Die sheetprops kann ich sowieso nicht verwenden, da das VB-Derivat, das SmarTeam als Script-Sprache benutzt, keine Arrays als Resultat von Funktionen beschreiben kann. Daher suche ich irgendeine andere Funktion, die mir das erledigt... Gruß aus'm Franngland, Martin 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: 14. Mai. 2002 14:18 <-- editieren / zitieren --> Unities abgeben:          Nur für MartinKirchmayer
Hallo Martin, wenn du Zeichnungen nur View-Only lädst werden nur die Displaydaten benutzt und viele Werte sind nicht korrekt gesetzt (z.B. eben auch die Sheet.GetProperties). Ich hatte ein ähnliches Problem letztes Jahr, hier die Originalantwort vom API support (hat sich so weit ich weiß auch nichts geändert) Zitat:
> I open a document viewonly for plotting. I use Sheet.GetProperties to > determine the sheet size, but if opened viewonly (with OpenDoc2) > the sheetproperties(0) will ALWAYS have a value of 12 (userdefined) > The values for the width and height are set correct. > > If opened not viewonly all values okay. I would consider what you are seeing as intended behaviour rather than a "bug".The issue is that SW uses the display list when a file is opened view only. This is the same as the SW viewer. In view only mode, a lot of information is just not loaded/resolved which is why it is a lot faster to load. This is by design. You will notice that the RMB menu has a different set of options in view only mode. I have also found that various other values in Sheet::GetProperties are incorrect when the drawing is loaded view only. Sheet::GetTemplateName is similarly incorrect.
Da die Höhe und Breite aber ja vorhanden sind kannst du selbst daraus das Format ermitteln ... Aber mal ein ganz anderer Ansatz: wenn ihr doch schon SmarTeam habt, wieso holst du dir nicht die Info über die Blattgröße aus der Datenbank? Ich kenn zwar SmarTeam nicht, aber das kann sicher beim einchecken auch das Blattformat auslesen und irgendwo mit im Dokumentensatz abspeichern?! Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MartinKirchmayer Mitglied

 Beiträge: 79 Registriert: 14.05.2002
|
erstellt am: 14. Mai. 2002 14:26 <-- editieren / zitieren --> Unities abgeben:         
@Stefan: Danke für die Auskunft, hab's fast befürchtet.... Ja, inzwischen (mit neueren templates) geht auch genau diese Info an die SmarTeam-DB beim Einchecken. Aber alle Zeichnungen, die mit alten templates erstellt und schon geprüft sind, haben diese Eigenschaft noch nicht. Und von diesen Zeichnungen muss manchmal noch nachträglich ein ps-file erstellt werden... Muss ich mir irgendwie anders behelfen, externe Applikation evtl. Danke für die Hilfe soweit, Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
gismo Mitglied DriveWorks Support
   
 Beiträge: 1047 Registriert: 05.03.2001 HP Z Book17 G5; 32GB Ram; Quadro P4200 WIN10 Pro; Alle SWX ;)
|
erstellt am: 14. Mai. 2002 15:29 <-- editieren / zitieren --> Unities abgeben:          Nur für MartinKirchmayer
Zitat: Original erstellt von MartinKirchmayer: Das Dokument ist nur zur Ansicht geladen (also nur das Vorschaubild!!)
Sorry Martin, das kommt davon, wenn man den Beitrag nicht zweimal durchliest, bevor mann antwortet  Aber wie immer hat Stefan eine kompetente Antwort bei der Hand! 
------------------ Viele Grüße aus dem Schwarzwald gismo  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |