Hallo,
wenn ich es richtig verstanden habe, willst Du in einer Zeichnung aus dem Modell - was in einer Ansicht auf dieser Zeichnung dargestellt ist - benutzerdefinierte Eigenschaften auslesen.
Ich hatte da mal ein Tool erstellt, wo wir auch so etwas machen.
Vorausgesetzt wird, das bekannt ist, wie diese benutzerdefinierte Eigenschaften heißen. Wir lesen die benutzerdefinierte Eigenschaften konfigurationsspezifisch aus, sollen es nur die benutzerspezifischen (für alle Konfigurationen gültigen) Eigenschaften sein, heißt de betreffende Befehl bloß CustomInfo (glaub ich jedenfalls - schau mal in die API-Help) und es kann die Ermittlung des Konfigurationsnamen und das Umschalten auf die betreffende Konfiguration wegfallen.
Wir verwenden stets die erste Ansicht, willst Du eine andere auswählen, mußt erst zu dieser wechseln. Leider gibt es (glaub ich) nur GetNextView, sodaß Du erst die (gehighlightete) aktive Ansicht ermitteln mußt und dann sooft GetNextView aufrufen bis Du bei der ausgewählten Ansicht bist.
Die generelle Vorgehensweise ist wie folgt:
- gewünschte Ansicht aktivieren,
- Modellnamen (ggfs. Konfigurationsnamen) ermitteln
- Modell öffnen (unsichtbar, im Hintergrund)
- (ggfs. anschließend zur betreffenden Konfiguration wechseln)
- gewünschte Eigenschaften auslesen
- Modell schließen
- Zeichnung wieder aktivieren (nicht vergessen)
im weiteren ein kleiner Ausschnitt aus zur Illustration in VB (nicht steinigen - bin Konstrukteur, kein Programmierer - vielleicht nicht schön programmiert, funktioniert aber):
If (Model.gettype() = swDocDRAWING) Then
Dim ModName As String
Dim RefModel As Object
Dim ConfigName As String
Set View = Model.GetFirstView
Set View = View.GetNextView
ConfigName = View.ReferencedConfiguration
ModName = View.GetReferencedModelName()
If InStr(1, ModName, ".sldprt", 1) Then
Set RefModel = swApp.OpenDoc(ModName, swDocPART)
End If
If InStr(1, ModName, ".sldasm", 1) Then
Set RefModel = swApp.OpenDoc(ModName, swDocASSEMBLY)
End If
retval = RefModel.ShowConfiguration(ConfigName)
'RefModel.Visible = True
If (RefModel.gettype() = swDocASSEMBLY) Then
retval = RefModel.ResolveAllLightWeightComponents(True)
End If
retval = RefModel.GetMassProperties()
' Gewicht
txtSfGewicht = Format(retval(5), "#0.00")
' Benennung
txtSfBenennung.Text = RefModel.CustomInfo2(ConfigName, dfNameBenennung)
' Identnummer
txtSfIdentnummer.Text = RefModel.CustomInfo2(ConfigName, dfNameIdentnummer)
' Zeichnungsnummer
txtSfZeichnungsnummer.Text = RefModel.CustomInfo2(ConfigName, dfNameZeichnungsnummer)
' Konstrukteur
txtSfKonstrukteur.Text = RefModel.CustomInfo2(ConfigName, dfNameKonstrukteur)
' Datum
txtSfDatum.Text = RefModel.CustomInfo2(ConfigName, dfNameDatum)
swApp.CloseDoc RefModel.GetTitle()
swApp.ActivateDoc Model.GetTitle()
End If
hoffe das hilft
mfg uc
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP