Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  ObjectModified??

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 präsentiert die PRO Elite™ High Endurance microSD-Flash-Speicherkarten für Videoüberwachung und kontinuierliche Aufzeichnung, eine Pressemitteilung
Autor Thema:  ObjectModified?? (1591 mal gelesen)
ollibaer2004
Mitglied
Dipl. Ing. Versorgungstechnik


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

Beiträge: 54
Registriert: 28.06.2004

Athlon 64 4000
Windows Xp
ADT7 + Rocad 7
http://tga4acad.de.vu

erstellt am: 29. Jul. 2004 08:51    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

Moin Forum,
ich will mir ein kleines programm schreiben, welches autom. die  fläche einer polylinie ermittelt und den zugehörigen text ändert, dabei ist mir bei n.g Programm aufgefallen, dass bei der änderung einer AcDbPolyline die "neue fläche" angezeigt wird, während bei der AcDb2dPolyline die fläche vor der änderung ermittelt wird,
weiss jemand warum??
This drawing:

Private Sub AcadDocument_ObjectModified(ByVal Object As Object)
Dim my As AcadObject
Set my = Object
On Error Resume Next
If (my.ObjectName = "AcDbPolyline" Or my.ObjectName = "AcDb2dPolyline") And my.Area > 0 Then
  MsgBox "" & my.Area
End If
Set my = Nothing
End Sub

gruß olli

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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Die Phönizier haben das Geld erfunden - aber warum so wenig?
(Johann Nepomuk Nestroy)

erstellt am: 29. Jul. 2004 15:50    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 ollibaer2004 10 Unities + Antwort hilfreich

Hi Olli,

in deinem Code wird zwar die Fläche ermittelt, aber gar nichts geändert... So nicht nachzuvollziehen!

Falls du mit Reaktoren bastelst (sieht irgendwie danach aus), dann musst du natürlich die Spielregeln beachten: Nicht am auslösenden Objekt herumpuhlen... Und in der Hilfe steht sinngemäß: "Verlassen Sie sich nicht darauf, dass die Vorgänge in der Reihenfolge ablaufen, die Sie erwarten."

Gruß, Axel-Strube-Zettler

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

Meine AutoLisp-Seiten
Meine private Homepage
Mein Angriff auf dein Zwerchfell
Mein Lexikon der Fotografie
Mein gereimtes Gesülze

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

ollibaer2004
Mitglied
Dipl. Ing. Versorgungstechnik


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

Beiträge: 54
Registriert: 28.06.2004

Athlon 64 4000
Windows Xp
ADT7 + Rocad 7
http://tga4acad.de.vu

erstellt am: 29. Jul. 2004 16:35    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

wenn du das beispiel mal ausprobieren würdest, müsste es zu den beschriebenen verhalten kommen.
ändern eines rechtecks -> genau fläche wird angezeigt
ändern einer polylinie -> fläche vor änderung wird angezeigt!!

warum?
gruß olli

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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Die Phönizier haben das Geld erfunden - aber warum so wenig?
(Johann Nepomuk Nestroy)

erstellt am: 29. Jul. 2004 20:55    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 ollibaer2004 10 Unities + Antwort hilfreich

Hi Olli, würde ich ja, aber dann müsstest du es ganz hier rein setzen - so müsste ich erst noch ein Select drumbauen, und das größte Problem ist: Wo kriege ich eine alte Polylinie her? Zeichnen kann ich keine, also müsst ich mir noch ein Programm schreiben, das eine erzeugt.

Gruß, Axel Strube-Zettler

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

Meine AutoLisp-Seiten
Meine private Homepage
Mein Angriff auf dein Zwerchfell
Mein Lexikon der Fotografie
Mein gereimtes Gesülze

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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Die Phönizier haben das Geld erfunden - aber warum so wenig?
(Johann Nepomuk Nestroy)

erstellt am: 29. Jul. 2004 22:28    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 ollibaer2004 10 Unities + Antwort hilfreich

Hab mir jetzt die Mühe gemacht - test1 zeichnet was, test2 ist zum Auslesen. Der Fehler ist nicht nachvollziehbar, bei mir kommen korrekte Werte (habe mit STRECKEN die Größe verdoppelt).

Code:

Public Sub test1()
  Dim o As Object
 
  Set o = zeichneAltePl
  Debug.Print o.Area
 
  Set o = zeichneNeuePl
  Debug.Print o.Area
 
