Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Objektüberwachung

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
  
PNY: der unverzichtbare Partner für umfassende KI-Lösungen von Workstations bis zu Edge Computing und KI-Cluster-Bereitstellung, eine Pressemitteilung
Autor Thema:  Objektüberwachung (818 mal gelesen)
kamehama
Mitglied
techn. Angestellter


Sehen Sie sich das Profil von kamehama an!   Senden Sie eine Private Message an kamehama  Schreiben Sie einen Gästebucheintrag für kamehama

Beiträge: 81
Registriert: 07.12.2004

erstellt am: 20. Okt. 2006 08:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo
Beim Kopieren voon Blöcken mit Attributen habe ich das Problem, dass oft die Aktualisierung der Attribute übersehen wird. Weiters werden bei uns einige Blöcke für die Erstellung der Stücklisten verwendet, und da werden z.b.: für den Block Oberfläche immer dieselben Werte (z.b.: RAL1000 Grübeige,.. sämtliche Ralfarben) verwendet.
Ich habe nun ein Makro erstellt, das unter Thisdrawing.AcadDocument_ObjectAdded überwacht welche Objecte der Zeichnung hinzugefügt wurden, und welches bei den betreffenden Blöcken ein Fenster mit Comboboxen, in denen einige Möglichkeiten vorgeschlagen sind öffnet.
Dies funktioniert soweit ganz gut.
Es gibt nun nur noch 2 Probleme mit meinem Makro.

1.) Geschwindigkeit von ACAD wird durch die permanente Objektüberwachung um einiges Verringert.

2.) Objekt ist im Moment wo es eingefügt wird noch geöffnet, das heisst ich kann es weder hervorheben, noch anderswie den User darauf aufmerksam machen welches Attribut er gerade ändert.

Habe mal gedacht ich versuche es über eine Selectionset, welches ich erst beim Abschluss der Befehle öffne, habe aber diesbzüglich nicht wirklich viel Erfahrung, bzw. hätte gerne vorher Feedback, ob dies eventuell beide Probleme lösen, bzw. zumindest verbessern  würde.

Falls von euch wer Ideen hat wie ich meine Problemstellungen lösen, bzw. verbessern kann bitte um Hilfe.

mfg Kamehama

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Nepumuk
Mitglied
Entwicklungsleiter


Sehen Sie sich das Profil von Nepumuk an!   Senden Sie eine Private Message an Nepumuk  Schreiben Sie einen Gästebucheintrag für Nepumuk

Beiträge: 351
Registriert: 16.10.2004

erstellt am: 21. Okt. 2006 20:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für kamehama 10 Unities + Antwort hilfreich

Hallo Kamehama,

da ich von ACAD so gut wie Null Ahnung habe, kann ich dir möglicherweis nicht helfen. Da ich aber ziemlich fit in VB bin, eventuell doch. Wie überwachst du die Objekte, mit eine Timer oder ?

------------------
Gruß
Nepumuk

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Stelli1
Moderator
Verm.-Ing.


Sehen Sie sich das Profil von Stelli1 an!   Senden Sie eine Private Message an Stelli1  Schreiben Sie einen Gästebucheintrag für Stelli1

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 22. Okt. 2006 11:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für kamehama 10 Unities + Antwort hilfreich

Hallo,

@Nepumuk: Die Überwachung erfolgt wenn der entsprechnende Event ausgelöst wird.

@kamehama: Du musst versuchen im Event möglichst direkt alles was du nicht berücksichtigst auszuschliessen (if Object.ObjectName = "AcDb...).
Über die Problematik das Objekte erst nach Befehlsende bearbeitet werden können waren in den letzten Artikeln schon einige Ansätze.

Du speicherst die hinzugefügten Objekte im Event AcadDocument_ObjectAdded in einen Stapel. Beim Event AcadDocument_EndCommand schaust du nach ob was in deinem Stapel ist und bearbeitest die Elemente und machst den Stapel leer.

Stelli

------------------
Warum lisp'eln wenn's auch anders geht.
www.ib-stelberg.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Anzeige:Infos zum Werbeplatz >>

BauCaD Architektur CAD APP für 3D, AEC - Architektur-, Ingenieur- und Bauwesen

BauCaD für Hochbau/2D/3D/BIM Einfache Befehle, mächtige Workflows und individuelle Auswertungen bis hin zum BIM-konformen 3D-Modell. Aber egal, ob Sie 2D zeichnen, 3D modellieren oder BIM auswerten, mit BauCaD Architektur, haben Sie die notwendige Software dafür.

kamehama
Mitglied
techn. Angestellter


Sehen Sie sich das Profil von kamehama an!   Senden Sie eine Private Message an kamehama  Schreiben Sie einen Gästebucheintrag für kamehama

Beiträge: 81
Registriert: 07.12.2004

erstellt am: 23. Okt. 2006 12:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo
Danke für euere Bemühungen.
Ich habe nun den Vorschlag von Stelli befolgt und erstelle nun eine Liste in welches ich jedes neue object hinzufüge:


Dim objStack() As AcadObject

Private Sub AcadDocument_BeginCommand(ByVal CommandName As String)
    Unload frmAttrib
    ReDim objStack(0)
End Sub

Private Sub AcadDocument_ObjectAdded(ByVal Object As Object)
        ReDim Preserve objStack(UBound(objStack) + 1)
        Set objStack(UBound(objStack)) = Object
End Sub

Diese Liste arbeite ich nun beim event AcadDocument_EndCommand ab und editiere dort die einzelnen Attribute.
Nun habe ich durch diese Vorgehensweise 2 neue Problemstellungen:

1.) Wenn Befehl mittels ESC abgebrochen wird, wird Event Endcommand nicht ausgelöst.

2.) Wenn ich einen Block mehrmals Kopiere wird die Abfrage erst nach dem Positionieren des letzten Blockes ausglöst, für den User wäre es jedoch einfacher wenn sich diese Abfrage jeweils für den gerade positionierten Block beziehen würde.

Bitte um weitere Unterstützung wie bzw. ob ich diese beiden Probleme beheben kann.

Besten Dank im Voraus Kamehama

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz