Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Block um Einfügepunkt drehen

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:  Block um Einfügepunkt drehen (2888 mal gelesen)
Bauvermesser
Mitglied
Vermesser


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

Beiträge: 460
Registriert: 18.03.2006

AMD 2600, 2024RAM ,WIN XP PROF-SP3, ACAD 2005, Firmenrechner,

erstellt am: 16. Mrz. 2010 21:55    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,
benutze aus diesem Forum eine LSP zum Drehen eines Blockes um den Einfügepunkt.
Läuft so weit , doch kommt aufgrund der von mir vorgenommenen Änderungen eine
Fehlermeldung  (Fehler: Funktion abgebrochen)  , kann mir bitte jemand sagen wo der Fehler liegt.
Die Abfrage nach dem Drehwinkel soll aber ausgeschaltet bleiben.

;;DREHEN von Objekten die einen definierten Einfügepunkt haben.
(defun c REHEN-E (/ faktor aus n i nam ins)
(terpri)(terpri)
(setvar "cmdecho" 0)
(princ "\nDer DREHEN-BASIS-PUNKT ... ist der jeweilige Objekt-Einfügepunkt.")
;;(setq drehwink (getreal "\nDrehwinkel für die Objekte: "))
;-----Auswaehlen-----
(setq aus (ssget) as aus) ;aus=Auswahl der Elemente
(setq n (sslength aus)) ;n=Anzahl der Elemente (max)
(command "bks" "w")
(setq i 0) ;Zaehler auf 0
;-----Bearbeiten-----
(setvar "cmdecho" 0)
(while (< i n) ;solange wie Zaehler < max
  (setq nam (ssname aus i)) ;jedem i aus Auswahl einen Namen
  (setq ins (cdr (assoc 10 (entget nam))))
;;  (command "drehen" nam "" ins drehwink) ;nam=nur ein Element
  (command "drehen" nam "" ins)
;;  (setq i(1+ i)) ;Zaehler eins weiter
  ) ;while
  (command "bks" "w")
  (princ)
) ;defun
;;**********

------------------
Gruß vom Bauvermesser;

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: 16. Mrz. 2010 22:34    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 Bauvermesser 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Bauvermesser:
Hallo,
benutze aus diesem Forum eine LSP zum Drehen eines Blockes um den Einfügepunkt.

Nimm das hier:

Code:

(defun modent (ename dxf val / old)
  (if (setq old (assoc dxf (entget ename)))
    (entmod (subst
      (cons dxf val)
      old
      (entget ename)
    )
    )
    (entmod (cons (cons dxf val) (entget ename)))
  )
)

Damit kannst Du fast alles ändern. Den Drehwinkel der Einfügung findest Du in DXF-Gruppencode 50. Um den auf 90° zu bringen, schreibst Du also:
Befehl: (modent (car (entsel)) 50 (/ PI 2.0))

Pi / 2 bzw in Lisp (/ PI 2.0) ist das Bogenmaß von 90°.

Du kannst damit natürlich auch den Layer ändern:
Befehl: (modent (car (entsel)) 8 "Neuer-Layer")
oder sogar die referenzierte Blockreferenz:
Befehl: (modent (car (entsel)) 2 "AndererBlockreferenzname")

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

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 17. Mrz. 2010 08:03    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 Bauvermesser 10 Unities + Antwort hilfreich

Nur als Hinweis:
Die Variante mit COMMAND dreht auch gleich die angehefteten Attribute mit (dis ist oft gewollt). Das mach die Entmod Variante nicht.

------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

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

3jalex
Mitglied



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

Beiträge: 244
Registriert: 13.03.2006

erstellt am: 28. Apr. 2010 11: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 Nur für Bauvermesser 10 Unities + Antwort hilfreich

Hallo

Ich möchte das mit den Attributen vom Bauvermesser, aber das hatte von Anfang an nicht Funktioniert. Ausserdem ist bei mir ein Smile mitten im Lisp (Nach defun c) Kann man das nicht abstellen?

Mein versuch sieht so aus (Script):
Filedia
0
(setq sset01 (ssget))
!sset01
_ucs
o
l
_ucs
X
90
_rotate
0,0,0
l

;Leerziele für Bestägigung
180
ucs
w
Filedia
1

Die Drehachse und den Winkel kann man ja nach belieben anpassen. Jedoch funktioniert die Auswahl nicht. Habe es mit \ schon probiert.

1) Wie könnte das Script (oder Lisp) aussehen?

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: 28. Apr. 2010 11:59    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 Bauvermesser 10 Unities + Antwort hilfreich

Du hast doch keinen Befehl aktiv, wozu also das "!sset01" ???

Zudem: Beschreibe doch mal mit klaren Worten was du möchtest,
im Moment verstehe ich es noch nicht warum du hier in der Lisp-Ecke bist ?

PS: Wegen dem Smilie: Du kannst es nicht, also lebe damit

Code:
(defun c:Dasmachenwirimmerso

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

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

3jalex
Mitglied



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

Beiträge: 244
Registriert: 13.03.2006

erstellt am: 28. Apr. 2010 15:46    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 Bauvermesser 10 Unities + Antwort hilfreich

Hallo 

Vielen Dank für die Antwort. Mit dem Tool möchte ich einen gewählten Block am Basispunkt des Blocks um 90° im gegenuhrzeigersinn drehen.
Andere Programme haben das schon eingebaut. Tastenkombination Ctrl.+L   Mit AutoCAD sollte das bestimmt auch möglich sein.
Nun habe ich den Befehl vor der Auswahl gesetzt und die auswahl funktioniert. Danach wird jedoch der Befehl abgebrochen

Betreffend dem Forum: Ich habe hier nur geantwortet darum ist es im Lispforum

[Diese Nachricht wurde von 3jalex am 28. Apr. 2010 editiert.]

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

Bauvermesser
Mitglied
Vermesser


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

Beiträge: 460
Registriert: 18.03.2006

AMD 2600, 2024RAM ,WIN XP PROF-SP3, ACAD 2005, Firmenrechner,

erstellt am: 28. Apr. 2010 23:10    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
also hinter dem Smilies steht -  drehen-e  - und damit ruft du auch die lsp auf, bei mir klapt es, es kommt eben nur nach meiner drinnrum fummelei am  Schluss eine Fehlermeldung, aber die ignoriere ich einfach.
Da ich nur nach freihen Winkel drehen möchte musste ich es etwas abändern. Diese lsp ist genau das Richtige und man kann fast alles damit Drehen!!
(um den Einfügepunkt wohlgemekt)

------------------
Gruß vom Bauvermesser;

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 29. Apr. 2010 06: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 Nur für Bauvermesser 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Bauvermesser:
...
bei mir klapt es, es kommt eben nur nach meiner drinnrum fummelei am  Schluss eine Fehlermeldung, aber die ignoriere ich einfach...

mit allen Elementen im Auswahlsatz?


probier mal mit den Zeilen

(while (< i n) ;solange wie Zaehler < max
  (setq nam (ssname aus i)) ;jedem i aus Auswahl einen Namen
  (setq ins (cdr (assoc 10 (entget nam))))
  (command "drehen" nam "" ins)
  (while (/=(getvar "CMDACTIVE")0)(command pause))
  (setq i(1+ i))
  ) ;while

und ... ach egal 

------------------
Mfg Heiko

Elefantenjagd in Afrika
"... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..."

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