Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Reactor

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 bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
Autor Thema:  Reactor (1099 mal gelesen)
BerndE
Mitglied
Hochbautechniker


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

Beiträge: 557
Registriert: 05.07.2003

erstellt am: 17. Aug. 2003 03:23    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

Hi Forum,

auf Grundlage diverser AutoCad-Sample-Dateien arbeite ich mich gerade in das Kapitel "reactor" ein.

Folgender Beispiel-Code aus einer Hilfe Datei bereitet mir Probleme:

'Klassenmodul
Public WithEvents PLine As AcadLWPolyline

'Modul
Sub CreatePLineWithEvents()
    ' Dieses Beispiel erzeugt eine optimierte Polylinie.
    Dim points(0 To 9) As Double
    points(0) = 1: points(1) = 1
    points(2) = 1: points(3) = 2
    points(4) = 2: points(5) = 2
    points(6) = 3: points(7) = 3
    points(8) = 3: points(9) = 2
    Set PLine = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)
    PLine.Closed = True
    ThisDrawing.Application.ZoomAll
End Sub

Private Sub PLine_Modified (ByVal pObject As AutoCAD.IAcadObject)
    ' Dieses Ereignis wird ausgelöst, wenn die Größe der Polylinie geändert wird.
    ' Wenn die Polylinie gelöscht wird, wird das Modified-Ereignis weiterhin
    ' ausgelöst. Es wird daher das Fehlersteuerungsprogramm
    ' eingesetzt, um das Laden von Daten aus gelöschten Objekten zu vermeiden.
    On Error GoTo ERRORHANDLER
    MsgBox "The area of " & pObject.ObjectName & " is: " _
            & pObject.Area
    Exit Sub

ERRORHANDLER:
    MsgBox Err.Description
End Sub

Mein Problem sieht nun wie folgt aus:
in der Zeile Private Sub PLine_Modified (ByVal pObject As AutoCAD.IAcadObject)
wird ein pObject als AutoCAD.IAcadObject deklariert.
VBA bietet mir allerdings .IAcadObject nicht zur Auswahl an. Woran mag das liegen? Muß ein bestimmter Verweis gesetzt werden?


------------------

Bernd

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

daywa1k3r
Ehrenmitglied V.I.P. h.c.
Softwareentwickler



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

Beiträge: 3497
Registriert: 01.08.2002

Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570
Laptop: Alienware m17x
Win7, Inventor2012

erstellt am: 18. Aug. 2003 10:40    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 BerndE 10 Unities + Antwort hilfreich

Hi,

ich sag mal ganz spontan, es ist ein Tippfehler, und es soll:

Private Sub PLine_Modified (ByVal pObject As AutoCAD.AcadObject)

heissen.


------------------
Grüße daywa1k3r

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

BerndE
Mitglied
Hochbautechniker


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

Beiträge: 557
Registriert: 05.07.2003

erstellt am: 18. Aug. 2003 13:01    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

Tja, wenn es nur so einfach wäre.....ist nen activeX-Interface-Object...daher wohl das I

ohne I funktioniert es aauch nicht.
abgesehen davon, wäre es kurios, wenn in allen Büchern der gleiche Tippfehler wäre

------------------

Bernd

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

daywa1k3r
Ehrenmitglied V.I.P. h.c.
Softwareentwickler



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

Beiträge: 3497
Registriert: 01.08.2002

Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570
Laptop: Alienware m17x
Win7, Inventor2012

erstellt am: 18. Aug. 2003 15:00    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 BerndE 10 Unities + Antwort hilfreich

Hi,


Private Sub PLine_Modified (ByVal pObject As AutoCAD.IAcadObject)

gehört zur WithEvents, und daher muss sie auf alle Fälle im Klassenmodul stehen. Im normalen Modul ist sie nicht sichtbar. Das wäre der Grund 1 warum es nicht funktionieren kann.

