Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD Plant 3D
  Aktionsmakro in LISP

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: Gemeinsame Anlagenplanung mit Autodesk AutoCAD Plant 3D und Autodesk BIM 360 Design
Autor Thema:  Aktionsmakro in LISP (1681 / mal gelesen)
Laszlo7
Mitglied


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

Beiträge: 3
Registriert: 18.06.2018

erstellt am: 18. Jun. 2018 09:20    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


Makrotest.zip

 
Guten Morgen zusammen!

Ich bin auf der Suche nach einer Lösung für folgendes Problem:

Ich zeichne Rohrleitungen und möchte diese dann lediglich als 3D-Volumenkörper darstellen.
Also habe ich das Aktions-Makro erstellt, dass ich im Anhang beigefügt habe. Allerdings soll dies nicht die finale Lösung sein, da ich beim Makro immer noch in der Schnellauswahl jeweils klicken muss, damit es so passiert wie ich es möchte.

Der geplante Ablauf sieht wie folgt aus:

Alles auswählen -> Ursprung
-> Schnellauswahl -> Objekt: Blockreferenz -> Operator: alle auswählen -> Ursprung
-> Schnellauswahl -> Objekt: Kreis -> Operator: alle auswählen -> Löschen
-> Schnellauswahl -> Objekt: Punkt -> Operator: alle auswählen -> Löschen
-> Schnellauswahl -> Objekt: Linie -> Operator: alle auswählen -> Löschen
-> Schnellauswahl -> Objekt: 2D-Polylinie -> Operator: alle auswählen -> Löschen
-> Schnellauswahl -> Objekt: 3D-Polylinie -> Operator: alle auswählen -> Löschen
Fertig

Gibt es eine Möglichkeit das Makro in LISP umzuwandeln?
Da ich diesbezüglich nichts im Netz und auch hier im Forum gefunden habe, gehe ich davon aus das dies nicht möglich ist...
Also wird mir nichts übrig bleiben als LISP zu erlernen. Könnt ihr AutoCAD: Referenz – Beispiele – Nachschlagewerk empfehlen zum Erlernen der "Sprache"? Ich muss es wirklich von 0 erlernen...

Über Antworten zu meinen Fragen freue ich mich sehr, schönen Start in die Woche!

LG Laszlo

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

cadffm
Ehrenmitglied V.I.P. h.c.
良い精神



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

System: F1
und Google

erstellt am: 18. Jun. 2018 12:04    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 Laszlo7 10 Unities + Antwort hilfreich

Also wenn ich es recht interpretiere (ohne DWG Beispiel und ohne Plant3D im Zugriff),
dein Angaben sind zwar gut, aber nicht eindeutig:

Du möchtest EINE Blockreferenz auflösen,
im Anschluss alle nun "aufgelösten" Objekte löschen, außer Objekte vom Typ "3DSOLID" (Befehl LISTE),
bzw. in der EigenschaftenPalette "3D-Volumenkörper". Ist das so richtig?

Die Expresstools installiert sind empfehle ich den Weg der Objektwahl über den Befehl SSX,
dieser bedient die Lispfunktion welche die AutoCAD-Objektewahl-Funktion darstellt(ssget)
ohne sich wirklich mit Lisp beschäftigen zu müssen.
Objekt nach Befehlsaufruf wählen:
^C^C_.EXPLODE;\_.ERASE;_p;_remove;'SSX;;e;3DSOLID;;_p;;

Dies würde also folgender Befehlseingabe entsprechen - mal auf deutsch:
^C^C
[ESC][ESC] um mögliche aktive Befehle abzubrechen
URSPRUNG<enter>
ein objekt wählen + <enter>
LÖSCHEN<enter>
VORHER<enter>
Entfernen<enter>
'SSX<enter>
<enter>
Entity<enter>
3DSOLID<enter>
<enter>
VORHER<enter>
<enter>


Dies wiederum geht sicher auch als ActionMacro aufzunehmen und damit als Befehl verfügbar zu machen.

