Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Alle Einfügepunkte eines Blockes ermitteln

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:  Alle Einfügepunkte eines Blockes ermitteln (1226 mal gelesen)
THE_ONE
Mitglied
Student, Alter:23


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

Beiträge: 299
Registriert: 27.04.2005

AMD XP 2000, 512MB-RAM, WIN XP Pro
Readon 9600Pro
VIZ 2005, Autocad 2007,(Mechanical)

erstellt am: 19. Mrz. 2007 12:28    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!

Frage kann mir vielleicht einer von euch sagen wie man alle Einfügepunkte eines Blockes bekommt-> am besten in einer Liste!

Hab hier im Forum ein Auto-Nummerierungstool gefunden, das ich mir auf meine Problemstellung angepasst habe! Nur muss ich dazu jeden Einfügepunkt selber angeben. Und eigentlich will ich ja nur das jeder Block eine eindeutige Nummer bekommt die neben dem Block steht (in einem fixen Abstand), dazu bräuchte ich aber die Einfügepunkte des Blockes.
hier mal was ich bis jetzt habe:

Code:
(defun C:Num (/ KREISRADIUS TXT_KORD TXT_KORD TXT_HOEHE TXT_XY START_NUMMER PKT)
  (setq KREISRADIUS 14.0)
  (setq TXT_KORD 1.6)
  (setq TXT_HOEHE 7.0)
  (setq TXT_XY (strcat "@" (rtos TXT_KORD 2 2) "," (rtos TXT_KORD 2 2)))
  (if (null START_NUMMER)
    (setq START_NUMMER (getint "\nStart Pkt-Nummer: "))
  )
  (setq PKT 't)
  (while PKT
    (setq PKT (getpoint (strcat "\nKoordinate für "
                                (itoa START_NUMMER)
                                " eingeben: "
                        )
              )
    )
    (if (/= PKT NIL)
      (progn
        (command "_text" TXT_XY TXT_HOEHE 0.0 START_NUMMER)
        (setq START_NUMMER (1+ START_NUMMER))
      )                                ;end progn
    )                                  ;end if
  );end while

  )



Und statt dem while Koordinateneingabe, würde ich jetzt die whileschleife für alle Einfügepunkt laufen lassen. Nur leider weiß ich nicht wie ich diese bekomme (-> hab so gut wie keine visual Lisp kenntnisse)

MFG THE_ONE

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

CADwiesel
Moderator
CAD4FM UG




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

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 19. Mrz. 2007 12: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 THE_ONE 10 Unities + Antwort hilfreich

Die Einfügepunkte stehen im GC 10 der Blockreferenz.
Am Besten alle Referenzen einsammelm mit z.b: (ssget "_X" (list(cons 0 "INSERT)(cons 2 "Blockname)))
und dann mit repeat durch den was gehen und den gc 10 auslesen und in 'ne liste schreiben

------------------
Gruß
CADwiesel
Besucht uns im CHAT

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

THE_ONE
Mitglied
Student, Alter:23


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

Beiträge: 299
Registriert: 27.04.2005

AMD XP 2000, 512MB-RAM, WIN XP Pro
Readon 9600Pro
VIZ 2005, Autocad 2007,(Mechanical)

erstellt am: 19. Mrz. 2007 12: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

Zitat:
Original erstellt von CADwiesel:
Die Einfügepunkte stehen im GC 10 der Blockreferenz.
Am Besten alle Referenzen einsammeln mit z.b: (ssget "_X" (list(cons 0 "INSERT)(cons 2 "Blockname)))


(ssget "_X" '((cons 0."INSERT)(cons 2. "Blockname")))
ist das eigentlich das was du gemeint hast??

Zitat:
Original erstellt von CADwiesel:
und dann mit repeat durch den was gehen und den gc 10 auslesen und in 'ne liste schreiben
[/i]

Wie meinst du das genau versteh den Satz ned ganz? Sorry


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: 19. Mrz. 2007 12:51    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 THE_ONE 10 Unities + Antwort hilfreich

mal ein Bespiel
(setq BLOCKNAME "PUNKT")
(if(setq AWS(ssget (list '(0 . "INSERT")(cons 2 BLOCKNAME)(cons 410 (getvar "ctab")))))
  (repeat (sslength AWS)
    (princ "\nEinfügepunkt:")
    (setq OBJ (ssname AWS 0))
    (princ (cdr(assoc 10(entget OBJ))))
    (ssdel OBJ AWS)       
  )
)

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

THE_ONE
Mitglied
Student, Alter:23


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

Beiträge: 299
Registriert: 27.04.2005

AMD XP 2000, 512MB-RAM, WIN XP Pro
Readon 9600Pro
VIZ 2005, Autocad 2007,(Mechanical)

erstellt am: 19. Mrz. 2007 13:09    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

Frage was macht das??
(cons 410 (getvar "ctab"))

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: 19. Mrz. 2007 13:12    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 THE_ONE 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von THE_ONE:
Frage was macht das??
(cons 410 (getvar "ctab"))

gib es doch mal in der Befehlszeile ein    .. der Rechner wird schon nicht gleich explodieren 

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

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

Alles

erstellt am: 19. Mrz. 2007 13:14    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 THE_ONE 10 Unities + Antwort hilfreich

Schlage doch einfach in der Hilfe nach.

Acadhilfe:
CTAB

Entwicklerhilfe:
GETVAR
CONS
Dxf-Code 410

------------------
die alte SUCHfunktion.. - System-Angaben - User:FAQ(Adesk)

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

THE_ONE
Mitglied
Student, Alter:23


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

Beiträge: 299
Registriert: 27.04.2005

AMD XP 2000, 512MB-RAM, WIN XP Pro
Readon 9600Pro
VIZ 2005, Autocad 2007,(Mechanical)

erstellt am: 19. Mrz. 2007 13:49    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

Danke, hätte selber nachschauen sollen! Gut das ihr mich immer wieder daran erinnert das es die Acad Hilfe gibt!

Hier das fertig TOOL zur Automatischen Nummerierung von Blöcken.

Code:
(defun C:Num (/ TXT_HOEHE TXT_XY START_NUMMER X_DIST Y_DIST)
  (setq TXT_HOEHE 80.0)
  (setq START_NUMMER 0)
  (setq X_DIST 300.0 Y_DIST 10.0)
;;;  (if (null START_NUMMER)
;;;    (setq START_NUMMER (getint "\nStart Pkt-Nummer: "))
;;;  )

  (setq BLOCKNAME "audio_JBL")
  (if(setq AWS(ssget "_X" (list '(0 . "INSERT")(cons 2 BLOCKNAME)(cons 410 (getvar "ctab")))))
  (repeat (sslength AWS)
    ;(princ "\nEinfügepunkt:")
    (setq OBJ (ssname AWS 0))
    (setq TXT_XY (cdr(assoc 10(entget OBJ))))
    (setq TXT_XY (list (+ (car TXT_XY) X_DIST) (+ (cadr TXT_XY) Y_DIST) (last TXT_XY)))
    (command "_text" TXT_XY TXT_HOEHE 0.0 (strcat "LS " (rtos START_NUMMER 2 0)) )
    (setq START_NUMMER (1+ START_NUMMER))
    (ssdel OBJ AWS)     
  )
)
)


Gibt es eine Möglichkeit das alle Beschriftungen entfernt werden wenn man auf zurück drückt! Weil derzeit muss ich so oft zurück drücken, wie Text eingefügt wurden.

MFG THE_ONE

[Diese Nachricht wurde von THE_ONE am 19. Mrz. 2007 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: 19. Mrz. 2007 13:53    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 THE_ONE 10 Unities + Antwort hilfreich

Schau dir die Optionen des Befehls ZURÜCK (_undo) an ... das entsprechend in ein command am Anfang und am Ende gepackt ....

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

THE_ONE
Mitglied
Student, Alter:23


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

Beiträge: 299
Registriert: 27.04.2005

AMD XP 2000, 512MB-RAM, WIN XP Pro
Readon 9600Pro
VIZ 2005, Autocad 2007,(Mechanical)

erstellt am: 19. Mrz. 2007 18:05    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

Wollte jetzt gerade das mit _undo einbauen und siehe da das skript findet keine Blöcke mehr! Nur wenn ich neue Blöcke einfüge findet das skript diese! Blöcke die beim öffnen der Datei schon vorhanden sind werden nicht gefunden, warum?? 

MFG THE_ONE

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