Und noch so 'ne Kleinigkeit:  Du hast bestimmt gemerkt, dass mit PLine.Closed = True etwas nicht stimmt. Es kamen keine Eigenschaften nach dem du den Punkt eingegeben hast. Das kommt davon, dass dein KlassenModul nicht in dem Modul sichtbar ist. Wenn das KlassenModul zB. Klasse1 heisst, dann must du in dem Modul zB.

Dim MeineKlasse As New Klasse1

erstellen.

Danach kannst du mit

MeineKlasse.PLine.Close = True

weiter arbeiten.

Bei mir stürzt das Code allerdings hier:

Set PLine = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)

ab.

Keine Datenbank heiss es. Und das ist wiederum AutoCad Kram. Ich bin froh, dass ich mich damit nicht befassen muss, aber die zwei Sachen oben must du beachten bevor du da weiter machst.

------------------
Grüße daywa1k3r

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

RoSiNiNo
Mitglied
Konstrukteur


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

Beiträge: 1126
Registriert: 09.10.2002

Acad 2011-deutsch, Express Tools
3ds Max 2010
Win 7-Professional
HP Workstation Z400, 6GB
GeForce GTX 470

erstellt am: 19. Aug. 2003 07:23    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 BerndE 10 Unities + Antwort hilfreich

Also, ich hab mir das ganze jetzt doch einmal angesehen.
Kopiere den Code einfach in "ThisDrawing", und zwar den Ganzen.
Es sollte dann funktionieren.

------------------
Roland

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

daywa1k3r
Ehrenmitglied V.I.P. h.c.
Softwareentwickler



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

Beiträge: 3497
Registriert: 01.08.2002

erstellt am: 19. Aug. 2003 18:57    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 BerndE 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von RoSiNiNo:
Also, ich hab mir das ganze jetzt doch einmal angesehen.
Kopiere den Code einfach in "ThisDrawing", und zwar den Ganzen.
Es sollte dann funktionieren.


Tut's nicht  

Ein Event muss in ein Klassenmodul rein !

Eigentlich interessiert mich AutoCad nicht sooo, aber ich bin gespannt wie das hier ausgeht 

------------------
Grüße daywa1k3r

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

OlliBaer
Mitglied
Dipl. Ing. TGA


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

Beiträge: 19
Registriert: 06.08.2003

erstellt am: 19. Aug. 2003 19:03    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 BerndE 10 Unities + Antwort hilfreich

Tuts doch,
ist schon richtig, das ganze in "ThisDrawing" kopieren und schon fluppts

tschau, Olli

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

daywa1k3r
Ehrenmitglied V.I.P. h.c.
Softwareentwickler



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

Beiträge: 3497
Registriert: 01.08.2002

Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570
Laptop: Alienware m17x
Win7, Inventor2012

erstellt am: 19. Aug. 2003 20:10    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 BerndE 10 Unities + Antwort hilfreich

Hm, bei mir nicht 

Es kommt immer der gleiche Fehler "Keine Datenbank". Aber ich muss gestehen, dass ich heute Früh das erste Mal mein AutoCad 2004 gestartet habe, und das startete schon mit irgend so einem Fehler. Also es liegt wahrscheinlich an meinen AutoCad.

Ich freue mich, dass es bei euch funzt. Bei mir muss es nicht. Es war reine Neugier, da ich auch mit Events im Inventor zu kämpfen habe, und da scheinen die Regeln ein wenig anders zu sein.

Bis dann...

------------------
Grüße daywa1k3r

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

BerndE
Mitglied
Hochbautechniker


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

Beiträge: 557
Registriert: 05.07.2003

erstellt am: 21. Aug. 2003 00:12    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

Hi Forum,
weil Ihr Euch alle so bemüht habt, will ich Euch kurz mitteilen:
ES HAT ENDLICH GEKLAPPT <FREU>

Die Lösung:

'Klassenmodul EventClassModule

Option Explicit
Public WithEvents PLine As AcadPolyline

Private Sub PLine_Modified(ByVal pObject As AutoCAD.IAcadObject)

    On Error GoTo ERRORHANDLER
    MsgBox "The area of " & pObject.ObjectName & " is: " & pObject.Area
    Exit Sub

