Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Kranke Polylinien?

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
Autor Thema:  Kranke Polylinien? (3094 mal gelesen)
Arcuso
Mitglied
Vermessung


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

Beiträge: 70
Registriert: 25.07.2011

Windows 7/64 prof.
AutoCAD 2011
BricsCad v12

erstellt am: 25. Jul. 2011 11: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 Spezialisten !
Bei uns im Vermessungsbüro wird ein Wechsel der CAD-Software (dzt. noch AutoCAD 2005) wegen Win7 auf event. neuer Hardware immer dringlicher. Meine Aufgabe ist es, sowohl die für uns geeignete Software zu finden (sie muss auch noch auf den vorhandenen Notebooks im Außendienst laufen), alsauch die vorhandenen Lisp-Tools entsprechend anzupassen und zu verbessern. Wir haben eine Unzahl an Spezial-Befehlen für den Umgang mit Polylinien (anpassen, begradigen, aufbrechen, kombinieren, etc.), dzt. meistens mit einer klassischen (command)-Funktion gelöst, die ich auch nach und nach durch VLA-Methoden ersetze. Dabei bin ich auf einen seltsamen Zustand der Objekt-Daten gestoßen:
Meistens kann nach einer Anpassung bzw. Begradigung einer Polylinie auf viele Properties nicht mehr zugegriffen werden:

; IAcadLWPolyline: AutoCAD Lightweight Polyline-Schnittstelle (optimierte Polylinie)
; Eigenschaftswerte:
; Application (RO) = #<VLA-OBJECT IAcadApplication 00b9b5e4>
; Area (RO) = AutoCAD.Application: Ungültige Klasse
; Closed = AutoCAD.Application: Ungültige Klasse
; ConstantWidth = AutoCAD.Application: Ungültige Klasse
; Coordinate = ...Indizierter Inhalt wird nicht angezeigt...
; Coordinates = AutoCAD.Application: Ungültige Klasse
; Document (RO) = #<VLA-OBJECT IAcadDocument 06a8cd10>
; Elevation = AutoCAD.Application: Ungültige Klasse
; Handle (RO) = "2F4"
; HasExtensionDictionary (RO) = 0
; Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 087431f4>
; Layer = "0"
; Length (RO) = AutoCAD.Application: Ungültige Klasse
; Linetype = "ByLayer"
; LinetypeGeneration = AutoCAD.Application: Ungültige Klasse
; LinetypeScale = 1.0
; Lineweight = -1
; Normal = AutoCAD.Application: Ungültige Klasse
; ObjectID (RO) = 2130103904
; ObjectName (RO) = "AcDb2dPolyline"
; OwnerID (RO) = 2130103544
; PlotStyleName = "ByLayer"
; Thickness = AutoCAD.Application: Ungültige Klasse
; TrueColor = #<VLA-OBJECT IAcadAcCmColor 08743680>
; Visible = -1

vla-update, vla-move, entupd, _regen,_qsave hilft alles nichts, nur beim Ausstieg aus der Zeichnung ist das Objekt in der neu geöffneten Zeichnung wieder brauchbar. Alternativ bekomme ich bei einem Klon (vla-copy) der mangelhaften Polylinie zwar ein einwandfreies neues Objekt, die Ref-Handles in den EEDs zugehöriger Signatur-Objekte werden dadurch aber zu Waisen, wenn ich die unbrauchbare alte Linie lösche. Ich müsste also jedesmal zuerst alle referenzierten Signaturen abfragen und in ihren EEDs den neuen Handle eintragen. Ich suche daher nach einer Lösung ohne Klon.
Es wurde hier auch schon darauf hingewiesen, dass die Funktion (vla-getBulge) nicht verlässlich arbeitet. Meine Fragen wären hier nach dem Grund bzw. event. Abhilfe (natürlich kann ich auch bei LWs die Elementdaten (GC 42) oder bei 2Ds die Vertices abklappern).
Wie verlässlich ist eigentlich (vla-setBulge)? Bisher hatte ich da keine Zores.

Vielen Dank

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


Ex-Mitglied

erstellt am: 25. Jul. 2011 11:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

herzlich willkommen bei CAD-de! 

Ich glaube, dieses:

>> [...] nach einer Anpassung bzw. Begradigung einer Polylinie [...]

wird näher zu erläutern sein. Wenn die LISP-Gurus hier sehen würden, wie Du es machst, dann könnte gezielt etwas dazu gesagt werden. Ohne zu sehen, was Du wie machst, kann keine Glaskugel der Welt farbig werden. 

Also reduziere den Code soweit auf ein Minimum, dass der Fehler (noch) reproduzierbar ist; und diesen Code zeig uns hier.
Da Du in der Signatur sowohl AutoCAD als auch Bricscad stehen hast (und zumindest ich es nicht klar erkennen kann) lass wissen, mit welchem Programm/Version Du das Problem hast.

- alfred -

------------------
www.hollaus.at

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 25. Jul. 2011 11:54    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 Arcuso 10 Unities + Antwort hilfreich

@Arcuso
da du hier (für mich) völlig unbekannt bist:
1. herzlich Willkommen
2. siehe Alfred / es würde evtl. helfen wenn bekannt ist WIE/WAS editiert wird (konkretes Beispiel)
3. Glaskugel: Wir reden aber schon von VORHER und NACHHER gleicher Objekttyp, oder ?
(an der Stelle mit den Commands ändert man nämlich oft den Entitytyp wenn es um "Polylinien" geht)

 

------------------
CAD.de System-Angaben  -  CAD on demand  -  User:FAQ(Acad)

[Diese Nachricht wurde von cadffm am 25. Jul. 2011 editiert.]

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

Arcuso
Mitglied
Vermessung


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

Beiträge: 70
Registriert: 25.07.2011

erstellt am: 25. Jul. 2011 12: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

Hallo !

Ich habe es mit ACAD 2005, 2011 und BricsCAD mit dem ur-eigenen Befehl _PEDIT und wechselweise mit den Optionen _Fit bzw. _Decurve und sowohl ausgehend von einer LW- alsauch 2D-Polylinie versucht. Lisp kam nur mit (vlax-dump-object) zum Betrachten der Properties ins Spiel.
Natürlich entsteht beim Fitten einer LW dann eine kurvenangepasste 2D-Polylinie, die Erscheinung tritt aber bei beiden Typen auf und resultiert nicht aus einer Lisp-Funktion, sondern verhindert eine solche.
Eine Muster-DWG hier hochzuladen bringt nichts, weil die Polylinien nach dem Aufruf der Zeichnung alle in Ordnung sind und erst nach dem Fitten/Decurven der Mangel auftritt (aber auch nicht immer !)

