Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Zwei Text Felder auslesen

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:  Zwei Text Felder auslesen (431 mal gelesen)
DirkiBoy
Mitglied



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

Beiträge: 13
Registriert: 07.05.2009

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

Hallo Leute,

ich versuche zwei übereinander liegende Text Felder, sehen ungefähr wie folgt aus:

              10SGA00
              AA501

auszulesen. Mein bisherigen Programm durchsucht die AcadEntity, findet z.B. "10SGA00" jetzt soll der dazugehörige zweite Teil "AA501" gefunden werden und als ein String zusammengesetzt werden (für eine weitere DB Anwendung). Die zwei Textfelder befinden sich immer in relativer nähe, muss also nicht die gesamte AcadEntity nochmals durchsuchen.

Hat jemand einen Ansatz?

Danke
Dirk

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


Ex-Mitglied

erstellt am: 18. Jul. 2009 08:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Dirk, 
Zitat:
immer in relativer nähe
...und da bin ich mir gar nicht mehr sicher, wie verläßlich das Ergebnis wird!

Mach Dir eine Collection oder ein Array, in dem Du Dir mal die Texte sammelst und zu jedem Textobjekt die Extents (und vielleicht noch besser die Mittelpunkte der Extents).

Dann machst Du eine Schleife für das erste Textobjekt durch alle anderen Elemtente Deines Arrays und vergleichst, wie weit die Mittelpunkte auseinanderliegen.


- alfred -

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

DirkiBoy
Mitglied



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

Beiträge: 13
Registriert: 07.05.2009

erstellt am: 18. Jul. 2009 09: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 Alfred,

habe das Problem jetzt so gelöst indem ich die Feld1 X Koordinate mit Feld1 Y Koordinate multiplizierz habe.

Das Selbe für Feld2.

Falls die Summen nicht mehr als 0,5% abweichen und noch einige plausibilitäts Prüfungen bestehen wird das Ergebnis akzeptiert.

Dachte nur es gibt eine elegantere Lösung.

Danke
Dirk

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


Ex-Mitglied

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

Hi Dirk,

mit multiplizieren von X mit Y kannst Du aber schon auch sehr weit daneben liegen.

Beispiel, worüber Du stolpern kannst:
Text1    X=10    Y=100
Text2    X=100   Y=10

und da hilft auch Summieren nix, Du musst IMHO über den Abstand gehen.

[EDIT]...und eine besonders unbeliebte Zahl beim Multiplizieren wäre die 0, die wirft mit diesem System alles durcheinander! [/EDIT]

- alfred -

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

[Diese Nachricht wurde von a.n. am 18. Jul. 2009 editiert.]

DirkiBoy
Mitglied



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

Beiträge: 13
Registriert: 07.05.2009

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

Hi Alfred,

hast natürlich recht. hatte daher schon den code in z.B. X & Y Coordinate +- 5 geändert.

Erzeugt aber immer noch eine geringere Fehler rate falls felder "enger" zusammen liegen.

Aber ist besser als nix.

Falls Du eine bessere Idee hast?

Danke
Dirk

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1526
Registriert: 17.08.2005

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

erstellt am: 19. Jul. 2009 10:24    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 DirkiBoy 10 Unities + Antwort hilfreich

Hallo Dirk,

du kannst dir auch ein Indexraster anlegen das mehr oder weniger grob gestrickt ist. Das hälst du in einer Liste im Speicher. In der Liste steht dann nur noch das Handle und der Rasterindex. Wenn du nun Elemente suchst brauchst du nur zuerst nach diesem Raster in der Liste suchen. Erhälst du im Raster mehrere Ergebnisse rechnest du nur für diese Elemente die Strecke um das nächst gelegende zu erhalten. Mit so einem Indexraster arbeiten die meisten Programme die räumlich suchen intern, wobei die Maschenbreite je nach Anforderung natürlich varieren kann.

