Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Objektzuweisung über Handle funzt nicht

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 neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
Autor Thema:  Objektzuweisung über Handle funzt nicht (2603 mal gelesen)
TomiProg
Mitglied
Technischer Zeichner


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

Beiträge: 51
Registriert: 29.04.2004

WinNT4.0(SP6) + AutoCAD 14.01, P3/400MHz(gääähn),256MB,Graphtec KD4620, ATI 3D Rage Pro(8MB)

erstellt am: 15. Dez. 2004 15: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

Habe mal wieder ein Problem mit Acad14 und VBA.

Ich möchte mit dem Befehl
Set Obj = ThisDrawing.HandleToObject("7e67") ein Objekt zuweisen, welches auch tatsächlich (hier "7e67") in meiner Zeichnung vorhanden ist, zuweisen.
Doch leider wird nur Nothing zurück gegeben. Die Variable Obj ist als Object definiert, so, wie es in der Hilfe zum Befehl HandleToObject beschrieben ist.
Der Sysntax lautet:
RetVal = Objekt.HandleToObject(Referenz)
wobei Referenz ein String sein muß.
Im BeispielCode zu diesem Befehl ist aber Referenz ein Integer-Wert, was mich ein wenig stutzig macht. Einem Integer kann doch kein Hexadezimalwert zugewiesen werden.
Ich stelle mir vor, das ich mit HandleToObject einer Variable vom Typ Object das Objekt mit diesem Handle zuweisen kann. Wieso gibt dann mein Code Nothing zurück?
Liegt das wieder an meiner alten AutoCad-Version, oder habe ich einen Fehler im Code, den ich übersehe?
Hat jemand einen Tip, was daran nicht richtig ist?

Gruß Tomi

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: 15. Dez. 2004 16: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 TomiProg 10 Unities + Antwort hilfreich


handle.jpg

 
also bei acad2000i funktioniert es tadellos (siehe anhang)

------------------
WWW.FFZELL.AT.TC

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

TomiProg
Mitglied
Technischer Zeichner


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

Beiträge: 51
Registriert: 29.04.2004

WinNT4.0(SP6) + AutoCAD 14.01, P3/400MHz(gääähn),256MB,Graphtec KD4620, ATI 3D Rage Pro(8MB)

erstellt am: 15. Dez. 2004 16:31    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 fuchsi. Genau so habe ich mir das auch vorgestellt.

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: 15. Dez. 2004 16:33    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 TomiProg 10 Unities + Antwort hilfreich

ich kenn zwar die 14er nicht mehr , aber wenn der wirklich noch eine integer will, dann wandle sie mal um.

VarStr = "7e67"
VarInt = val("&h" & VarStr) ' konvertieren HEX nach Dezimal

vielleicht nimmts die 14er dann ????????

------------------
WWW.FFZELL.AT.TC

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: 16. Dez. 2004 02: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 Nur für TomiProg 10 Unities + Antwort hilfreich

Ich würde schlicht und einfach sagen: Wer einen Handle als String-Literal in seinen Sourcecode einbrennt, der hat ein gewaltiges Problem mit dem Verständnis solcher Zusammenhänge. Das ist ungefähr so, als hätte eine Politesse auf der Suche nach Parksündern einen Quittungsblock dabei, auf dem die Autonummern schon aufgedruckt sind.

Gruß, Axel Strube-Zettler