MfG Arcuso

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


Ex-Mitglied

erstellt am: 25. Jul. 2011 13:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

ich bin kein LISP'ler, aber in Deinem Dump fällt mir auf:

>> ; IAcadLWPolyline: AutoCAD Lightweight Polyline-Schnittstelle (optimierte Polylinie)
>> [...]
>> ; ObjectName (RO) = "AcDb2dPolyline"

Wenn man mit der Schnittstelle der LWPoly auf die 2D-Poly hinfährt, dann fährt man mit dem falschen Interface auf das Objekt, oder? Es müsste bei einer LWPoly als ObjectName doch 'AcDbPolyline' herauskommen, oder lieg ich da falsch?

Ich nehme an, Du hast vor der Änderung einen Zeiger auf Deine LWPoly gespeichert, dann baust Du das Element um (damit wird es zur 2D-Poly) und statt den Zeiger neu zu holen (z.B. über Handle: (handent "xxxxx")) schiebst Du das Element durch's falsche Sieb.

Wenn ich nicht richtig liege, und Zeichnung speichern nix bringt (was meine Theorie stützt, denn dann initialisierst Du Deine Objektvariable ja neu), dann schreib ein kleines Script, das uns die Möglichkeit gibt, es zu reproduzieren.

- alfred -

------------------
www.hollaus.at

Arcuso
Mitglied
Vermessung


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

Beiträge: 70
Registriert: 25.07.2011

erstellt am: 25. Jul. 2011 14:17    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 Alfred!

Das Objekt wurde jeweils nach der Umwandlung mit (entsel) neu gewählt, daraus der vla-ObjectName ermittelt und davon den Dump anzeigen lassen (alles gleich in der Befehlszeile). Es ist dann auch egal, ob ich klassische AutoCAD-Befehlen (_REGEN,_MOVE, etc.) anwende (die will ich ja später in den Lisp-Programmen vermeiden) oder per Lisp und/oder VLA, die Polylinie bleibt irgendwie ein Zwitter.
Einfachster Versuch:
Zeichne mit _PLINE eine neue Polylinie mit 2 oder 3 Geraden, Fitte sie mit _PEDIT und schau' Dir dann den Object-Dump an.
Code:
(vlax-dump-object (vlax-ename->vla-object (car (entsel))) nil)

MfG Arcuso

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


Ex-Mitglied

erstellt am: 25. Jul. 2011 14:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Zeichne mit _PLINE eine neue Polylinie mit 2 oder 3 Geraden, Fitte sie mit _PEDIT und schau' Dir dann den Object-Dump an.

Mit 2012 probiert, dieses ist das Ergebnis des Dumps:

Code:
; IAcadPolyline2: AutoCAD Polyline-Schnittstelle (Polylinie)
; Eigenschaftswerte:
;  Application (RO) = #<VLA-OBJECT IAcadApplication 0000000140367198>
;  Area (RO) = 10879.7
;  Closed = 0
;  ConstantWidth = 0.0
;  Coordinate = ...Indizierter Inhalt wird nicht angezeigt...
;  Coordinates = (-10.4609 103.692 0.0 78.4469 194.628 0.0 ... )
;  Document (RO) = #<VLA-OBJECT IAcadDocument 000000002a1de2b0>
;  Elevation = 0.0
;  EntityTransparency = "VonLayer"
;  Handle (RO) = "363"
;  HasExtensionDictionary (RO) = 0
;  Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 0000000002cd8668>
;  Layer = "0"
;  Length (RO) = 265.586
;  Linetype = "ByLayer"
;  LinetypeGeneration = 0
;  LinetypeScale = 1.0
;  Lineweight = -1
;  Material = "ByLayer"
;  Normal = (0.0 0.0 1.0)
;  ObjectID (RO) = 42
;  ObjectID32 (RO) = 42
;  ObjectName (RO) = "AcDb2dPolyline"
;  OwnerID (RO) = 43
;  OwnerID32 (RO) = 43
;  PlotStyleName = "ByLayer"
;  Thickness = 0.0
;  TrueColor = #<VLA-OBJECT IAcadAcCmColor 00000000031608c0>
;  Type = 1
;  Visible = -1
T

Mit 2011 probiert, dieses ist das Ergebnis des Dumps:

Code:
; IAcadPolyline2: AutoCAD Polyline-Schnittstelle (Polylinie)
; Eigenschaftswerte:
;  Application (RO) = #<VLA-OBJECT IAcadApplication 0000000140b67e28>
;  Area (RO) = 453795.0
;  Closed = 0
;  ConstantWidth = 0.0
;  Coordinate = ...Indizierter Inhalt wird nicht angezeigt...
;  Coordinates = (2088.68 1236.92 0.0 2657.65 1779.29 0.0 ... )
;  Document (RO) = #<VLA-OBJECT IAcadDocument 00000000289fa380>
;  Elevation = 0.0
;  EntityTransparency = "VonLayer"
;  Handle (RO) = "24F"
;  HasExtensionDictionary (RO) = 0
;  Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 000000002cc280d8>
;  Layer = "0"
;  Length (RO) = 1688.62
;  Linetype = "ByLayer"
;  LinetypeGeneration = 0
;  LinetypeScale = 1.0
;  Lineweight = -1
;  Material = "ByLayer"
;  Normal = (0.0 0.0 1.0)
;  ObjectID (RO) = 42
;  ObjectID32 (RO) = 42
;  ObjectName (RO) = "AcDb2dPolyline"
;  OwnerID (RO) = 43
;  OwnerID32 (RO) = 43
;  PlotStyleName = "ByLayer"
;  Thickness = 0.0
;  TrueColor = #<VLA-OBJECT IAcadAcCmColor 000000002cc283d0>
;  Type = 1
;  Visible = -1
T


