Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  einfügepunkt ändern

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:  einfügepunkt ändern (2266 mal gelesen)
michelangelo
Mitglied



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

Beiträge: 158
Registriert: 08.04.2004

Win XP, ACAD 2002 ExpressTool vom ACAD 2000

erstellt am: 11. Mai. 2004 19: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

habe folgendes Lisp, bei cadWiesel gedownloadet. das ist super. aber wie kann ich den einfügepunkt ändern.? oder wen ich noch ein text in die mitte des rechtecks setzenmöchte. wie heisst diese variable? und wo kann ich solche sachen nachlesen???

; Lisp-Programm zum Erzeugen eines Rechtecks Einfüge-Punkt 'Mitte'
; 25.6.97 Lieske
(defun c:rack
  ( / ech osn key_laenge key_hoehe pp p1 p2 p3 p4)
    ;GLOBAL: ZAHL:  laenge hoehe
    ;        STRING: ed_laenge ed_hoehe
  (setq ech (getvar "CMDECHO"))
  (setvar "CMDECHO" 0)
  (princ "\n ")
  (princ "\n Erzeugen eines maßlich angegebenen Rechtecks")
  (princ "\n mit Einfüge-Punkt 'MITTE'")
  (princ "\n von tgl am 25.7.97")
  (princ "\n ")
    ;**********Abfrage der Rechteck-Länge
  (princ "\n Länge [m]")
  (if ed_laenge
    (princ (strcat " <" ed_laenge ">: "))
    (princ " < >:")
  ) ;of if
  (setq key_laenge (getreal))
  (if key_laenge
    (progn
      (setq ed_laenge (rtos key_laenge 2 3)
            laenge key_laenge
      ) ;of setq
    ) ;of progn
  ) ;of if
    ;**********Abfrage der Rechteck-Höhe
  (princ " Höhe  [m]")
  (if ed_hoehe
    (princ (strcat " <" ed_hoehe ">: "))
    (princ " < >:")
  ) ;of if
  (setq key_hoehe (getreal))
  (if key_hoehe
    (progn
      (setq ed_hoehe (rtos key_hoehe 2 3)
            hoehe key_hoehe
      ) ;of setq
    ) ;of progn
  ) ;of if
    ;**********Absetzen der Rechtecke als Endlos-Schleife
  (setq pp (list 0.0 0.0 0.0))
  (while pp
    (setq pp  (getpoint "\n  Einfügepunkt..."))
    (if pp
      (progn
        (setq p1 (list (- (car pp) (/ laenge 2))
                      (- (cadr pp) (/ hoehe 2))
                      0.0
                ) ;of p1-list
              p2 (list (+ (car pp) (/ laenge 2))
                      (- (cadr pp) (/ hoehe 2))
                      0.0
                ) ;of p2-list
              p3 (list (+ (car pp) (/ laenge 2))
                      (+ (cadr pp) (/ hoehe 2))
                      0.0
                ) ;of p3-list
              p4 (list (- (car pp) (/ laenge 2))
                      (+ (cadr pp) (/ hoehe 2))
                      0.0
                ) ;of p4-list
        ) ;of setq
        (setq osn (getvar "OSMODE"))
        (setvar "OSMODE" 0)
        (command "_pline" p1 p2 p3 p4 "_c")
        (setvar "OSMODE" osn)
      ); of progn
      (princ " Ende.\n")
    );of if
  ); of while
  (setvar "CMDECHO" ech)
  (prin1)
) ;end.

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 11. Mai. 2004 19: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 michelangelo 10 Unities + Antwort hilfreich

Hallo michelangelo,

das ist ein Lisp zum Rechteck zeichnen. Von Text steht da nichts, das ist dann keinesfalls mit einer Systemvariablen zu erledigen. Das sind dann schon zusätzliche Code-Zeilen.
Übrigens gibt es auf meiner Seite ein kleines Tutorial, welches an dem Bsp des Zeichnen eines Rechtecks eine kurze Einführung in die AutoLISP-Programmierung bietet.
Schau unter Training->AutoLISP-Training.

Hast Du Fragen zur Integration eines Textes in das Coding, dann schreib bitte konkret, wo dein Problem ist, und welche Fehlermeldung du dir nicht erklären kannst. Dann wird dir bestimmt beim Erlernen der Programmierung geholfen.

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

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

michelangelo
Mitglied



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

Beiträge: 158
Registriert: 08.04.2004

Win XP, ACAD 2002 ExpressTool vom ACAD 2000

erstellt am: 13. Mai. 2004 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


beispiel.dwg.txt

 
Ich möchte folgenes

