Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API: Wie Meldung beim Öffnen (Baugruppe neu aufbauen) abfangen oder verhindern?

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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:  API: Wie Meldung beim Öffnen (Baugruppe neu aufbauen) abfangen oder verhindern? (2011 mal gelesen)
sebhad
Mitglied
Student


Sehen Sie sich das Profil von sebhad an!   Senden Sie eine Private Message an sebhad  Schreiben Sie einen Gästebucheintrag für sebhad

Beiträge: 20
Registriert: 04.05.2004

SolidWorks 2003
Visual C# .NET

erstellt am: 20. Nov. 2004 17:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

ich öffne per APIProgrammier- und Anwendungsschnittstelle (Application Programming Interface) eine Baugruppe mit SldWorks:: OpenDoc6() und füge sie in eine neue Baugruppe ein mit AssemblyDoc::AddComponent2().

Dabei kommt öfters folgende Meldung, die der User erst in SolidWorks wegklicken muss, bevor etwas in dem APIProgrammier- und Anwendungsschnittstelle (Application Programming Interface)-Programm weitergeht:

----------------
"Modelle, die in der Baugruppe enthalten sind, wurden verändert. Soll die Baugruppe nun neu aufgebaut werden?"
Man kann anhaken: "Diese Meldung nicht mehr einblenden"
----------------

Weiß jemand, wie ich verhindern kann, dass diese Meldung kommt, oder kann man irgendwo (SetUserPrefernce...()) einstellen, was automatisch passieren soll?

(Evtl. über ein Event, wobei man in diesen normalerweise nichts an der Reaktion von SWXSolidWorks verändern kann)

Ich freue mich über jeden kleinen Hinweis...

Vielen Dank,
Sebastian


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

PASCAM
Mitglied
Diplom Informatiker


Sehen Sie sich das Profil von PASCAM an!   Senden Sie eine Private Message an PASCAM  Schreiben Sie einen Gästebucheintrag für PASCAM

Beiträge: 67
Registriert: 25.11.2002

erstellt am: 21. Nov. 2004 16:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für sebhad 10 Unities + Antwort hilfreich

Hallo Sebastian,

Die einzige Moeglichkeit, die ich kenne, ist die Option swOpenDocOptions_Silent anzugeben. Ansonten kenn ich nichts anderes. Vielleicht kannst Du ja SolidWorks "unattend" laufen lassen (d.h. ganz ohne GUI), da koennte es anders aussehen.
Ansonsten geht es mir genauso, z.B. auch beim Modellwechsel.

Gruss, Ralph

------------------
PASCAM Ralph Müller
Softwareentwicklung

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



Sehen Sie sich das Profil von StefanBerlitz an!   Senden Sie eine Private Message an StefanBerlitz  Schreiben Sie einen Gästebucheintrag für StefanBerlitz

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: 21. Nov. 2004 21:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für sebhad 10 Unities + Antwort hilfreich

Hallo Sebastian,

