Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Text aendern

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:  Text aendern (1569 mal gelesen)
giovanni64
Mitglied



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

Beiträge: 12
Registriert: 01.04.2007

erstellt am: 23. Aug. 2011 03:14    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

Ich bitte um Hilfe des folgenden Programs zum aendern von Text.
Das Programm arbeitet nur wenn die Farbe geaendert wird aber nicht wenn die Texthoehe
allein eingegeben wird, denn dann tut sich ueberhaupt nichts.
Ich habe schon alles moegliche ausprobiert aber ich komme einfach nicht weiter.
Das Programm benutze ich mit ACAD 2011.
 
Giovanni

Code:
(DEFUN C:AETXT ()
(defun *error* (meldung)(grtext)(princ))
(defun ac (v / v) (assoc v tasa))
(defun ers (x y z)(setq tasa (subst (cons x y) z tasa)))

(menucmd "S=BLOCK 3")(setq asa (ssget))
  (if (= asa nil)(print "No object selected ")
     (progn(setq wasa (sslength asa))(menucmd "S=S")
     ) ; end progn
  ) ; end if

(setq sp '(0 0 0))
  (if (/= asa nil) (progn
(setq clr (getint
"\nNew Color, Return if no change: "))
(setq stn (getstring
"\nNew Textstyle, Return if no change: "))
(setq brn (getreal
  "\nNew Width, Return if no change: "))
(setq thn (getreal
  "\nNew Texthight, Return if no change: "))
(setq swn (getreal
  "\nNew Obliquing angel, Return if no change: ")))
  ) ; end if
    (if (/= swn nil)(setq swn (/ (* pi swn) 180.0))
    ) ; end if

(setq z1 0)
  (while (< z1 wasa)

    (if (= "TEXT" (cdr (assoc 0 (setq tasa (entget (ssname asa
         z1))))))

      (progn
        (setq cla (ac 62)
          tha (ac 40) bra (ac 41)
          swa (ac 51) sta (ac 7)
          ysa (cddr tsa) sp (cons (car sp) ysa)
    ) ; end setq
          (if (/= swn nil)(ers 51 swn swa))
          (if (and brn (> brn 0.0)) (ers 41 brn bra))
    
      (if (and thn (> thn 0.0)) (ers 40 thn tha))

      (if (/= stn "")(ers 7 stn sta))
          (if (/= clr "")(ers 62 clr cla))
(entmod tasa)
      ) ; end progn
    ) ; end if
(setq z1 (1+ z1))
  ) ; end while
(grtext)(princ)
) ;EOF C:AETXT.LSP



[Diese Nachricht wurde von giovanni64 am 23. Aug. 2011 editiert.]

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

Dober Heinz
Mitglied
Technischer Zeichner


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

Beiträge: 1143
Registriert: 20.12.2002

Autocad 2021/64B
Win10
WORKSTATION Intel(R) CPU E5-1620 3.60GHz
32 GB Ram
64 Bit-Betriebssystem
HP Designjet T7200
Grafik NVIDIA Quadro P4000
ZWCAD2021

erstellt am: 23. Aug. 2011 06:41    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 giovanni64 10 Unities + Antwort hilfreich

Hallo giovanni64

Ich verweise mal auf diese Seite
http://www.cadtutor.net/forum/showthread.php?61827-Text-hight-only-change&s=c217176a7a33b85cd6e53d5715e5ed75

Und verwende das Lisp von Lee das funktioniert.

------------------
Heinz 

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

giovanni64
Mitglied



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

Beiträge: 12
Registriert: 01.04.2007

erstellt am: 23. Aug. 2011 08:13    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

Zitat:
Original erstellt von Dober Heinz:
Hallo giovanni64

Ich verweise mal auf diese Seite
http://www.cadtutor.net/forum/showthread.php?61827-Text-hight-only -change&s=c217176a7a33b85cd6e53d5715e5ed75

Und verwende das Lisp von Lee das funktioniert.


Hallo Heinz,

vielen Dank und das ist gut gemeint und ich weiss davon. Dennoch moechte ich anmerken, dass ich nun immer noch nicht weiss,
wo mein Fehler in meinem Programm liegt, denn dadurch kann ich auch hinzu lernen.
Also bitte nichts fuer ungut!

Gruss,

Giovanni


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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 23. Aug. 2011 08: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 giovanni64 10 Unities + Antwort hilfreich

Hallo Giovanni,
ich habe mal unter ACAD 2012 getestet, die Texthöhe wird bei mir geändert, auch unabhängig davon, ob im verwendeten Textstil eine Höhe definiert ist oder nicht.
Was mir aufgefallen ist: die Farbe wird nicht geändert, wenn beim Text der GC 62 nicht enthalten ist (Farbe vonLayer) => da müßtest Du dann dann den neuen Gruppencode 62 in die Liste einfügen und nicht nur SUBSTEN.

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

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

giovanni64
Mitglied



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

Beiträge: 12
Registriert: 01.04.2007

erstellt am: 23. Aug. 2011 09: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

Zitat:
Original erstellt von joern bosse:
Hallo Giovanni,
ich habe mal unter ACAD 2012 getestet, die Texthöhe wird bei mir geändert, auch unabhängig davon, ob im verwendeten Textstil eine Höhe definiert ist oder nicht.
Was mir aufgefallen ist: die Farbe wird nicht geändert, wenn beim Text der GC 62 nicht enthalten ist (Farbe vonLayer) => da müßtest Du dann dann den neuen Gruppencode 62 in die Liste einfügen und nicht nur SUBSTEN.


Hallo Jörn,

hier nochmals, was ich bei der 2011er nicht machen kann mit meinem Programm:
Wenn ich nur die Texthoehe aendere, dann geht nichts aber wenn ich die Farbe und die Texthoehe aendere, funktioniert es.
Bitte zeige mir doch mal genau, wo ich den GC 62 eintragen soll.

Giovanni

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: 23. Aug. 2011 09: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 giovanni64 10 Unities + Antwort hilfreich

guck dir mal folgenden Code an :

(DEFUN C:AETXT () 
(if(or(and(setq asa (ssget '((0 . "TEXT"))))  ;Textauswahl holen
          (>(setq wasa (sslength asa))0)      ;und Anzahl der Texte
      )
      (prompt "\nNo object selected \n")
  ) 
  (progn
    (setq clr (getint  "\nNew Color, Return if no change: "))
    (setq stn (getstring"\nNew Textstyle, Return if no change: "))
    (setq brn (getreal  "\nNew Width, Return if no change: "))
    (setq thn (getreal  "\nNew Texthight, Return if no change: "))
    (setq swn (getreal  "\nNew Obliquing angel, Return if no change: "))
           
    (setq z1 -1)
    (repeat wasa ;Texte der Auswahl durchlaufen
      (if(setq TASA(entget(ssname ASA(setq Z1(1+ Z1)))))
        (progn
          (if (and (=(type CLR)'INT)(< 0 CLR 256))
            (if(assoc 62 TASA)
              (setq TASA(subst (cons 62 CLR)(assoc 62 TASA)TASA))
              (setq TASA(append TASA(list(cons 62 CLR))))
            )
          )
          (if(and(=(type STN)'STR)(tblobjname "STYLE" STN))
            (setq TASA(subst (cons 7 STN)(assoc 7 TASA)TASA))
          )
          (if(and(=(type BRN)'REAL)(< 0 BRN))
            (setq TASA(subst (cons 41 BRN)(assoc 41 TASA)TASA))
          )
          (if(and(=(type THN)'REAL)(< 0 THN))
            (setq TASA(subst (cons 40 THN)(assoc 40 TASA)TASA))
          )
          (if(and(=(type SWN)'REAL)(< 0 SWN))
            (setq TASA(subst (cons 51 (/ (* pi swn) 180.0))(assoc 51 TASA)TASA))
          )
          (entmod TASA)
        )
      )
  )
)
)
  (princ)
)

.. bei Fragen  ....

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

CADchup
Ehrenmitglied V.I.P. h.c.




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

Beiträge: 3329
Registriert: 14.03.2001

Sicher ist, dass nichts sicher ist. Selbst das nicht.
Joachim Ringelnatz

erstellt am: 23. Aug. 2011 10: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 giovanni64 10 Unities + Antwort hilfreich

Hi,

der Fehler liegt im Vergleich von NIL mit nix. 

(setq clr (getint "\nNew Color, Return if no change: "))

ergibt NIL, wenn du mit Return drüber gehst, weil ja nur die Texthöhe ersetzt werden soll.
Später überprüfst du die Variable clr aber mit:
(if (/= clr "")
was T ergibt, denn NIL ist keine leere Zeichenfolge, woraufhin die Funktion (ers) 62 mit nil const.

Daraus ergibt sich nun ein Farb-Gruppencode (62) und den mag Acad gar nicht.
...(8 . "404_TX_Lageplan_500_NE") (62) (100 . "AcDbText")...

Unabhängig davon solltest du mal die Variablen lokalisieren. 

Gruß
CADchup

------------------
CADmaro.de

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 23. Aug. 2011 10:02    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 giovanni64 10 Unities + Antwort hilfreich

Hallo Giovanni,

ändere die Funktion ERS:

Code:

(defun ers (x y z)(setq tasa
  (if (assoc x tasa);;;wenn GC existiert
   (subst (cons x y) z tasa);;;dann austauschen
   (append tasa (list (cons x y))));;;sonst anhängen
  ))

Anmerkung: bei den Farben (GC 62) funktioniert es, wenn man den Gruppencode einfach mit APPEND an die vorhandene Liste anhängt. Bei anderen Gruppencodes muss man die aber in der richtigen Reihenfolge einsortieren in die Liste, ansonsten wird die dann nicht akzeptiert.

[EDIT]
Was schreibe ich überhaupt, schau Dir CADmiums Beitrag an, ich war mal wieder zu langsam
[/EDIT]
------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

[Diese Nachricht wurde von joern bosse am 23. Aug. 2011 editiert.]

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: 23. Aug. 2011 10: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 giovanni64 10 Unities + Antwort hilfreich

noch ein Nachtrag ...
statt
(setq clr (getint  "\nNew Color, Return if no change: "))
macht sich vielleicht
(setq clr (acad_colordlg 1))
nicht schlecht

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

giovanni64
Mitglied



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

Beiträge: 12
Registriert: 01.04.2007

erstellt am: 23. Aug. 2011 10: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

Zitat:
Original erstellt von CADchup:
Hi,

der Fehler liegt im Vergleich von NIL mit nix.  

[i](setq clr (getint "\nNew Color, Return if no change: "))

ergibt NIL, wenn du mit Return drüber gehst, weil ja nur die Texthöhe ersetzt werden soll.
Später überprüfst du die Variable clr aber mit:
(if (/= clr "")
was T ergibt, denn NIL ist keine leere Zeichenfolge, woraufhin die Funktion (ers) 62 mit nil const.

Daraus ergibt sich nun ein Farb-Gruppencode (62) und den mag Acad gar nicht.
...(8 . "404_TX_Lageplan_500_NE") (62) (100 . "AcDbText")...

Unabhängig davon solltest du mal die Variablen lokalisieren.  

Gruß
CADchup

[/i]


Hallo,

recht herzlichen Dank fuer Deine Ausfuehrungen.
Trotzdem weiss ich immer noch nicht genau, warum es mit der Eingabe von Farbe und Texthoehe funktioniert.
Ich muss ehrlich gestehen, dass ich noch nicht allzu viel von Lisp verstehe, deshalb bitte ich um etwas Ruecksicht.
Bin etws irritiert und moechte von Dir gerne wissen, wo genau der Fehler liegt, damit ich auch weiss, was ich falsch gemacht habe.
Welche Variablen meinst Du genau?

Gruss,

Giovanni

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

CADchup
Ehrenmitglied V.I.P. h.c.




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

Beiträge: 3329
Registriert: 14.03.2001

Sicher ist, dass nichts sicher ist. Selbst das nicht.
Joachim Ringelnatz

erstellt am: 23. Aug. 2011 11:01    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 giovanni64 10 Unities + Antwort hilfreich

Sobald du die Farbe mit Return übergehst, läuft dein Tool gegen die Wand, weil die assoc-Liste für Farbe nur so aussieht: (62)

Du musst clr korrekt prüfen! NIL ist nicht gleich "".

CADmium hat's in seinem Code so gemacht:
(if (and (=(type CLR)'INT)(< 0 CLR 256))
Er checkt also, ob CLR ein Integer zwischen 0 und 256 ist und modifiziert die 62er-assoc-Liste wenn diese Bedingungen erfüllt sind.


Gruß
CADchup

------------------
CADmaro.de

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

giovanni64
Mitglied



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

Beiträge: 12
Registriert: 01.04.2007

erstellt am: 23. Aug. 2011 19:31    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 an alle, die mir mit Rat und Tat zur Seite stehen!

Ich habe alle Eure Funktionen durchgeprueft aber leider kam ich damit nicht weit, denn ich weiss noch immer nicht, wo genau ich ansetzen muss
und wo genau mein Fehler liegt ohne praezise Angaben zu bekommen. Ich bin voellig verwirrt und weiss nicht mehr was hinten und vorne ist.
Ich bin eben nicht so schlau wie Ihr alle aber es ist ja schliesslich noch Meister vom Himmel gefallen. Vielleicht hat einer von Euch Mitleid
mit mir.

Vielleicht klappt es ja doch noch, dass der eine oder andere eine Antwort auf mein Problem weiss.

Gruss,

Giovanni

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

Geos
Mitglied
Vermessungstechniker i.R.


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

Beiträge: 1017
Registriert: 21.09.2001

ACAD Map 2010, Win 7 Pro
eigene Lisp's<P>HW: Core i7 860, 2.8 GHz
3.3 GB, NVIDIA GeForce GTS 250

erstellt am: 23. Aug. 2011 20: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 giovanni64 10 Unities + Antwort hilfreich

Zeichne eine Linie und weise ihr die Farbe rot zu
Jetzt tippe in die Befehlszeile:
Code:
(entget (car (entsel)))

wähle die Linie aus
In der Rückgabe wirst Du irgendwo (62 . 1) finden - so soll's sein.

Jetzt tippe in die Befehlszeile:

Code:
setq clr (getint  "\nNew Color, Return if no change: "))

Antworte mit "Return"
Überprüfe, was jetzt in clr gespeichert ist - tippe:
Code:
!clr

Dann tippe:
Code:
(cons 62 CLR)

schaut das Ergebnis aus wie oben ? - oder wie schon gesagt (62)   

Du musst also dafür sorgen, dass im Falle von "Return" dem clr die jetzige Objektfarbe zugewiesen wird,
oder im Falle von clr = nil die Farbänderung unterlassen.


------------------
Schöne Grüße
Ernst

www.geopaint.at

[Diese Nachricht wurde von Geos am 23. Aug. 2011 editiert.]

[Diese Nachricht wurde von Geos am 23. Aug. 2011 editiert.]

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

giovanni64
Mitglied



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

Beiträge: 12
Registriert: 01.04.2007

erstellt am: 23. Aug. 2011 21:23    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 Geos,

vielen Dank fuer Deine Hinweise, die ich ausgefuehrt habe.
Werde ich dann in der Lage sein, die Texthoehe allein veraendern koennen?

Ist das mit der Farbe das Problem, dass ich die Texthoehe nicht veraendern laesst?

So allmaehlich komme ich ins Taumeln und kann schon fast keinen klaren Gedanken mehr fassen.

Gruss,

Giovanni

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 24. Aug. 2011 07: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 giovanni64 10 Unities + Antwort hilfreich

Hallo Giovanni,
ich habe Dir Deinen Code nochmal ein bißchen aufgeräumt, z.B. nutze ich jetzt bei der Funktion ERS den Rückgabewert, die Variablen habe ich lokal definiert, aber vom Prinzip derselbe Code wie bei Dir. Bei mir hatte es ja auch schon mit Deinem ursprünglichen Code funktioniert, deshalb bin ich mir nicht sicher ob Dir das weiter hilft.
Die Variablen YSA TSA und SP habe ich rausgeschmissen weil sie scheinbar gar nicht verwendet worden sind.
Code:

(DEFUN C:AETXT ( / ASA BRA BRN CLA CLR STA STN SWA SWN TASA THA THN WASA Z1)
(defun *error* (meldung)(grtext)(princ))
 
(defun ac (v tasa / )
  (assoc v tasa))
 
(defun ers (x y z tasa / )
  (if (assoc x tasa);;;wenn GC existiert
   (subst (cons x y) z tasa);;;dann austauschen
   (append tasa (list (cons x y))));;;sonst anhängen
  )

(menucmd "S=BLOCK 3")(setq asa (ssget (list(cons 0 "TEXT"))))
  (if (= asa nil)(print "No object selected ")
     (progn(setq wasa (sslength asa))(menucmd "S=S")
     ) ; end progn
  ) ; end if


  (if asa
    (setq clr (getint "\nNew Color, Return if no change: ")
  stn (getstring "\nNew Textstyle, Return if no change: ")
  brn (getreal "\nNew Width, Return if no change: ")
  thn (getreal "\nNew Texthight, Return if no change: ")
  swn (getreal "\nNew Obliquing angel, Return if no change: "))
    ) ; end if
 
    (if swn
      (setq swn (/ (* pi swn) 180.0))
      ) ; end if

  (setq z1 0)
  (while (< z1 (sslength asa))
    (setq tasa (entget (ssname asa z1))
  cla (ac 62 tasa)
  tha (ac 40 tasa)
  bra (ac 41 tasa)
  swa (ac 51 tasa)
  sta (ac 7 tasa)
  ) ; end setq
    (if swn
      (setq tasa(ers 51 swn swa tasa)))
   
(if (and brn (> brn 0.0))
  (setq tasa(ers 41 brn bra tasa)))
   
(if (and thn (> thn 0.0))
  (setq tasa(ers 40 thn tha tasa)))
   
(if (/= stn "")
  (setq tasa(ers 7 stn sta tasa)))
   
(if clr
  (setq tasa(ers 62 clr cla tasa)))
   
(entmod tasa)
    (setq z1 (1+ z1))
    ) ; end while
  (grtext)(princ)
  ) ;EOF C:AETXT.LSP


Wenn Du nicht weißt, wie man mit dem Visual-LISP-Editor richtig debuggt, da habe mal eine Kurzanleitung geschrieben:

"http://www.bosse-engineering.com/downloads/090501_VisualLISP-Editor.pdf"
Bitte den Link kopieren, irgendwie bekomme ich den Link mit dem Beitragseditor hier nicht korrekt rein, danke Proxy für den Hinweis :-(

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

[Diese Nachricht wurde von joern bosse am 24. Aug. 2011 editiert.]

[Diese Nachricht wurde von joern bosse am 24. Aug. 2011 editiert.]

[Diese Nachricht wurde von joern bosse am 24. Aug. 2011 editiert.]

[Diese Nachricht wurde von joern bosse am 24. Aug. 2011 editiert.]

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

giovanni64
Mitglied



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

Beiträge: 12
Registriert: 01.04.2007

erstellt am: 27. Aug. 2011 15: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

Hi CADmium,

ein grosses Dankeschoen fuer die nette Unterstuetzung und fuer das Programm, was ich auch ausprobiert habe und funktioniert ausgezeichnet.

Zwischenzeitlich habe ich mich nochmals eingehend mit meinem Programmcode befasst und habe dann, die von Dir verwendete Funktion wie folgt
abgewandelt und hat auch funktoniert:

Alt: ;(if (/= clr "")(ers 62 clr cla))

Neu: (if (> clr 0)(ers 62 clr cla))

Ich muss hinzufuegen, dass ich schon lange nichts mehr mit LISP gemacht habe und somit wieder vieles vergessen habe, dennoch habe ich noch
viel zu lernen.
Mit Deiner Hilfe waere ich nicht so schnell zum Ziel gekommen.

Gruss,

Giovanni

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

giovanni64
Mitglied



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

Beiträge: 12
Registriert: 01.04.2007

erstellt am: 27. Aug. 2011 15:41    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 Joern,

vielen Dank fuer Deine grosszuegige Hilfe und die Kurzanleitung. Auch Dein Programm laeuft hervorragend.

Mit Deiner und all den andern ihrer Hilfe ist es mir gelungen, mein Programm wie folgt zum Laufen zu bringen,
sonst haette ich es nicht so schnell geschafft:

Alt:  ;(if (/= clr "")(ers 62 clr cla))

Neu:  (if (> clr 0)(ers 62 clr cla))

Es ist eben schon viel zu lange her, dass ich mich mit Lisp befasst habe und zum Zeitpunkt meines Problems hatte ich
noch andere Sachen fertig zu stellen. Nun habe ich es geschafft und habe wieder mehr Zeit fuer LISP.

Da ich eine Englische Version von AutoCAD habe, waere ich Dir dankbar wenn Du mir vielleicht einen Hinweis geben koenntest,
ob es eine Englische Anleitung gibt.

Gruss,

Giovanni

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

giovanni64
Mitglied



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

Beiträge: 12
Registriert: 01.04.2007

erstellt am: 28. Aug. 2011 22: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

Hi alle zusammen,

nun habe ich gedacht, dass jetzt alles glatt gegangen ist aber dem ist leider nicht so,
denn wenn ich Texte, die "MTEXT" geschrieben sind, abaendern moechte, dann klappt gar nichts,
auch nicht mit den Programmen von Joern und CADmium, leider.

Kann mir da jemand weiter helfen, warum das so ist?

Hier nochmals mein Programm, das laeuft wenn es sich um Standard Texte handelt.

Gruss,

Giovanni


Code:
(DEFUN C:AETXT ()
(defun *error* (meldung)(grtext)(princ))
(defun ac (v / v) (assoc v tasa))
(defun ers (x y z)(setq tasa (subst (cons x y) z tasa)))
(menucmd "S=BLOCK 3")(setq asa (ssget))
  (if (= asa nil)(print "Kein Element gewaehlt ")
    (progn(setq wasa (sslength asa))(menucmd "S=S")
    ) ; end progn
  ) ; end if
(setq sp '(0 0 0))
  (if (/= asa nil) (progn
    (setq clr (getint "\nNew Color, Return if no change: "))
    (setq stn (getstring
    "\nNew Textstyle, Return if no change: "))
    (setq brn (getreal
    "\nNew Width, Return if no change: "))
    (setq thn (getreal
    "\nNew Texthight, Return if no change: "))
    (setq swn (getreal
    "\nNew Obliquing angel, Return if no change: ")))
  ) ; end if
    (if (/= swn nil)(setq swn (/ (* pi swn) 180.0))
    ) ; end if
(setq z1 0)
  (while (< z1 wasa)
    (if (= "TEXT" (cdr (assoc 0 (setq tasa (entget (ssname asa z1))))))
      (progn
        (setq cla (ac 62)
          tha (ac 40) bra (ac 41)
          swa (ac 51) sta (ac 7)
          ysa (cddr tsa) sp (cons (car sp) ysa)
    ) ; end setq
          (if (/= swn nil)(ers 51 swn swa))
          (if (and brn (> brn 0.0)) (ers 41 brn bra))
      (if (and thn (> thn 0.0)) (ers 40 thn tha))
      (if (/= stn "")(ers 7 stn sta))
  (if (> clr 0)(ers 62 clr cla))
  (entmod tasa)
      ) ; end progn
    ) ; end if
(setq z1 (1+ z1))
  ) ; end while
(grtext)(princ)
) ;EOF C:AETXT.LSP


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: 29. Aug. 2011 07: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 Nur für giovanni64 10 Unities + Antwort hilfreich

na als aller erstes würde ich die Zeile

(if (= "TEXT" (cdr (assoc 0 (setq tasa (entget (ssname asa z1))))))

in

(if (member(cdr (assoc 0 (setq tasa (entget (ssname asa z1)))))'("TEXT" "MTEXT"))

abändern, damit mit dem anderen Objekttyp überhaupt was gemacht wird

MTEXT kann aber auch Textformatierungen wie Höhe und Farbe direkt im Textstring codiert enthalten ....

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

giovanni64
Mitglied



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

Beiträge: 12
Registriert: 01.04.2007

erstellt am: 29. Aug. 2011 10:18    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

Zitat:
Original erstellt von CADmium:
na als aller erstes würde ich die Zeile

(if (= "TEXT" (cdr (assoc 0 (setq tasa (entget (ssname asa z1))))))

in

(if (member(cdr (assoc 0 (setq tasa (entget (ssname asa z1)))))'("TEXT" "MTEXT"))

abändern, damit mit dem anderen Objekttyp überhaupt was gemacht wird

MTEXT kann aber auch Textformatierungen wie Höhe und Farbe direkt im Textstring codiert enthalten ....


Hallo CADmium,

vielen Dank fuer den Hinweis aber ich kann leider nur die Textfarbe aendern.
Also alles andere geht leider nicht.
Kannst Du mir bitte weiter helfen, denn das ist doch zu haarig fuer mich, bevor ich mich verstricke.

Gruss,

Giovanni

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

Proxy
Ehrenmitglied
Stateless-DHCP v6-Paketfragmentierer


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

Beiträge: 1629
Registriert: 13.11.2003

Tastaturen, Mäuse,
Pladden, ...,
AutoCADs 200X, SWX 2kX

erstellt am: 29. Aug. 2011 12: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 giovanni64 10 Unities + Antwort hilfreich

jungs, ich finde eure bemühungen giovanni64 helfen zu wollen echt atombombastisch, aber langsam sollte sich hier einer fragen ob eine anfängerschulung auf die dauer nicht von viel mehr erfolg gekrönt wäre.

p.s. sorry das ich einer fast fertigen lösung nix mehr beifügen konnte 


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