| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: mehrere Objekte wählen!!! (2269 mal gelesen)
|
Einstein Mitglied Zerspanungsmechaniker-Drehtechnik
Beiträge: 94 Registriert: 20.02.2005
|
erstellt am: 17. Dez. 2005 16:18 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich bins noch mal, hab doch noch eine Frage. Vor wenigen Minuten gab mit "startrek" bereits eine Antwort (Siehe vorherigen Eintrag von mir). Doch eine Frage hab ich noch: Die Routiene die Sie mir als Beispiel gaben funktioniert wunderbar, doch wie programmiert man das so, dass man mehrere Volumenkörper in AutoCad markiert und sie anschließend mit ENTER bestätigt??? In der beispiel Routiene kann man ja nur ein Volumenkörper wählen, nach dessen Markierung, der Code automatisch weiter "geht". ------------------ MfG A. Einstein P.S. Rechtschreibefehler sind gewollt und dienen der allgemeinen Belustigung! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 17. Dez. 2005 16:39 <-- editieren / zitieren --> Unities abgeben: Nur für Einstein
Hallo Du nochmal;-) hätts wissen müssen, also wenn Du mehrere Objekte wählen willst, geht das mit dem Object 'AcadSelectionSet'. Setz Dir mal einfach ein F1 auf das Schlüsselwort, oder suche hier mal nach Selectionset, hier nur ein kurzer Ansatz:
Code:
Sub xxx() Dim sset As AcadSelectionSet Dim ent As AcadEntity Set sset = ThisDrawing.SelectionSets.Add("MySet") sset.SelectOnScreen For Each ent In sset 'if typename(ent) ... then machwas Next 'am Ende sset löschen sset.Delete End Sub
Gruss Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
Beiträge: 1521 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 17. Dez. 2005 16:42 <-- editieren / zitieren --> Unities abgeben: Nur für Einstein
Hallo Einstein, du musst ein Selectionset anlegen. Dann kannst du dieses mit einer Userasuwhal füllen und auswerten. Im Beispiel wird eine Einschränkung für den Anwender mitgegeben. Er kann nur Blöcke auswählen. Wenn du anstatt "Insert" deinen gewünschten Elementtyp engibst, kann er nur diesen Elementtyp auswählen. Läßt du xType und xData weg, kann er alle Elemente wählen. Code:
Dim ogac_Sset as acadselectionsetSub Auswahl() Dim olac_Entity as AcadEntity Dim xType(0) As Integer Dim xvalue(0) As Variant ' Selektionset anlegen On Error Resume Next Set ogac_Sset = ThisDrawing.SelectionSets("MySelset") If Err.Number Then ' Wenn noch nicht vorhanden Set ogac_Sset = ThisDrawing.SelectionSets.Add("MySelset") End If on error goto 0 ' Filter setzen ' Dann kann nur der gewünschte Elementyp gewählt werden xType(0) = 0 xvalue(0) = "Insert" ogac_Sset.SelectOnScreen xType, xvalue for each olac_Entity in ogac_Sset ' Auswertung debug.print olac_Entity.layer next olac_Entity End Sub
Stelli ------------------ Warum lisp'eln wenn's auch anders geht. [Diese Nachricht wurde von Stelli1 am 17. Dez. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Einstein Mitglied Zerspanungsmechaniker-Drehtechnik
Beiträge: 94 Registriert: 20.02.2005
|
erstellt am: 17. Dez. 2005 19:49 <-- editieren / zitieren --> Unities abgeben:
Danke für die nützlichen Antworten, ich hab die guten Vorschläge gleich umgesetzt und siehe da, es funtioniert. Doch wie ich es bereits kenne, kommt nach der Lösung des einen Problems gleich das nächste, welches wie folgt aus sieht: Als ich meine fertige Routine in ein UserForm einbetten wollte, wo man auf einen Button klickt, welcher "Objekte auswählen" heißt, meldet mit AutoCad nach klicken des Buttons "AutoCad Fenster ist nicht sichtbar!". Ich vermute das ich nicht auf den AutoCad Bildschirm wechseln kann, da das UserForm bereits angezeigt wird. Nun die Frage, wie löse ich dieses Problem? Ich hab bereits nach Eigenschaften des UserForms gesucht in denen man das UserForm deaktiviert, aber das funktioniert nicht! Bitte helft mir!!! ------------------ MfG A. Einstein P.S. Rechtschreibefehler sind gewollt und dienen der allgemeinen Belustigung! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
Beiträge: 1521 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 17. Dez. 2005 20:40 <-- editieren / zitieren --> Unities abgeben: Nur für Einstein
|
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 17. Dez. 2005 20:48 <-- editieren / zitieren --> Unities abgeben: Nur für Einstein
ungetestet ..., man kann eine UF in zweierlei Arten aufrufen, einmal modal=true [default], d.h. solange die Form aktiv ist, hast du keinerlei Interaktivität zur Acad-Oberfläche, dies ist gegeben bei:
Code:
Userform1.show '[1==modal==default bei ohne Angabe]
Du kannst die UF aber [ab vb6.0 bzw. acad2000i] nonmodal aufrufen, d.h. währenddessen die Form da ist, kannst du Usereingaben machen. Dann Modal auf False [0] setzen:
Code:
Userform1.show 0 '[oder statt 0 - false]
Ich hoffe ich hab jetz nix verdreht und darauf in etwa lief die Frage hinaus;-)Gruss, Nancy -- Microsoft's definition of a boolean: TRUE, FALSE, MAYBE "Embrace and extend"...? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 17. Dez. 2005 21:27 <-- editieren / zitieren --> Unities abgeben: Nur für Einstein
Hallo nochmal, Stelli hat Recht, mit me.Hide und .show gehts auch, da ein .hide die Form im Speicher behält, bei nem umload me ist 'Feierabend';-) @stelli: immer wieder nett im Duett :-) lg Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|