End Sub

Public Sub test2()
  Dim o As Object
  Dim p
  ThisDrawing.Utility.GetEntity o, p, "Polylinie wählen: "
  AcadDocument_ObjectModified o
End Sub

Private Sub AcadDocument_ObjectModified(ByVal Object As Object)
  Dim my As AcadObject
  Set my = Object
  On Error Resume Next
  If (my.ObjectName = "AcDbPolyline" Or my.ObjectName = "AcDb2dPolyline") And my.Area > 0 Then
    MsgBox "" & my.Area
  End If
  Set my = Nothing
End Sub

Function zeichneAltePl()
  Dim plObj As AcadPolyline
  Dim points(0 To 11) As Double
  points(0) = 0: points(1) = 0: points(2) = 0
  points(3) = 10: points(4) = 0: points(5) = 0
  points(6) = 10: points(7) = 10: points(8) = 0
  points(9) = 0: points(10) = 10: points(11) = 0
  Set plObj = ThisDrawing.ModelSpace.AddPolyline(points)
  plObj.Closed = True
  Set zeichneAltePl = plObj
End Function

Function zeichneNeuePl()
  Dim plObj As AcadLWPolyline
  Dim points(0 To 7) As Double
  points(0) = 20: points(1) = 0
  points(2) = 30: points(3) = 0
  points(4) = 30: points(5) = 10
  points(6) = 20: points(7) = 10
  Set plObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)
  plObj.Closed = True
  Set zeichneNeuePl = plObj
End Function


Dein Fehler findet also woanders statt...

Gruß, Axel Strube-Zettler

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

Meine AutoLisp-Seiten
Meine private Homepage
Mein Angriff auf dein Zwerchfell
Mein Lexikon der Fotografie
Mein gereimtes Gesülze

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

startrek
Moderator
Architekt


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

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 29. Jul. 2004 23:49    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 ollibaer2004 10 Unities + Antwort hilfreich

Abend zusammen,

konnte das auch nicht so richtig nachvollziehen irgendwie ...

Na jedenfalls, wollte ichs ohne Msgbox oder print lösen und dachte
innerhalb des Klassenevents gleich die area als Text einzufügen, ich verzichte mal auf die if-Abfragen & alles wie beschrieben, da mir das Teil grade wieder abgeschmiert ist, folgendes ist nur sinngemäss gedacht:

Code:

Private Sub AcadDocument_ObjectModified(ByVal Object As Object)

    Dim textObj As AcadText
    Dim text$
    Dim insertionPoint(0 To 2) As Double
    Dim minPoint, maxPoint
    text = Str(my.Area)
    my.GetBoundingBox minPoint, maxPoint
    insertionPoint(0) = ((maxPoint(0) - minPoint(0)) / 2) + minPoint(0)
    insertionPoint(1) = ((maxPoint(1) - minPoint(1)) / 2) + minPoint(1)
    insertionPoint(2) = ((maxPoint(2) - minPoint(2)) / 2) + minPoint(2)
       
    Set textObj = ThisDrawing.ModelSpace.AddText(text, insertionPoint, 1)


Is ne schlechte Ausrede für diese Fragmente, ich weiss, aber als ich den Code hatte ist mir Acad gnadenlos abgehaun, und wech, ich hoffe Prinzip kommt rüber ...
Eigentlich tu ich dasselbe wie Ihr macht, nur statt Message einen Text zentriert im Object setzen - wenn da nicht diese Abflüge wären 

Ich vermute mal da er erst die MsgBox bringt, bevor er das Objekt entgültig neu dimensioniert, dasser
einfach sich mit dem GetBoundingbox verhakelt oder so, eine andre Erklärung hab ich nicht dazu, in Verbindung mit Axels erstem Post:

> Und in der Hilfe steht sinngemäß:
> "Verlassen Sie sich nicht darauf,
> dass die Vorgänge in der Reihenfolge ablaufen, die Sie erwarten."


lg 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

ollibaer2004
Mitglied
Dipl. Ing. Versorgungstechnik


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

Beiträge: 54
Registriert: 28.06.2004

Athlon 64 4000
Windows Xp
ADT7 + Rocad 7
http://tga4acad.de.vu

erstellt am: 30. Jul. 2004 12:51    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

erst einmal danke für die mühen...