------------------
(defun - Lisp over night - AutoLisp-Programmierung für AutoCad - Da weiß man, wann man's hat
Meine AutoLisp-Seiten 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

TomiProg
Mitglied
Technischer Zeichner


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

Beiträge: 51
Registriert: 29.04.2004

WinNT4.0(SP6) + AutoCAD 14.01, P3/400MHz(gääähn),256MB,Graphtec KD4620, ATI 3D Rage Pro(8MB)

erstellt am: 16. Dez. 2004 10:46    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
Habe deinen Vorschlag ausprobiert. Wie ich erwartet habe hat das nicht funktioniert. Er knallt mir den Fehler 'Ungültige Referenz' entgegen.
VBA will den Handle als String übergeben haben. Als Integer geht das nicht.

@mapcar
Was meinst du damit? Das ich mit gewalt versuche, ein Sting an einer Stelle einzusetzten, wo keiner hingehört? Mein Problem mit dem Verständnis ruht wohl eher daher, das ich mich an Vorgaben halte, die mir VBA zwingend vorschreibt. HandleToObject möchte einen String als Referenz haben, um ein Object zurück geben zu können. Daran kann nichts unverständliches sein. Wenn du mir jetzt sagen willst, das läge am Zahlenformat, dann frage ich mich, wieso die Beschreibung dieser Methode nicht richtig ist. Und wenn sie nicht richtig ist, was ist dann richtig?

Gruß Tomi

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: 16. Dez. 2004 22: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 TomiProg 10 Unities + Antwort hilfreich

Tomi, es geht überhaupt nicht darum, dass die Handles keine Strings sein sollten - das sind sie mit Sicherheit! Mir ging es darum, dass man keine Literale verwenden sollte. In Lisp ist vieles geschützter, da werden z.B. Entity-Namen in der Form <Objektname: 7ef72070> zurückgegeben, und die Leerstelle nach dem Doppelpunkt verhindert wirkungsvoll jegliche Verwendung von Literalen im Code. Handles sind allerdings auch Lisp völlig ungeschützt. Schöner wäre ein geschützter Datentyp <Handle: 7e67> gewesen.

Was ich meine, ist also folgendes: Lies Handles aus, speichere sie in Variablen, und ermittle daraus wieder das Zeichnungs-Objekt. Die Methoden .Handle und .HandleToObject sind dabei als Gegenteilsfunktionen zu sehen. Aber versuche niemals, in den Wert der Variablen 'hinenzuschauen' oder sogar etwas zu ändern. Dass ich in meinem Beispielcode mit Debug.Print mal einen Blick auf den Handle riskiere, kann man schon als grenzwertig betrachten.

Die Entity-Handles haben viel Ähnlichkeit mit den Filehandles des OS: Da kommt doch auch keiner auf solche Ideen: Man holt sie, verwendet sie, und gibt sie wieder ab. Aber niemand will - aus gutem Grund - die Dingerchen sehen!

Also: Keine Literale für solche Sachen, die einer dynamischen Vergabe unterliegen!

Lass einfach mal diesen Code laufen bei dir: Steht da "wahr", ist auch in R14 die Welt in Ordung. Wenn da "Falsch" steht, dann existiert ein Problem. Das Wesentliche aber: In diesem Code gibt es keine Literale!

Code:

Public Sub Example()
 
    Dim lineObj As AcadLine
    Dim startPoint(0 To 2) As Double
    Dim endPoint(0 To 2) As Double
   
    Dim handle As String
    Dim hObj As AcadLine
   
    With ThisDrawing
      startPoint(0) = 0#: startPoint(1) = 0#: startPoint(2) = 0#
      endPoint(0) = 1000#: endPoint(1) = 1000#: endPoint(2) = 0#
   
      Set lineObj = .ModelSpace.AddLine(startPoint, endPoint)
      ZoomAll
   
      handle = lineObj.handle
      'Debug.Print handle
   
      Set hObj = .HandleToObject(handle)
      Debug.Print lineObj Is hObj
    End With
End Sub

Mit R14 direkt testen kann ich's leider nicht.

Gruß, Axel Strube-Zettler

------------------
(defun - Lisp over night - AutoLisp-Programmierung für AutoCad - Da weiß man, wann man's hat
Meine AutoLisp-Seiten 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: 17. Dez. 2004 09: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 TomiProg 10 Unities + Antwort hilfreich

@mapcar

ich glaube nicht, dass er den handle fix im Programmcode hinterlegen möchte
die Zeile
Set Obj = ThisDrawing.HandleToObject("7e67")
sollte doch eher nur sein Problem verdeutlichen, dass sie Funktion HandleToObject in der 14 anscheinend nicht richtig funktioniert.

Wo der Handle dann wirklich herkommt, z.B.: aus einer FM-Datenbank ist ja eigentlich egal
(und da bin ich auch froh, dass der Handle nicht geschützt ist. Es ist doch leichter Strings in z.B.: Datenbanken abzulegen als z.B.: den Entitynamen (hätt ja auch keinen Sinn, wird ja beim Öffnen der Zeichnung neu vergeben))

------------------
WWW.FFZELL.AT.TC

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: 17. Dez. 2004 09:14    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 TomiProg 10 Unities + Antwort hilfreich

@mapcar

ich glaube nicht, dass er den handle fix im Programmcode hinterlegen möchte
die Zeile
Set Obj = ThisDrawing.HandleToObject("7e67")
sollte doch eher nur sein Problem verdeutlichen, dass sie Funktion HandleToObject in der 14 anscheinend nicht richtig funktioniert.

Wo der Handle dann wirklich herkommt, z.B.: aus einer FM-Datenbank ist ja eigentlich egal
(und da bin ich auch froh, dass der Handle nicht geschützt ist. Es ist doch leichter Strings in z.B.: Datenbanken abzulegen als z.B.: den Entitynamen (hätt ja auch keinen Sinn, wird ja beim Öffnen der Zeichnung neu vergeben))

------------------
WWW.FFZELL.AT.TC

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

TomiProg
Mitglied
Technischer Zeichner


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

Beiträge: 51
Registriert: 29.04.2004

WinNT4.0(SP6) + AutoCAD 14.01, P3/400MHz(gääähn),256MB,Graphtec KD4620, ATI 3D Rage Pro(8MB)

erstellt am: 17. Dez. 2004 13: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

@mapcar
Habe dein Beispiel ausprobiert und das Ergebnis ist WAHR. Was aber, wie fuchsi schreibt, nicht des Puddels Kern ist.
Es ist tatsächlich so, daß ein Zusatzprogramm (hier ist es PitCad 4.2) in XDaten jeweils Handles zum nächstlogischen Objekt mit XDaten hinterlegt hat. Und genau diese Handle in XDaten-Form will ich auslesen und zum Objekt machen. Klingt kompliziert, aber so ist das nunmal. Zur Erläuterung, warum ich das anstrebe:
Wir arbeiten mit unterschiedlichen Gewerken. Die Architektur ist meist in Meter gezeichnet und das Pit-Programm definiert die Maßeinheit Meter als XDaten in einer Blockreferenz. Die Architekturpläne werden als XRef unter die Gewerkpläne gelegt. Es kommt bei uns oft vor, das wir vom Gewerkplan aus direkt in den als XRef hinterlegten Architekturplan springen, da AutoCAD 14 nur jeweils eine Zeichnung in seiner Verwaltung aufnehmen kann. Da viele Zeichnungen sehr groß und Detailreich sind, möchte ich beim Laden der Architektur denselben Fensterausschnitt angezeigt bekommen, den ich in meinem Gewerkplan hatte. Das Problem hierbei waren die unterschiedlichen Maßeinheiten. Und die XDaten-Handles führen mich auf direktesten Weg zu der Stelle, wo die Maßeinheit hinterlegt ist. Ansonsten müßte ich jede Blockreferenz durchgehen und nach den typischen XDaten-Inhalte suchen, was, wie sich jeder vorstellen kann, bei großen Zeichnungen länger dauert. Wieso das Rad neu erfinden, wenn alle notwendigen Daten schon vorhanden sind.

Was ich jetzt aber überhaupt nicht verstehe: Dein Programm funktioniert richtig. Aber wenn ich statt dem LineObjekt eine Blockreferenz definiere, was ja auch richtig ist, da das zu suchende Handle eine Blockreferenz ist, funktioniert es nicht. Es gibt kein Fehler. Auch wenn ich den Datentyp Variant zum definieren des HandleObjekts benutze, bekomme ich Nothing zurück.
Ich glaube, ich wähle den längeren Weg und gehe halt alle BlockRefs durch. Immerhin erziehle ich das Endergebnis und das ist das wichtigste. Ist zwar nicht sauber progrmmiert aber es erfüllt seinen Zweck.

[Diese Nachricht wurde von TomiProg am 21. Dez. 2004 editiert.]

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: 17. Dez. 2004 18: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 TomiProg 10 Unities + Antwort hilfreich

Na, irgendwas stimmt da doch einfach nicht. Der nachfolgende Code zeigt, dass das Ganze mit einem Insert (einer Blockreferenz) ganz genauso funktioniert wie mit einer Linie - es tät' mich auch sehr, sehr wundern, wenn das nicht so wäre bzw. wenn es in R14 anders sein sollte.

Und dann habe ich noch ein bisschen gespielt, und zwar mit ein Paar Kommentarzeichen bei den Deklarationen: Hier ist InsertObj einfach nur als Object deklariert, nicht als AcadBlockReference. Wozu gibt's schließlich Late Binding? Die Variablen handle und hObj sind beide als Variant deklariert, da sträuben sich mir zwar die Nackenhaare, aber das Ganze funktioniert trotzdem einwandfrei!

Also: Ich habe keine Ahnung, wo deine Fehler wirklich liegen - ich vermute nach wie vor, dass du einfach mit Literalen bzw. ungültigen Handles hantierst. Wer weiss schon, ob deine Handles in den Xdaten mit GC 1005 abgelegt sind - werden sie da als Strings mit GC 1002 gespeichert, ist die Katastrophe vorprogammiert, wenn Xrefs ins Spiel kommen (dann hat man nämlich Handles, die ins Leere laufen).

Über die Fehler in deinem Code können wir hier uns aber nur äussern, wenn du den Code mal postest - bitte gestrafft!

Gruß, Axel Strube-Zettler

Code:

Public Sub test()
  Dim blockObj As AcadBlock
  Dim insertionPnt(0 To 2) As Double
  Dim circleObj As AcadCircle
  Dim centerPoint(0 To 2) As Double
  Dim radius As Double
  Dim insertObj As Object
  Dim handle ' As String
  Dim hObj As Variant ' As Object
 
  With ThisDrawing
    insertionPnt(0) = 0#: insertionPnt(1) = 0#: insertionPnt(2) = 0#
   
    Set blockObj = .Blocks.Add(insertionPnt, "TestBlock")
    centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#
    radius = 100#
    Set circleObj = blockObj.AddCircle(centerPoint, radius)

    insertionPnt(0) = 50#: insertionPnt(1) = 50#: insertionPnt(2) = 0#
    Set insertObj = .ModelSpace.InsertBlock(insertionPnt, "TestBlock", 1#, 1#, 1#, 0)
    handle = insertObj.handle
   
    Debug.Print handle
   
    Set hObj = .HandleToObject(handle)
    Debug.Print insertObj Is hObj And Not hObj Is Nothing
  End With
End Sub


------------------
(defun - Lisp over night - AutoLisp-Programmierung für AutoCad - Da weiß man, wann man's hat
Meine AutoLisp-Seiten 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: 17. Dez. 2004 18:27    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 TomiProg 10 Unities + Antwort hilfreich

@fuchsi:

> bin ich auch froh, dass der Handle nicht geschützt ist. Es ist doch
> leichter Strings in z.B.: Datenbanken abzulegen

Da hast du Recht, das ginge ja sonst gar nicht;-)

Gruß, Axel

------------------
(defun - Lisp over night - AutoLisp-Programmierung für AutoCad - Da weiß man, wann man's hat
Meine AutoLisp-Seiten 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

TomiProg
Mitglied
Technischer Zeichner


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

Beiträge: 51
Registriert: 29.04.2004

WinNT4.0(SP6) + AutoCAD 14.01, P3/400MHz(gääähn),256MB,Graphtec KD4620, ATI 3D Rage Pro(8MB)

erstellt am: 21. Dez. 2004 14: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

Na super. Jetzt wollte ich eine Datei anhängen mit einer meiner DWG-Zeichnungen wegen meinem Problem und was muß ich in der Hilfe erfahren, daß das aus Sicherheitsgründen nicht geht.  Was für eine verar..... Dann kann man ja auch gleich die komplette Zeile 'Anhang' rausnehmen....
Udn wieso geht das bei anderen?

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: 21. Dez. 2004 14: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 TomiProg 10 Unities + Antwort hilfreich

Geht schon musst sie nur in zeichnung.dwg.txt umbenennen. Aber lesen kann sie doch wohl trotzdem keiner, ist doch R14:-(

Setz erstmal deinen Code hier rein, ich glaube, das bringt uns sowieso weiter.

Gruß, Axel Strube-Zettler

------------------
(defun - Lisp over night - AutoLisp-Programmierung für AutoCad - Da weiß man, wann man's hat
Meine AutoLisp-Seiten 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

TomiProg
Mitglied
Technischer Zeichner


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

Beiträge: 51
Registriert: 29.04.2004

WinNT4.0(SP6) + AutoCAD 14.01, P3/400MHz(gääähn),256MB,Graphtec KD4620, ATI 3D Rage Pro(8MB)

erstellt am: 21. Dez. 2004 15:13    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

Wieso kann keiner mehr R14 einlesen? Das wäre mir neu.
Aber hier erst mal der Code. Ich bezweifel aber, daß irgendjemand diesen Code zum laufen bekommt, ohne die dazugehörigen dwg-Datei.
Und wieso steht dein Tip nicht so in der Hilfe-Anleitung? Da steht nix von 'Man muss der Dateiendung noch ein .txt anhängen, damit es funktioniert'

Sub Handletest()
    Dim ObjType As Variant
    Dim UBlockObj As Object
    Dim xdataType As Variant
    Dim xdata As Variant
    Dim handle As String
    Dim hobj As Variant
   
    Debug.Print "=Beginn======================================="
    On Error GoTo Ende
    For Each UBlockObj In ThisDrawing.Blocks("*MODEL_SPACE")
        ObjType = UBlockObj.EntityType
        If ObjType = acBlockReference Then
            UBlockObj.GetXData "PIT-CUP", xdataType, xdata
            Debug.Print "Momentaner Block: " & UBlockObj.handle
            If Not IsEmpty(xdata) Then
                handle = xdata(UBound(xdata))
                'Die nachfolgende Zeile funktioniert nicht wie erwartet
                Set hobj = ThisDrawing.HandleToObject(handle)
                Debug.Print "Nachfolgener Block: " & handle
                Debug.Print "hobj gesetzt?: " & Not hobj Is Nothing
            End If
        End If
    Next UBlockObj
Ende:
    On Error GoTo 0
    Debug.Print "=Ende========================================="
End Sub


Nachtrag: Ich wollte nicht nur eine Dwg uploaden sondern eine ZIP mit txt-Datei und dwg-Datei. Geht das auch so mit Handle.zip.txt?

[Diese Nachricht wurde von TomiProg am 21. Dez. 2004 editiert.]

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: 23. Dez. 2004 08:30    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 TomiProg 10 Unities + Antwort hilfreich

> Ich wollte nicht nur eine Dwg uploaden sondern eine ZIP mit
> txt-Datei und dwg-Datei. Geht das auch so mit Handle.zip.txt?

Ja, das geht mit jeder Datei. Es steht aber nicht in der Hilfe, weil das etwas zweischneidig ist: Einerseits braucht man das, um eben Zeichnungen austauschen zu können, andererseits werden hier auch Berge von irgendwelchen Powerpoint-Jokes hochgeladen, was eigentlich nicht im Sinne des Erfinders ist.

Mit dem Lesen von R14 hast du natürlich Recht;-) Das Schreiben geht glaube ich nicht mehr. Lade die Zeichnung noch hoch, und dann kann man mal sehen, wo es hängt.

Bei deinem Code wundert's mich ein wenig, dass xdataType völlig ignoriert wird - ist denn sichergestellt, dass der Handle, den du suchst, immer das letzte XDaten-Element ist? Und: spuckt denn xdataType(UBound(xdataType)) auch immer die Zahl 1005 aus?

Gruß, Axel

------------------
(defun - Lisp over night - AutoLisp-Programmierung für AutoCad - Da weiß man, wann man's hat
Meine AutoLisp-Seiten 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

TomiProg
Mitglied
Technischer Zeichner


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

Beiträge: 51
Registriert: 29.04.2004

WinNT4.0(SP6) + AutoCAD 14.01, P3/400MHz(gääähn),256MB,Graphtec KD4620, ATI 3D Rage Pro(8MB)

erstellt am: 23. Dez. 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

Zitat:
Original erstellt von mapcar:
Geht schon musst sie nur in zeichnung.dwg.txt umbenennen. Aber lesen kann sie doch wohl trotzdem keiner, ist doch R14:-(

Setz erstmal deinen Code hier rein, ich glaube, das bringt uns sowieso weiter.

Gruß, Axel Strube-Zettler


Tja, irgendwie funktioniert der upload trotzdem nicht. Meine Datei Namens 'Handletest.zip.txt' läßt sich nicht uploaden. Nach der Meldung
'D A T E I ( E N )    G E S P E I C H E R T
Die Datei ist in der Anhang-Liste gespeichert (Protokoll:1103809649.txt).

weiter......

und Klick auf Weiter wird mein Fenster geschlossen und der soeben geschriebene Beitrag ist weg. Ich gebe es für dieses Jahr auf 

Ich wünsche allen hier ein      FROHES FEST      und einen Guten Rutsch ins neue Jahr  und bleibt 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: 24. Dez. 2004 01:20    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 TomiProg 10 Unities + Antwort hilfreich

Tja, eigentlich sollte das aber funktionieren...

Wie dem auch sei: Frohe Weihnachten! Und dann sehen wir weiter!

Gruß, Axel Strube-Zettler

------------------
(defun - Lisp over night - AutoLisp-Programmierung für AutoCad - Da weiß man, wann man's hat
Meine AutoLisp-Seiten 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

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9803
Registriert: 01.12.2003

AutoCAD 2.5 - 2022, LDD, MDT, RD, ADT, Civil
Inventor AIP 4-11, 2008 -2022
Win 10

erstellt am: 24. Dez. 2004 08: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 TomiProg 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von TomiProg:
Tja, irgendwie funktioniert der upload trotzdem nicht. Meine Datei Namens 'Handletest.zip.txt' läßt sich nicht uploaden....

Hier sind deine Uploads http://forum.cad.de/foren/ubb/uploads/TomiProg
eben auch das hier http://forum.cad.de/foren/ubb/uploads/TomiProg/HandleTest.zip.txt

Ein Blick in das CAD.de Uploads Verzeichnis eines Mitgliedes hilft auch, wenn z. B. Umlaute benutzt wurden. Hier wird man dann trotzdem fündig.

------------------
Mit freundlichem Gruß

Udo Hübner
----------
1. Sind Sie im Zweifel, murmeln Sie.
2. Sind Sie in Schwierigkeiten, delegieren Sie.
3. Sind Sie verantwortlich, denken Sie nach.

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: 24. Dez. 2004 14:19    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 TomiProg 10 Unities + Antwort hilfreich

Hab mal einen kurzen Blick in die Testzeichnung geworfen: Da gibt es zwar ein Insert von "Testblock", aber an diesem Insert sind gar keine XDaten dran! Auch nicht an dem Kreis, aus dem die Blockdefinition besteht, und auch an der Blockdefinition nix.

(entget(car(entsel)) '("*")) =>
((-1 . <Objektname: 7ef71e20> ) (0 . "INSERT") (330 .
<Objektname: 7ef71cc0> ) (5 . "DC") (100 . "AcDbEntity") (67 . 0)
(410 . "Model") (8 . "0") (100 . "AcDbBlockReference")
(2 . "TESTBLOCK") (10 50.0 50.0 0.0) (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0)(45 . 0.0) (210 0.0 0.0 1.0))

Da ist auch as schönste Programm machtlos;-)

Gruß, Axel Strube-Zettler

------------------
(defun - Lisp over night - AutoLisp-Programmierung für AutoCad - Da weiß man, wann man's hat
Meine AutoLisp-Seiten 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

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