Ich sehe auch hier, das das Interface eigentlich ein anders ist als der (neue) Objekttyp.
Aber Fehler wird mir keiner berichtet. Also sind die Schritte

    - LWPoly erzeugen
    - _PEDIT ==> _FIT
    - (vlax-dump-object (vlax-ename->vla-object (car (entsel))) nil)

zumindest für meine Versuche nicht ausreichend, um Deinen Fehler reproduzieren zu können.

- alfred -

------------------
www.hollaus.at

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 25. Jul. 2011 14:47    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 Arcuso 10 Unities + Antwort hilfreich

Hallo,
kann die Ergebnisse von Alfred bestätigen, was passiert, wenn Du mit so einer vergurkten Polylinie den Befehl "POLYKONVERT" von dünn nach fett drüberlaufen läßt?

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

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

Arcuso
Mitglied
Vermessung


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

Beiträge: 70
Registriert: 25.07.2011

erstellt am: 26. Jul. 2011 08: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

Guten Morgen!

Der Befehl _CONVERT greift hier nicht, weil die gefittete Polylinie sowieso nur eine 2D bleiben kann.
Der Befeh POLYKONVERT angewendet auf eine kranke 2D ergibt sowohl bei "fett" alsauch "dünn":
0 Polylinienobjekte konvertiert.

Ich habe mich inzwischen weiter mit dem Problem beschäftigt und auch den Einfluss von SV PLINETYPE getestet:

PLINETYPE=2: LW ok -> _PEDIT/_FIT -> 2D krank -> _PEDIT/_DEC -> LW ok
PLINETYPE=0: LW ok -> _PEDIT/_FIT -> 2D krank -> _PEDIT/_DEC -> 2D krank
PLINETYPE=0: 2D ok -> _PEDIT/_FIT -> 2D ok -> _PEDIT/_DEC -> 2D ok

Über "Ungültige Klasse" bzw. "invalid class" habe ich im Netz auch nichts gefunden.
Bemerkenswert ist ja, dass auch BricsCAD dasselbe Problem hat, nur steht da halt nicht "Ungültige Klasse", sondern "NIL" im Dump.

Ich habe bisher noch nicht die Gelegenheit gehabt, das auf einem anderen Rechner nachzuspielen, sollte es tatsächlich an der Hardware liegen (gleiches Symptom bei 3 doch sehr unterschiedl. CAD-SW !), dann finde ich es aber erst recht bedenklich.

Ich werde mich wohl damit abfinden müssen, kranke 2Ds zu klonen und wie eingangs erwähnt, die verweisenden Handles in den EEDs zu aktualisieren (beim Anpassen und daher Umwandeln von LWs zu 2Ds ist das ohnehin notwendig). Überhaupt finde ich schon lange, dass die LW-Polylinien eher behindern und werde die SV PLINETYPE permanent auf 0 stellen, damit auch die neugezeichneten Polylinien gleich 2Ds sind.

Bleiben mir noch die Fragen betr. Ausbuchtung:
Wann/warum scheitert der Zugriff per (vla-getBulge)?
Ist (vla-setBulge) auch irgendwie eingeschränkt einsetzbar?
Der Zugriff auf die Vertices scheint nur über (entnext) möglich, Property "Bulge" wäre im Object-Dump ohnehin auch nicht vorhanden, d.h. mir bleibt tatsächlich nur der Zugriff über GC 42 des einzelnen Vertex als sichere Methode?

Danke für die Bemühungen
Arcuso

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

Theodor Schoenwald
Ehrenmitglied



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

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 26. Jul. 2011 10:56    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 Arcuso 10 Unities + Antwort hilfreich

Hallo Arcuso,

liste einmal eine Problem-Polylinie, ich würde gerne sehen, wie sich die Sache bei mir verhält.

Gruß
Theodor

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

Arcuso
Mitglied
Vermessung


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

Beiträge: 70
Registriert: 25.07.2011

Windows 7/64 prof.
AutoCAD 2011
BricsCad v12

erstellt am: 26. Jul. 2011 14:38    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


Poly-Kurven-Test.zip

 
Hallo!

Problem-Doku zu meinen weiteren Tests:
Dump der LW-Polylinie vor dem Kurvenangleichen mit _PEDIT/_FIT:
; IAcadLWPolyline: AutoCAD Lightweight Polyline-Schnittstelle (optimierte Polylinie)
; Eigenschaftswerte:
;  Application (RO) = #<VLA-OBJECT IAcadApplication 00b9b5e4>
;  Area (RO) = 0.0431682
;  Closed = 0
;  ConstantWidth = 0.0
;  Coordinate = ...Indizierter Inhalt wird nicht angezeigt...
;  Coordinates = (23.5691 7.43119 23.5327 7.59704 23.7016 7.57813 ... )
;  Document (RO) = #<VLA-OBJECT IAcadDocument 06a8bf90>
;  Elevation = 0.0
;  Handle (RO) = "27"
;  HasExtensionDictionary (RO) = 0
;  Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 0a2e6b84>
;  Layer = "0"
;  Length (RO) = 0.672573
;  Linetype = "ByLayer"
;  LinetypeGeneration = 0
;  LinetypeScale = 1.0
;  Lineweight = -1
;  Normal = (0.0 0.0 1.0)
;  ObjectID (RO) = 2130103608
;  ObjectName (RO) = "AcDbPolyline"
;  OwnerID (RO) = 2130103448
;  PlotStyleName = "ByLayer"
;  Thickness = 0.0
;  TrueColor = #<VLA-OBJECT IAcadAcCmColor 0a2e7940>
;  Visible = -1