Code:
Raster: 1m
Y X (=Y+0,5) (=X+0,5) Y' X' Raster
123450,0 / 456780,0 --> 123450,5 / 456780,5 --> 123450 / 456780 --> 01234500456780
123450,1 / 456780,1 --> 123450,6 / 456780,6 --> 123450 / 456780 --> 01234500456780
123450,2 / 456780,2 --> 123450,7 / 456780,7 --> 123450 / 456780 --> 01234500456780
123450,3 / 456780,3 --> 123450,8 / 456780,8 --> 123450 / 456780 --> 01234500456780
123450,4 / 456780,4 --> 123450,9 / 456780,9 --> 123450 / 456780 --> 01234500456780
123450,5 / 456780,5 --> 123451,0 / 456781,0 --> 123451 / 456781 --> 01234510456781
123450,6 / 456780,6 --> 123451,1 / 456781,1 --> 123451 / 456781 --> 01234510456781
123450,7 / 456780,7 --> 123451,2 / 456781,2 --> 123451 / 456781 --> 01234510456781
123450,8 / 456780,8 --> 123451,3 / 456781,3 --> 123451 / 456781 --> 01234510456781
123450,9 / 456780,9 --> 123451,4 / 456781,4 --> 123451 / 456781 --> 01234510456781
123451,0 / 456781,0 --> 123451,5 / 456781,5 --> 123451 / 456781 --> 01234510456781
123451,1 / 456781,1 --> 123451,6 / 456781,6 --> 123451 / 456781 --> 01234510456781
123451,2 / 456781,2 --> 123451,7 / 456781,7 --> 123451 / 456781 --> 01234510456781
123451,3 / 456781,3 --> 123451,8 / 456781,8 --> 123451 / 456781 --> 01234510456781
123451,4 / 456781,4 --> 123451,9 / 456781,9 --> 123451 / 456781 --> 01234510456781
123451,5 / 456781,5 --> 123452,0 / 456782,0 --> 123452 / 456782 --> 01234520456782
123451,6 / 456781,6 --> 123452,1 / 456782,1 --> 123452 / 456782 --> 01234520456782
123451,7 / 456781,7 --> 123452,2 / 456782,2 --> 123452 / 456782 --> 01234520456782
123451,8 / 456781,8 --> 123452,3 / 456782,3 --> 123452 / 456782 --> 01234520456782
123451,9 / 456781,9 --> 123452,4 / 456782,4 --> 123452 / 456782 --> 01234520456782
123452,0 / 456782,0 --> 123452,5 / 456782,5 --> 123452 / 456782 --> 01234520456782


Wilfried Stelberg


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

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


Ex-Mitglied

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

Hi,

doch ja, oben hab ich's ja schon geschrieben. Obige Schleife durch alle Texte durchlaufen, verknüpft mit einem Toleranzwert für 'maximal darf soweit auseinander sein' und Du bist durch.

- alfred -

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

DirkiBoy
Mitglied



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

Beiträge: 13
Registriert: 07.05.2009

erstellt am: 19. Jul. 2009 20: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 zusammen,

so wie ich das sehe beziehen sich beide Lösungen (am ende meine auch) auf das Durchlaufen aller relevanten Felder in einer Schleife und anschließenden vergleich mit der maßgebenden Koordinate.

Mal General, gibt es keine Möglichkeit in ACAD eine Vorauswahl mittels Filter (Where condition) zu setzen so, dass nicht jedesmal alle Felder durchlaufen werden müssen? So Datenbank mäßig halt.

Danke
Dirk 

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


Ex-Mitglied

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

Hi Dirk,

darum war meine Idee, zuerst aus den Elementen die notwendige Infos in einem Array zu sammeln, dann hast Du mit Array-Funktionen (oder Collection, wenn's Dir lieber ist) sehr schnellen Zugriff.

Wenn Du nur in einem Ausschnitt TextEntities finden willst, dann kannst Du das schon über SelectionSet mit Filter-Koordinaten machen, dann müssen aber die TextObjekte im sichtbaren Bereich sein, dazu kommt, dass für jedes Textelement einen Zoom-Befehl zu machen und dann ein SelectionSet zu machen (wenn Du durch den ganzen Modellbereich durchmachen willst) jedenfalls langsamer ist als obige Methode.

- alfred -

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

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