ERRORHANDLER:
    MsgBox Err.Description
End Sub


'Irgendein Modul (muß nicht ThisDrawing sein)

Option Explicit
Dim PL As New EventClassModule


Sub CreatePLineWithEvents()
    ' Dieses Beispiel erzeugt eine optimierte Polylinie.
    Dim points(0 To 14) As Double
    points(0) = 1: points(1) = 1: points(2) = 0
    points(3) = 1: points(4) = 2: points(5) = 0
    points(6) = 2: points(7) = 2: points(8) = 0
    points(9) = 3: points(10) = 3: points(11) = 0
    points(12) = 3: points(13) = 2: points(14) = 0
    Set PL.PLine = ThisDrawing.ModelSpace.AddPolyline(points)
    PL.PLine.Closed = True
End Sub

Mein Fehler, auf den mich daywa1k3r hinwies, war die fehlende Zeile:
Dim PL As New EventClassModule,

welche ich nach dem Hinweis als: Dim PL As EventClassModule
deklarierte...also ohne NEW  (wer lesen kann ist klar im Vorteil 

Nun denn...dieses Problem wäre also gelöst....aber wie es immer so ist, es wartet gleich das nächste:

Nach Veränderung erscheint die MsgBox mit der Meldung, wie groß die Fläche vor der Veränderung war. Ich will aber wissen,wie groß sie geworden ist, nachdem sie verändert wurde.

Nundenn, es würde ja keinen Spaß machen, wenn es alles so easy von der Hand ginge

Nochmal vielen Dank Euch allen....U's sind unterwegs


------------------

Bernd

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

RoSiNiNo
Mitglied
Konstrukteur


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

Beiträge: 1126
Registriert: 09.10.2002

Acad 2011-deutsch, Express Tools
3ds Max 2010
Win 7-Professional
HP Workstation Z400, 6GB
GeForce GTX 470

erstellt am: 21. Aug. 2003 07:09    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 BerndE 10 Unities + Antwort hilfreich

Bei mir hat er alles richtig angezeigt, die Fläche nach dem ändern.

------------------
Roland

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

BerndE
Mitglied
Hochbautechniker


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

Beiträge: 557
Registriert: 05.07.2003

erstellt am: 21. Aug. 2003 12:12    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

@Roland
bist du sicher?....bei mir zeigt er auch eine fläche nach dem ändern...aber die alte

------------------

Bernd

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

harryk
Mitglied
Projektleiter


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

Beiträge: 124
Registriert: 19.08.2003

Revit 2019, ACMep2019, F360

erstellt am: 21. Aug. 2003 19: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 BerndE 10 Unities + Antwort hilfreich

Hallo,
hab das mal so mitverfolgt und ausprobiert, also bei mir zeigt er nach der Änderung die Fläche vor der Änderung an. Was mich genauso stört ist das wenn ich eine weitere Plinie erstelle, die alte keine Events mehr auslöst. Wenn man die Zeichnung wieder öffnet verhält sie sich genauso. Vielleicht steh ich jetzt aufm Schlauch aber für mich ergibt sich jetzt erstmal keine vernünftige Verwendung dafür oder habt Ihr ne Idee??

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

BerndE
Mitglied
Hochbautechniker


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

Beiträge: 557
Registriert: 05.07.2003

erstellt am: 21. Aug. 2003 23:58    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

Da stand ich nen Moment auch erst mal auf dem Schlauch, aber es scheint so zu sein, dass das "Aktivieren des Ereignisses auf Objektebene" nur einmal funktioniert und dann nicht mehr. (wozu das auch gut sein soll?)

Habe aber in der Hilfedatei noch das Kapitel "Verarbeitung von Ereignissen auf Dokumentenebene" gefunden. Das scheint mir eher das zu sein, was ich (und vermutlich auch du) von den events erwarten.

------------------

Bernd

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)2024 CAD.de | Impressum | Datenschutz