Dump der ??-Polylinie nachher:
; IAcadLWPolyline: AutoCAD Lightweight Polyline-Schnittstelle (optimierte Polylinie)
; Eigenschaftswerte:
;  Application (RO) = #<VLA-OBJECT IAcadApplication 00b9b5e4>
;  Area (RO) = AutoCAD.Application: Ungültige Klasse
;  Closed = AutoCAD.Application: Ungültige Klasse
;  ConstantWidth = AutoCAD.Application: Ungültige Klasse
;  Coordinate = ...Indizierter Inhalt wird nicht angezeigt...
;  Coordinates = AutoCAD.Application: Ungültige Klasse
;  Document (RO) = #<VLA-OBJECT IAcadDocument 06a8bf90>
;  Elevation = AutoCAD.Application: Ungültige Klasse
;  Handle (RO) = "27"
;  HasExtensionDictionary (RO) = 0
;  Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 06a94f54>
;  Layer = "0"
;  Length (RO) = AutoCAD.Application: Ungültige Klasse
;  Linetype = "ByLayer"
;  LinetypeGeneration = AutoCAD.Application: Ungültige Klasse
;  LinetypeScale = 1.0
;  Lineweight = -1
;  Normal = AutoCAD.Application: Ungültige Klasse
;  ObjectID (RO) = 2130103608
;  ObjectName (RO) = "AcDb2dPolyline"
;  OwnerID (RO) = 2130103448
;  PlotStyleName = "ByLayer"
;  Thickness = AutoCAD.Application: Ungültige Klasse
;  TrueColor = #<VLA-OBJECT IAcadAcCmColor 06a94a00>
;  Visible = -1

Auffallend abermals der Widerspruch im Titel und bei ObjectName.

Dass ich mir obige Zeilen zur Doku der DWG, die ich hier uploade, nicht aus den Fingern gesaugt habe, werdet Ihr mir wohl glauben. Nachdem ich aber die Zeichnung, in der sich nur mehr diese Test-LW befindet, wiederholt mit allen 3 Programmen probiert habe, kam der Verdacht auf, dass wohl irgendetwas aus dem Bestand unserer 2005er-Zeichnungen im 2004er-Format eingeschleppt das Problem verursacht. Bei völlig neu erstellten Zeichnungen gab's das bisher nämlich noch nicht.
Mittlerweile tritt der Fehler aber auch bei mir nicht mehr auf, obwohl ich die Zeichnung seit gestern unverändert belassen habe. Um das zu belegen lade ich sie gezippt hoch, damit sich das Datum bei Euch nicht ändert. Es wird also wieder nicht nachvollziehbar sein.
Das fallweise Auftreten dieses Mysteriums ist mir vor Monaten schon untergekommen, habe mir damals aber nicht die Zeit genommen, der Sache nachzugehen.
Fazit: Nix is fix und nichteinmal das ist sicher!

MfG Arcuso

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


Ex-Mitglied

erstellt am: 26. Jul. 2011 14:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> kam der Verdacht auf, dass wohl irgendetwas aus dem Bestand unserer 2005er-Zeichnungen
>> im 2004er-Format eingeschleppt das Problem verursacht

PLUS diese Meldung

>> Auffallend abermals der Widerspruch im Titel und bei ObjectName

