Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Objekte im Auswahlsatz ändern

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:  Objekte im Auswahlsatz ändern (572 mal gelesen)
woppi
Mitglied
cnc-programmierung


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

Beiträge: 65
Registriert: 16.01.2009

Acad Architecture 2020

erstellt am: 13. Aug. 2021 14: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

Hallo,

leider stehe ich gerade ziemlich auf der Leitung.
Habe auch schon länger kein LISP Programm mehr geschrieben.

Ich möchte bei allen ausgewählten Kreisen den Ø ändern.
Auswählen geht, aber ich hänge am entmod.
Kann mir bitte einer weiterhelfen.

Code:
(defun c:X81-6 (/ data )          ;Durchmesser ändern
  (setq data  (ssget  '((0 . "CIRCLE")))             
            zähler 0)

  (repeat (sslength data)
  (setq objekt (ssname data zähler)
            zähler (1+ zähler))
    (entmod                                              ;ab hier hängt es
  (list
    (assoc -1  objekt)
    '(40 . 4.05)
  ))
  )
)
 


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: 13. Aug. 2021 14: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 woppi 10 Unities + Antwort hilfreich

(defun c:X81-6 (/ data )          ;Durchmesser ändern
  (if (setq zähler 0 data  (ssget '((0 . "CIRCLE"))))
      (repeat (sslength data)
    (setq objekt (entget(ssname data zähler)) zähler (1+ zähler))
    (entmod                                              ;ab hier hängt es
       (subst
         '(40 . 4.05)
          (assoc 40 objekt)
          objekt
       )
    )
        )
   )
)

entget
https://help.autodesk.com/view/ACD/2022/DEU/?guid=GUID-12540DAE-C84B-4BDB-AEEC-DDFE5BE3C42A

subst
https://help.autodesk.com/view/ACD/2022/DEU/?guid=GUID-25214E69-090A-45C3-8210-6D9801255E44

entmod
https://help.autodesk.com/view/ACD/2022/DEU/?guid=GUID-C7D27797-247E-49B9-937C-0D8C58F4C832

 

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

archtools
Mitglied



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

Beiträge: 823
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 14. Aug. 2021 11: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 Nur für woppi 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von woppi:
Hallo,

leider stehe ich gerade ziemlich auf der Leitung.
Habe auch schon länger kein LISP Programm mehr geschrieben.

Ich möchte bei allen ausgewählten Kreisen den Ø ändern.
Auswählen geht, aber ich hänge am entmod.
Kann mir bitte einer weiterhelfen.

Code:
(defun c:X81-6 (/ data )            ;Durchmesser ändern
  (setq data  (ssget  '((0 . "CIRCLE")))             
            zähler 0)

  (repeat (sslength data)
   (setq objekt (ssname data zähler)
             zähler (1+ zähler))
    (entmod                                              ;ab hier hängt es
  (list
    (assoc -1  objekt)
    '(40 . 4.05)
  ))
  )
)
 




Lisp-gerechter ist es, nicht für jedes kleine Problem eine eigene Funktion zu basteln, sondern eine, die eine große Zahl unterschiedlicher probleme löst, und diese in möglichst kleine, vielfältig nutzbare Funktionen zu unterteilen.

Mit der unten stehenden Funktion SSMODENT kannst Du für jeden DXF-Gruppenwertcode eines Entitys den Wert ändern. Du kannst bei einer Blockreferenz den referenzierten Blocknamen ändern, Du kannst den Zentrumspunkt eines Kreises ändern, und natürlich den Radius eines Kreises oder Kreisbogens. Und die Hilfsfunktionen AT-SUBST und SS->LIST kannst Du auch vielfältig in anderen Funktionen verwenden.

Alle Radien aller Kreise einer DWG änderst Du dann mit diesem Aufruf auf Radius 1.0:
(mapcar '(lambda (en) (ssmodent en 40 1.0)) (ssget "X" '((0 . "CIRCLE"))))

Code:

(defun ssmodent (ename dxf val)
  (entmod (at-subst
      (cons dxf val)
      (entget ename)
    )
    )
)

(defun at-subst (ntok lst / temp)
  (cond
    ((not lst)
    (list ntok)
    )
    ((not (assoc (car ntok) lst))
    (reverse (cons ntok (reverse lst)))
    )
    ('T
    (subst ntok (assoc (car ntok) lst) lst)
    )
  )
)

(defun ss->list (sset / eset counter)
  (setq counter 0)
  (if (= 'PICKSET (type sset))
    (repeat (sslength sset)
      (setq eset    (cons (ssname sset counter) eset)
    counter (1+ counter)
      )
    )
  )
  eset
)



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

woppi
Mitglied
cnc-programmierung


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

Beiträge: 65
Registriert: 16.01.2009

Acad Architecture 2020

erstellt am: 25. Aug. 2021 13:26    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

Sorry Sorry,

vielen Dank für Eure Hilfe, es klappt jetzt wunderbar.
Ich antworte erst jetzt, weil ich Eure Antworten nicht gesehen habe & und auch keine Mail bekommen habe(auch nicht im Spam Ordner).
Ich habe auch immer mal wieder auf dieser Seit nachgeschaut, und aktualisiert, aber da war nichts. (Man muss das ja nicht immer verstehen)

Sonst hätte ich auch direkt geantwortet.

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