Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Zeiger auf Fläche über den Namen!

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
  
AMB 2024
Autor Thema:  Zeiger auf Fläche über den Namen! (770 mal gelesen)
Jens S.
Mitglied
Dipl.-Ing.


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

Beiträge: 55
Registriert: 23.02.2005

erstellt am: 23. Feb. 2005 16:29    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 stehe vor einen Problem. Ich versuche eine Fläche mit der Funktion GetEntityByName zu verzeigern. Jedoch ohne Erfolg.

Ich habe der Fläche bereits einen Namen gegeben, aber irgendwie will es nicht funktionieren.

Eine manuelle Selektion über den SelectionManager funktioniert, jedoch möchte ich dies automatisch, ohne vorheriges anklicken der Fläche, erreichen.

Im zweite Schritt möchte ich dann über den gesetzten zeiger den Flächeninhalt auslesen.

Hat jemand eine Idee? Freue mich über jeden Tipp!!!

Gruß JENS

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

d_b
Mitglied
vorhanden


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

Beiträge: 88
Registriert: 15.03.2001

42

erstellt am: 23. Feb. 2005 17:54    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 Jens S. 10 Unities + Antwort hilfreich

Hallo Jens,

so sollte es klappen bei einem offenen Part mit einer Fläche, die "fx"  heisst :
---------------------------CUT
Option Explicit
Dim swApp As Object
Dim Part As Object

Sub main()
Dim entx As Face2
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
If Part Is Nothing Then Exit Sub
Part.ClearSelection
Set entx = Part.GetEntityByName("fx", 2)
If Not entx Is Nothing Then
entx.Select2 False, 0
MsgBox "Fläche: " & entx.GetArea & " qm"
End If
End Sub
------------------------CUT

Gruß,
d_b

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

Jens S.
Mitglied
Dipl.-Ing.


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

Beiträge: 55
Registriert: 23.02.2005

erstellt am: 24. Feb. 2005 10:09    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,

vielen Dank für die super schnelle Antwort!!
Ich habe es ausprobiert und es funktioniert tadelos!

Mein Fehler war folgender gewesen:

Part.GetEntityByName("Name der Fläche, swSelFACES)

Das swSelFACES ist durch eine 2 zu ersetzen! Warum dass so ist, weiss ich nicht. In der API steht da "nix"zu drin! :-) Zumindest habe ich es nicht gefunden.

An dieser Stelle nocheinmal vielen DANK!

Gruß JENS

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

d_b
Mitglied
vorhanden


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

Beiträge: 88
Registriert: 15.03.2001

42

erstellt am: 24. Feb. 2005 10: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 Nur für Jens S. 10 Unities + Antwort hilfreich

Hallo Jens,

swSelFACES ist eine Konstante mit dem Wert 2, die nur dann definiert ist, wenn die

"SolidWorks Constant type library" in das Makro eingebunden wird:

Haken bei -> VBA-Editor->Tools->References.

Weiterhin sollte man immer Option Explicit in der 1. Zeile benutzen, damit man Fehlermeldungen bei nicht definierten Konstanten bzw. Variablen bekommt.

Gruß,
d_b

[Diese Nachricht wurde von d_b am 24. Feb. 2005 editiert.]

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

Jens S.
Mitglied
Dipl.-Ing.


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

Beiträge: 55
Registriert: 23.02.2005

erstellt am: 24. Feb. 2005 12:31    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

Mahlzeit :-)

Aha, danke für die Info! :-)

Also, da ich mich erst 2,5 Wochen mit der API von Solidworks und VB6 beschäftige, sei mir folgende Frage gestattet:

Bei einer reinen Makroprogrammierung ist die Geschichte mit
"Option Explicit" umsetzbar, aber wie sieht es aus, wenn ich das nicht über ein Makro sondern ein externes VB6-Tool verwenden möchte?
Zudem habe ich natürlich dann auch Probleme "DIM entx as Face2" zu definieren.
In der API machen die das aber immer ganz gerne so, was ich natürlich dan nicht umsetzen kann. (Noch nicht :-))

Lieben Gruß JENS (bald ist Wochenende) :-)

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

Kalle
Mitglied
Student


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

Beiträge: 706
Registriert: 14.04.2002

erstellt am: 25. Feb. 2005 06: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 Nur für Jens S. 10 Unities + Antwort hilfreich

Aheu Jens,

einerseits kannst Du allen Objekten die Deklaration
'DIM entx As Object' verpassen. Oder du kannst, um auf die SolidWorks Geschichten direkt zugreifen zu können, unter Projekt/Verweise die SolidWorks Type Libraries mit einbinden. Dann stehen Dir solche Sachen wie
'DIM entx as SldWorks.Face2' zur Verfügung.
Die zweite Variante bringt auch dahingehend was, als dass Du dann in der VB-Oberfläche im Objektbrowser (F2 drücken) die SolidWorks eigenen Sachen angezeigt kriegst und auch IntelliSense damit arbeiten kann (d.h., dass mögliche Eigenschaften oder Methoden in diesem kleinen Auswahlfenster angezeigt werden, in dem z.b. auch bei Textfeldern dann die Sachen wie .Text usw. angezeigt werden).

