| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Alle Objekte innerhalb eines Polygons waehlen ?? (1012 mal gelesen)
|
Grumbleman Mitglied
Beiträge: 6 Registriert: 16.04.2004
|
erstellt am: 16. Apr. 2004 11:41 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe eine zeichnung mit mehreren (ca.150) polygonen in denen sich textobjekte befinden, die mit einer datenbank verknuepft sind. nun muss ich eine eigenschaft dieser objekte aendern ihnen sozusagen die polygon-ID zuweisen in dem sie sich befinden. hat jemand ne idee wie ich das machen kann? ich selbst dachte mir ich waehle einfach alle objekte innerhalb des polygons aus, aber mit fp ist das extrem umstaendlich und fuer mich nicht praktikabel, da das polygon (welches ja vorhanden ist) extra noch umfahren werden muss. weiss also jemand wie ich die objekte innerhalb des polygons einfacher auswaehlen kann? oder kennt jemand nochn einfacheren weg fuer mein prob? PS: ich nutze autocad map Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 16. Apr. 2004 12:12 <-- editieren / zitieren --> Unities abgeben: Nur für Grumbleman
Hallo Grumbleman, Fragen: wie willst du den Text mit der PLine verknüpfen? Soll die ID (Handle) als Wert in den Text geschrieben werden? Soll die Verknüpfung nur in der Datenbank erfolgen? ::: ??? Mit Lisp speziell dann ssget und noch ein paar Zeilen mehr kann man das sicher automatisieren. Ich habe mal Lösungen realisiert, in dem die Texte innerhalb eines Polygons mit dem Polygon selbst in einen Block mit Attributen umwandelt. Dann gehören die wirklich zusammen. Suchst du so etwas? Schreib mal etwas mehr, oder schick mir ein Mail mit einer Bsp-Zeichnung, in der das Vorher und Nachher dargestellt ist. Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Da weiß man, wann man's hat! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Grumbleman Mitglied
Beiträge: 6 Registriert: 16.04.2004
|
erstellt am: 16. Apr. 2004 12:36 <-- editieren / zitieren --> Unities abgeben:
also die id des polygons hab ich mir selbst ausgedacht (es geht mir da nicht um handles) und in das jeweilige polygon reingschrieben, als text objekt in einem seperaten layer. ich hab auch einen layer erstellt, der die ids meiner datensaetze als textobjekte abbildet. um gruppen dieser objekte hab ich nun polylinien bekommen ( geschlossene gebiete ). zum besseren verstaendnis will ich noch sagen dass die datensaetze haeuser einer stadt repraesentieren (ich habe da gauss-krueger-koordinaten), die polygone fassen nun einzelne haeuser als bloecke zusammen. in der datenbank fehlt aber zu jedem haus die angabe in welchem block es sich befindet. deshalb habe ich dort eine spalte anghangen, in dem ich nun die von mir gewaehlte polygon-id (=block-id) eintragen will. ich habe das mal fuer ein kleineres polygon die in diesem enthaltenen textobjekte manuell markiert , dann die eigenschaften aufgerufen und dort die infos aus der datenbank erhalten und in die leere spalte die id eingetragen, ich hatte somit allen im polygon enthaltenen haeusern die block-id zugewiesen. ich hoffe das laesst so einigermassen erkennen was ich machen moechte. gruss grumbleman Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9732 Registriert: 01.12.2003 AutoCAD 2.5 - 2022, Civil 3D, MAP 3D, ACADM Inventor AutoCAD 2022, AIP 4-2022 Win 10
|
erstellt am: 16. Apr. 2004 13:31 <-- editieren / zitieren --> Unities abgeben: Nur für Grumbleman
Hallo Grumbleman, welche AutoCAD Version setzt du ein, welche Art von Datenbank nutzt du, wie sieht die Datenanbindung aus, wie werden die Häuser in der Zeichnung repräsentiert (Blöcke, Polylinien u. ä.)? Sofern AutoCAD Map verfügbar, einfach eine Flächentopologie erstellen aus den Unringspolygonen mit dem Blocktext (Block nicht Acadblock sondern Häuserblock - richtig?) als Flächen-ID. Diese Topologie mit einer weiteren Topologie (Punkt bzw. Knotentopologie aus den Häusern) verschneiden, dann weiss jedes Haus in welchem Häuserblock es liegt.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Grumbleman Mitglied
Beiträge: 6 Registriert: 16.04.2004
|
erstellt am: 16. Apr. 2004 13:45 <-- editieren / zitieren --> Unities abgeben:
hi also ich habe hier autodesk map 2004 zur verfuegung. eine flaechentopologie hab ich auch erstellt, dummerweise weiss ich jetzt nicht so richtig wie ich weitermachen soll, die verschneiderei ist mir nich gelaeufig. ich hab grad erst angefangen mich damit auseinanderzusetzen. die datenbank ist eine access datenbank. die haeuser werden einfach nur durch ein text objekt repraesentiert, dessen textwert dem id-wert in der datenbank entspricht. ich habe aus der datenbank heraus mittels vb ein script erstellt, welches diese textobjekte mit den entsprechenden ids in meine zeichnung zeichnet. die verknuepfung zur datenbank erfolgt eben ueber diese ids, so das jedem datensatz ein textobjekt zugeordnet werden kann. mit block meine ich nicht acadbloecke sondern einfach nur selbst definierte stadtgebiete, die von mir als namen ein textobjekt bekommen haben, welches ich innerhalb der polygone platziert habe. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Claudio Mitglied Architekt
Beiträge: 334 Registriert: 13.04.2002 ACA, Revit, MAX 2020
|
erstellt am: 16. Apr. 2004 18:04 <-- editieren / zitieren --> Unities abgeben: Nur für Grumbleman
Hallo Grumbleman! In der Hoffnung, dass Du LISP-bewandert bist möchte Dir jetzt mal nur auf Deine ERSTE Frage antworten - Wie selektiert man Textobjekte innerhalb einer umrandenden Polylinie: ;;;LW-POLYLINIE auswählen, Text innerhalb wird ausgewählt ;;;Achtung:keine Polylinien mit Überkreuzungen !! (defun c:PW(/ Plist ELE AWA1) ;;Programmaufruf mit PW (setq ELE (entget (car (entsel "\nPOLYLINIE WÄHLEN :")))) ;;Umrandung (if (= (cdr (assoc 0 ELE)) "LWPOLYLINE") (progn ;;muss LW_Polylinie sein (foreach N ELE (if (= (car N) 10) ;;Punktliste erstellen (setq Plist (append Plist (list (append (cdr N) (list 0))))))) ;;EndFOREACH (setq AWA (ssget "_WP" plist '((0 . "TEXT"))) ;;AUSWAHLSATZ lt.Punktliste und NUR TEXT AWA1 (list nil awa)) ;;SSGETFIRST simulieren für GRIPHOT-Darstellung (apply 'sssetfirst AWA1) ;;MIT SSSETFIRST->GRIPHOT der gewählten Elemente ) ;;EndPROGN (alert "Element für Auswahl \nwar keine LW-Polylinie!") ;;Wenn keine LW-POLY->Meldung ) ;;EndIF (princ) ;;Rückmeldung unterbinden ) ;;EndDEFUN ;;;;GRUSS CLAUDIO Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 17. Apr. 2004 08:53 <-- editieren / zitieren --> Unities abgeben: Nur für Grumbleman
Hatten gerade im Lispforum ein ähnliches Problem. Läßt sich - denke ich - für deinen Fall umstricken/erweitern (Siehe Claudio). Funktioniert mit LW- und 2d-Polylinien. Hier gehts zum Beitrag. ------------------ - Thomas - Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |