Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  (command _rotate)

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:  (command _rotate) (506 mal gelesen)
cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 03. Sep. 2009 09:24    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

Hi community
hier nochmal mein Ansatz, um eine Text automatisch an einer Linie auszurichten, indem ich erst die Linie wähle und dann den Text.
Wie kriege ich es hin, dass der Wert von riwi als eingabe für den Textwinkel realisiert wird?

Die Routine fragt nun nach dem "Einfügepunkt", dass sollte automatisch der Texturprungspunkt sein.

(defun c:rt ()
  (SETQ wahl (ENTSEL "select line: ")
;abfrage der koordinaten anfp endp und berechnung des richtungswinkels riwi
      element (ENTGET (CAR wahl))             
      anfp (CDR(ASSOC 10 element))
      endp (CDR(ASSOC 11 element))
      riwi (atof (angtos (ANGLE anfp endp) 2 10))
  ) 
  (if (setq obj (entsel "\select text: "))
    (progn
      (setq objname (car obj))
      (command "_rotate" objname "")
      )
    )
  )

Es mag vielleicht alltmodisch klingen, ich möchte die Routine rein mit lisp durchführen, um zu sehen wie Variablen an command übergeben werden können. Vlisp kann ich nicht recht nachvollziehen (und verzehrt meiner Meinung nach den Lispcode) - super, wenn man dahinter gestiegen ist.

PS.: Vielleicht hat jemand noch einen guten Buchtip, ich hangel mich halt mit mapcar´s Kochbuch und dem "Autolisp-Handbuch", was hier in pdf-form liegt. Vlide bietet zwar viel (aber alles auf Englisch)

Gruss Dirk

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: 03. Sep. 2009 09:36    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 cadplayer 10 Unities + Antwort hilfreich

(command "_rotate"
         objname   ;_Objekt übergeben
         ""        ; Auswahl abschließen
         (cdr(assoc 10(entget objname))) ;_Basispunkt für die Rotation 
         riwi
)
       
aber .... Text kann vorher schon einen Winkel haben .. Laufrichtung der Linie kann so sein, das Text dann auf dem Kopf steht usw..  . im Prinzip also ein falscher Ansatz

und ach ja .. Lisp ist nicht unbedingt eine Aneinanderreihung von Commands .. da kannste gleich ein script nehmen!

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 13. Okt. 2009 07: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

Hallo!

Am Beispiel zum rotieren eines Blockes über 2 Fixpunkte finde ich command _rotate ungeeignet. Mein Ansatz ist nun der:

(defun c:rb ()   
    (setq obj (entsel "\nblock wählen"))
    (princ "\n2 punkte picken:")
    (setq anfp (getpoint)
  endp (getpoint)
  riwi (+ 100 (atof (angtos (ANGLE anfp endp) 2 10)))
  objname (car obj))
    (command "_change" objname "" "" "" riwi)  ; damit ist einmal der Block gedreht
    )

was mich allerdings hieran stört:
-man muss vorher Winkeldrehung im Uhrzeigersinn ausstellen (gibt es da eine Systemvariable ?)
-man kann mit entget immer nur ein aws erhalten, wie lässt sich da ssget implementieren ?

Gruss cp

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: 13. Okt. 2009 08:11    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadplayer:
was mich allerdings hieran stört:
-man muss vorher Winkeldrehung im Uhrzeigersinn ausstellen (gibt es da eine Systemvariable ?)
-man kann mit entget immer nur ein aws erhalten, wie lässt sich da ssget implementieren ?

Hallo
zum ersten Punkt probier mal angdir 1 (ungetestet)
zum zweiten Punkt schau dir mal die Sub bau_elemli
an, als Rückgabe erhälst du eine List, welche du über ein Schleife auswerten kannst.

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

Elefantenjagd in Afrika
"... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..."   (www.uni-leipzig.de/~rotheh/elefant.htm)

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. Okt. 2009 08: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 cadplayer 10 Unities + Antwort hilfreich

Du hast schon die Beste Literatur, das einzige was dir fehlt ist Geduld !
Arbeite das Buch langsam durch, gehe die Eingaben am PC selbst durch.

Es wird erklärt wie man auf ein Objekt in einem Auswahlsatz zugreift.
Es wird erklärt wie man mit repeat oder while eine Schleife erstellt.

Mehr brauchst du dafür auch nicht.

Das was richtig viel hilft: Viele viele Codeschnipsel hier im Forum (oder anderen zugänglichen Quellen)
"lesen", dabei muß man nicht gleich alles verstehen, aber das Beispiel sollte sich sicher finden.

Befehle rund um Auswahlsätze fangen alle mit "ss" an, dann benötigt man noch eine
Schleifenfunktion wie while oder repeat um nach und nach an jedes Element in dem
Auswahlsatz zu gelangen. Lese einfach mal ein paar Codeschnipsel in denen ssget
vorkommt.

------------------
die alte SUCHfunktion.. - System-Angaben - User:FAQ(Adesk)

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: 13. Okt. 2009 08: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 cadplayer 10 Unities + Antwort hilfreich

ich spendier dir (und der Allgemeinheit) mal einen Codeschnipsel zur Auswahl (ssget-Filter ist anzupassen) ...

(if(or(and(=(getvar "PICKFIRST")1)(setq AWS (ssget "_I" '((0 . "CIRCLE")))))
       (and(setq NOMUTT(getvar "NOMUTT"))
           (setvar "NOMUTT" 1)
           (princ "\nKreise wählen: ")
           (or(vl-catch-all-error-p
                 (setq AWS(vl-catch-all-apply
                            'ssget (list '((0 . "CIRCLE")))
                          )
                 )
               )              
               'T
            )
            (setvar "NOMUTT" NOMUTT)
            (or(=(type AWS)'PICKSET)
               (prompt "\nAbbruch durch Anwender...")
            )  
            (>(sslength AWS)0)
       )
       (prompt "\nKeine Kreise gewählt")
    )
   (progn
     ;;-> Objektliste erstellen
     (setq INDEX -1)
     (repeat(sslength AWS)       
       (if(setq OBJ(ssname AWS (setq INDEX(1+ INDEX))))
         (setq OBJLIST (cons OBJ OBJLIST))      
       )
     )
     OBJLIST
   )
)

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 13. Okt. 2009 10:36    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

Ja sorry, Geduld braucht man immer und überall - hast ´de völlig recht cadffm.
Dorfy + CADmium danke für Euren Ansatz... brauche ein bissel Zeit, weil ss-aws scheinen mir bisher die aufwendigsten Funktionnen überhaupt zu sein. Dahinter zu steigen, liegt der Schlüssel in vielem  cp

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