CATIA-VBA-Messen von einem Benutzer ausgewählte Zeile(N)/spline

Ich versuche, die Länge der Benutzer-ausgewählten Zeilen/splines

Dies ist der code, den ich verwende, um die Benutzer wählen Ihre Zeilen:

Dim USel As Selection
Dim USelLB
Dim InputObject(0)

InputObject(0) = "AnyObject"
Set USel = CATIA.ActiveDocument.Selection
Set USelLB = USel

USel.Clear
USelLB.Clear

Linestomeasure = USelLB.SelectElement3(InputObject, "Select objects to list names", True, CATMultiSelTriggWhenUserValidatesSelection, False)

Linestomeasure ist ein public variable, in der mainsub ich habe versucht zu Messen Linestomeasure mit dem folgenden code:

Dim pd1 As PartDocument
Dim a As Object
Dim c As Reference

a = TrimLines.Item(1)
c = pd1.Part.CreateReferenceFromObject(a)

Dim Mea1 As Measurable
Dim TheSPAWorkbench As SPAWorkbench
Set TheSPAWorkbench = pd1.GetWorkbench("SPAWorkbench")
Set Mea1 = TheSPAWorkbench.GetMeasurable(c)

Aber wenn ich den code ausführen a = trimLines.Item(1) wird hervorgehoben in den debugger mit der Fehlermeldung „Objekt Erforderlich“.

Hat jemand eine Idee, wie ich das ändern kann, ist mein code, so dass ich die Länge der Zeile als eine variable, mit der ich arbeiten kann ? Oder einfach einen anderen Weg zu gehen über das, was ich versuche zu tun?

InformationsquelleAutor MRH_USER | 2017-07-03



One Reply
  1. 0

    Bearbeitet beantworten zu reflektieren Kommentar Balg

    Sieht aus wie weisen Sie die falsche Art von Variablen, um die USelLB.SelectElement3 und auch missunderstanding, wie es tatsächlich funktioniert.

    Den Selection.SelectElement3 gibt eine String reflektiert, ob die Auswahl war erfolgreichen oder nicht.

    Den Object werden aus der Selection ist innerhalb der Selection.Item(Index)

    Dein code sollte so etwas wie dieses:

    Dim PD1 as PartDocument
    Dim Sel 'as Selection 'Sometimes it is needed to comment the selection to use the .SelectElement3 method
    Dim InputObjType(0)
    Dim SelectionResult as string    
    Dim LineToMeasure as AnyObject    
    Dim I as Integer    
    Dim SpaWorkbench as SPAWorkbench
    Dim Measurable as Measurable
    
    InputObjType(0) = "AnyObject"
    
    'set PD1 = Catia.ActiveDocument
    set Sel = PD1.Selection
    Set TheSPAWorkbench = pd1.GetWorkbench("SPAWorkbench")    
    
    Sel.Clear
    SelectionResult= Sel.SelectElement3(InputObject, "Select objects to list names", True, CATMultiSelTriggWhenUserValidatesSelection, False)
    
    If SelectionResult = "Ok" or SelectionResult = "Normal" then 'Check if user did not cancel the Selection
        For i = 1 to Selection.Count
            Set LineToMeasure = Sel.Item(i).Value
            set Measurable = SpaWorkbench.GetMeasurable(LineToMeasure)
    
            'Measure whatever you need here.
        Next
    End If

    Beachten Sie, dass die Verwendung der AnyObject – Typ-filter verursachen kann der Benutzer wählen Sie unerwünschte Objekte. Sie sollte die Verwendung eines speziellen filters.

    • Ich bekomme immer noch die gleiche „Objekt Erforderlich“ Fehlermeldung
    • Hast du TrimLines variable richtig, bevor es zu benutzen? Der code, den Sie geschrieben zeigt es nicht.
    • Sorry, TrimLines ist Linestomeasure ich habe die variable in einer, als ich den post und nicht die der anderen. Wenn ich TrimLines als Public Trimlines und verwenden TrimLines = USelLB.SelectElement3(InputObject, "Select objects to list names", True, CATMultiSelTriggWhenUserValidatesSelection, False) dann bekomme ich den ursprünglichen Fehler, Wenn ich Public TrimLines as Selection und verwenden Set TrimLines = USelLB.SelectElement3(InputObject, "Select objects to list names", True, CATMultiSelTriggWhenUserValidatesSelection, False) dann bekomme ich die „Objekt Erforderlich“ Fehlermeldung auf dem SelectElement3 line
    • Ich habe soeben meine Antwort.. Bitte, überprüfen Sie es heraus.
    • Das funktionierte, DANKE! und danke für das erklären, wie SelectElement arbeiten, das macht viel mehr Sinn jetzt. Gibt es eine Ressource, die erklärt, wie VBA-Funktionen und-Befehle funktionieren? Wie in allen meinen googeln die letzten paar Tage konnte ich nichts finden, was wirklich hilfreich zu erklären, wie selectelement funktioniert.
    • Es ist eine CATIA-API-Dokumentation auf der CATIA-Installation Ordner. Es kann etwas sein wie (\code\bin\V5Automation.chm).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.