| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Doppelklick (1499 mal gelesen)
|
BerndE Mitglied Hochbautechniker
Beiträge: 557 Registriert: 05.07.2003
|
erstellt am: 10. Nov. 2005 11:02 <-- editieren / zitieren --> Unities abgeben:
Hi Forum, ich würde gerne bei Doppelklick (oder rechter Mausklick) auf einen Block ein userdefiniertes Formular öffnen. Läßt sich das per VBA realisieren (in Lisp kenne ich mich leider nicht aus) Bernd ------------------ Bernd 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: 10. Nov. 2005 12:27 <-- editieren / zitieren --> Unities abgeben: Nur für BerndE
Hallo Bernd, etwa so: Event auswerten.
Code:
Private Sub AcadDocument_BeginDoubleClick(ByVal PickPoint As Variant) Dim sset As AcadSelectionSet Set sset = fgac_SelectionSet sset.Clear sset.SelectAtPoint PickPoint If sset.Count > 0 Then ' Meldung ausgeben oder Form öffnen MsgBox sset(0).ObjectName & " wurde gewählt" End If End Sub Private Sub AcadDocument_BeginRightClick(ByVal PickPoint As Variant) End Sub Public Function fgac_SelectionSet() As AcadSelectionSet Dim tmpSelSet As AcadSelectionSet On Error Resume Next Set tmpSelSet = ThisDrawing.SelectionSets("MySelSet") If Err.Number <> 0 Then Set tmpSelSet = ThisDrawing.SelectionSets.Add("MySelSet") End If On Error GoTo 0 Set fgac_SelectionSet = tmpSelSet End Function
Stelli------------------ Warum lisp'eln wenn's auch anders geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BerndE Mitglied Hochbautechniker
Beiträge: 557 Registriert: 05.07.2003
|
erstellt am: 10. Nov. 2005 14:42 <-- editieren / zitieren --> Unities abgeben:
Hi Stelli, ja...so würde ich es mir vorstellen, nur... und soweit kam ich in der OH. aber wenn ich bei mir in der zeichnung ein doppelklick auf einen block mit attributen mache, geht das "attribute bearbeiten"-fenster auf. Ist es kein block, wird mir <ändern> <xref u. block in zeichn. bearbeiten> angeboten. bei text kann ich den text editieren und bei sonstigen elementen wird mir das eigenschaftsfenster angezeigt. bei rechtem mausklick geht das kontextmebü auf und wenn ich unter optionen das kontxtmenü abschalte, wird der letzt befehl wiederholt. wie stelle ich es an, daß Private Sub AcadDocument_BeginDoubleClick(ByVal PickPoint As Variant) oder Private Sub AcadDocument_BeginRightClick(ByVal PickPoint As Variant) auf bei den entsprechenden ereigissen auch abgearbeitet wird? bernd ------------------ Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9732 Registriert: 01.12.2003 AutoCAD 2.5 - 2022, LDD, MDT, RD, ADT, Civil Inventor AIP 4-11, 2008 -2022 Win 10
|
erstellt am: 10. Nov. 2005 15:13 <-- editieren / zitieren --> Unities abgeben: Nur für BerndE
Komisch, bei mir gings auf Anhieb. Ich hab Interesse halber mal Stelli's VBA Code in ein Dokumentenmodul Thisdrawing kopiert und sofort wurde mir der Objekttyp beim Doppelklick angezeigt, auch bei Blockreferenzen mit Attributen. Danach kam dann zusätzlich der EATTEDIT Dialog. Grundsätzlich kann man den Doppelklickmodus von AutoCAD ja auch abschalten. Code:
Befehl: DPKLIBEARB Doppelklick-Bearbeitungsmodus eingeben [Ein/Aus] <Ein>:
------------------ Mit freundlichem Gruß Udo Hübner 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: 10. Nov. 2005 16:22 <-- editieren / zitieren --> Unities abgeben: Nur für BerndE
Hallo, Zitat: Original erstellt von CAD-Huebner: ..VBA Code in ein Dokumentenmodul Thisdrawing kopiert und sofort wurde mir der Objekttyp beim Doppelklick angezeigt..
hast du den Code in ein normales Modul kopiert ? Stelli ------------------ Warum lisp'eln wenn's auch anders geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BerndE Mitglied Hochbautechniker
Beiträge: 557 Registriert: 05.07.2003
|
erstellt am: 10. Nov. 2005 16:43 <-- editieren / zitieren --> Unities abgeben:
|
BerndE Mitglied Hochbautechniker
Beiträge: 557 Registriert: 05.07.2003 Revit 2013 ACA 2012 deutsch BuildingOne 5.4.5 Win7 WindowsNetz
|
erstellt am: 10. Nov. 2005 17:12 <-- editieren / zitieren --> Unities abgeben:
Ja...ich danke euch beiden, habe es jetzt im Dokumentenmodul eingefügt und es reagiert wie gewünscht. nur wie kann ich jetzt das formualr aufrufen? einfach mit Load frmTuer frmTuer.Show funktioniert es nicht. da kommt der laufzeitfehler 424 "Objekt erforderlich" Außerdem: wenn ich den code im dokumentenmodul abspeicher, muss ich das dann bei jeder zeichung tun die ich öffne? das projekt kann ich ja allgemein mit autcad laden...aber wie bekomme ich deinen code dann in die zeichnung? eines noch...entschuldigt meine dusseligen frage. vba für access und excel habe ich gut drau. in acad hab ich zwar mal was programmiert, ist aber ewig her Bernd ------------------ Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BerndE Mitglied Hochbautechniker
Beiträge: 557 Registriert: 05.07.2003
|
erstellt am: 10. Nov. 2005 17:18 <-- editieren / zitieren --> Unities abgeben:
|
BerndE Mitglied Hochbautechniker
Beiträge: 557 Registriert: 05.07.2003 Revit 2013 ACA 2012 deutsch BuildingOne 5.4.5 Win7 WindowsNetz
|
erstellt am: 11. Nov. 2005 00:22 <-- editieren / zitieren --> Unities abgeben:
|
Stelli1 Moderator Verm.-Ing.
Beiträge: 1521 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 11. Nov. 2005 10:25 <-- editieren / zitieren --> Unities abgeben: Nur für BerndE
Hallo Bernd, du brauchst den Code nicht in verschiedene dvb verteilen. Die Ereignisbehandlung (Doppelclick etc.) gehört in das Modul Thisdrawing. Die Function fgac_SelectionSet() gehört in ein normales Modul (fgac_ = Funktion Global AutoCAD). In diesem Modul definiertst du ein globales Objekt "ogac_Entity".
Code:
Public ogac_Entity as AcadEntityPublic Function fgac_SelectionSet() As AcadSelectionSet Dim tmpSelSet As AcadSelectionSet On Error Resume Next ...
In der Ereignis Behandlung belegst du dieses Objekt mit deiner Auswahl
Code:
Private Sub AcadDocument_BeginDoubleClick(ByVal PickPoint As Variant) Dim sset As AcadSelectionSet Set sset = fgac_SelectionSet sset.Clear sset.SelectAtPoint PickPoint If sset.Count > 0 Then ' Meldung ausgeben oder Form öffnen ' MsgBox sset(0).ObjectName & " wurde gewählt" set ogac_Entity = sset(0) frmAuswertung.show 1 End IfEnd Sub
In die FrmAuswertung (unter Userformulare) kannst du dann im Event UserForm_Initialize kannst du dann die Auswertung vornehmen.Code:
Private Sub UserForm_Initialize() .... If ogac_Entity Is Nothing Then Exit Sub ogac_Entity.GetXData "IS_VBATOOL", xdataType, xdataValue If VarType(xdataType) = vbEmpty Then Me.Caption = "Keine Information zur Linie" Else If UBound(xdataValue) = 14 Then ....
Stelli ------------------ Warum lisp'eln wenn's auch anders geht. [Diese Nachricht wurde von Stelli1 am 11. Nov. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BerndE Mitglied Hochbautechniker
Beiträge: 557 Registriert: 05.07.2003
|
erstellt am: 11. Nov. 2005 10:27 <-- editieren / zitieren --> Unities abgeben:
|
BerndE Mitglied Hochbautechniker
Beiträge: 557 Registriert: 05.07.2003 Revit 2013 ACA 2012 deutsch BuildingOne 5.4.5 Win7 WindowsNetz
|
erstellt am: 22. Nov. 2005 13:46 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich muss dieses thema leider nochmal aufwärmen. den rechten Mausklick auf einen mit Attributen versehenen Block benutze ich, um ein userdefiniertes Formular aufzurufen. Folgender Code soll bewirken, daß ein Doppelklick nicht das Fenster Attribute bearbeiten öffnet. Code: Private Sub AcadDocument_BeginDoubleClick(ByVal PickPoint As Variant) Dim sset As AcadSelectionSet Set sset = fgac_SelectionSet sset.Clear sset.SelectAtPoint PickPoint If sset.Count > 0 Then For Each item In ThisDrawing.SelectionSets("MySelSet") If item.EntityName = "AcDbBlockReference" Then If itemname <> "TTyp" Then Exit Sub End If Next item MsgBox "Zum Editieren des Türstempels bitte AUSSCHLIESSLICH die rechte Maustaste benutzen!", vbInformation + vbOKOnly, "Hier kein Doppelklicken möglich" End If End Sub
Leider wird zwar die Messagebox angezeigt, aber im Anschluß daran auch das "Attribute bearbeiten"-Fenster geöffnet. Wie kann ich das verhindern? ------------------ Bernd [Diese Nachricht wurde von BerndE am 22. Nov. 2005 editiert.] 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: 22. Nov. 2005 18:26 <-- editieren / zitieren --> Unities abgeben: Nur für BerndE
Hallo Bernd, das kann ich dir auch nicht genau sagen. Ich arbeite eigentlich nicht damit. Bei der rechten Taste kann man einiges ins Kontextmenü bringen. Da braucht man die Events gar nicht abfangen. Ich würde mal folgendes probieren: Zitat: Original erstellt von CAD-Huebner: Grundsätzlich kann man den Doppelklickmodus von AutoCAD ja auch abschalten. Befehl: DPKLIBEARB Doppelklick-Bearbeitungsmodus eingeben [Ein/Aus] <Ein>:
oder mal bei den Events BeginCommand + EndCommand schauen ob man den AutoCAD Befehl stoppen kann. Stelli ------------------ Warum lisp'eln wenn's auch anders geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |