| |
 | 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: Probleme mit der Auswertung von Schraffuren mit vla... (77 / mal gelesen)
|
tappenbeck Mitglied Vermessungsingenieur
   
 Beiträge: 1221 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 26. Mrz. 2025 11:23 <-- editieren / zitieren --> Unities abgeben:         
Moin! seit Jahren habe ich ein Werkzeug im Einsatz, dass aus Schaffuren MPolygon erzeugt. Nun mache ich das erste mal wieder nach dem Update auf AutoCAD Map 2024. Da passiert im Grunde nicht viel. * Auswahl der Schraffur * Schleife, die die Anzahl der Inseln ermittelt * und dann werden die neuen Borders eingesammelt um die MPolygone zu erzeugen. Der Codeanfang sieht wie folgt aus (alles als Anhang): Code: defun c:Hatch2MPolygon (/ vla-Hatch n loop LoopList hatchename aws) (if (and (princ "\nAssoziative Schraffuren auswählen: ") (ssget '((0 . "HATCH"))) ) (progn (princ "\nin Progn") (vlax-for vla-Hatch (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object) ) ) (setq n -1) (setq LoopList nil) (princ "\nvor repeat") (repeat (vla-get-NumberOfLoops vla-Hatch) (setq n (+ n 1)) (vla-getloopat vla-Hatch n 'loop) (if (eq (type loop) 'safearray) (setq LoopList (append LoopList (mapcar 'vlax-vla-object->ename (vlax-safearray->list loop) ) ) ) );endif );end-repeat (princ "\nhinter repeat ")(princ vla-Hatch) (setq hatchename (vlax-vla-object->ename vla-Hatch))
schon in der letzten Zeile kommt ein NIL heraus. Da ich nicht mehr so aktiv in LISP stelle ich mir die Frage, ob vielleicht sich etwas in LISP geändert hat?!?!? Schon bei der Auswahl eines einfach erzeugten Schraffurelementes ohne Border kommt die Meldung. Kann mir einer weiterhelfen?? Gruß Jan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 22482 Registriert: 03.06.2002 Alles
|
erstellt am: 26. Mrz. 2025 11:35 <-- editieren / zitieren --> Unities abgeben:          Nur für tappenbeck
Das Lisp ist nur für MAP oder CIVIL und nur für englische Versionen, damit bin ich ja eigentlich raus Aber wenn "(vlax-vla-object->ename vla-Hatch)" schon nil liefert, dann hat es nichts mit MPolygonen und diesem Lisp zutun, dann hast du ein richtiges Problem. Also bitte einmal mit einem Kreis testen: Befehl: (setq test1 (vlax-ename->vla-object (setq test (car(entsel))))) Funktioniert? Befehl: (setq test2 (vlax-vla-object->ename test1)) Funktioniert? Nach deiner bisherigen Erklärung sollte spätestens der Test2 nicht funktionieren, wie schaut es mit Test1 aus?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tappenbeck Mitglied Vermessungsingenieur
   
 Beiträge: 1221 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 26. Mrz. 2025 11:46 <-- editieren / zitieren --> Unities abgeben:         
Moin! mpolygon hatte ich auch nur erwähnt um die Funktionsweise des Programmes zu erklären. Wie Du auf englisch kommst kann ich nicht nachvollziehen. Hier das Ergebnis: Zitat:
Befehl: (setq test1 (vlax-ename->vla-object (setq test (car(entsel))))) Objekt wählen: #<VLA-OBJECT IAcadCircle 0000024505d11dd8> Befehl: (setq test2 (vlax-vla-object->ename test1)) <Objektname: 244d9553f40>
Merkwürdigerweise funktionieren die Tests auch auf Hatch. Gruß Jan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 22482 Registriert: 03.06.2002 Alles
|
erstellt am: 26. Mrz. 2025 12:18 <-- editieren / zitieren --> Unities abgeben:          Nur für tappenbeck
>"mpolygon hatte ich auch nur erwähnt um die Funktionsweise des Programmes zu erklären."Da AutoCAD oder auch AutoCAD LT und einige weitere Programme den MPolygon-Befehl nicht kennen und man es so nicht 1:1 testen kann mit diesen Programmen, wollte ich es erwähnt haben. >>"Wie Du auf englisch kommst kann ich nicht nachvollziehen." Den Fehler kann ich leicht erklären: Ich schaute in die deutsche MAP3D Hilfe und da gibt es keine entsprechende MPOLYGON (Befehl) Seite, daraus schloss ich das es englisch wäre. JETZT kann ich aber sagen: Die Dokumentation des Befehls fehlt in allen Sprachen, in Civil3D wie auch MAP3D Zurück zum Thema: >>"Merkwürdigerweise funktionieren die Tests auch auf Hatch" Na dann: MAP3D Neustart, versuche dein Lisp noch einmal in einer neuen Datei, mit neuen Schraffuren. Das Lisp ändert ja bis (setq hatchename (vlax-vla-object->ename vla-Hatch)) nichts an der Datei, also liegt es an deinen Schraffuren (Annahme).
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tappenbeck Mitglied Vermessungsingenieur
   
 Beiträge: 1221 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 26. Mrz. 2025 12:21 <-- editieren / zitieren --> Unities abgeben:         
|