|
AutoLisp : Befehlabruch bei Eingabe von 0
andi2050 am 12.10.2005 um 22:20 Uhr (0)
Hi KarliEinen Programmabbruch kann man mit (exit) erzwingen.z.B....(setq var (getreal "
Wert einegeben:"))(if (= var 0) (exit))...oder man läßt von gar keine "0" als Eingabe zu mit (initget)....(initget 2) ; bei nächster Eingabe keine 0 zulassen - siehe Lisp Hilfe(setq var (getreal "
Wert eingebn:"))...GrüßeAndi
|
In das Form AutoLisp wechseln |
|
AutoLisp : dcl anfaenger
andi2050 am 05.03.2006 um 23:16 Uhr (0)
Hallozu 1:An die Werte kommst Du mit get_tile.Dies funktioniert aber nur, wenn der Dialog noch aktiv ist d.h. zwischen start_dialog und done_dialog.Sollen die Werte beim Verlassen des Dialogs gelesen werden sollen, kannst Du das dem Button mit action_tile zuweisen.(action_tile "accept" "(setq var (get_tile "key"))(done_dialog)")Da dies bei mehreren Werten ziemlich unübersichtlich wird, kann man dies auch in eine eigene Funktion packen. Diese rufst Du dann in dem action_tile-String VOR done_dialog auf.z.B. ...
|
In das Form AutoLisp wechseln |
|
Lisp : EXE start aus LISP
andi2050 am 04.08.2006 um 21:45 Uhr (0)
Hallo !Scheint an der ACAD-Version zu liegen.Wenn ich bei ACAD2002 eine Anwendung mit (command "SHELL" "PfadAnwendung.EXE") aufrufe, dann wartet ACAD bis das Shell-Fenster wieder geschlossen ist.Evtl. funktioniert die Abfrage der Sysvar "CMDACTIVE".(while (not (zerop (getvar "CMDACTIVE"))))GrüßeAndi
|
In das Form Lisp wechseln |
|
Lisp : ASCII-Zeichen
andi2050 am 20.08.2006 um 19:20 Uhr (0)
Hallo !Mit der Boolschen-Funktion XOR kannst Du Verschlüsseln/Entschlüsseln mit der selben Funktion erledigen.- durch hinzuzählen von 128 setzt Du das 7.Bit des ASCII-Werts- durch abziehen von 128 löscht Du das 7.Bit des ASCII-WertsDies läßt sich auch mit XOR 128 erledigen. In LISP: (boole 6 Integer 128) - die 6 steht für XOR-Operation - siehe LISP-HilfeWenn man auf das Ergebnis nochmal XOR 128 loslässt erhält man wieder den Ausgangswert.Mit XOR 128 wird praktisch das 7. Bit invertiert. Damit lassen sich a ...
|
In das Form Lisp wechseln |
|
Lisp : ASCII-Zeichen
andi2050 am 21.08.2006 um 19:28 Uhr (0)
Zu Offtopic:In der StdLib von Reini Urban sind die meisten vl-... Funktionen in normalen LISP nachgebildet. Nur zur Info...Leider ist die Library recht groß und in sich verschachtelt. Ist mir persönlich etwas unsympatisch, meine Meinung.GrüßeAndi
|
In das Form Lisp wechseln |
|
Lisp : vla-TranslateCoordinates
andi2050 am 06.09.2006 um 23:49 Uhr (0)
Hallo vlide !Ich denke Du verwechselt OCS (Objektkoordinaten) mit MCS (Modellkoordinaten).Die Koordinaten in der Blockdefinition werden als MCS bezeichnet (kannst Du Dir als eine Art Weltkoordinaten innerhalb der Blockdef. vorstellen, jede Blockdef. hat ihr eigenes WCS).Du musst also die Koordinaten der Pline vom MCS der Blockdef. in WCS umrechnen.Ganz exakt: OCS-Pline - MCS-Blockdefinition - WCS (abhängig von der Lage des INSERTS (BlockREFERENZ)OCS-MCS ist kein Problem, geht einfach mit: (trans Punkt (cdr ...
|
In das Form Lisp wechseln |
|
Lisp : Finde Fehler nicht ...
andi2050 am 29.12.2008 um 15:26 Uhr (0)
Ich habe mit Dein Lisp nicht genau angesehen, aber mir fällt auf, daß Du alle keine lokalen Variablen delariet hast. Da kann es leicht sein, daß bei mehrmaligem Aufruf noch Altlasten zurückbleiben und somit die Programmlogik durcheinander purzelt !Tatsächliche globale Variablen solletst Du kennzeichnen (z.B. *h_attnam* )In der Funktion heben suchst Du mit ssget alle Inserts mit einem bestimmten Einfügepunkt. Wenn der Einfügepunk aber nicht EXAKT mit dem Punkt übereinstimmt kann es hier zu einem Fehler komm ...
|
In das Form Lisp wechseln |
|
Lisp : Lisp warten lassen
andi2050 am 11.04.2003 um 14:38 Uhr (0)
Hi CADchupWenn die Externe Anwendung die Datei während der Bearbeitung auf Schreibgeschützt setzt, dann könntest Du ja in einer Schleife die Datei immer wieder versuchen zu löschen und mir FINDFILE abfragen ob sie wirklich weg ist.Ist nur so eine Idee, obs praktikabel ist weiß ich nicht.Ich hab sowas bisher so gelöst:Mit Shell die Anwendug aufgerufen und in der nächsten Code-Zeile eine Getstring-abfrage mit "Bitte ENTER drücken..." gesetzt.Ist aber nicht die elegante Lösung.Vielleicht hilfts...GrüßeAndi
|
In das Form Lisp wechseln |
|
Lisp : EXE-Datei in Lisp
andi2050 am 27.03.2009 um 20:53 Uhr (0)
Ich habe immer wieder Probleme, wenn im Pfad oder Dateinamen Leerzeichen enthalten sind. Vielleicht liegt es daran ?GrüßeAndi
|
In das Form Lisp wechseln |
|
Lisp : Vordefinierte Variablen holen
andi2050 am 08.03.2011 um 21:28 Uhr (0)
Lisp ist eine Sprache, die LISTEN verarbeitet.Hier eine Variante die eine Liste verwendet.(setq pointlist ((0 0) (42 0) (0 42) (42 42) (0 84) (42 84) (0 126) (42 126) (0 168) (42 168) (0 210) (42 210) (0 252) (42 252) ))(foreach point pointlist (command "_circle" point "d" 34.5) (initget (+ 2 4) "J N") (if (= "N" (getkword "
Soll hier ein Kreis hin? J oder N J: ")) (command "_erase" "L" "") ))GrüßeAndi
|
In das Form Lisp wechseln |
|
Mechanical Desktop : Makro
andi2050 am 26.03.2003 um 20:07 Uhr (0)
Hi Kasiragi Habs zu dem neuen Befehl MySchraff zusammengepappt. Folgendes mußt Du auf deinen Button legen: ^C^C(if (null C:MySchraff)(defun c:MySchraff ()(command "_-BHATCH" "_P" "ANSI31" "" "")(while (/= 0 (getvar "CMDACTIVE")) (command pause ) )(entmod (subst (cons 8 "2SCHRAFFUR") (assoc 8 (entget (entlast))) (entget (entlast))))(princ)) );MySchraff Und hier noch mal als normales LISP-Programm: (defun c:MySchraff () (command "_-BHATCH" "_P" "ANSI31" "" "") ; Schraffurbefehl aufrufen (while (/= 0 ( ...
|
In das Form Mechanical Desktop wechseln |
|
Autocad LT : Koordinaten bei einer Polylinie berechnen
andi2050 am 26.03.2003 um 22:43 Uhr (0)
Hi Adrian Kenne mich in VB nicht besonders aus (mehr in LISP), und kann Dir nur einen Ansatz zur Problemlösung bieten. Ich habe mir mal ein Programm zur Abwicklungsberechung geschrieben, das war ähnlich. Ich gehe davon aus, daß Du die einzelnen Stützpunkte der PLINE in einer Variablen, Liste oder Array gespeichert hast. 1.Die wandelst Du Dir in einzelne Segmente (Linien und Bögen)um. evtl. ein Array bilden: - Segmentlänge - Startpunkt - Endpunkt - bei Bögen zusätzlich Radius, Zentrum, Eingeschlossener Win ...
|
In das Form Autocad LT wechseln |
|
Autocad LT : Steuerzeichen/Makro
andi2050 am 01.06.2003 um 22:53 Uhr (0)
Hi Mäse In LISP gibt es die Befehle LOGIOR und LOGAND. Damit kannst Du die Bits von zwei oder mehr Zahlen logisch miteinander Verknüpfen. Da der Zahlenwert für den Objektfang Bitcodiert ist, könntest Du damit Dein Problem lösen. (setvar "osmode" (LOGIOR (getvar "osmode") 32)) - Schnittpunkt HINZUFÜGEN Dabei eird IMMER das 5.Bit gesetzt (entspricht der Zahl 32). Für andere Objektfänge die 32 durch einen anderen Wert ersetzten (siehe Beitrag weiter oben) Damit kannst Du auch Kombinationen hinzufügen: (setva ...
|
In das Form Autocad LT wechseln |