| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SolidEdge |
Autor
|
Thema: Visual Basic die zweite (436 mal gelesen)
|
amg13 Mitglied
Beiträge: 942 Registriert: 20.12.2002 Aktuell: FSC R550 2x Xeon X5450 QuadCore 8GB RAM Nvidia FX4800 Dell Precision M6300 Solid Edge ST3 NX 7.5 Solid Works 2010 Pro/E Das war einmal: HP Workstation >80x SolidEdge V19 (Classic & Foundation) 14x SMAP3D Piping/Partfinder
|
erstellt am: 23. Mrz. 2004 16:31 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, folgendes Problem. ich versuche einen Schriftkopf mit VB in einer Zeichnung zu platzieren. den Schriftkopf habe ich als Symbol. folgendes habe ich ausprobiert. Fall 1: Set objSymbol = objSymbols.Add(igOLEEmbedded, objSymbol2Place, nXs - 0.001, nYs + 0.0005) Symbol wird richtig Platziert. Nachteil durch die OLE Verknüpfung werden die Properties von der Symboldatei gezogen ==> das ist nicht brauchbar. Ich habe auch schon versucht die Variable "igOLEEmbedded" durch die "igOLENone" zu ersetzen. das ergebis ist eine Fehlermeldung. Obwohl in der Hilfe 5 Werte zulässig sind, akzeptiert er komischerweise nur die mit OLE Verknüpfungen. So dachte ich mir versuch es mit Fall Nummer 2. Set objSymbol = objSheet.Symbols.InsertSymbolAsGeometry("C:\TempAMG\schriftfeld\Symbol1.dft", nXs - 0.001, nYs + 0.0005) Hier sollte das Makro das Symbol als Geometrie einfügen. So dass die Properties von der aktiven Datei zum ausfüllen herangezogen werde. Das war leider nicht der fall. Ich kann machen was ich will es kommen nur so fehler wie "Kann Methode nicht anwenden" oder "Fehlendes Objekt" Hat jemand von euch eine Idee wie ich ein Symbol als Geometrie einfügen kann, so daß es auf die Properties der aktuellen Datei zugreift beim ausfüllen. Wäre Klasse wenn jemand eine Idee hätte. MfG AMG
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
modeng Ehrenmitglied V.I.P. h.c.
Beiträge: 7061 Registriert: 10.12.2003
|
erstellt am: 23. Mrz. 2004 19:16 <-- editieren / zitieren --> Unities abgeben: Nur für amg13
Moin, ich hoffe ich hab's verstanden. Dann wuerde ich den Kopf aus Textboxen zusammen bauen und neben/unter jede Textbox einen 'Callout' ohne Leader mit der entsprechenden Variable versehen: In der Annahme die TextBox endet bei X_upperRight/Y_bottom Set objBalloons = objSheet.Balloons ' x = X_upperRight + 0.001 y = Y_bottom + 0.001 Call createBalloon(x, y, "%{Sheet number} / %{Number of Sheets}") Private Sub createBalloon(pXcoord As Double, _ pYcoord As Double, _ pText As String) ' Set objBalloon = objBalloons.Add(pXcoord, pYcoord, 0) objBalloon.BalloonText = CStr(pText) objBalloon.BalloonType = igDimBalloonNone objBalloon.Callout = 1 objBalloon.Leader = False ' End Sub
modeng
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pablo Mitglied Techniker
Beiträge: 453 Registriert: 23.01.2002 Win10 Office 365 SE 2019
|
erstellt am: 23. Mrz. 2004 20:00 <-- editieren / zitieren --> Unities abgeben: Nur für amg13
|
Arne Peters Ehrenmitglied V.I.P. h.c. CAD Dokumentation / Training / Programmierung / Datenbanken
Beiträge: 7321 Registriert: 05.2002.24 Solid Edge Seminarunterlagen Training, Beratung, Programmierung
|
erstellt am: 23. Mrz. 2004 20:56 <-- editieren / zitieren --> Unities abgeben: Nur für amg13
Das mit dem platzieren als Symbol funktioniert prima. Das ist aber kein Object, sondern eine Methode. Der Typ "Geometrie" fehlt beim Add, denn es wird ja kein neues Objekt an eine Collection angefügt, sondern Geometrie als Gruppe platziert. Deshalb Call o_Symbols.InsertSymbolAsGeometry(Datei, x, y) Dann kann man das ganze noch als Locatable=false machen und dann muß es auch nicht in den Background, sondern kann auf dem Arbeitsblatt platziert werden. i = o_groups.Count o_groups.Item(i).UserDefinedName = "Schriftfeld_auto" o_groups.Item(i).Locatable = False Viele Grüße APeters@BSS-Online.de
[Diese Nachricht wurde von Arne Peters am 23. Mrz. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
modeng Ehrenmitglied V.I.P. h.c.
Beiträge: 7061 Registriert: 10.12.2003
|
erstellt am: 23. Mrz. 2004 22:58 <-- editieren / zitieren --> Unities abgeben: Nur für amg13
Moin, @pablo ... der Frager war amg13 ... sicher Schriftkoepfe, zumal immer wiederkehrende, ins Hintergrundblatt. Das hatte ich dem Frager ueberlassen. Beides ist moeglich. Mit dem Symbols war ich mir nicht so im Klaren: ich hatte verstanden das er irgendwelche Properties zb.: aus Custom auslesen will, und das mach ich eigentlich immer mittels Callout (haendisch ;-)) ) Klaus
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
modeng Ehrenmitglied V.I.P. h.c.
Beiträge: 7061 Registriert: 10.12.2003
|
erstellt am: 24. Mrz. 2004 02:05 <-- editieren / zitieren --> Unities abgeben: Nur für amg13
Moin, ... richtig was Arne geschrieben hat jedoch moeglicherweise ein bischen zu knapp erklaert ;-) objSymbols = Objekt InsertSymbolAsGeometry(...) = eine Methode des Objekts o_Symbols Add(...) = noch eine des gleichen Objekts Nur es fehlt im "Programming ..." der Hinweis das die Methode Add() eine Function im Sinne von VBasic ist und daher einen Rueckgabewert hat. Die Methode InsertSymbolAsGeometry() ist dagegen asl "Sub" implementiert und hat daher keinen Rueckgabewert. Daher war der 2. Ansatz fast, aber eben nur fast, richtig ;-) Die Unterschiede beider Methoden sind gut im VB Objekt-Browser zu sehen: Member of Symbols: Sub InsertSymbolAsGeometry(filePath As String, dOriginX As Double, dOriginY As Double) Function Add(insertionType As Long, filePath As String, x As Double, y As Double, [z]) As Symbol2d Daher Objekt Browser anwerfen und Beschreibung zum Objekt/Methode lesen, ist meist informativer als der Text des "Programming ..." modeng Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
amg13 Mitglied
Beiträge: 942 Registriert: 20.12.2002 Aktuell: FSC R550 2x Xeon X5450 QuadCore 8GB RAM Nvidia FX4800 Dell Precision M6300 Solid Edge ST3 NX 7.5 Solid Works 2010 Pro/E Das war einmal: HP Workstation >80x SolidEdge V19 (Classic & Foundation) 14x SMAP3D Piping/Partfinder
|
erstellt am: 24. Mrz. 2004 11:33 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, danke für Euere Hilfe. Das hat mir echt weitergeholfen. Aus dem Objektkatalog bin ich aber nicht sehr schlau geworden. cya AMG PS: Als Hintergrundinfo folgendes. Natürlich ist unser Schriftkopf auf dem Hintergrundblatt. Das Makro an dem ich arbeite soll nur alte Zeichnungen mit dem neuen Schriftkopf versehen. Dies ist notwendig weil wir unsere SAP Anbindung von SE wechseln.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |