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

Erstellen Sie eine Auswahl basierend auf einem Kriterium

  • Ersteller Ersteller BuDuS
  • Erstellt am Erstellt am

BuDuS

Guest
ich versuche, vba befehle zu tun, um eine auswahl basierend auf einem bestimmten kriterium zu erstellen.

z.b. "nach einer bestimmten schicht auswählen"; insbesondere möchte ich, dass der benutzer die möglichkeit hat, die geometrien nach dem merkmal des vorgewählten auszuwählen (oder, wenn er nichts ausgewählt hat, lassen sie ihn nach ... ein wenig wie viele der autocad-befehle auswählen).

ich kann schon mit solchen sachen ein "selektionset" erstellen:
Code:
' seleziona per layer
Public sub selectlayer()
dim acobject als objekt
acobject = udagetselect

objselcol = thisdraw.selectionsets
für jeden objselset in objselcol
objselset.name = "udapower" dann
objselcol.item("udapower"). Löschen
Ausfahrt für
Ende
ANHANG

fehler goto ausgang_sub

dim objlayername als string
objlayername = acobject.layer

dim ssett als acadselectionset

set ssett = thisdrawing.selectionsets.add("udapower")
dim filtertype(0 bis 1) als ganze Zahl
dim filterdata(0 bis 1) als Variante
'filtertype(0) = 0: filterdata(0) = "line"
filtertype(0) = 8: filterdata(0) = objlayername
filtertype(1) = 8: filterdata(1) = objlayername
ssett.select acselectionsetall, , filtertype, filterdata

Wenn ssett. Anzahl < 1
msgbox "errore: non è stato selezionato nulla.", vb kritisch, "auswahlfehler"
andere
ssett.highlight true
Ende

ausstieg_sub:
Endteil
der anruf:
Code:
acobject = udagetselect
es ist notwendig, das vorgewählte objekt zurückzugeben (diejenige, die ausnutzt, um die nächste auswahl zu erstellen, nach ihren merkmalen, in diesem fall der schichtname) oder in jedem fall wählen sie eine an den benutzer.
was ist das problem?
hatte, die geometrien sind als ausgewählt dargestellt, aber in der tat sind sie nicht: jeder befehl, den ich nehme - manuell -erfolgreich ist, wie ich nichts ausgewählt hatte.
auswahl funktioniert, wenn ich es mit einer vba-routine benutze und dies deutet darauf hin, dass der code oben irgendwie eine auswahl erstellt.
hat jemand ein recht, mir zu geben, um sicherzustellen, dass er diese "interne zu vba" auswahl in etwas umwandeln kann, das den benutzer benutzen kann?
 
vielleicht ist es ein wenig orthodoxes system, aber eine lösung für das problem, das ich gefunden habe:
Code:
thisdraw.sendcommand "_.pselect" & vbcr & "p" & vbcr
nachdem ich die auswahl mit der vorherigen postmethode erstellt habe, können sie sie "wie sie müssen" mit einer "vorherigen auswahl" auswählen.

wenn sie jedoch eine elegantere lösung haben, beleidige ich sie sicher nicht:finger:
 
um dann einen filter zu wählen, können wir auch gruppen verwenden!
Code:
dim sset1 als acadselectionset
dim sset als acadselectionset

dim element als acaderity
dim element1 als acaderity

dim filter type(0) als ganze zahl
Dim Filterdaten(0) als Variante

dim getprop als String

fehlerwiederaufnahme
' sie löschen die auswahl, wenn es existert
wnn nicht isnull (dies draw.selectionsets.item("element") danne
set sset = diese Zeichnung.selectionsets.item("element")
sset. Löschen
Ende

wnn nicht isnull(diese Zeichnung.selectionsets.item("element1")) dann
set sset1 = thisdrawing.selectionsets.item("element1")
sset1.delete
Ende

set sset = thisdraw.selectionsets.add("element")

set sset1 = diese Zeichnung.selectionsets.add("element1")



dim groupcoll als acadgroups
set groupcoll = diese Zeichnung. Gruppen

' gibt es eine kleine Dimension still bennnt "test" in aktuellen zeichnung
dim testgroup als acadgroup
set testgroup = groupcoll.add("filtro_selezione")


sset.selectonscreen

getprop = sset.item(0).

Filtertyp(0) = 8
Filterdaten(0) = getprop

set sset1 = diese Zeichnung.selectionsets.add("element1")
sset1.select acselectionsetall, , Filtertyp, Filterdaten


redim appendobjs(0 to sset1.count - 1) als Akadenität
zahl der zahl
für i = 0 bis sset1.count - 1
set appendobjs(i) = sset1.item(i)
ANHANG

Fügen sie das arraye von objekten zur gruppe hinzu
testgroup. appenditems appendobjs


Diese zeichnung. setvariable "pickstyle", 1

'qui ovviamente devi selezionire un elemento del gruppo, anche quello precedentemente selezionato come matrix
es ist ein teil des codes genommen und warf sie...
es ist zu klären, aber es könnte funktionieren. .

nur, um ihnen die idee zu geben
 

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