Ich hoffe, das war jetzt nicht zu verwirrend, ich bin noch nicht richtig wach (schau halt mal jemand auf die Uhr  ).

Bis dann,
Kalle

------------------
-----------------------------------------
Es gibt immer mehr Lösungen als Probleme.

[Diese Nachricht wurde von Kalle am 27. Feb. 2005 editiert.]

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

Jens S.
Mitglied
Dipl.-Ing.


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

Beiträge: 55
Registriert: 23.02.2005

erstellt am: 28. Feb. 2005 10: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

Moin Jungs,

Kalle, ich habe deine Antwort gelesen :-) Danke für die Info. Ich glaube, ich brauche nur noch wenige Wochen, um sie zu verstehen :-)
Habe schon einige sehr gute Tipps von Euch allen verwerten können! Leider bin ich selber NOCH nicht in der Lage anderen Benutzern aus diesem Forum Helfen zu können, aber ich arbeite dran!

Trotzdem noch eine Frage:
Besteht die Möglichkeit bei einem Maus-Klick auf einen Punkt (der vorher definiert auf ein Modell gegeben wurde) diesen automatisch in eine VB-Tool zu importieren? Dabei meine ich nicht, das ich erst das Tool anwerfen muss um den Punkt auszulesen, sondern, dass dieser "automatisch" an mein Tool gesendet wird. So nach dem Motto, das mein Tool auf eine Punkt-Koordinaten-Übergabe von SolidWorks warte!

Lieben Gruß JENS

PS: Wünsche allen einen guten Wochenstart!!

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

Kalle
Mitglied
Student


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

Beiträge: 706
Registriert: 14.04.2002

erstellt am: 28. Feb. 2005 11: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 Jens S. 10 Unities + Antwort hilfreich

Aheu Jens,

du kannst dein Tool im Hintergrund laufen lassen und das PartDoc Event 'ModifyNotify' nutzen (in Baugruppen und Zeichnungen ist es komischerweise NewSelectionNotify). Das schickt dann Deinem Tool die Nachricht, dass irgendetwas selektiert worden ist. Was Du dann mit dieser Information anstellst ist dann Deine Sache.

Dazu deklarierst Du

Dim swApp As SldWorks.SldWorks
Dim Model As SldWorks.ModelDoc2
Dim WithEvents Part As SldWorks.PartDoc
Dim WithEvents Assy As SldWorks.AssemblyDoc

Part und Assy kriegen ihre zuweisungen wie gewohnt (musst jetzt halt je nach Art des offenen Dokumets das richtigen nehmen - Fallunterscheidung mittles Model.GetType siehe API-Hilfe)

Weiterhin gibt's dann in Deinem Programm die FUNKTIONEN (keine Subs!)

Private Function Part_ModifyNotify() As Long

und

Private Function Assy_NewSelectionModify() As Long

(und hier musst Du dann mit der Selektion arbeiten)

Ich hoffe das hilft Dir etwas weiter. Ich kann keine 100%ige Garantie auf die Richtigkeit meiner Angaben geben, da ich bisher auch nur ein einziges Mal mit Events gearbeitet habe und meine etwas anderes gemacht haben. Ich hab mich aber an meinem alten Programm orientiert (zu finden unter [URL}http://ww3.cad.de/foren/ubb/Forum2/HTML/006719.shtml[/URL]) Da kannst Du auch mal reinschauen. Leider hat die API-Hilfe meines Wissens nach kein Beispiel für die Event-Geschichten, aber auf der Solidworks homepage habe ich mal irgendwo ein Beispielprogramm gefunden, welches alle möglichen Events abfängt und infos drüber ausgibt. Vielleicht findest Du es (irgendwo im API/Downloadbereich).

Bis dann,
Kalle

------------------
-----------------------------------------
Es gibt immer mehr Lösungen als Probleme.

[Diese Nachricht wurde von Kalle am 28. Feb. 2005 editiert.]

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

Jens S.
Mitglied
Dipl.-Ing.


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

Beiträge: 55
Registriert: 23.02.2005

erstellt am: 01. Mrz. 2005 11:27    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 Leuts,

danke Kalle für deine Info. Jetzt weiss ich zumindest schon einmal, wo nach ich suchen muss :-) Auch wenn Ihr mich im Moment VB6/API-mässig intellektuell überfordert :-) Aber man wächst ja mit den Ansprüchen!

Gruß an ALLE!

JENS

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