| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY präsentiert die PRO Elite™ High Endurance microSD-Flash-Speicherkarten für Videoüberwachung und kontinuierliche Aufzeichnung, eine Pressemitteilung
|
Autor
|
Thema: McadSymbolBBMgr in VB nach Start zuweisen (1784 mal gelesen)
|
bassenc Mitglied Student

 Beiträge: 26 Registriert: 02.06.2004 WinXP32Prof ACADMech2007 ACADMechMech2009 SP3 SolidEdge 20
|
erstellt am: 11. Nov. 2005 10:47 <-- editieren / zitieren --> Unities abgeben:         
Hallo, auf die Schnelle: Ich starte AutoCAD über VB und habe das Problem, dass er mir ne Fehlermeldung rausschmeisst dass das Objekt nicht zugewiesen werden kann. Sobald ich nach dem AutoCAD-start ein bischen warte und den SymbolManager dann "per Button" zuweise funzt es... Hier mal der Standard Beispielcode(Mein eigener Code ist ziemlich zerstreut, ich glaube ihr versteht trotzdem was ich will...): Code:
Dim symbb As McadSymbolBBMgr Set symbb = ThisDrawing.Application.GetInterfaceObject("SymBBAuto.McadSymbolBBMgr")
Hat Jemand vielleicht Erfahrung mit diesem Problem? gibts da irgendwelche Events auf die ich evtl. warten muss/kann? (Ab wann startet AutoCAD eigentlich den SymbolManager? sofort oder mit der ersten Drawing?) erstmal vielen Dank, ich hoffe jemand weiß Rat... Gruß, cyplex
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 11. Nov. 2005 12:41 <-- editieren / zitieren --> Unities abgeben:          Nur für bassenc
Hallo, AutoCAD bedient die com Schnittstelle nur wenn es frei ist. Innerhalb von VBA hast du keine Probleme. Wenn du quasi von "aussen" von VB darauf zugreifst ist das unter Umständen (wie bei dir) ein Problem. Es gibt da eine Eigenschaft im Objektmodell die die Verfügbarkeit von AutoCAD angibt (In Befehl, Maske auf etc.). Finde sie aber auf die Schnelle nicht AutoCAD kann aber nur einen Wert zurückgeben wenn es frei ist. Vielleicht kleine Warteschleifenfunktion: (nicht getestet)
Code:
dim StartZeit as variant dim Zeit as variant dim verfügbar as boolean dim test as variantStartZeit=Now Zeit=Now do on error resume next ' Versuch die Caption zu lesen test=thisdrawing.application.caption if not vartype(test)= vbEmpty verfügbar=true exit do end if ' Spätestens nach 5 sec Abbruch if DateAdd("s",5,StartZeit) < Zeit then verfügbar=false exit do end if Zeit=Now loop while not verfügbar ...
Stelli------------------ Warum lisp'eln wenn's auch anders geht. [Diese Nachricht wurde von Stelli1 am 11. Nov. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
bassenc Mitglied Student

 Beiträge: 26 Registriert: 02.06.2004 WinXP32Prof ACADMech2007 ACADMechMech2009 SP3 SolidEdge 20
|
erstellt am: 11. Nov. 2005 13:51 <-- editieren / zitieren --> Unities abgeben:         
Hallo Stelli, Ich denke deine Antwort erklärt das Problem... Vielen Dank. Deine 2. Lösung hatte ich auch schon so ähnlich ins Auge gefasst, aber irgendwie gefällt mir das nicht so richtig... sorry Mal sehen vielleicht finde ich ja irgendwo die Eigenschaft bez. der Verfügbarkeit... (Ansonsten wird COM bzw. AutoCAD mich wohl zu den Umstand mit der Schleife zwingen..) Also Danke nochmal. Klasse Community.... Gruß, cyplex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |