| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Selektion MPolygon mit nentselp (600 / mal gelesen)
|
NameWaster Mitglied Technischer Zeichner
Beiträge: 3 Registriert: 25.08.2022
|
erstellt am: 25. Aug. 2022 08:31 <-- editieren / zitieren --> Unities abgeben:
Hallo allerseits, ich habe folgende Situation: ich habe 1 Raumfläche als MPolygon in AutoCAD Map gezeichnet und 1 Raumstempel als Block gezeichnet. Mit entget habe ich mir den Einfügepunkt des Blocks geholt und dessen Koordinaten übergebe ich an die nentselp Funktion und möchte das zugehörige MPolygon damit selektieren um dessen ObjektId auszulesen aber die Selektion klappt leider nicht. Scheinbar geht der Klick bei MPolygonen nur am Rand, der Einfügepunkt wird aber jeweils nur an einer beliebigen Position innerhalb des jeweiligen Polygons sein - ich muss das natürlich für mehrere Räume automatisiert hinbekommen Was kann ich tun? Bitte um Hilfe. Besten Dank! Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 943 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 25. Aug. 2022 10:37 <-- editieren / zitieren --> Unities abgeben: Nur für NameWaster
Zitat: Original erstellt von NameWaster: Hallo allerseits,ich habe folgende Situation: ich habe 1 Raumfläche als MPolygon in AutoCAD Map gezeichnet und 1 Raumstempel als Block gezeichnet. Mit entget habe ich mir den Einfügepunkt des Blocks geholt und dessen Koordinaten übergebe ich an die nentselp Funktion und möchte das zugehörige MPolygon damit selektieren um dessen ObjektId auszulesen aber die Selektion klappt leider nicht. Scheinbar geht der Klick bei MPolygonen nur am Rand, der Einfügepunkt wird aber jeweils nur an einer beliebigen Position innerhalb des jeweiligen Polygons sein - ich muss das natürlich für mehrere Räume automatisiert hinbekommen Was kann ich tun? Bitte um Hilfe. Besten Dank! Grüße
Was ist ein MPolygon? Ich nehme an, eine simple Polylinie. Der Einfügepunkt des Blocks liegt in Weltkorrdinaten vor. Wenn die Polylinie nicht genau durch diesen Punkt geht, dann kann das nicht klappen. Würde es Dir helfen, die Elemente der Blockdefinition durchzugehen, um die gesuchte Polylinie zu erhalten? Hat diese Polylinie irgendwelche Erkennungsmerkmale (besonderer Layer, Farbem XData ...?).
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NameWaster Mitglied Technischer Zeichner
Beiträge: 3 Registriert: 25.08.2022
|
erstellt am: 25. Aug. 2022 11:03 <-- editieren / zitieren --> Unities abgeben:
MPolygon ist ein ACAD MAP spezifisches Objekt, ähnlich einer SOLID-Schraffur. Es ist ein Polygon mit einer Füllung. Meine Blöcke haben jeweils eine einzigartige ID in einem Attribut stehen, derselbe Wert steht auch im jeweiligen MPolygon im Hyperlink - das wäre prinzipiell der Konnex, aber ich habe es bisher nicht geschafft den Wert des Hyperlinks mit entget oder dumpallproperties o.ä. auszulesen. Vielleicht gibt es da eine andere Möglichkeit? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 943 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 25. Aug. 2022 11:06 <-- editieren / zitieren --> Unities abgeben: Nur für NameWaster
Zitat: Original erstellt von NameWaster: MPolygon ist ein ACAD MAP spezifisches Objekt, ähnlich einer SOLID-Schraffur. Es ist ein Polygon mit einer Füllung.Meine Blöcke haben jeweils eine einzigartige ID in einem Attribut stehen, derselbe Wert steht auch im jeweiligen MPolygon im Hyperlink - das wäre prinzipiell der Konnex, aber ich habe es bisher nicht geschafft den Wert des Hyperlinks mit entget oder dumpallproperties o.ä. auszulesen. Vielleicht gibt es da eine andere Möglichkeit?
... und was ist mit XData oder XDictionary? Irgendwo wird Map diese Daten ja speichern. Ich tippe auf XData.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 25. Aug. 2022 11:09 <-- editieren / zitieren --> Unities abgeben: Nur für NameWaster
|
cadffm Moderator 良い精神
Beiträge: 22171 Registriert: 03.06.2002 Alles
|
erstellt am: 25. Aug. 2022 11:21 <-- editieren / zitieren --> Unities abgeben: Nur für NameWaster
Hätte ich mal keine Pause gemacht beim tippen, aber egal - war ja schon getippt: @Tom Ein MPolygon ist ein MPolygon(AcDbMPolygon) und ist mehr mit einer Schraffur vergleichbar, siehe auch DXF Referenz des HATCH Objektes! Definiert in der acmpolygonobj23.dbx (23 steht hier für Adeskprodukte ..2023) und eigentlich aus der Civil3D/MAP, kann aber so auch in AutoCAD erzeugt werden. Siehe auch DXF Referenz zu Objekt HATCH@NameWaster Du würdest dir selbst einen Gefallen tun bei derartigen Anfrage gleich ein Beispiel beizulegen (DWG) Wenn über die Objektdaten keine Zuordnung möglich ist, dann mußt du das MPolygon entweder mit Mathematik ermitteln, oder per Objektwahl (ssget, Methode ZAUN zB.) : Die Objekte liegen entsprechend der Enfernung vom ersten zum letzten Zaunpunkt im Auswahlsatz ab, man bräuchte also nur im Fall von deckungsgleicher Geometrie eine besondere Prüfung. Du wirst viel Information und auch Code im www finden, das Thema steht oft mit einer Überschrift wie "Punkt in Polygon" in zusammenhang, gerne auch in Englisch. Viel Spaß mit dem Thema, schau/lese ohne die Lisp-Brille, das Umsetzen in eine ProgrammierspracheX ist ja nur das letzte Beiwerk was es zu bewältigen gibt. (kannst aber natürlich auch "Fertiges" nehmen, deine Sache) Was mich nicht wundern würde: Wenn es nicht zufällig eine Civil/MAP Funktion für dein Anliegen geben würde, aber da kenne ich mich nicht aus. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22171 Registriert: 03.06.2002 Alles
|
erstellt am: 25. Aug. 2022 11:44 <-- editieren / zitieren --> Unities abgeben: Nur für NameWaster
Zitat: Original erstellt von NameWaster: Meine Blöcke haben jeweils eine einzigartige ID in einem Attribut stehen, derselbe Wert steht auch im jeweiligen MPolygon im Hyperlink ich habe es bisher nicht geschafft den Wert des Hyperlinks mit entget oder dumpallproperties o.ä. auszulesen.
Hyperlinks sind erweiterte Daten am Objekt: Befehl: (assoc -3 (entget (car(nentsel)) '("PE_URL")))
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 943 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 25. Aug. 2022 11:57 <-- editieren / zitieren --> Unities abgeben: Nur für NameWaster
Zitat: Original erstellt von cadffm:
Hyperlinks sind erweiterte Daten am Objekt: Befehl: (assoc -3 (entget (car(nentsel)) '("PE_URL")))
Er will ja automatisieren und kommt deshalb nicht per NENTSEL an das Objekt ran. Er muss, wie schon geschrieben, die Elemente der Blockdefinition durchlaufen und auf MPOLYGON und die XData prüfen. (setq result nil) (foreach en l-eninblockdef (if (and (= "MPOLYGON" (cdr (assoc 0 (entget en)))) (setq dat (assoc -3 (entget en) '("PE_URL"))) ) (setq result (cons (list en dat) result)) ) ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22171 Registriert: 03.06.2002 Alles
|
erstellt am: 25. Aug. 2022 12:00 <-- editieren / zitieren --> Unities abgeben: Nur für NameWaster
|
Meldin Mitglied
Beiträge: 397 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 25. Aug. 2022 12:08 <-- editieren / zitieren --> Unities abgeben: Nur für NameWaster
Spielerei ab manchmal hilft es bei der Auswahl den Zoom zu verändern. Code: (setq cmdecho-var (getvar "cmdecho")) (setvar "cmdecho" 0) (setq AWS-Punkt '(1.62967 247.961 0.0)) (command "_.Zoom" "g" "");;; <<<<<<<<<---------------- (setq entName (car (nentselp AWS-Punkt))) (setvar "cmdecho" cmdecho-var)
------------------ Gruß Wolfgang Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NameWaster Mitglied Technischer Zeichner
Beiträge: 3 Registriert: 25.08.2022
|
erstellt am: 25. Aug. 2022 12:19 <-- editieren / zitieren --> Unities abgeben:
|