Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Autocad Skript erstellen

  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Thema geschlossen  Thema geschlossen!
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:   Autocad Skript erstellen (641 mal gelesen)
muntafuner
Mitglied
Architekt


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

Beiträge: 14
Registriert: 18.10.2019

Revit 2020/Autocad 2020/Autocad Architecture 2020

erstellt am: 18. Okt. 2019 09: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

Hallo zusammen,

ich bin auf der Suche nach einer Lösung (wahrscheinlich am besten mittels einer Skript-Datei) für folgende Problemstellung:

Derzeit bin ich beschäftigt erhaltene Zeichnungen auf meinen Layer-Standard zu bringen. Dabei liegen alle Schraffuren der erhaltenen Zeichnung auf dem Layer "Poly_Muster" jedoch mit verschiedenen Farben.

Nun möchte ich zum Beispiel alle Schraffuren auf dem Layer Poly_Muster mit der Farbe 241,227,215 auswählen und auf meinen Layer "Poly_Stahlbeton" mit der Farbe VonLayer setzen. Diese Funktion sollte ich für alle Schraffuren der Zeichnung haben.

Des Weiteren wäre es super, wenn ich gleichzeitig alle Schraffuren aus sämtlichen Blöcken löschen könnte ohne, dass ich dabei die Blöcke auflösen muss.

Danke für eure Unterstützung!

PS: Gibt es einen Befehl, der in das Skript eingefügt werden kann, dass zu allererst ein Layerstatus geladen wird?

PPS: Gibt es einen weiteren Befehl, der ein bestehendes Layout aus einer anderen Zeichnungsdatei in diese Datei kopiert und die Zeichnung direkt in diesem Layout inkl. passendem Maßstab einfügt?

[Diese Nachricht wurde von muntafuner am 18. Okt. 2019 editiert.]

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

cadwomen
Ehrenmitglied V.I.P. h.c.
Mädchen für fast alles


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

Beiträge: 2691
Registriert: 26.08.2002

