Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  Lisp
  Probleme mit der Auswertung von Schraffuren mit vla...

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:  Probleme mit der Auswertung von Schraffuren mit vla... (77 / mal gelesen)
tappenbeck
Mitglied
Vermessungsingenieur


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

Beiträge: 1221
Registriert: 30.05.2002

AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net

erstellt am: 26. Mrz. 2025 11:23    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


hatch2mpolygon_2025-03-25.lsp

 
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
良い精神




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

Beiträge: 22482
Registriert: 03.06.2002

Alles

erstellt am: 26. Mrz. 2025 11:35    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 tappenbeck 10 Unities + Antwort hilfreich

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


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

Beiträge: 1221
Registriert: 30.05.2002

AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net

erstellt am: 26. Mrz. 2025 11:46    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

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
良い精神




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

Beiträge: 22482
Registriert: 03.06.2002

Alles

erstellt am: 26. Mrz. 2025 12:18    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 tappenbeck 10 Unities + Antwort hilfreich

>"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


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

Beiträge: 1221
Registriert: 30.05.2002

AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net

erstellt am: 26. Mrz. 2025 12:21    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

Moin!

Du hast recht - neue Zeichnung neue Schraffur - alles ok!

Gruß Jan

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

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