ich kenne ausser dem von Ralph angesprochenen Parameter leider auch keinen Weg ... wir benutzen bei uns auf unserem TIFF-Server eine Shareware, die einfach diese Meldungen wegklickt: Buzof) . Zu Hause benutze ich die Freeware-Version von PTFB (Push that freakin' button), die gibt es vom Hersteller mittlerweile nur noch als (recht preiswerte) Pro Variante, aber im Internet finden sich noch downloadstellen der Freewareversion 1.0.64, z.B. hier.

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite
http://solidworks.cad.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

sebhad
Mitglied
Student


Sehen Sie sich das Profil von sebhad an!   Senden Sie eine Private Message an sebhad  Schreiben Sie einen Gästebucheintrag für sebhad

Beiträge: 20
Registriert: 04.05.2004

SolidWorks 2003
Visual C# .NET

erstellt am: 22. Nov. 2004 17:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Viel Dank für die ausführlichen Antworten!

Vielleicht nehm ich auch so ein Meldungdungswegklickprogramm.

Und das Beste wäre wohl, so eine Funktion selbst zu implementieren, die dann nur bei Bedarf funktioniert und ohne sie vorher extra manuell starten zu müssen.

In Visual Basic gibt es ja so Funktionen, wie SendKeys und FindWindow...

Mal sehen.

Viele Grüße und viel Erfolg,
Sebastian

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

u.clemens
Mitglied
Konstrukteur


Sehen Sie sich das Profil von u.clemens an!   Senden Sie eine Private Message an u.clemens  Schreiben Sie einen Gästebucheintrag für u.clemens

Beiträge: 964
Registriert: 04.07.2000

engineer's law
o cheap
o fast
o good
check only two !

erstellt am: 23. Nov. 2004 09:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für sebhad 10 Unities + Antwort hilfreich

probiers doch mal mit:
SldWorks::Get/SetUserPreferenceIntegerValue swRebuildOnActivation
ist wohl ab SWX2004 verfügbar.
Habs selber nicht ausprobiert, aber auf der SWX-Homepage gefunden - das klingt so, als ob es das ist was Du suchst:
How to suppress assembly rebuild dialog
How to suppress rebuild dialog when activating assembly


------------------
mfg uc

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Thorsten.Gut
Mitglied
Entwicklungsing.


Sehen Sie sich das Profil von Thorsten.Gut an!   Senden Sie eine Private Message an Thorsten.Gut  Schreiben Sie einen Gästebucheintrag für Thorsten.Gut

Beiträge: 118
Registriert: 24.06.2003

P4 2.6GHz, 1GB DDR-333, Parhelia512 128MB 1600*1200@85Hz, W2k SP4, SolidWorks2005 SP3.0, VarBox3.5, SpaceMouse 5000 USB, IntelliMouse optical

erstellt am: 23. Nov. 2004 10:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für sebhad 10 Unities + Antwort hilfreich

Hi UC,
DANKE!!! Endlich ist diese blöde Fenster weg! Ich habe das 2. Makro verwendet.
Jetzt bloß noch eine Frage: wie kann ich dieses neu erstellte Makro automatisch beim 1. Öffnen von SWXSolidWorks ausführen?

Gruß
Thorsten

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

u.clemens
Mitglied
Konstrukteur


Sehen Sie sich das Profil von u.clemens an!   Senden Sie eine Private Message an u.clemens  Schreiben Sie einen Gästebucheintrag für u.clemens

Beiträge: 964
Registriert: 04.07.2000

engineer's law
o cheap
o fast
o good
check only two !

erstellt am: 23. Nov. 2004 11:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für sebhad 10 Unities + Antwort hilfreich

das sollte Dir folgender Beitrag weiterhelfen (den ich mit der Suchen-Funktion gefunden habe  ) http://ww3.cad.de/foren/ubb/Forum2/HTML/002106.shtml
dort findest Du auch einen Link zu Stefans Seite, wo Du es auch ausführlich beschrieben findest.

------------------
mfg uc

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Thorsten.Gut
Mitglied
Entwicklungsing.


Sehen Sie sich das Profil von Thorsten.Gut an!   Senden Sie eine Private Message an Thorsten.Gut  Schreiben Sie einen Gästebucheintrag für Thorsten.Gut

Beiträge: 118
Registriert: 24.06.2003

P4 2.6GHz, 1GB DDR-333, Parhelia512 128MB 1600*1200@85Hz, W2k SP4, SolidWorks2005 SP3.0, VarBox3.5, SpaceMouse 5000 USB, IntelliMouse optical

erstellt am: 23. Nov. 2004 11:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für sebhad 10 Unities + Antwort hilfreich

sebhad
Mitglied
Student


Sehen Sie sich das Profil von sebhad an!   Senden Sie eine Private Message an sebhad  Schreiben Sie einen Gästebucheintrag für sebhad

Beiträge: 20
Registriert: 04.05.2004

SolidWorks 2003
Visual C# .NET

erstellt am: 10. Dez. 2004 09:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Leute,

falls es jemanden interessiert:

ich habe jetzt in meinem eigenen Code eine Methode, die diese lästige "Baugruppe neu aufbauen?"-Meldung bei Bedarf wegklickt. Wenns wen interessiert, kann ichs hier auch mal näher erläutern.

Der Code ist allerdings in C# (weil ja die meisten hier mit VB arbeiten).

Viele Grüße,
Sebastian

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



Sehen Sie sich das Profil von StefanBerlitz an!   Senden Sie eine Private Message an StefanBerlitz  Schreiben Sie einen Gästebucheintrag für StefanBerlitz

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: 10. Dez. 2004 10:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für sebhad 10 Unities + Antwort hilfreich

Hallo Sebastian,

klar ist das interessant, wenn du das erklären würdest, ist halt wirklich sehr lästig und vielleicht kann es ja nach deiner Erklärung auch in VB gemacht werden.

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite
http://solidworks.cad.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

sebhad
Mitglied
Student


Sehen Sie sich das Profil von sebhad an!   Senden Sie eine Private Message an sebhad  Schreiben Sie einen Gästebucheintrag für sebhad

Beiträge: 20
Registriert: 04.05.2004

SolidWorks 2003
Visual C# .NET

erstellt am: 10. Dez. 2004 19:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Stefan,

ich habe das Problem folgendermaßen gelöst:
(verwendetes Entwicklungssystem: MS Visual .NET Studio mit C#)

----------------------
=> Erzeugen einer System.Threading.Timer-Klasse

Deklaration des Timer-Objektes:
private System.Threading.Timer timerClickAwayMessage = null;

Zuweisung an der Stelle, wo der Thread starten soll:
timerClickAwayMessage = new System.Threading.Timer(new System.Threading.TimerCallback(clickAwayMessage), null, 100, 500);
mit:
100 = Zeit (ms), bis die "Zielfunktion" zum ersten Mal ausgeführt werden soll
500 = Zeit, die zwischen den Aufrufen der Zielfunktion gewartet werden soll

Der Thread kann so wieder gestoppt werden:
timerClickAwayMessage.Dispose();
timerClickAwayMessage = null;


----------------------
=> Deklaration der Funktion, die die Return-Taste auf dem Meldungsfenster simuliert:

using System.Runtime.InteropServices;
...
[DllImport("user32.dll",EntryPoint="FindWindow")]
private static extern int FindWindow(string _ClassName, string _WindowName);
[DllImport("user32.dll", EntryPoint="PostMessageA")]
private static extern int PostMessage (int hwnd, int wMsg, int wParam, int lParam);
...
Zielfunktion (oder callback-Funktion):
private void clickAwayMessage(object o)
{
//-- Konstanten:
int WM_IMEKEYDOWN = 0x290;
int VK_RETURN = 0x0D;

//-- Fenster auf Desktop suchen
int hWnd = FindWindow(null, "SolidWorks 2003");

//-- wenn gefunden, Tatstatureingabe RETURN an das Fenster schicken,
if (hWnd != 0)
PostMessage(hWnd, WM_IMEKEYDOWN, VK_RETURN, 0);
}

Wichtig dabei: der Titel des Meldungsfensters heißt bei anderen Versionen von SWX wohl anders und muss natürlich angepasst werden.

----------------------

In VISUAL BASIC geht es, glaube ich, etwas einfacher (irgendwie so):

-> Funktionen importieren:
Private Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

-> Thread erzeugen:
wohl ähnlich, wie oben oder normalen Timer (funktioniert nicht uneingeschränkt immer)

-> wegklicken in callback-Funktion:
Const WM_IMEKEYDOWN As Long = &H290
Const VK_RETURN As Long = &HD
Dim lHandle As Long
lHandle = FindWindow("SolidWorks 2003", vbNullString)
Call PostMessage(lHandle, WM_IMEKEYDOWN, VK_RETURN, 0&)

oder als Anregung (keine Ahnung, ob das geht):
1.) mit AppActivate("SolidWorks 2003") das Meldungsfenster aktvieren und
2.) mit SendKeys.SendWait("{ENTER}") an das Fenster schicken


-----
hier ein paar Links zu FindWindow und PostMessage: http://www.vb-fun.de/cgi-bin/loadframe.pl?ID=vb/tipps/tip0223.shtml oder http://www.vb-fun.de/cgi-bin/loadframe.pl?ID=vb/tipps/tip0353.shtml
-----

Ihr habt mir schon oft geholfen, jetzt bin ich froh auch mal etwas beitragen zu können.
Viele Grüße,
Sebastian

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz