| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Punkt innerhalb Fläche aus Polylinie (2355 mal gelesen)
|
otm Mitglied Bauingenieur
Beiträge: 167 Registriert: 26.08.2009
|
erstellt am: 29. Okt. 2009 22:09 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum, ich bin seit geraumer Zeit am Knobeln, wie ich bei beliebig geformten Polylinien einen Koordinatenpunkt innerhalb der von der Polylinie umschriebenen Fläche ermitteln kann, um an diesem Punkt die Flächengröße als Text einzutragen. Die Polylinien sind alle geschlossen und kreuzen sich nirgends (keine 8 oder so ähnliche Formen). In Civil gibt es ein Objekt Parzelle. Die Beschriftung der Fläche etc. wird immer innerhalb der Fläche plaziert, auch wenn ich sichelförmige Flächen zeichne. Kennt hier jemand einen Lösungsansatz? ------------------ Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 29. Okt. 2009 22:41 <-- editieren / zitieren -->
Hi, Variante A) es gibt eine Map-Funktion '_mapcreatecentroids', die erzeugt innerhalb von geschlossenen Polylinien Punkte, vorsicht dabei aber, Inseln werden GIS-technisch nicht richtig erkannt. Variante B) Du beschäftigst Dich mit GIS, mit Topologieerstellung, dann können Beschriftungspositionen von Flächenobjekten (werden dann im GIS Polygone genannt) automatisch generiert werden (und an diesen Positionen auch Texte positioniert werden, deren Textinhalt aus Informationen aus der Fläche befüllt werden kann). Variante C) Du schreibst Deine geschlossenen Polylinien als SDF-Datei raus, bindest diese SDF-Dateien mittels FDO ein, dann ist die Beschriftungsposition sogar dynamisch in der Fläche, Inhalte der Beschriftung können über Stil-Einstellungen definiert werden. - alfred - ------------------ www.hollaus.at |
otm Mitglied Bauingenieur
Beiträge: 167 Registriert: 26.08.2009
|
erstellt am: 29. Okt. 2009 22:49 <-- editieren / zitieren --> Unities abgeben:
|
Ex-Mitglied
|
erstellt am: 29. Okt. 2009 22:58 <-- editieren / zitieren -->
Hi Christian, >> ich werd's mal mit A probieren Da hast Du mich jetzt aber sehr überrascht. Entweder Du kanntest die obigen Ansätze (dann würde ich die Frage hier nicht verstehen), oder Du arbeitest über Bauchgefühl ohne reale Begründung. Oder wie bist Du, ohne alle 3 Varianten zumindest probiert zu haben, jetzt gerade auf Variante A gekommen, bei der eben KEIN Text, sonderen nur Punkte erzeugt werden? - alfred - ------------------ www.hollaus.at |
otm Mitglied Bauingenieur
Beiträge: 167 Registriert: 26.08.2009
|
erstellt am: 29. Okt. 2009 23:01 <-- editieren / zitieren --> Unities abgeben:
Hi alfred, ich brauche nur einen Einfügepunkt, da ich die Textinfos alle habe und auch in die DWG schreiben kann. Allein mein Weg den Einfügepunkt für meinen Text zu bekommen (Mittelpunkt des umgebenden Rechtecks = Texteinfügepunkt) ist bei nicht gedrungenen Flächen aus Polylinien falsch. Deshalb probiere ich A. ------------------ Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
otm Mitglied Bauingenieur
Beiträge: 167 Registriert: 26.08.2009 MS Win 10 AutoCAD Civil 3D 2019.3.4 Update VBA Enabler 2019 MS Access Database Enginge X64 MSO 365 (64bit)
|
erstellt am: 03. Nov. 2009 09:05 <-- editieren / zitieren --> Unities abgeben:
Hi alfred, jetzt muss ich nochmal nachhaken. Ich hab den Befehl _mapcreatecentrois an einer geschlossenen Polylinie ausprobiert und er liefert mir einen Punkt innerhalb der Fläche. So weit, so gut. Wenn ich das ganze in ein VBA-Programm packe in dem geschlossene Polylinien als AcadObjekt übergeben werden, hat das Objekt die Eigenschaft .centroid nicht. Die Hilfe spricht auch nur von 3DSolids, nicht aber von Polylinien in 2D. Wie muss ich das ansprechen, um die Koordinaten des Punktes zu bekommen, ohne den Punkt einzufügen? ------------------ Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 03. Nov. 2009 14:35 <-- editieren / zitieren -->
Hi, >> in dem geschlossene Polylinien als AcadObjekt übergeben werden, >> hat das Objekt die Eigenschaft .centroid nicht Nee, die Polylinie hat keine Eigenschaft 'Centroid'. Die Map-Funktion 'mapcreatecentroids' generiert losgelöste Punkte, die nicht abhängig von der Polylinie sind. (Jetzt verstehst Du wahrscheinlich langsam meine Nachfrage nach Deiner Entscheidung zu A). >> Die Hilfe spricht auch nur von 3DSolids
In welchem Zusammenhang? Hat wohl nichts mit 'mapcreatecentroids' zu tun? >> Wie muss ich das ansprechen, um die Koordinaten des Punktes >> zu bekommen, ohne den Punkt einzufügen?
Selbst programmieren oder mit SendCommand obige Funktion starten (einzeln für jedes Polygon oder gesamt für alle und nachträglich suchen, welcher Punkt zu der Polylinie gehört)...viele Wege bis hin zu ganz oben mit Topologiebildung oder über FDO-Programmierung. - alfred - ------------------ www.hollaus.at |
otm Mitglied Bauingenieur
Beiträge: 167 Registriert: 26.08.2009
|
erstellt am: 03. Nov. 2009 21:14 <-- editieren / zitieren --> Unities abgeben:
Hi, ich denke A ist immer noch richtig, da ich keine verknüpften Daten erzeugen will, um die Sache für den permanent auftretenden Änderungsfall handlebar und für DAUs noch erfassbar zu gestalten. Optimal wäre für meine Zwecke vor Einfügen des ACAD-Punktes die Koordinaten 'abzufangen' und dann den Text mit der Fläche der Polylinie einzufügen. Also: Alle Polylinien mit den Eigenschaften xy durchgehen -_mapcreatecentroids starten punktkoordinaten abfangen Text mit Flächenangabe einfügen nächste PL Wie spreche ich denn die einzelnen Parameter der Funktion über die Befehlszeile bzw. dann mit Sendcommand in VBA an? Oder anders gefragt, welchen geometrischen Ansatz verfolgt die Funktion _mapcreatecentroids, wenn ich über selber programmieren nachdenken sollte? Die andere von Dir angesprochene Lösung, alle Punkte erstellen lassen und dann suchen, welcher Punkt in welcher Fläche liegt, erscheint mir doppelt gemoppelt, aber machbar. Ich hatte ja die Einfügekoordinaten bereits einmal. Nämlich in dem Moment, in dem der ACADPunkt eingefügt wurde. Das müsste doch irgendwie abzufangen sein, oder nicht? ------------------ Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|