Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Blockauflösung in Lisp

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
Autor Thema:   Blockauflösung in Lisp (1079 mal gelesen)
Luggi77
Mitglied
Bauzeichner

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

Beiträge: 3
Registriert: 27.06.2012

Autocad Map 3d 2012, 64Bit

erstellt am: 27. Jun. 2012 12:15    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 zusammen

Habe folgendes Problem. Über ein Lisp fügen wir in Signalisations- und Markierungsplänen sogenannte "Haifischzähne" ein. Diese werden automatisch in einem vordefinierten Abstand entlang einer Linie eingefügt. Da sich jedoch die Darstellung unterscheidet, abhängig davon ob die Markierung bestehend ist, entfernt wird oder neu angebracht wird, habe ich nun den Block dynamisch mit den drei unterschiedlichen Sichtbarkeiten ergänzt.
Dies bedeutet nun aber, dass ich eine Block in Block-Situation erzeugt habe. Dies wiederum verlangt, dass der Block beim Einfügen aufgelöst wird.
Nun habe ich über die Suchfunktion zwar verschiedene Varianten gefunden, wie dies gelöst werden kann (mit dem Befehl _explode). Leider kenne ich mich bei Lisp aber nicht so gut aus (die unten eingefügte Lisp stammt von meinem pensionierten Vorgänger) und habe deswegen noch nicht herausgefunden, wie die Zeile genau aussehen müsste und wo man die genau einfügen müsste. Kann mir da jemand helfen?

Die Lisp sieht zur Zeit folgendermassen aus:

(defun C:LD3  (/ pkt1 pkt2 pktm wing n nx)
  (setvar "cmdecho" 0)
  (command "_units""2""4""1""4""0""n")
  (command "_-layer" "m" "TBA_MARKIERUNG""")
  (princ "\n Setzen einer < Kein Vortritt >  Linie.")
  (setq oname (car (entsel "\n Linie wählen: "))
        pkt1 (assoc 10 (entget oname))
        x1 (cadr pkt1)
        y1 (caddr pkt1)
        pkt2 (assoc 11 (entget oname))
        x2 (cadr pkt2)
        y2 (caddr pkt2)
        dx (- x2 x1)
        dy (- y2 y1)
        s (sqrt (+ (* dx dx) (* dy dy)))
        ax (/ (* dx 0.80) s)
        ay (/ (* dy 0.80) s)
        pkt1 (cdr pkt1)
        pkt2 (cdr pkt2)
        win (angle pkt1 pkt2)
        wing (/ win 0.0174533)
        n 1
        nx (+ (/ s 0.80) 0.01)
    );Ende setq
    (command "_-INSERT" "ld3" pkt1 "1" "1" wing)
    (while (< n nx)
              (if (< n nx) (progn
        (setq x1m (+ x1 (* n ax))
              y1m (+ y1 (* n ay))
              pktm (list x1m y1m)
              n (+ n 1)
        );ende setq
          ( command "_-INSERT" "ld3" pktm "1" "1" wing)
      ));Ende progn
    );ende while
);Ende defun

Besten Dank schon mal für Eure Hilfe!
Gruss
Lukas

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: 19237
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 27. Jun. 2012 12:44    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 Luggi77 10 Unities + Antwort hilfreich

Schreibe mal ein * vor den Blocknamen !

(Wenn gleich ich auch hoffe dich nicht verstanden zu haben bezüglich der Blockphilosophie)

(command "_-INSERT" "*ld3" pkt1 "1" "1" wing)

------------------
CAD.de System-Angaben  -  CAD on demand  -  User:FAQ(Acad)

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

Luggi77
Mitglied
Bauzeichner

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

Beiträge: 3
Registriert: 27.06.2012

Autocad Map 3d 2012, 64Bit

erstellt am: 27. Jun. 2012 13: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

Das hab ich schon versucht, an beiden Stellen. Hat leider zu einem völlig andern Verhalten geführt.

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: 19237
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 27. Jun. 2012 13:48    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 Luggi77 10 Unities + Antwort hilfreich

Das glaube ich dir gerne, aber der Block wurde aufgelöst eingefügt, da bin ich mir relativ sicher.
Nur das Ergebnis davon hast du wohl nicht erwartet.
Um da mitreden zu können müßte man die ganze Geschichte hören und nicht nur
"was muß ich ändern damit die Blockreferenz aufgelöst eingefügt wird ?"

Falls ich, bzw. meine Glaskugel daneben liegt: Entschuldige bitte, ist manches Mal schwer übers Forum zu helfen. 

------------------
CAD.de System-Angaben  -  CAD on demand  -  User:FAQ(Acad)

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

spider_dd
Mitglied



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

Beiträge: 982
Registriert: 27.11.2003

Win 10Pro
Intel(R) Core(TM) i7-7700
NVIDIA Quadro P1000
ACAD, Civil-3D 2018

erstellt am: 27. Jun. 2012 14:30    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 Luggi77 10 Unities + Antwort hilfreich

Beim aufgelösten Einfügen (mit * vorm Blocknamen) wird nur ein Skalierfaktor abgefragt. Die Zeile müsste also m. E. lauten:

(command "_-INSERT" "*ld3" pkt1 "1" wing)

HTH
Gruß
Thomas

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: 19237
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 27. Jun. 2012 14:38    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 Luggi77 10 Unities + Antwort hilfreich

danke Thomas 

------------------
CAD.de System-Angaben  -  CAD on demand  -  User:FAQ(Acad)

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

Luggi77
Mitglied
Bauzeichner

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

Beiträge: 3
Registriert: 27.06.2012

Autocad Map 3d 2012, 64Bit

erstellt am: 27. Jun. 2012 17:06    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

Herzlichen Dank Euch zwei!

Musste bei beiden Zeilen * einfügen und jeweils das erste "1" entfernen. Jetzt funktionierts.

(command "_-INSERT" "*ld3" pkt1 "1" wing)
    (while (< n nx)
              (if (< n nx) (progn
        (setq x1m (+ x1 (* n ax))
              y1m (+ y1 (* n ay))
              pktm (list x1m y1m)
              n (+ n 1)
        );ende setq
          ( command "_-INSERT" "*ld3" pktm "1" wing)

[Diese Nachricht wurde von Luggi77 am 27. Jun. 2012 editiert.]

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