der ganze sinn hinter dem ganzen sollte eigentlich so sein.

ich mir ein programm gebastelt -->
1. polylinie zeichnen
2. fläche ermitteln
3. einfügepunkt für text festlegen
4. text mit flächenangabe einfügen
5. polyline mit text zu einer gruppe zusammenfassen Name: "Fläche" & objektid.

funktioniert auch

über einnen reactor wollte ich dann überprüfen ob da geänderte objekt eine polyline ist und zur gruppe fläche* gehört.
wenn ja soll der text mit neuem flächeninhalt geändert werden.

leider zeigt er beim mir die fläche der polyline (_pline) vor der änderung an. nur die fläche eine rechtecks (_rectang) wir korrekt angezeigt...

na ja mal weiter schaun.

gruß try and error Olli

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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Die Phönizier haben das Geld erfunden - aber warum so wenig?
(Johann Nepomuk Nestroy)

erstellt am: 30. Jul. 2004 13:48    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 ollibaer2004 10 Unities + Antwort hilfreich

Das war mir doch schon vorher klar, und deswegen habe ich dir dieses Zitat geschickt - das hat so nach Reaktoren gerochen...

Das sind olle Kamellen - du darfst nicht an dem Objekt, das den Reaktor auslöst, irgendwas machen - für so was nimmt man einen zusätzlichen Editor-Reaktor. Das heisst: geändertes Objekt merken, dann warten, bis alles im Database-Reaktor vorüber ist. Und in Editor:CommandHasEnded schaust du dann nach, ob ein Objekt auf dem ToDo-Stapel liegt und kannst es dann verarbeiten - erst dann!

Das Problem ist, ganz genau wie ich vermutet habe, dass deine Fläche-Funktion ausgeführt wird, bevor die Änderung stattfindet.

Nochmal zum hinter-die-Löffel-schreiben: Verlass dich nicht auf eine naheliegende und scheinbar offensichtliche Reihenfolge der Dinge!

Gruß, Axel Strube-Zettler

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

Meine AutoLisp-Seiten
Meine private Homepage
Mein Angriff auf dein Zwerchfell
Mein Lexikon der Fotografie
Mein gereimtes Gesülze

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 02. Aug. 2004 14: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 ollibaer2004 10 Unities + Antwort hilfreich

@mapcar

Wo kriege ich eine alte Polylinie her? Zeichnen kann ich keine

warum ? PLINETYPE auf 0 und du zeichnest mit plinie "alte" Polylinien

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

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

ollibaer2004
Mitglied
Dipl. Ing. Versorgungstechnik


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

Beiträge: 54
Registriert: 28.06.2004

Athlon 64 4000
Windows Xp
ADT7 + Rocad 7
http://tga4acad.de.vu

erstellt am: 04. Aug. 2004 12: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

@fuchsi
der Tipp war SUPER!!
PLINETYPE auf 1 ,bei mir stand er aud 0 ;o)
und schon klappt auch das o.g.Beispiel

@ Axel
hab mir zwar jetzt einen Merker gebaut der wartet bis der Befehl Beended ist, kann ich mir aber jetzt schenken ...

danke an alle

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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Die Phönizier haben das Geld erfunden - aber warum so wenig?
(Johann Nepomuk Nestroy)

erstellt am: 04. Aug. 2004 14: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 ollibaer2004 10 Unities + Antwort hilfreich

ups, fuchsi,

dachte irgendwie, der wär abgeschafft;-) Aber das ist das Konvertierungstool mit dem schönen Übersetzungsfehler ("magere oder fette Polylinien?", das hin und her konvertiert, das ist weg.

Kleines Blackout...

Gruß, Axel Strube-Zettler

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

Meine AutoLisp-Seiten
Meine private Homepage
Mein Angriff auf dein Zwerchfell
Mein Lexikon der Fotografie
Mein gereimtes Gesülze

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

ollibaer2004
Mitglied
Dipl. Ing. Versorgungstechnik


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

Beiträge: 54
Registriert: 28.06.2004

Athlon 64 4000
Windows Xp
ADT7 + Rocad 7
http://tga4acad.de.vu

erstellt am: 06. Aug. 2004 12:45    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


plinereact.txt

 
so, hab mal das fertige programm angehängt.
vielleicht hat ja jemand verbesserungsvorschläge.


danke für die hilfe

Oll!

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