Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Markierte Objekte auf einen anderen Layer legen

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:  Markierte Objekte auf einen anderen Layer legen (1844 mal gelesen)
Daniel Möller
Mitglied
Konstrukteur


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

Beiträge: 53
Registriert: 28.11.2006

Dell Precision T3500 Westmere
Intel Xeon W3550
12,00 GB RAM
146GB SAS RAID 0 System
Nvidia Quadro 2000 1GB
Microsoft Windows 7 64bit
AutoCAD 2010
AutoCAD P&ID 2010

erstellt am: 06. Jul. 2010 12:07    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,

gestern habe ich der VBA Rubrik einen sehr guten Tip bekommen um alle Blöcke mit einem Namen zu markieren.

Da ich nicht wirklich viel Ahnung hiervon habe könnt ihr mir vielleicht weiterhelfen.

(sssetfirst nil (ssget "_x" '((0 . "INSERT")(2 .
"*AQA_dpv*,*AQA_upv*,*AQA_dps*,*AQA_dpm*,*AQA_upm*,*AQA_upj*,*AQA_dpf*,*AQA_dpn*
,*AQA_dpb*")))) (nil nil)

Hiermit markiere ich die Blöcke und möchte diese jetzt auf den Layer "mechanisch" legen.

Kann ich den anderen Code direkt danach reinschreiben damit alles nacheinander abgearbeitet wird oder muss ich das als einzelne Funktionen sehen und separat starten?

Die Hilfe in Autocad konnte mir hier noch nicht wirklich weiterhelfen.

Würdet ihr für einen Einsteiger das "Kochbuch" empfehlen?

Vielen Dank

Grüße

Daniel

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: 06. Jul. 2010 12:25    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 Daniel Möller 10 Unities + Antwort hilfreich

Also ob du das SSSETFIRST nun benutzten mußt oder nicht kann ich nicht wissen,
für die Änderung auf der Lisp-Seite ist nur ein Auswahlsatz nötigt, unabhängig
davon ob etwas "markiert" ist oder nicht:


    (foreach elem (bau_elemli (ssget "_X" '((2 . "meinlieblingsblock"))))
        (entmod (subst'(8 . "MeinLayer")(assoc 8 (entget elem))(entget elem)))
    )

Die Funktion (defun bau_elemli findest du hier auch im Forum.

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

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: 06. Jul. 2010 12: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 Daniel Möller 10 Unities + Antwort hilfreich

Hmm ich dachte mit der Markierung eigentlich an ein Ändern im Eigenschaftsfenster .. Befehl _properties


mit Lisp würd ich das rudimentär so machen :

(defun C:LAYMECH(/ AWS) 
  (if(setq AWS (ssget
                 "_x"
                 '((0 . "INSERT")
                   (2 . "*AQA_dpv*,*AQA_upv*,*AQA_dps*,*AQA_dpm*,*AQA_upm*,*AQA_upj*,*AQA_dpf*,*AQA_dpn*,*AQA_dpb*")
                  )
               )
     )
    (progn
      (setq I -1)
      (repeat (sslength AWS)
        (setq DATA(entget(ssname AWS (setq I(1+ I)))))
        (entmod(subst '(8 . "mechanisch") (assoc 8 DATA)DATA))
      ) 
    )
  )
)


wenn dir das mit dem entmod zu kompliziert ist, geht auch

(defun C:MECHLAYER(/ A)
  (setq A (ssget "_x" '((0 . "INSERT")(2 .
  "*AQA_dpv*,*AQA_upv*,*AQA_dps*,*AQA_dpm*,*AQA_upm*,*AQA_upj*,*AQA_dpf*,*AQA_dpn*
,*AQA_dpb*"))))
  (sssetfirst nil nil)
  (command "_change" A "" "_properties" "_layer" "mechanisch" "")
)


..setzt vorraus, das der Layer existiert, Fehlerbehandlungen ect. fehlen ..

als Einstieg ist das "Kochbuch" die Empfehlung ....

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

Daniel Möller
Mitglied
Konstrukteur


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

Beiträge: 53
Registriert: 28.11.2006

Dell Precision T3500 Westmere
Intel Xeon W3550
12,00 GB RAM
146GB SAS RAID 0 System
Nvidia Quadro 2000 1GB
Microsoft Windows 7 64bit
AutoCAD 2010
AutoCAD P&ID 2010

erstellt am: 06. Jul. 2010 13: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

vielen Dank für die schnellen Tips,

die letzten zwei Varianten habe ich mal probiert allerdings sind die Blöcke nicht auf einem neuen Layer.

Werde mal die erste noch probieren

Grüße

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

Daniel Möller
Mitglied
Konstrukteur


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

Beiträge: 53
Registriert: 28.11.2006

Dell Precision T3500 Westmere
Intel Xeon W3550
12,00 GB RAM
146GB SAS RAID 0 System
Nvidia Quadro 2000 1GB
Microsoft Windows 7 64bit
AutoCAD 2010
AutoCAD P&ID 2010

erstellt am: 06. Jul. 2010 13: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

leider funktioniert keine Variante.

Wenn ich den Code in den Visual LISP Editor lade danach speichere und über Anwendung laden ausführe ist das ja richtig oder?

Beim Ausführen kommt keine Fehlermeldung, wenn ich dann aber einen Block anklicke liegt er immer noch auf dem alten Layer. Der Layer Mechanisch existiert auch.

Grüße

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: 06. Jul. 2010 13:33    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 Daniel Möller 10 Unities + Antwort hilfreich

also bei mir klappen beide ..... die Funktion hast du nach dem Laden auch mit LAYMECH oder als Funktionsaufruf mit (c:LAYMECH)gestartet ?

------------------
      - 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: 06. Jul. 2010 13: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 Daniel Möller 10 Unities + Antwort hilfreich

@Daniel
die letzte Version mit dem eingebauten (sssetfirst nil nil) funktioniert bei mir,
teste es nochmal, evtl. ist dir ja ein kleiner Fehler beim test unterlaufen !?
Blocknamen korrekt ?

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

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

Daniel Möller
Mitglied
Konstrukteur


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

Beiträge: 53
Registriert: 28.11.2006

Dell Precision T3500 Westmere
Intel Xeon W3550
12,00 GB RAM
146GB SAS RAID 0 System
Nvidia Quadro 2000 1GB
Microsoft Windows 7 64bit
AutoCAD 2010
AutoCAD P&ID 2010

erstellt am: 06. Jul. 2010 13:57    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

Juhu es funktioniert.

Naja die Anwendung habe ich geladen wußte aber nicht dass man sie nochmal in der Befehlszeile starten muss. "Ich weiß Unwissenheit schützt vor Strafe nicht"

Ich kann ja in meine lsp Datei mehrere Codes hintereinander schreiben oder?


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: 06. Jul. 2010 14:00    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 Daniel Möller 10 Unities + Antwort hilfreich

 
Zitat:
Original erstellt von Daniel Möller:
Juhu es funktioniert.  

Naja die Anwendung habe ich geladen wußte aber nicht dass man sie nochmal in der Befehlszeile starten muss. "Ich weiß Unwissenheit schützt vor Strafe nicht"

Ich kann ja in meine lsp Datei mehrere Codes hintereinander schreiben oder?


Du meinst Funktionen .... JA.


und du kannst deine Funktionen auch gleich beim Laden ausführen lassen .... das sieht dann so aus:

(defun C:MECHLAYER(/ A)
  (setq A (ssget "_x" '((0 . "INSERT")(2 .
  "*AQA_dpv*,*AQA_upv*,*AQA_dps*,*AQA_dpm*,*AQA_upm*,*AQA_upj*,*AQA_dpf*,*AQA_dpn*
,*AQA_dpb*"))))
  (sssetfirst nil nil)
  (command "_change" A "" "_properties" "_layer" "mechanisch" "")
)
(c:mechlayer)


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

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