Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Inventor .NET
  Objekte im SelectSet identifizieren

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
Autor Thema:   Objekte im SelectSet identifizieren (2016 mal gelesen)
Manfred Zirk
Mitglied



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

Beiträge: 509
Registriert: 01.11.2002

IV2012 WIN 7 x64 SP1

erstellt am: 12. Dez. 2011 20:03    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,

ich möchte feststellen, was für Objekttypen sich in einem SelectSet befinden.
Leider komme ich damit nicht weiter, weil die Objekte im Selectset alle vom Typ Object sind.
Wie erhalte ich einen Hinweis, was für ein Inventor-Objekt sich dahinter verbrigt?

Grüße

Manfred

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik


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

Beiträge: 1571
Registriert: 15.11.2006

Windows 7 x64, AIS 2014

erstellt am: 13. Dez. 2011 20:20    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 Manfred Zirk 10 Unities + Antwort hilfreich

Hallo

Ich mach's immer so:

Code:

For Each oSelectedObject In myInventor.ActiveDocument.SelectSet
     If TypeOf oSelectedObject Is SketchedSymbol Then
          ...
     End If
Next

Keine Ahnung ob das wieder codetechnisch oberpfuibäh ist, funktioniert aber.

------------------
MfG
RK


EDIT: Merke grade das ich wieder an der Frage vorbei geantwortet habe. Schau dir mal Object.GetType an.

[Diese Nachricht wurde von rkauskh am 13. Dez. 2011 editiert.]

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

daywa1k3r
Moderator
Softwareentwickler




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

Beiträge: 3497
Registriert: 01.08.2002

Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570
Laptop: Alienware m17x
Win7, Inventor2012

erstellt am: 13. Dez. 2011 20:37    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 Manfred Zirk 10 Unities + Antwort hilfreich

Müsste auch funktionieren?

Code:

foreach (Inventor.SketchedSymbol oSymbol in myInventor.ActiveDocument.SelectSet)
...
next

------------------
Grüße Igor

FX64 Software Solutions - Inventor Tools
FX64 LambdaSpect - Lichtsimulation mit Autodesk Inventor

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

Manfred Zirk
Mitglied



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

Beiträge: 509
Registriert: 01.11.2002

IV2012 WIN 7 x64 SP1

erstellt am: 14. Dez. 2011 11:12    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,

Danke für die Antworten.

Die Objekte im SelectSet sind alle vom Typ Object.
Das ist ja der Punkt.
In VB.Net muss alles typsicher sein, das heisst ich habe keine Datentyp Variant, sondern muss korrekt konvertieren - also Object z.B. in AssemblyComponentDefinition.
Bei mir hapert es daran, das ich im Grunde nicht weiß, was das für native Objekte sind, die der Benutzer ausgewählt hat.

Eigentlich möchte ich folgendes machen:
Im Contextmenü einen Button anzeigen wenn z.B.
In einem Assemblydocument der Benutzer ein Bauteil ausgewählt hat.
Dazu wäre nötig, zu wissen, als was für ein Objekttyp dieses Bauteil im Assembly repräsentiert wird.

In einer Zeichnung auf einem Blatt liegt unter jeder Ansicht auch die Quelldatei. (Auswählbar im Browser).
Was ist das für ein Objekttyp in einer idw?

Es mangelt mir also an Wissen um die verwendetn Objekttypen.

Grüße

Manfred

Edit:
Kann ich im Inventor VBA mit Variant so eine Konvertierung machen?
Dann könnte ich so rausfinden, was für ein Objekt der User selektiert hat.

[Diese Nachricht wurde von Manfred Zirk am 14. Dez. 2011 editiert.]

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik


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

Beiträge: 1571
Registriert: 15.11.2006

Windows 7 x64, AIS 2014

erstellt am: 14. Dez. 2011 20:08    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 Manfred Zirk 10 Unities + Antwort hilfreich

Hallo

Dann bastel doch ein kleines Script in dein Programm das auf's onSelect-Event reagiert und dort baust du eine MessageBox ein deren Text aus

Code:

Dim oSelectedObject as Object
oSelectedObject = SelectSet.Item(1)
Dim sText as String
sText= oSelectedObject.GetType.ToString

gebildet wird. Dann solltest du bei jedem selektierten Objekt eine Meldung mit dem Objekttyp zu sehen bekommen. Wenn du die Typen hast, kannst du in deinem eigentlichen Script z.B. in einer Select-Case-Anweisung der Reihe nach prüfen, ob dein Kontextmenü erweitert werden muß. Soweit mal die Theorie. :D

Oder in den VBA-Editor das einfügen:

Code:
Public Sub GetSingleSelection()

    ' Get a feature selection from the user
    Dim oObject As Object
    Set oObject = ThisApplication.CommandManager.Pick(kAllEntitiesFilter, "Pick a feature")

    MsgBox "Picked: " & oObject.Type

End Sub


Liefert zu jedem selektierten Objekt den ObjectTypeEnumerator.

------------------
MfG
RK

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

Manfred Zirk
Mitglied



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

Beiträge: 509
Registriert: 01.11.2002

IV2012 WIN 7 x64 SP1

erstellt am: 14. Dez. 2011 22:03    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,

das funktioniert soweit:

Code:

Public Sub Test()
    If ThisApplication.ActiveDocument.SelectSet.Count <> 1 then
        Exit Sub
    End if 

    Dim aaa As Variant
    aaa = ThisApplication.ActiveDocument.SelectSet.Item(1).Type
    MsgBox ("Type : " & aaa)

End Sub


Leider bekomme ich als Objekttyp nur eine Nummer zurück.
Im Objektbrowser kann ich aber danach nicht suchen.

Grüße

Manfred

[Diese Nachricht wurde von Manfred Zirk am 14. Dez. 2011 editiert.]

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik


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

Beiträge: 1571
Registriert: 15.11.2006

Windows 7 x64, AIS 2014

erstellt am: 14. Dez. 2011 22: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 Nur für Manfred Zirk 10 Unities + Antwort hilfreich

Hallo

Der Enumerator reicht eigentlich. Danach kann man auch prüfen.
Im Endeffekt muß du die Selektionsszenarien nachstellen, die der User machen kann und dabei den Enumerator auslesen. Oder du setzt in dem VBA-Script einen Haltepunkt und schaust dir in der Überwachung den Typ des selektierten Objektes an. Dort steht die Übersetzung des Enumerators.

------------------
MfG
RK

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

Manfred Zirk
Mitglied



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

Beiträge: 509
Registriert: 01.11.2002

IV2012 WIN 7 x64 SP1

erstellt am: 15. Dez. 2011 13:56    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 hab glaube ich den Dreh gefunden.
Man muss erkennen, was man eigentlich in der Browserleiste sieht.

Im wesentlichen der Inhalt des Documents mit seiner Hirachie und auch einige Objekte, die zum Browserpane gehören.

Anhand der Typnummer habe ich allerdings den echten Objekttyp nicht erkennen können.

Grüße

Manfred

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)2020 CAD.de | Impressum | Datenschutz