Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Polylinie / entmake / entlast

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
Autor Thema:  Polylinie / entmake / entlast (1251 mal gelesen)
Bernd10
Mitglied



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

Beiträge: 763
Registriert: 20.11.2003

Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz
16 GB RAM
Windows 10 Pro 64-bit
AutoCAD Mechnical 2020 Deu

erstellt am: 25. Aug. 2009 10:29    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

Hallo,

ich ermittle die Liste der Gruppencodes einer Polylinie mit der Funktion entget und ändere in der Liste den Layer. Danach übergebe ich die geänderte Liste der Funktion entmake. Zurück bekomme ich dann eine Liste, wodurch ich annehme, dass eine neue Polylinie erstellt wurde. Führe ich dann die Funktion entlast aus, bekomme ich aber keine Polylinie, sondern eine anderes Objekt zurück.

Hier eine Ausschnitt meiner Programmierung:
(setq lentgettmp (entget eblocksubele))
(setq llayeralt (assoc 8 lentgettmp))
(setq llayerneu (cons 8 clayerschraff))
(setq lentmaketmp lentgettmp)
(setq ilpos (listenpos_ermitteln lentmaketmp llayeralt 0 2))
(setq lentmaketmp (listeninhalt_ersetzen lentmaketmp ilpos llayerneu))
(setq lentkamekon (entmake lentmaketmp))
(if (/= lentkamekon nil)
  (setq etmp (entlast))
) ; if

Wie muss eine gültige Liste für die Funktion entmake einer Polylinie aussehen?

Danke im Voraus und vele Grüße
Bernd

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 25. Aug. 2009 10:36    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 Bernd10 10 Unities + Antwort hilfreich

Hi Bernd,
schau mal hier und in der Hilfe ist entmake auch recht gut erklärt.

Edit: entget liefert dir "zuviel" (Objektname...) schau dir mal deine Liste an und subst oder vla-copy... und vla-put..

------------------
Mfg Heiko

Elefantenjagd in Afrika
"... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..."   (www.uni-leipzig.de/~rotheh/elefant.htm)

[Diese Nachricht wurde von Dorfy am 25. Aug. 2009 editiert.]

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 25. Aug. 2009 11:31    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 Bernd10 10 Unities + Antwort hilfreich

ist das eine LW- oder eine 2D-Polylinie, die du entmaken willst ? Bei einer 2D-Polylinie mußt du die Vertexes auch erzeugen ...  Wenn du da nicht so fit bist, kopiere einfach die 1.PL mittels Copy-Command-aufruf und ändere den Layer der neu erzeugten dann auch mit (command "_change" ...

z.B:
(progn
(setq LASTOBJ(entlast))
(setq PL (car(entsel "\nPolylinie: ")))
(command "_copy" PL "" '(0 0 0)'(0 0 0))
(command "_change" (entnext LASTOBJ) "" "_p" "_Layer" "0" "")
)

------------------
  - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

Bernd10
Mitglied



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

Beiträge: 763
Registriert: 20.11.2003

Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz
16 GB RAM
Windows 10 Pro 64-bit
AutoCAD Mechnical 2020 Deu

erstellt am: 25. Aug. 2009 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

Hallo Heiko,

danke für Deine Information.

Zitat:
Original erstellt von Dorfy:

schau mal hier und in der Hilfe ist entmake auch recht gut erklärt.

Edit: entget liefert dir "zuviel" (Objektname...) schau dir mal deine Liste an und subst oder vla-copy... und vla-put..


ich habe aus der Liste von entget die Gruppencodes 66 und 70 gelöscht. Die noch vorhandenen Gruppencodes für Objektname und handle werden laut Hilfe zu entmake ignoriert. Totzdem hat es nicht funktioniert. Ich habe ja die Vertexes nicht (siehe Beitrag von Thomas). Ich versuche nun seinen Vorschlag umzusetzen.

Viele Grüße
Bernd


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

Bernd10
Mitglied



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

Beiträge: 763
Registriert: 20.11.2003

Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz
16 GB RAM
Windows 10 Pro 64-bit
AutoCAD Mechnical 2020 Deu

erstellt am: 25. Aug. 2009 12:16    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

Hallo Thomas,

danke für Deinen Vorschlag.

Zitat:
Original erstellt von CADmium:
ist das eine LW- oder eine 2D-Polylinie, die du entmaken willst ? Bei einer 2D-Polylinie mußt du die Vertexes auch erzeugen ...  Wenn du da nicht so fit bist, kopiere einfach die 1.PL mittels Copy-Command-aufruf und ändere den Layer der neu erzeugten dann auch mit (command "_change" ...

z.B:
(progn
(setq LASTOBJ(entlast))
(setq PL (car(entsel "\nPolylinie: ")))
(command "_copy" PL "" '(0 0 0)'(0 0 0))
(command "_change" (entnext LASTOBJ) "" "_p" "_Layer" "0" "")
)


bei mir funktioniert der copy-Befehl nicht. Als Information bei "Objekte wählen:" in der Befehlszeile erhalte ich "<Unzulässig Objektname: 7E496428>". Mein zu kopierende Objekt ist vom Typ "POLYLINE", allerdings ist es ein Unterobjekt vom Objekt "BLOCK". Ich vermute, dass deshalb der copy-Befehl nicht funktioniert, oder?

Als einzige Möglichkeit könnte ich die Koordinaten der Polylinie ermitteln und damit eine neue erstellen.

Viele Grüße
Bernd


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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 25. Aug. 2009 12: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 Nur für Bernd10 10 Unities + Antwort hilfreich

naja .. um 2d-Polylinien zu kopieren und die Kopie gleich auf einen neuen Layer zu packen sollte das gehen :


(if(and(setq PL(car(entsel "\nPolylinie: ")))
      (setq DATA(entget PL))
      (member '(100 . "AcDb2dPolyline") DATA)
      (setq LAYER "0")
  )
  (progn
    (setq DATA(subst (cons 8 LAYER) (assoc 8 DATA)DATA))
    (entmake (vl-remove-if '(lambda(x) (member (car X) '(-1 330 5))) DATA))
    (setq PKT PL)
    (while (and(setq PKT(entnext PKT))
              (setq PDATA (entget PKT))
              (=(cdr(assoc 0 PDATA))"VERTEX")
          )
      (entmake (subst(cons 8 LAYER) (cdr(assoc 8 PDATA))PDATA))
    )     
    (entmake '((0 . "SEQEND")))   
  )
)

.. mit vla-Funktionen gehts natürlich noch etwas einfacher, aber das ist ein anderes Thema..

------------------
  - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 25. Aug. 2009 12:43    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 Bernd10 10 Unities + Antwort hilfreich

hi,
na dann noch ne zeile in vl

(vla-put-layer (car(vlax-invoke
    (vla-get-Activedocument (vlax-get-Acad-Object))
    'CopyObjects
    (list (vlax-ename->vla-object (car (entsel))))
    )) "Neuer_Layer")

------------------
Mfg Heiko

Elefantenjagd in Afrika
"... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..."   (www.uni-leipzig.de/~rotheh/elefant.htm)

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

Bernd10
Mitglied



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

Beiträge: 763
Registriert: 20.11.2003

Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz
16 GB RAM
Windows 10 Pro 64-bit
AutoCAD Mechnical 2020 Deu

erstellt am: 25. Aug. 2009 13:10    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

Hallo Heiko, hallo Thomas,

ich werde eure Vorschläge für meinen Fall testen und einen der Beiden verwenden.

Danke und viele Grüße
Bernd

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)2023 CAD.de | Impressum | Datenschutz