Also einfaches Lisp (wieder nur für eine Blockreferenz):
(defun c:XPLE3DS (/ aws)
  (if (setq aws (ssget "_:S:L"))(command "_.EXPLODE" aws "_.ERASE" (ssget "_P" '((0 . "~3DSOLID"))) ""))
)

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

Laszlo7
Mitglied


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

Beiträge: 3
Registriert: 18.06.2018

erstellt am: 18. Jun. 2018 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

Nicht ganz richtig interpretiert.

In der Zeichnung sind mehrere Rohrleitungen mit Bögen etc.
d.h. ich habe "Rohr", "Rohr-In-Line-Objekt", "Verbindung"-Objekte

-> passt soweit!

Folglich markiere ich die komplette Rohrleitung und versetze sie in den Ursprung
-> Rohre werden zu 3D-Volumenkörpern
-> mehrere Bögen (Rohr-in-Line-Objekte) werden zu Blockreferenzen
-> Verbindungen werden zu Kreisen und Punkten

anschließend ist vorgesehen über die Schnellauswahl:
1. alle Blockreferenzen auszuwählen -> in Ursprung versetzen
2. die erhaltenen Punkte, Linien etc. (s.o.) -> löschen


Meine Lösung über Aktionsmakro fand ich persönlich von der Handhabe prinzipiell gut. Ich möchte allerdings umgehen, dass in der Schnellauswahl geklickt werden muss. Zum Einen weil man beim 1. Mal Blockreferenz auswählen MUSS (wenn man das nicht weiß, löscht man etwas anderes) und zum anderen erhoffe ich mir dadurch eine Zeitersparnis im geringen Teil.

Ich hoffe, dass die Sachlage nun eindeutiger ist. Ich mache also aus den intelligenten Bauteilen, eine dumme AutoCAD-Datei.

Dennoch natürlich erstmal lieben Dank für deine erste Stellungnahme.


EDIT: Ich habe es mit deinem Command XPLE3DS nochmal ausprobiert. Es ist an sich genau das, was ich erreichen möchte. Wie du aber schon erwähnt hattest, nur für eine Blockreferenz bzw. ein Objekt.
Ich habe allerdings mehrere Blöcke, Rohre etc. wäre es also auch möglich, dies zu lösen?

Danke nochmal!

[Diese Nachricht wurde von Laszlo7 am 19. Jun. 2018 editiert.]

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

Laszlo7
Mitglied


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

Beiträge: 3
Registriert: 18.06.2018

erstellt am: 03. Jul. 2018 15: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

Hallo nochmal!

Auch wenn aktuell überall Sommerferien sind, versuche ich mal eine Antwort zu erhalten.
Ich habe im großen weiten Netz folgendes gefunden gehabt:

Zitat:
(defun c:KeinBlock (/ AllBlocks SolOnly )
(setvar "qaflags" 1)
(setq AllBlocks (ssget "X" (list (cons 0 "INSERT"))))
(while (/= AllBlocks nil)
  (progn
  (command "_.explode"  AllBlocks "")
  (setq AllBlocks (ssget "X" (list (cons 0 "INSERT"))))
  );progn
);while
(setq SolOnly (ssget "X" '((0 . "3DSOLID"))))
(command  "_.erase" "all" "R" SolOnly "")
(setvar "qaflags" 0)
(princ)
)

Damit erreiche ich folgendes:

Alle Blockreferenzen werden aufgelöst und es entstehen Kreise, Punkte und 3D-Volumenkörper.

Bisher bin ich nicht fündig geworden, wie ich nun die Kreise bzw. Punkte auswählen kann und diese entsprechend löschen kann.
Kann jemand von euch helfen?

Lieben Dank

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: 2966
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: 03. Jul. 2018 16: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 Nur für Laszlo7 10 Unities + Antwort hilfreich

Zitat:

Also wird mir nichts übrig bleiben als LISP zu erlernen. Könnt ihr AutoCAD: Referenz – Beispiele – Nachschlagewerk empfehlen zum Erlernen der "Sprache"? Ich muss es wirklich von 0 erlernen...[/i]

Hallo , also Ferien sind in Bayern noch weit weg.. aber für dich

LISP mapcar

aber nebenbei warum zelegst du die Plantobjekte ??? bzw was hast du vor damit  ? Evtl gibt es ja ganz andere Wege zum Ziel.


cu cw

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

[Diese Nachricht wurde von cadwomen am 03. Jul. 2018 editiert.]

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