• Dieses Forum ist die maschinengenerierte Übersetzung von www.cad3d.it/forum1 - der italienischen Design-Community. Einige Begriffe sind nicht korrekt übersetzt.

Wählen Sie die Teile eines Satzes mit vba

  • Ersteller Ersteller Adahm
  • Erstellt am Erstellt am

Adahm

Guest
Weiß jemand, ob Sie einen Teil eines Multi-Level-Sets in vba auswählen können?
mit ilogic gibt es die . Wählen Sie den Befehl mit der folgenden Syntax:

odocdef.selectset.select (oocc)

wobei odocdef der Axiem und oocc die Komponente des zu wählenden Axiems ist.
Aber es gibt zwei Probleme.
  1. Ich kann nicht denselben Befehl in vba finden
  2. der Befehl wählt nur die Komponenten der ersten Ebene aus.
Es scheint, dass es im odocdef der vollständige Weg aus der ersten Gruppe dient, die die zweite und so weiter enthält, aber ich weiß nicht, wie es zu tun ist.

der verwendete Code I ist wie folgt:
Code:
syntaxeditor code snippetsub main()
dim assydoc als Montagedokument
dim compdef als Komponentedefinition
Dim compoccursence als Komponenteoccurence

assydoc = thisapplication.activedocument

Starten Sie die Exploration von aktiven Axiemen
Erkundungskomponenten (assydoc.Komponentendefinition)
Ende

'Recurring-Funktion, um die Hierarchie der Komponenten zu erkunden
Subexplorationskomponenten(compdef als Komponentedefinition)
Dim i als ganze Zahl
für i = 1 zu compdef.occurrences.count
compoccurrence = compdef.occurrences.item(s)
wenn compoccurrence.definitiondocumenttype = 12291 dann ' iscomponentdefinition dann
' wenn es sich um eine definierte Komponente handelt (kann andere Komponenten enthalten)
Erforschungskomponenten (compoccurrence.definition)
♪
' messagebox.show("Teil ausgewählt: " & compoccurrence.name)
Call Partselection (compdef, compoccurrence)
Ende
Ich bin der
Ende

Unterteile (Gott, oocc)
dim odocdef als Dokument
odocdef = odef.docu
dim odococc als Dokument
odococc = oocc.definition.document

dim opropset als Immobilienset
opropset = odococc.propertysets.item("Erfinder definierte Eigenschaften")

Dim oprop als [Property]auf Fehlerwiederaufnahme
oprop= opropset.item("foratura")

wenn oprop.value = "sì" dann
odocdef.selectset.select (oocc)
Ende
Endteil
in meinem Fall nur die Teile, die bestimmte Eigenschaften haben, aber das ist ein Detail.
Ich stelle eine kleine Reihe von Beispielen für diejenigen an, die keine zwei Tests gemacht haben.
in der Datei zusammen001 gibt es bereits den oben dargestellten Code.
Dateiversion: Erfinder 2023.

Danke.
 

Anhänge

vba-Code;
Ich habe die Definition des Selektionssatzes auf die erste Ebene verschoben und die Referenz auf die wiederkehrenden Unterteile übergeben, an die Nase jedes Mal, wenn Sie eine Selektion in der Unter "died there" wie die anderen lokalen Variablen neu definieren, aber sie laufen, und ich sah nicht gut.
Wie auch immer, ich dachte, es funktionierte, lass es mich wissen.

(Anmerkung: die Korrektur der Syntax für vba)

Code:
Public sub testselectadham()
' imposta il riferimento al documento attivo.
' questo presuppone che il documento attivo sia un assieme
dim odoc als Erfinder.
set odoc = thisapplication.activedocument

ottiene la definizione del parte d'assieme
dim ocompdef als Erfinder.komponentendefinition
ocompdef = odoc.komponentendefinition

dim oselectset als selectset
oselectset = odoc.selectset

dim smsg als String
dim ileafnodes as long
dim isubassemblies als lang

' definisci il nome della iproperty e il valore da cercare
dim ipropertyname als String
ipropertyname = "foratura" '"trattamento"
dim ipropertyvalue als String
ipropertyvalue = "sì" "colorare"

ottiene tutte le occorrenze dalla definizione del partizipation per il documento di tipo
dim ocompocc als Komponenteoccurence
für jede Ocompocc in ocompdef.occurrences
' controlla se è un'occorrenza figlia (nodo neblia)
wenn ocompocc.suboccurrences.count = 0 dann
msgbox ("padre:" & ocompocc.name)
Call Partselection(ocompdef, ocompocc, ipropertyname, ipropertyvalue, oselectset)
ileafnodes = ileafnodes + 1
andere
msgbox (ocompocc.name)
isubassemblies = isubassemblies + 1
Call processallsubocc_adahm(ocompocc, _
smsg!
ileafnodes, _
isubassemblies, _
ipropertyname, _
ipropertyvalue, _
oselectset)

Ende
Nächste

msgbox ("n. di nodi neglia : " + cstr(ileafnodes))
msgbox ("numero di sottogruppi: " + cstr(isubassemblies))
Endteil

' questa funzione viene chiamata in modo ricorsivo per l'elaborazione dei sottoassiemi
' per iterare l'intero albero degli assiemi.
privat sub processallsubocc_adahm(val ocompocc als komponenteoccurrence, _
byref smsg als String, _
byref ileafnodes so lange, _
byref isubassemblies so lange, _
byref ipropname als String, _
byref ipropval als String, _
byref oselectset als selectset)

dim osubcompocc als Komponente
für jede osubcompocc in ocompocc.suboccurrences
' controlla se è un'occorrenza figlia (nodo neblia)
wenn osubcompocc.suboccurrences.count = 0 dann
msgbox ("figlio: " & osubcompocc.name)
Call Partselection(ocompocc.definition, osubcompocc, ipropname, ipropval, oselectset)
ileafnodes = ileafnodes + 1
andere
smsg = smsg + osubcompocc.name + vbcr
isubassemblies = isubassemblies + 1

Call processallsubocc_adahm(osubcompocc, _
smsg!
ileafnodes, _
isubassemblies, _
Ipropname, _
Ipropval, _
oselectset)
Ende
Nächste
Endteil

Subpartelection(odef, oocc, ipropname, ipropval, oselectset als selectset)
dim odocdef als Dokument
odocdef = odef.docu
dim odococc als Dokument
odococc = oocc.definition.document

msgbox (odocdef.displayname & " - " & odococc.displayname & " - (partselection)")

' ottieni il selectset attivo
'dim oselectset als selectset
'set oselectset = odocdef.selectset
msgbox ("select set: " & oselectset.count)

dim opropset als Immobilienset
set opropset = odococc.propertysets.item("Erfinder definierte Eigenschaften")

dim oprop als Eigentum
'on Error Lebenslauf
set oprop= opropset.item(ipropname)
"messagebox.show(">" & oprop.name & ": " & oprop.value & "<")

wenn oprop.value = ipropval dann
msgbox (">" & oprop.name & ": " & oprop.value & "<" & vbcrlf & "dovrebbe selezionare :" & odococc.displayname)
'messagebox.show("sono passato di qui, quindi significa che oprop.vaule = ipropval e adesso devo selezionare la parte")
Anruf oselectset.select(oocc)
Ende
Endteil
 

Statistik des Forums

Themen
58.521
Beiträge
499.056
Mitglieder
104.110
Neuestes Mitglied
ChristianR

Zurzeit aktive Besucher

Keine Mitglieder online.
Zurück
Oben