ACAD R11 - 2018.1.2
(Plant3D)
AVIS
ACAD LT 2013- 2020
ZWCAD 2015 Versuch "nun ja"
[s]History P3D 2012/(13) SP und Hotfix([/s]<P>
Windows 10 / 64 Bit
Xeon CPU 3.5GHz
16GB Ram
NVIDIA Quadro P2000
3x Dell TV100 88P Monitore

erstellt am: 18. Okt. 2019 11: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 Nur für muntafuner 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von muntafuner:
Hallo zusammen,...

PPS: Gibt es einen weiteren Befehl, der ein bestehendes Layout aus einer anderen Zeichnungsdatei in diese Datei kopiert und die Zeichnung direkt in diesem Layout inkl. passendem Maßstab einfügt?

[Diese Nachricht wurde von muntafuner am 18. Okt. 2019 editiert.]


Befehl / Möglichkeiten

nun über das DC kann man ja ein Layout einfach rein ziehn
das ganz kann man evtl mit

-layout Vorlage ???.DWT auch machen

cu cw

------------------
Also ich finde Unities gut ... und andere sicher auch
------------------------------------------------
cadwomen™
Plant ist nur die Spitze des Berges der da treibt ?

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

Andreas Kraus
Mitglied
Elektrotechniker


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

Beiträge: 1151
Registriert: 11.01.2006

Win 10
ACAD 2019

erstellt am: 18. Okt. 2019 11: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 muntafuner 10 Unities + Antwort hilfreich

Hallo muntafuner,
Schraffuren auswählen und Layer und farbe ändern geht mit Script.
ABER
Aus Blöcken löschen ohne zu sprengen geht nicht, dazu braucht man Lisp.
Das ist dann wohl auch das Hauptproblem. Eine Funktion die das macht im Script zu laden und aufzurufen würde dann aber wieder gehen.

Layerstatus laden kann ich nicht sagen, ich arbeite damit nicht.
Layout automatisch holen mache ich auch über Lisp, ich hab noch nicht geschaut ob man das auch anders automatisieren kann.
cadwomen hat ja dazu schon was geschrieben ... hab ich noch nie ausprobiert.

Ich hole mir alles was ich brauche mit Lisp über copyobjects (also Layer, Layouts, Blöcke, ...). Ist immer der selbe Weg für alles.
Mir egal obs auch anders geht 

------------------
Geht nicht, gibts nicht

Gruß
Andreas

http://kraus-cad.de

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

muntafuner
Mitglied
Architekt


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

Beiträge: 14
Registriert: 18.10.2019

Revit 2020/Autocad 2020/Autocad Architecture 2020

erstellt am: 22. Okt. 2019 07:56    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 Andreas,

danke für deine Antwort!

Gut zu wissen, dass es funktioniert.
Das Problem mit den Schraffuren ist vorab das dringlichste. Könntet ihr mir helfen, was das schreiben des Scriptes angeht? Wie fange ich da am besten an?

Ich komme nicht um die Schnellauswahl herum...

Vielen Dank für eure Hilfe!

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

Ingo Struck
Mitglied
Holztechniker


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

Beiträge: 455
Registriert: 08.01.2010

Intel Core i7-3770
16 GB RAM
AMD FirePro V3900 (FireGL V)
Windows 7 Pro SP1
AutoCAD 2017 SP1 - deutsch

erstellt am: 22. Okt. 2019 09:52    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 muntafuner 10 Unities + Antwort hilfreich

Hallo muntafuner,

zunächst kannst Du hier mal reinschauen. In Scripten verwendet man, soweit vorhanden, die Befehlszeilenversionen der Befehle. Diese sind am anführenden Bindestrich zu erkennen, z. B. "-layer" oder "-plot". Vom Befehl "sauswahl" gibt es meines Wissens keine Befehlszeilenversion, evtl. bietet sich der Befehl "-layzusf" an.

mfg, Ingo 

------------------
"Umwege erhöhen die Ortskenntnisse!"

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

muntafuner
Mitglied
Architekt


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

Beiträge: 14
Registriert: 18.10.2019

Revit 2020/Autocad 2020/Autocad Architecture 2020

erstellt am: 22. Okt. 2019 10: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

Hallo Ingo,

danke für deine Antwort.

Eben gibt es für den Befehl "sauswahl" keine Befehlszeilenversion. Wie kann ich diesen umgehen und die Schraffuren nach Farbe auswählen?

"layzusf" funktioniert leider nicht - da alle Schraffuren auf dem selben Layer liegen, ich sie aber der Farbe nach filtern möchte und auf den jeweiligen Layer legen..

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

Andreas Kraus
Mitglied
Elektrotechniker


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

Beiträge: 1151
Registriert: 11.01.2006

Win 10
ACAD 2019

erstellt am: 23. Okt. 2019 09:42    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 muntafuner 10 Unities + Antwort hilfreich

Hallo muntafuner,
hier mal ein par Zeilen Lisp:
Code:
(setq r 241 g 227 b 215)
(setq filter (list '(0 . "HATCH")
  '(8 . "Poly_Muster")
  (cons 420
(+ (lsh (fix R) 16)
    (lsh (fix G) 8)
    (fix B)
)
  )
    )
)
(setq satz (ssget "x" filter))
(sssetfirst satz satz)

Damit kannst du die Schraffuren auswählen lassen. Funktioniert auch wenn du das so ins Script kopierst und die Farbwerte (erste Zeile) anpasst.

------------------
Geht nicht, gibts nicht

Gruß
Andreas

http://kraus-cad.de

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

Ingo Struck
Mitglied
Holztechniker


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

Beiträge: 455
Registriert: 08.01.2010

Intel Core i7-3770
16 GB RAM
AMD FirePro V3900 (FireGL V)
Windows 7 Pro SP1
AutoCAD 2017 SP1 - deutsch

erstellt am: 28. Okt. 2019 15:58    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 muntafuner 10 Unities + Antwort hilfreich

Hallo zusammen,

@ muntafuner: Leider weiß ich dort auch nicht weiter, da ich keinen Befehl gefunden habe, der auch in Scripten die Auswahl von Objekten zulässt.

@ Andreas: Deinen Vorschlag habe ich ausprobiert und den Code in ein Script kopiert. Leider läuft bei mir auch das nicht. Der Lisp-Code erscheint zwar in der Befehlszeile, endet aber mit "(nil nil)", ohne das etwas passiert. Die Option "vorher" des Befehls "Wahl" sagt, "Kein vorheriger Auswahlsatz". Wenn ich aus der test.scr eine test.lsp mache und über das Register "Verwalten" > Gruppe "Anwendungen" > "Anwendung laden" gehe passiert ebenfalls nichts.

mfg, Ingo 

------------------
"Umwege erhöhen die Ortskenntnisse!"

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

System: F1
und Google

erstellt am: 28. Okt. 2019 16:22    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 muntafuner 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Ingo Struck:
endet aber mit "(nil nil)"

Dann liegt das an deiner Datei, nicht am Code. Deine Datei scheint keine Schraffuren mit Farbe 241,227,215 auf dem Layer Poly_Muster zu beinhalten.

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

Ingo Struck
Mitglied
Holztechniker


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

Beiträge: 455
Registriert: 08.01.2010

Intel Core i7-3770
16 GB RAM
AMD FirePro V3900 (FireGL V)
Windows 7 Pro SP1
AutoCAD 2017 SP1 - deutsch

erstellt am: 29. Okt. 2019 17: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 Nur für muntafuner 10 Unities + Antwort hilfreich

Ja, der Einwand stimmt. Wenn eine solche Schraffur vorhanden ist, läuft sowohl Andreas Vorschlag mit dem Script als auch direkt die lsp-Datei. Gestern war ich wohl etwas vorschnell beim Testen mit den Schraffuren. Evtl. meldet sich ja auch muntafuner noch einmal hierzu.

Danke an Andreas und cadffm!

mfg, Ingo 

------------------
"Umwege erhöhen die Ortskenntnisse!"

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

muntafuner
Mitglied
Architekt


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

Beiträge: 14
Registriert: 18.10.2019

Revit 2020/Autocad 2020/Autocad Architecture 2020

erstellt am: 07. Nov. 2019 09:08    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 die Lösung für mein Problem gefunden:

(defun _hatchcolorstolayer (lst / a d tc)
  ;; Test
  (vl-load-com)
  (vlax-for l (vla-get-layers (setq d (vla-get-activedocument (vlax-get-acad-object))))
    (cond ((= -1 (vlax-get l 'lock)) (vlax-put l 'lock 0) (setq a (cons l a))))
  )
  (vlax-for b (vla-get-blocks d)
    (if (= 0 (vlax-get b 'isxref))
      (vlax-for o b
(cond ((and (= (vla-get-objectname o) "AcDbHatch")
    (setq tc (vla-get-truecolor o))
    (setq tc (mapcar '(lambda (x) (vlax-get tc x)) '(red green blue)))
    (setq ln (cadr (assoc tc lst)))
      )
      (or (tblobjname "layer" ln)
  (entmakex (append (entget (vlax-vla-object->ename o)) (list (cons 8 ln))))
      )
      (vl-catch-all-apply 'vla-put-layer (list o ln))
      )
)
      )
    )
  )
  (foreach l a (vlax-put l 'lock -1))
  (princ)
)
;; Schraffurliste
(_hatchcolorstolayer
  '(((128 210 4) "Poly_Stahlbeton") ((153 76 0) "Poly_Mauerwerk") ((245 245 235) "TEST"))
)

so funktioniert es einwandfrei - Danke euch trotzdem für die zahlreichen Lösungsvorschläge und Anmerkungen zu diesem Thema :-)

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

System: F1
und Google

erstellt am: 07. Nov. 2019 09: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 muntafuner 10 Unities + Antwort hilfreich

Ich mache hier mal zu und verweise auf den anderen Thread im Lisp-Forum: KLICK!

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


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag öffnen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2019 CAD.de | Impressum | Datenschutz