|
Lisp : Zentrumsmarke
joern bosse am 11.01.2007 um 10:02 Uhr (0)
Hallo Dorfy,eingentlich müßte es mit (command "_dimcenter" (ssname a 0)"") funktionieren, tut es aber nicht.Daher würde ich es dann vielleicht doch mit Linien probieren:Code:(defun c:zmarke (/ a r z) (setq a (ssget)) (setq r (* 1.5(cdr(assoc 40(entget(ssname a 0))))) z (cdr(assoc 10(entget(ssname a 0))))) (entmake (list (0 . "LINE") (cons 10 (polar z pi r)) (cons 11 (polar z 0.0 r)))) (entmake (list (0 . "LINE") (cons 10 (polar z (* pi 0.5) r)) (cons 11 (polar z (* pi 1.5) r)))) (princ) )--------- ...
|
| In das Form Lisp wechseln |
|
Lisp : Textbox für mehrzeilige Attribute?
joern bosse am 19.04.2013 um 11:39 Uhr (0)
Hallo Dirk,danke für Deine Rückmeldung, ich habe es jetzt aber schon gelöst:Code:;;;Mehrzeiliges Attribut picken(defun c:test ( / KOORDS OBJ) (if (=(vlax-get (vlax-ename-vla-object (setq obj(car(nentsel)))) MtextAttribute)-1) (progn (setq koords(JBf_TextBox:EckpunkteWelt:AttMehrzeilig obj 1.1)) (command "_.pline" (car koords) (cadr koords) (caddr koords) (cadddr koords) "_c" "")))) ;;;Rückgabe von Weltkoordinaten lu, ru, ro, lo(defun JBf_TextBox:EckpunkteWelt:AttMehrzeilig (objAtt Aus ...
|
| In das Form Lisp wechseln |
|
Lisp : sphärische Punkteingabe
joern bosse am 28.02.2008 um 14:52 Uhr (0)
Hallo Werner,oder erst Polar in der Ebene anhängen und dann um z korrigieren:Code:(defun c:test ( / ) (setq pkt (0.0 0.0 0.0) dist 10.0 w1 (/ pi 2.0) w2 (/ pi 3.0)) (command "_.line" pkt (mapcar +(polar pkt w1 (*(cos w2) dist)) (list 0.0 0.0 (*(sin w2) dist)))""))------------------viele GrüßeJörn
|
| In das Form Lisp wechseln |
|
Lisp : IF-Schleife / Exit-Anweisung
joern bosse am 03.11.2009 um 07:59 Uhr (0)
Hallo Stefan,folgender Vorschlag: Definiere eine lokale Variable "done" und wenn die Pedit-Anweisung fertig ist kommt nicht die Funktion (exit), sondern Du setzt die Variable (= done T).Dann kannst Du zum Schluß abfragen, ob die Routine erfolgreich war oder nicht.Code:(defun c lc ( / done)(setq auswahl (car(entsel "
Polylinie/Linie/Bogen w?hlen: ")))(if (=(cdr(assoc 0(entget auswahl))) "LWPOLYLINE") (progn (command "_offset" pause auswahl pause "") (setq versobj (entlast)) (command "_line" (cd ...
|
| In das Form Lisp wechseln |
|
AutoLisp : Bemassung
joern bosse am 11.05.2005 um 10:55 Uhr (0)
Hallo, ich denke die Variableneinstellung von DIMEXO ist nicht das Problem, den das ist ja nur der Abstand vom zu vermasssenden Objekt zur Hilslinien selbst. Die Hilsfslinie soll aber wohl eine fest Länge bekommen. Ich würde da einfach den Anfangspunkt der ersten und zweiten Hilfslinie um ein variables Maß verschieben, so daß die Hilfslinien immer die gleiche Länge hat. probiert habe ich es mal aber das klappt nur bei gedrehten Bemassungen, ist nur ein Gedankenansatz, mehr nicht. (defun c:test ( / ent def1 ...
|
| In das Form AutoLisp wechseln |
|
AutoLisp : BAND od. PLINE-Teil versetzen
joern bosse am 14.06.2006 um 08:02 Uhr (0)
Hallo Mario,und falls Du doch den Command-Befehl _.offset nutzen willst, dann kannst Du den Seitenpunkt wie folgt berechnen:(polar pkt1((if rechts - +)(angle pkt1 pkt2) (/ pi 2.0))10.0)rechts ist dabei nil oder T, die Strecke von 10.0 ist willkürlich gesetzt.------------------viele GrüßeJörn
|
| In das Form AutoLisp wechseln |
|
Lisp : Verbesserungsvorschläge gesucht!
joern bosse am 05.03.2007 um 09:15 Uhr (0)
Hallo THE_ONE,zum warm werden am Montag morgen habe ich den Code nochmal anders geschrieben (das soll nicht heißen, daß der Weg besser ist, aber wenn Du schon lernen willst, kannst Du den Code ja mal auseinander nehmen)Ich habe die ganzen Maßangaben u.s.w. in eine "Dotted Pair"-Liste gepackt. Diese Art der Variablenverpackung finde ich persönlich übersichtlich, und ich könnte die ganze Liste in eine Textdatei schreiben und dann mit LOAD wieder laden (wenn ich z.B. Benutzereistellungen speichern will)Code:( ...
|
| In das Form Lisp wechseln |
|
Lisp : Wieso 3D-Punkt?
joern bosse am 08.03.2011 um 07:38 Uhr (0)
Hallo Gerd,ich glaube nicht, daß es eine Alternative ist, den Objektfang auszuschalten, wie soll man dann noch exakt zeichnen.Hier noch ein Lisp, das einen Kreis über 3 Punkte erzeugt, wobei die Höhe des Kreises der Höhe des ersten gepickten Punktes entspricht.Weil das Lisp nicht mit dem Command-Aufruf "_Circle" arbeitet kann das Problem mit diesem Command-Aufruf unter BRICSCAD umgangen werden.Code:(defun C:C3P ( / PKT1 PKT2 PKT3 obj1 obj23 obj3) (if (and (setq pkt1 (getpoint "
Ersten Punkt eingeben:")) ...
|
| In das Form Lisp wechseln |
|
Lisp : Hilfe bei lisp! Block Attrtibute rotation und position!
joern bosse am 19.02.2013 um 11:43 Uhr (0)
Hallo Dirk,dann Addiere doch einfach die Winkeldifferenz auf den Gruppencode 50 im Attribut.Den Einfügepunkt berechnest Du polar über den Winkel und die Strecke Block-Att. Die Drehung im Attribut wie folgt (zumindestens ungefähr, bin gerade knapp in der Zeit):(+ (cdr(assoc 50 AttEntListNeu)) (-(cdr(assoc 50 AttEntListAlt)) (cdr(assoc 50 AttEntListNeu)))------------------viele GrüßeJörnhttp://www.bosse-engineering.comKoordinatenausgabe Youtube
|
| In das Form Lisp wechseln |
|
Lisp : Erzeugen von Regeloberflächen
joern bosse am 02.02.2008 um 12:16 Uhr (0)
Hallo Werner,Du übergibts an den Command-Aufruf nicht nur die Objekte, sondern Listen wie sie z.B. entsel zurückgeben (OBJ pkt)Wie Du dann aber Anfangs- oder Endpunkt bestimmts mußt Du Dir selber überlegen.Code:(command "Regelob" (list Obj_1 (cdr(assoc 10 (entget obj_1))));;;oder 11 Endpunkt (list Obj_2 (polar (cdr(assoc 10 (entget Obj_2))) (cdr(assoc 50 (entget Obj_2)));;;oder 51 für Winkel am Endpunkt (cdr(assoc 40 (entget Obj_2))))))------------------viele GrüßeJörn
|
| In das Form Lisp wechseln |
|
Lisp : Erzeugen von Regeloberflächen
joern bosse am 03.02.2008 um 19:13 Uhr (0)
Hallo Werner, Zitat:Bei Deinem Lösungsansatz wird m.E. ein Punkt herausgegeben. Ich wollte aber eine Objekt wählen.Das verstehe ich nicht ganz, Du willst doch dem Command-Befehl "regelob" 2 Objekte übergeben. Zudem müssen diese Objekte die Information über den Pickpunkt haben, damit das Ergebnis ordentlich erstellt werden kann.Ich habe der Funktion jetzt pro Objekt eine Liste übergeben, wie sie sonst ENTSEL zurückgibt.Wenn Du im BKS arbeitest, dann mußt Du noch ein TRANS mit einbauen:Code:(command "Regelob ...
|
| In das Form Lisp wechseln |