| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY: der unverzichtbare Partner für umfassende KI-Lösungen von Workstations bis zu Edge Computing und KI-Cluster-Bereitstellung, eine Pressemitteilung
|
Autor
|
Thema: Alle Einfügepunkte eines Blockes ermitteln (1380 mal gelesen)
|
THE_ONE Mitglied Student, Alter:23
 
 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 / zitieren --> Unities abgeben:         
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
    

 Beiträge: 1997 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 19. Mrz. 2007 12:31 <-- editieren / zitieren --> Unities abgeben:          Nur für THE_ONE
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
 
 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 / zitieren --> Unities abgeben:         
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
       

 Beiträge: 13530 Registriert: 30.11.2003 .
|
erstellt am: 19. Mrz. 2007 12:51 <-- editieren / zitieren --> Unities abgeben:          Nur für THE_ONE
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
 
 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 / zitieren --> Unities abgeben:         
|
CADmium Moderator Maschinenbaukonstrukteur
       

 Beiträge: 13530 Registriert: 30.11.2003 .
|
erstellt am: 19. Mrz. 2007 13:12 <-- editieren / zitieren --> Unities abgeben:          Nur für THE_ONE
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 良い精神
       

 Beiträge: 22477 Registriert: 03.06.2002 Alles
|
erstellt am: 19. Mrz. 2007 13:14 <-- editieren / zitieren --> Unities abgeben:          Nur für THE_ONE
|
THE_ONE Mitglied Student, Alter:23
 
 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 / zitieren --> Unities abgeben:         
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
       

 Beiträge: 13530 Registriert: 30.11.2003 .
|
erstellt am: 19. Mrz. 2007 13:53 <-- editieren / zitieren --> Unities abgeben:          Nur für THE_ONE
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
 
 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 / zitieren --> Unities abgeben:         
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 |