Zuerst die Abfrage:
-Höhe
-Breite
-Text

Das es dann ein Rechteck zeichnet, den Text einmittet und auf der Linken und rechten Seite ein solid macht mit der angegebener Breite und 10 breit. (die layer sollten so bleiben.

Kurz das es so aussieht wie bei der angehängte datei.

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

valerich
Mitglied
Programmierer


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

Beiträge: 12
Registriert: 22.09.2003

erstellt am: 13. Mai. 2004 17:50    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 michelangelo 10 Unities + Antwort hilfreich

Hallo michelangelo,

hier ist ein LISP-Programm. Hoffe das hilft dir.
;-------------------------------------------------------------
(defun c bjIns ( / cmdecho laenge hoehe text insPoint minPoint
minPoint osn minPoint1 maxPoint1)
   
  (setq cmdecho (getvar "CMDECHO"))
  (setvar "CMDECHO" 0)
 
(while (not laenge)
(setq laenge (getreal "\nLaenge [m]: "))
);end while
(while (not hoehe)
(setq hoehe (getreal "\nHoehe [m]: "))
);end while
(setq text (getstring T "\nText: "))
(setq insPoint (getpoint "\nEinfuegepunkt: "))
(setq minPoint (list (- (car insPoint) (/ laenge 2))
                      (- (cadr insPoint) (/ hoehe 2))
                )); end minPoint
(setq maxPoint (list (+ (car insPoint) (/ laenge 2))
                      (+ (cadr insPoint) (/ hoehe 2))
                )); end minPoint

(setq osn (getvar "OSMODE"))
  (setvar "OSMODE" 0)
  (command "_rectang" minPoint maxPoint)
(setq minPoint1 (list (car minPoint) (+ (cadr minPoint) hoehe)))
(setq maxPoint1 (list (car maxPoint) (- (cadr maxPoint) hoehe)))
(command "_pline" minPoint "_W" 10 "" minPoint1 "")
(command "_pline" maxPoint "_W" 10 "" maxPoint1 "")
(command "_text" insPoint "" "" text)
(setvar "OSMODE" osn)
(setvar "CMDECHO" cmdecho)
  (princ)
) ;end defun

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

michelangelo
Mitglied



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

Beiträge: 158
Registriert: 08.04.2004

Win XP, ACAD 2002 ExpressTool vom ACAD 2000

erstellt am: 13. Mai. 2004 21: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

Wie kann ich machen das der text der eingefügt wird auf einem anderen layer ist? und was noch wichtiger ist das es den Basispunkt Mitte Zentriert hat?? habe ein sysvar gesucht, aber nichts gefunden. und wie hast du den einfügepunkt des ganzen definiert? ich möchte ihn ändern von mitte rechteck auf unten rechts.

[Diese Nachricht wurde von michelangelo am 13. Mai. 2004 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: 14. Mai. 2004 07:50    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 michelangelo 10 Unities + Antwort hilfreich

Nochmal ... Textausrichtung .. weil wir gerad das Thema hatten ...Schau mal hier
Kann dann in dein Prog eingebastelt werden...

------------------
- Thomas -

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

valerich
Mitglied
Programmierer


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

Beiträge: 12
Registriert: 22.09.2003

erstellt am: 14. Mai. 2004 12: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 michelangelo 10 Unities + Antwort hilfreich

<Wie kann ich machen das der text der eingefügt wird auf einem anderen layer ist?>
Vor der Zeile
(command "_rectang" minPoint maxPoint)
schreibe
(command "_-layer" "_S" "E_LGN_LAYOUT" "")
und vor der
(command "_text" insPoint "" "" text)
schreibe
(command "_-layer" "_S" "E_LGN_LAYOUT_T" "").
ACHTUNG: Layers, die du benutzen möchtest, muß vorher definiert werden!
------------------------------------------------------------
<wie hast du den einfügepunkt des ganzen definiert?>
(setq insPoint (getpoint "\nEinfuegepunkt: "))
Nachdem kanst du die Punkte links unten (minPoint) und rechts oben (minPoint) berechnen.
------------------------------------------------------------
<ich möchte ihn ändern von mitte rechteck auf unten rechts.>
ersetze die Zeile
(command "_text" insPoint "" "" text)
durch
(command "_text" "_j" "_br" insPoint "" "" text).

Grüße Serghei

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

michelangelo
Mitglied



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

Beiträge: 158
Registriert: 08.04.2004

Win XP, ACAD 2002 ExpressTool vom ACAD 2000

erstellt am: 14. Mai. 2004 15:37    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 Danke hat super funktioniert. Leider verstehe ich das nicht ganz mit dem einfügepunkt des ganzen ändern? und wie muss ich das anstellen das ich beim setzen das ganze noch drehen kann wie ich möchte?

<wie hast du den einfügepunkt des ganzen definiert?>
(setq insPoint (getpoint "\nEinfuegepunkt: "))
Nachdem kanst du die Punkte links unten (minPoint) und rechts oben (minPoint) berechnen.

wie muss ich das anstellen??

[Diese Nachricht wurde von michelangelo am 15. Mai. 2004 editiert.]

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

valerich
Mitglied
Programmierer


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

Beiträge: 12
Registriert: 22.09.2003

erstellt am: 17. Mai. 2004 14: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 michelangelo 10 Unities + Antwort hilfreich

Klickpunkt ist insPoint, also (setq insPoint (getpoint "\nEinfuegepunkt: ")). Der Punkt bleibt als Einfügepunkt für dein Text. Wenn du nun Text drehen möchtest, dann ersetze die Zeile
(command "_text" insPoint "" "" text)
durch
(command "_text" insPoint "" pause text).

Auch für den Rechteck brauchst du zwei Eckpunkte:
(setq minPoint (list (- (car insPoint) (/ laenge 2))
                      (- (cadr insPoint) (/ hoehe 2))
                ))
(setq maxPoint (list (+ (car insPoint) (/ laenge 2))
                      (+ (cadr insPoint) (/ hoehe 2))
                ))

<das ganze noch drehen kann wie ich möchte>
Dafür muß man noch einige Zeile zu schreiben. Frage nun nach dem welchem Schritt wolltest du das machen? Nach dem Rechteck oder Text eingefügt wird.

Gruß Serghei

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

michelangelo
Mitglied



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

Beiträge: 158
Registriert: 08.04.2004

Win XP, ACAD 2002 ExpressTool vom ACAD 2000

erstellt am: 17. Mai. 2004 14: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

ich möchte am schluss wen ich das ganze setzen kann, möchte ich es dehen können.

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

valerich
Mitglied
Programmierer


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

Beiträge: 12
Registriert: 22.09.2003

erstellt am: 17. Mai. 2004 15: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 Nur für michelangelo 10 Unities + Antwort hilfreich

Hier ist geänderten Quellcode. Einfach alles kopieren und ältere Datei ersetzen.
Viel Spaß 

(defun c bjIns ( / cmdecho laenge hoehe text insPoint minPoint
minPoint osn minPoint1 maxPoint1 rectang
pline1 pline2 txt )
   
  (setq cmdecho (getvar "CMDECHO"))
  (setvar "CMDECHO" 0)
 
(while (not laenge)
(setq laenge (getreal "\nLaenge [m]: "))
);end while
(while (not hoehe)
(setq hoehe (getreal "\nHoehe [m]: "))
);end while
(setq text (getstring T "\nText: "))
(if (setq insPoint (getpoint "\nEinfuegepunkt: "))
(progn
(setq minPoint (list (- (car insPoint) (/ laenge 2))
(- (cadr insPoint) (/ hoehe 2))
)); end minPoint
(setq maxPoint (list (+ (car insPoint) (/ laenge 2))
(+ (cadr insPoint) (/ hoehe 2))
)); end minPoint

(setq osn (getvar "OSMODE"))
(setvar "OSMODE" 0)
(command "_-layer" "_S" "E_LGN_LAYOUT" "")
(command "_rectang" minPoint maxPoint)
(setq rectang (entlast))
(setq minPoint1 (list (car minPoint) (+ (cadr minPoint) hoehe)))
(setq maxPoint1 (list (car maxPoint) (- (cadr maxPoint) hoehe)))
(command "_pline" minPoint "_W" 10 "" minPoint1 "")
(setq pline1 (entlast))
(command "_pline" maxPoint "_W" 10 "" maxPoint1 "")
(setq pline2 (entlast))
(command "_-layer" "_S" "E_LGN_LAYOUT_T" "")
(command "_text" "_j" "_br" insPoint "" "" text)
(setq txt (entlast))
(command "_rotate" rectang pline1 pline2 txt "" insPoint pause)
);end progn
); end if

(setvar "OSMODE" osn)
(setvar "CMDECHO" cmdecho)
  (princ)
) ;end defun

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

michelangelo
Mitglied



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

Beiträge: 158
Registriert: 08.04.2004

Win XP, ACAD 2002 ExpressTool vom ACAD 2000

erstellt am: 17. Mai. 2004 16:38    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

danke das gibt 10U's

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