PLUS der Unterschied zwischen Deinem Output und meinem Output (Zeile 1 des Dump's)

bei mir:>> ; IAcadPolyline2: AutoCAD Polyline-Schnittstelle (Polylinie)
bei Dir:>> ; IAcadLWPolyline: AutoCAD Lightweight Polyline-Schnittstelle (optimierte Polylinie)

Könnte tatsächlich auf eine Versionsabhängigkeit des Geometrietyps hinweisen, damit auch 'eingeschleppt durch alte DWGs' bewahrheiten.

Jetzt, da das Problem nicht mehr reproduzierbar ist, wird's natürlich noch schwerer. Ich würde nun so vorgehen, dass ich (vor dem Umstieg auf neuere AutoCAD-Version) alle DWG's auf einem Rechner mit AutoCAD 2011 (oder 2012) per Befehl WHERST öffnen und unter neuem Namen speichern würde. IMHO sollte das Versionsabhängigkeit der Polylinienarten beheben können.

Die Beweisführung wird jetzt natürlich immer schwieriger, aber mein Gefühl den Datenkonsistenz gegenüber würde sich deutlich verbessern.

- alfred -

------------------
www.hollaus.at

[Diese Nachricht wurde von a.n. am 26. Jul. 2011 editiert.]

Arcuso
Mitglied
Vermessung


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

Beiträge: 70
Registriert: 25.07.2011

erstellt am: 26. Jul. 2011 15:17    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 Alfred!

Habe d'Ehre, das wären tausende von archivierten Alt-Zeichnungen, die !vielleicht! irgendwann wieder gebraucht werden! Nachdem ich ja bei dem Umstieg auch unsere Block- und Layer-Struktur (wurde seinerzeit unter Rel.12-14 aufgebaut) auf intelligentere Beine stellen will, komme ich um einen umfangreichen Lisp-Konverter ohnehin nicht herum. Wer also eine alte Archiv-Zeichnung umbauen oder irgendwo einbauen will, der muss eben zuerst den Konverter laufen lassen, bevor er in der neuen Struktur weiterarbeiten kann.

Trotzdem vielen Dank
Arcuso

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

Theodor Schoenwald
Ehrenmitglied



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

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 26. Jul. 2011 17: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 Nur für Arcuso 10 Unities + Antwort hilfreich


Temp.zip

 
Hallo Arcuso,

ich habe Deine Datei in ACAD2000 geöfnet und die LW-Kontur in eine Polylinie gewandelt, danach habe ich bei beiden Konturen den Befehl "Kurve angleichen" angewendet.

Das gleiche habe ich Bricscad gemacht mit dem Unterschied, dass ich die Konturen als ACAD2010 gespeichert habe.
Alles ging ohne Probleme.

Im Anhang sind beide Dateien.

Gruß
Theodor Schönwald

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 26. Jul. 2011 19: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 Nur für Arcuso 10 Unities + Antwort hilfreich

@Theo - auch der Dump war OK ? (weil darum ging es ja / der Rest hat ja so wie so funktioniert)

@Arcuso
Ich kenne das auch und die anderen würden das ebenfalls nachvollziehen können bei gleichem Test,
auch hilft dir das jetzt nicht wirklich - da der Thread aber ins stocken kommt bzw. in die falsche
Richtung ging wollte ich dann doch nochmal etwas dazu sagen.

zB:
AutoCAD Menü-Dienstprogramme geladen.
Befehl: plinetype

Neuen Wert für PLINETYPE eingeben <2>:

Befehl: _pline

Startpunkt angeben:
Aktuelle Linienbreite beträgt 0.0000
Nächsten Punkt angeben oder [Kreisbogen/Halbbreite/sehnenLänge/Zurück/Breite]:
Nächsten Punkt angeben oder
[Kreisbogen/Schließen/Halbbreite/sehnenLänge/Zurück/Breite]:
Nächsten Punkt angeben oder
[Kreisbogen/Schließen/Halbbreite/sehnenLänge/Zurück/Breite]:

Befehl: (vlax-dump-object (vlax-ename->vla-object(car(entsel))))

Objekt wählen:
; IAcadLWPolyline: AutoCAD Lightweight Polyline-Schnittstelle (optimierte
Polylinie)
; Eigenschaftswerte:
;  Application (RO) = #<VLA-OBJECT IAcadApplication 012091b4>
;  Area (RO) = 458805.0
;  Closed = 0
;  ConstantWidth = 0.0
;  Coordinate = ...Indizierter Inhalt wird nicht angezeigt...
;  Coordinates = (1694.14 699.866 1694.14 1689.18 2621.67 1689.18)
;  Document (RO) = #<VLA-OBJECT IAcadDocument 19deb4c0>
;  Elevation = 0.0
;  Handle (RO) = "1F4"
;  HasExtensionDictionary (RO) = 0
;  Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 19fde884>
;  Layer = "0"
;  Length (RO) = 1916.84
;  Linetype = "ByLayer"
;  LinetypeGeneration = 0
;  LinetypeScale = 1.0
;  Lineweight = -1
;  Material = "ByLayer"
;  Normal = (0.0 0.0 1.0)
;  ObjectID (RO) = 2129687456
;  ObjectName (RO) = "AcDbPolyline"
;  OwnerID (RO) = 2129677560
;  PlotStyleName = "ByLayer"
;  Thickness = 0.0
;  TrueColor = #<VLA-OBJECT IAcadAcCmColor 0cf37e78>
;  Visible = -1
T

Befehl: _pedit
Polylinie wählen oder [mehrere Objekte]:
Option eingeben [Schließen/Verbinden/Breite/BEarbeiten/kurve
Angleichen/Kurvenlinie/kurve LÖschen/LInientyp/Richtung wechseln/Zurück]: _fit

Option eingeben [Schließen/Verbinden/Breite/BEarbeiten/kurve
Angleichen/Kurvenlinie/kurve LÖschen/LInientyp/Richtung wechseln/Zurück]:

Befehl: (vlax-dump-object (vlax-ename->vla-object(car(entsel))))

Objekt wählen: ; IAcadLWPolyline: AutoCAD Lightweight Polyline-Schnittstelle
(optimierte Polylinie)
; Eigenschaftswerte:
;  Application (RO) = #<VLA-OBJECT IAcadApplication 012091b4>
;  Area (RO) = AutoCAD.Application: Ungültige Klasse
;  Closed = AutoCAD.Application: Ungültige Klasse
;  ConstantWidth = AutoCAD.Application: Ungültige Klasse
;  Coordinate = ...Indizierter Inhalt wird nicht angezeigt...
;  Coordinates = AutoCAD.Application: Ungültige Klasse
;  Document (RO) = #<VLA-OBJECT IAcadDocument 19deb4c0>
;  Elevation = AutoCAD.Application: Ungültige Klasse
;  Handle (RO) = "1F4"
;  HasExtensionDictionary (RO) = 0
;  Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 19fdf64c>
;  Layer = "0"
;  Length (RO) = AutoCAD.Application: Ungültige Klasse
;  Linetype = "ByLayer"
;  LinetypeGeneration = AutoCAD.Application: Ungültige Klasse
;  LinetypeScale = 1.0
;  Lineweight = -1
;  Material = "ByLayer"
;  Normal = AutoCAD.Application: Ungültige Klasse
;  ObjectID (RO) = 2129687456
;  ObjectName (RO) = "AcDb2dPolyline"
;  OwnerID (RO) = 2129677560
;  PlotStyleName = "ByLayer"
;  Thickness = AutoCAD.Application: Ungültige Klasse
;  TrueColor = #<VLA-OBJECT IAcadAcCmColor 0cf37e78>
;  Visible = -1
T


und nach speichern und öffnen sieht es wieder OK aus:

Befehl: (vlax-dump-object (vlax-ename->vla-object(car(entsel))))

Objekt wählen:
; IAcadPolyline: AutoCAD Polyline-Schnittstelle (Polylinie)
; Eigenschaftswerte:
;  Application (RO) = #<VLA-OBJECT IAcadApplication 012091b4>
;  Area (RO) = 722189.0
;  Closed = 0
;  ConstantWidth = 0.0
;  Coordinate = ...Indizierter Inhalt wird nicht angezeigt...
;  Coordinates = (1694.14 699.866 0.0 1694.14 1689.18 0.0 ... )
;  Document (RO) = #<VLA-OBJECT IAcadDocument 01ba1178>
;  Elevation = 0.0
;  Handle (RO) = "1F4"
;  HasExtensionDictionary (RO) = 0
;  Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 19ecf93c>
;  Layer = "0"
;  Length (RO) = 2130.18
;  Linetype = "ByLayer"
;  LinetypeGeneration = 0
;  LinetypeScale = 1.0
;  Lineweight = -1
;  Material = "ByLayer"
;  Normal = (0.0 0.0 1.0)
;  ObjectID (RO) = 2129683360
;  ObjectName (RO) = "AcDb2dPolyline"
;  OwnerID (RO) = 2129677560
;  PlotStyleName = "ByLayer"
;  Thickness = 0.0
;  TrueColor = #<VLA-OBJECT IAcadAcCmColor 0cf390a8>
;  Type = 1
;  Visible = -1
T


  (dürfte auch total Versionsunabhängig sein imho - solange es schon LWPolylines gibt natürlich)

------------------
CAD.de System-Angaben  -  CAD on demand  -  User:FAQ(Acad)

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


Ex-Mitglied

erstellt am: 26. Jul. 2011 19:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> dürfte auch total Versionsunabhängig sein imho - solange es schon LWPolylines gibt natürlich

Wenn das versionsunabhängig wäre, wie kam ich dann auf mein DUMP-Ergebnis?
Andere Frage, mit welcher AutoCAD-Version habt Ihr denn das probiert (ich hab's oben geschrieben, ich hab 2011 und 2012 probiert).

- alfred -

------------------
www.hollaus.at

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 26. Jul. 2011 19:53    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 Arcuso 10 Unities + Antwort hilfreich

PLINETYPE zB ?
und/oder
"andere" Polylinie ?

[EDIT]
Ich habe das Protokoll extra so gezeigt das man sieht: Polylinie mit 3 "geraden" Vertex bei Plinetype=2

Ich kenne das zb. von AutoCAD PUR 2006 2008 2010,

------------------
CAD.de System-Angaben  -  CAD on demand  -  User:FAQ(Acad)

[Diese Nachricht wurde von cadffm am 26. Jul. 2011 editiert.]

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


Ex-Mitglied

erstellt am: 26. Jul. 2011 19:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

ok, ..... jetzt hab ich's überrissen    

Der Fehler tritt nur dann auf, wenn man vor _PEDIT;_FIT schon mal den DUMP erstellen hat lassen!

Ich hatte den DUMP immer erst nach Erstellung der Poly und PEDIT und Kurve-Angleichen starten lassen ==> und da war's bei mir in Ordnung.

[EDIT]
Daraus folgt (jetzt mit 2012 probiert):
Poly erstellen, dann PEDIT;_FIT, dann DUMP ==> funkt
Poly erstellen, dann DUMP, dann PEDIT;_FIT, dann DUMP ==> funkt nicht (der zweite DUMP zeigt dann die Fehler)
[/EDIT]

Und damit bin ich raus, denn das ist (für mich) viel zu tief (im LISP).

Sorry, - alfred -


------------------
www.hollaus.at

[Diese Nachricht wurde von a.n. am 26. Jul. 2011 editiert.]

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 26. Jul. 2011 20:04    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 Arcuso 10 Unities + Antwort hilfreich

Damit hast du recht und das wiederum kommt mir plötzlich bekannt vor und wenn man nun
Google bemüht findet man auch Threads, herrlich wie das Forum wieder funkt    


Dann kann man auch mal ganz einfach sowas kreieren:


Objekt wählen: ; IAcadCircle: AutoCAD Circle-Schnittstelle (Kreis)
; Eigenschaftswerte:
;  Application (RO) = #<VLA-OBJECT IAcadApplication 00d73d3c>
;  Area = AutoCAD.Application: Ungültige Klasse
;  Center = AutoCAD.Application: Ungültige Klasse
;  Circumference = AutoCAD.Application: Ungültige Klasse
;  Diameter = AutoCAD.Application: Ungültige Klasse
;  Document (RO) = #<VLA-OBJECT IAcadDocument 01b8ba90>
;  Handle (RO) = "1DD"
;  HasExtensionDictionary (RO) = 0
;  Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 0b4bbdd4>
;  Layer = "0"
;  Linetype = "ByLayer"
;  LinetypeScale = 1.0
;  Lineweight = -1
;  Material = "ByLayer"
;  Normal = AutoCAD.Application: Ungültige Klasse
;  ObjectID (RO) = 2130326824
;  ObjectName (RO) = "AcDbArc"
;  OwnerID (RO) = 2130320632
;  PlotStyleName = "ByLayer"
;  Radius = AutoCAD.Application: Ungültige Klasse
;  Thickness = AutoCAD.Application: Ungültige Klasse
;  TrueColor = #<VLA-OBJECT IAcadAcCmColor 0b4be250>
;  Visible = -1
T


------------------
CAD.de System-Angaben  -  CAD on demand  -  User:FAQ(Acad)

[Diese Nachricht wurde von cadffm am 26. Jul. 2011 editiert.]

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


Ex-Mitglied

erstellt am: 26. Jul. 2011 20:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> ; IAcadCircle: AutoCAD Circle-Schnittstelle (Kreis)
>> ;  ObjectName (RO) = "AcDbArc"

Ich rat mal .... Befehl BRUCH auf einen Kreis angewendet?   
...oder STUTZEN ...

- alfred -

------------------
www.hollaus.at

[Diese Nachricht wurde von a.n. am 26. Jul. 2011 editiert.]

CADchup
Ehrenmitglied V.I.P. h.c.




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

Beiträge: 3329
Registriert: 14.03.2001

Sicher ist, dass nichts sicher ist. Selbst das nicht.
Joachim Ringelnatz

erstellt am: 26. Jul. 2011 22:15    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 Arcuso 10 Unities + Antwort hilfreich

...und ich denk die ganze Zeit "...kommt mir so bekannt vor..." 

Hi,

die Suche nach "invalid class" findet in Adesks Lisp-Brett ein paar gute Beiträge zu diesem ActiveX-Aussetzer.
Tony T. hat es hier prima erklärt:

Zitat:
When a COM wrapper for an object exists,...

Was ab dem Zeitpunkt des ersten (vlax-dump-object (vlax-ename->vla-object(car(entsel)))) der Fall ist.
Zitat:
...and AutoCAD  replaces that object with another object of a different type, and also exchanges the object ids; xdata and extension dictionaries of the old and new objects,

Was durch PLINETYPE=2 und einem PEDIT passsiert.
Zitat:
...any subsequent attempt to access the object via COM will result in the existing COM wrapper, which is the wrong type.

Acad glaubt also, den alten Zeiger verwenden zu können, was nicht geht, weil's ja ein anderer Typ war.

Zitat:
When you do this:
(vlax-dump-object (vlax-ename->vla-object (car (entsel))))
without calling vlax-release-object on the result returned by vlax-ename->vla-object, the COM wrapper will not be released and destroyed...


Wenn der erste Zeiger also released und neu gesetzt wird, funktioniert es. Hier ein Beispiel:

Code:

(setq obj (vlax-ename->vla-object (car (entsel))))
(vlax-dump-Object obj)
(vlax-release-object obj); <- !!!
;;;Jetzt PEDIT und danach
(setq obj (vlax-ename->vla-object (car (entsel))))
(vlax-dump-Object obj)
(vlax-release-object obj)

Gruß
CADchup

------------------
CADmaro.de

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 26. Jul. 2011 22:56    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 Arcuso 10 Unities + Antwort hilfreich

TopAntwort und ein 10er für die Kaffeekasse 

------------------
CAD.de System-Angaben  -  CAD on demand  -  User:FAQ(Acad)

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

Arcuso
Mitglied
Vermessung


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

Beiträge: 70
Registriert: 25.07.2011

erstellt am: 27. Jul. 2011 12: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

Hallo CSI CAD.de!

Tut mir leid, dass ich mich jetzt erst melde.
Also alle Achtung, Eure Spürnasen sind wirklich sensationell!
Ich habe das nachvollzogen und es fällt mir jetzt wie Schuppen von den Augen:

1. (setq o1 (vlax-ename->vla-object (car (entsel))))
    Objekt wählen: #<VLA-OBJECT IAcadLWPolyline 06ab00d4>
2. (vlax-dump-object o1 nil)
3. _PEDIT,_FIT per Mausklick
4. (setq o2 (vlax-ename->vla-object (car (entsel))))
    Objekt wählen: #<VLA-OBJECT IAcadLWPolyline 06ab00d4> noch immer, aber nicht wirklich!

jedoch:

1. (setq o1 (vlax-ename->vla-object (car (entsel))))
    Objekt wählen: #<VLA-OBJECT IAcadLWPolyline 06ab00d4>
2. (vlax-dump-object o1 nil)
3. (vlax-release-object o1)
4. (gc) garbage collection, wie in der Lisp-Hilfe beschrieben
5. _PEDIT,_FIT per Mausklick
6. (setq o2 (vlax-ename->vla-object (car (entsel))))
    Objekt wählen: #<VLA-OBJECT IAcadLWPolyline 06ab00d4> nach wie vor

und auch:

1. (setq o1 (vlax-ename->vla-object (car (entsel))))
    Objekt wählen: #<VLA-OBJECT IAcadLWPolyline 06ab00d4>
2. (vlax-dump-object o1 nil)
3. _PEDIT,_FIT per Mausklick
4. (vlax-release-object o1)
5. (gc) garbage collection, wie in der Lisp-Hilfe beschrieben
6. (setq o2 (vlax-ename->vla-object (car (entsel))))
    Objekt wählen: #<VLA-OBJECT IAcadLWPolyline 06ab00d4> ziemlich hartnäckig für lightweight!

Wo oder wie muss ich den LW-Zombie denn nun kompostieren?

Habe mir den Beitrag von Tony T. durchgelesen. Wird das Problem tatsächlich nur durch (vlax-dump-object) verursacht oder kann da sonst noch wo was lauern. Der Dump wird normalerweise in einer Lisp-Routine ohnehin nicht aufgerufen und ich könnte das dann ja eigentlich in den künftigen Funktionen ignorieren.

Vielen Dank nochmals
Arcuso

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


Ex-Mitglied

erstellt am: 27. Jul. 2011 12:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Wird das Problem tatsächlich nur durch (vlax-dump-object) verursacht oder kann da sonst noch wo was lauern

Ohne mich in LISP auszukennen, meine Vermutung wäre, immer dann, wenn das ActiveX-Interface zu einem Objekt initialisiert wird und nachfolgend der Typ des Objekts geändert wird (also LWPoly==>2DPoly oder Kreis==>Bogen).

Damit (Intialisierung ActiveX-Interface) stehen möglicherweise alle VLAX-Funktionen als Gefährdungspotential zur Verfügung, nur das zu verifizieren überlass ich jetzt euch Profis. 

- alfred -

------------------
www.hollaus.at

Arcuso
Mitglied
Vermessung


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

Beiträge: 70
Registriert: 25.07.2011

erstellt am: 27. Jul. 2011 18: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

Hallo Leute!

Ich hab' jetzt weiter ohne Object-Dumps zwischendurch herumprobiert und siehe da, bei der gefitteten Polylinie sind auch nacher die Object-Properties mit (vlax-get ...) abrufbar.
Parallel dazu habe ich auch noch die Elementdaten der Entities verglichen:

LW-Polylinie: #<VLA-OBJECT IAcadPolyline 06ac76c4>
((-1 . <Objektname: 7ef71450> ) (0 . "LWPOLYLINE")
(330 . <Objektname: 7ef5bcf8> ) (5 . "13A")
(100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0")
(100 . "AcDbPolyline") (90 . 5) (70 . 128) .....)

Kein Object-Dump

(command "_PEDIT" e1 "_FIT" "")

2D-Polylinie nach dem Fitten: #<VLA-OBJECT IAcadPolyline 06ac76c4>
((-1 . <Objektname: 7ef71450> ) (0 . "POLYLINE")
(330 . <Objektname: 7ef5bcf8> )  (5 . "13A")
(100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0")
(100 . "AcDb2dPolyline") (70 . 130) .....)

Erstaunlich:
Trotzdem es nach dem Fitten definitiv ein anderes Object ist, bleiben jedoch Object-Name, Entityname und - für mich ganz wichtig - sogar der Referenz-Handle in GC 5 gleich. Das bedeutet ja, dass ich auch den Verweis auf die besagten Signatur-Blöcke nicht verliere und ich sie daher vorher nicht einsammeln muss. Das ist sehr erfreulich und entschädigt mich für die bisherige Fehlersucherei. Ich habe also selbst nur durch die Information per Dump den Sand ins Getriebe gebracht. Da werd' ich mir einen eigenen Property-Spiegel schnitzen, ich arbeite ja nicht mit VLIDE, sondern mit Notepad++, den bin ich schon jahrelang gewöhnt.

Herzlichen Dank für die Unterstützung
Arcuso

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

Arcuso
Mitglied
Vermessung


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

Beiträge: 70
Registriert: 25.07.2011

Windows 7/64 prof.
AutoCAD 2011
BricsCad v12

erstellt am: 28. Jul. 2011 08:15    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

Guten Morgen!

Da habe ich mich gestern leider zu früh gefreut.
Der Aufruf von (vlax-dump-object) kann nicht alleine schuld sein.
Wenn ich zB. zuerst von der LW-Poly eine Abfrage mit (vlax-get o1 'Closed) durchführe, dann die Polyllinie anpasse scheitere ich danach wieder mit (vlax-get o2 'Closed) bei der neuen 2D-Poly und ich erhalte:

Ungültige Klasse

(vlax-dump-object) wurde seit dem Öffnen der Zeichnung nie aufgerufen.
Ich kann mir nicht vorstellen, dass so simple vorher/nacher Zugriffe nicht möglich sein sollen. Sowas wird ja nicht selten benötigt.
Ich habe ohnedies nur diese eine Polylinie in der Test-Zeichnung und selbst bei der Abfrage des letzten Objektes im ModelSpace bekomme ich wieder diese Krücke. Auch wenn ich dazwischen ein anderes Objekt (POINT) einfüge, der Zugriff auf die 2D-Poly gelingt nur mehr über die Element-Daten mit (entget).
Vielleich gibt's ja eine undokumentierte Funktion, um diesbzgl. ein Reset zu erreichen?

MfG Arcuso

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

neurosis
Mitglied
dipl.ing.


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

Beiträge: 222
Registriert: 22.08.2006

erstellt am: 28. Jul. 2011 10:18    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 Arcuso 10 Unities + Antwort hilfreich

hallo arcuso,
so vielleicht

Code:

(setq en (car (entsel))
      handle (cdr (assoc 5 (entget en)))
      obj (vlax-ename->vla-object en))
(vlax-get obj 'Closed)
(command "_PEDIT" en "_F" "")
(vlax-release-object obj) ; -> hierauf hatte CADchup schon hingewiesen
(setq obj (vlax-ename->vla-object (handent handle)))
(vlax-get obj 'Area)

gruss
marco

------------------
Marco Heuer
www.arc-aachen.de
Airport Office

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

Arcuso
Mitglied
Vermessung


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

Beiträge: 70
Registriert: 25.07.2011

Windows 7/64 prof.
AutoCAD 2011
BricsCad v12

erstellt am: 30. Jul. 2011 10: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


LWneu2D-Ref.lsp.txt

 
Guten Tag!

Um die Sache abschließen zu können:
Der Zugriff auf ein neues Objekt kann ermöglicht werden, indem man das alte nicht mehr vorhandene per (vlax-release-object) freigibt, egal ob darauf per (vlax-dump-object) oder einer anderen VLA-Funktion zugegriffen wurde.
Hintergrund meiner dbzgl. Anfrage ist, wie eingangs erwähnt, dass ich unseren Zeichnungs-Altbestand ggf. in eine neue Block- und Layer-Struktur konvertieren muss. Um dabei bestehende Verweise in den XDaten nicht zu verlieren, wenn ich z.B. eine LW- in eine 2D-Polylinie umwandle, kann ich die AutoCAD-Befehle _PEDIT/_FIT oder _CONVERTPOLY/_H verwenden, die das gewährleisten, weil ihre Handles in GC 5 gleich bleiben. Der Befehl _CONVERTPOLY existiert jedoch in BricsCAD nicht, in AutoCAD erst ab 2011 und ist selbst dort nicht dokumentiert. Um also für div. Plattformen offen zu sein, muss ich stattdessen eine Funktion verwenden, die mir eine kongruente 2D-Polylinie über die LW mit gleichen Eigenschaften legt. Nun müssen alle Objekte, die in ihren EEDs die LW mit GC 1005 referenzieren auf den Handle der neuen 2D-Polylinie geändert werden. Erst jetzt kann ich die alte LW löschen und ruhig schlafen.
Assoziativ-Schraffuren, die ja auch LWs referenzieren können, spielen bei uns keine Rolle und können auch entbunden werden.
Ich möchte einfach in der geplanten neuen Zeichnungs-Struktur die LW-Polylinien vermeiden und in den Lisp-Funktionen nicht auf 2D-Scheitelpunkte extra rücksicht nehmen müssen. Kombinieren, aufbrechen, angleichen und versetzen von Polylinien ist ein Schwerpunkt meiner geplanten Lisp-Programme bei Vermeidung von (command) und erfordert daher ausreichende Infos über Machbarkeit.

Angehängte Lisp überzeichnet eine geklickte LWPolylinie kongruent mit einer 2D-Polylinie,
sammelt alle anderen Objekte, die in ihren XDaten die LW referenzieren,
ändert dort jeweils in GC 1005 den Handle auf die neue 2D
und löscht die LW aus der Zeichnung.

Wer sowas brauchen kann, wird's allerdings unter dem akt. Titel nicht suchen.

Besten Dank
MfG Arcuso

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

Theodor Schoenwald
Ehrenmitglied



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

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 30. Jul. 2011 22: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 Arcuso 10 Unities + Antwort hilfreich

Hallo,

zu:
"Der Befehl _CONVERTPOLY existiert jedoch in BricsCAD nicht, in AutoCAD erst ab 2011..."

_CONVERTPOLY funktioniert in ACAD nicht erst seit 2011, ich habe den Befehl gerade im ACAD2000 eingegeben, er funktioniert.

Inzwischen ist er auch in den Expresstools für Bricscad eingebaut, aber im Menü noch nicht gelistet.

Es gibt aber auch ein Tool (ConvertPoly.lsp) das in ACAD und in Bricscad einwandfrei funktioniert. Es ist von May 14, 1999, ich habe es auch erst vor ein paar Monaten entdeckt. Es ist, durch die Abfrage, handlicher als der Original - _Convertpoly - Befehl von ACAD.

Die Umwandlung ist somit in ACAD und Bricscad möglich.

Gruß
Theodor Schönwald


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

Arcuso
Mitglied
Vermessung


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

Beiträge: 70
Registriert: 25.07.2011

Windows 7/64 prof.
AutoCAD 2011
BricsCad v12

erstellt am: 01. Aug. 2011 07:22    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

Guten Morgen!

@Theodor Schönwald
Danke für den Hinweis! Auf den Befehl _CONVERTPOLY stieß ich erstmals bei einem Beitrag betr. AutoCAD 2011 hier in diesem Forum und nahm an, dass er - weil undokumentiert - neu ist. Aber tatsächlich fand ich ihn auch im 2005er.
Die Lisp-Datei ConvertPoly.lsp habe ich auch gefunden, sogar mit dem letzten Upgrade vom 03.12.2010. Sie kann zwar zwischen LW- und 2D-Polylinien hin und her konvertieren, lässt aber event. vorkommende XDaten außer Acht. Da sich Elementname und Handle ändern, gehen auch Verweise von anderen Objekten auf die alte Polylinie verloren.
Ich habe mir dbzgl. schon entspr. Funktionen für unseren Bedarf erstellt, die sowohl mit ACAD alsauch BCAD funktionieren.
Für die ET-Version von BricsCAD (ist m.W. noch in Arbeit) hätte ich allerdings schon empfohlen, zumindest die XDaten der alten Linie in die neue zu übernehmen.

MfG Arcuso

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