Hallo,
habe das ganze mal etwas erweitert, mit vorheriger Auswahl des zu kopierenden Blockes und der Möglichkeit einzustellen, ob man vom Anfangspunkt der Linie jeweils absolut, oder vom jeweilig letzten Punkt aus die nächste Entfernung abtragen will.
Es wäre aber schön, wenn mir jemand die globale Variable *block-name* eliminieren könnten, durch Variablenübergabe. Habe kein Handbuch und in LT gibts da keine spezielle Hilfe, ich weiß nur, dass es gehen muss und dass macht einen dann fix und fertig, wenns letztlich doch nicht klappt :-). Habe selbst schon mit (defun ???? / ) experimentiert, kriegs aber nicht hin.
Danke schonmal vorab!
Grüße Mario
; Programm zum einfügen eines Blockes entlang einer Linie
(defun wahl_block ( / enX en ent exitflag )
; Auswahlroutine für einzusetzenden Block
(setq exitflag NIL)
(while (not exitflag)
(setq enX (entsel (strcat "\nBLOCK wählen! " "<" *name-block* ">")))
(if (not enX)
(setq exitflag T)
(progn
(setq en (car enX))
(setq ent (entget en))
(if (= (cdr (assoc 0 ent)) "INSERT")
(progn
(princ "\nDas ist ein Block!")
(setq *name-block* (cdr (assoc 2 ent)))
(princ *name-block*)
(setq exitflag T)
)
(princ "\nGewähltes Element ist kein Block!")
)
)
)
)
)
(defun c:lw ( / obj pt1 pt2 p_klick p_temp ab hlp entsch)
(if (= *name-block* nil)
(setq *name-block* "")
)
(setq ab NIL)
(setq hlp 0)
(setq entsch NIL)
(wahl_block )
(setq entsch (getstring "\nWollen Sie die Punktfolge <a>bsolut, oder <r>elativ eingeben? <r> "))
(princ (strcat "| " entsch " |"))
(setq obj (nentsel "\nLinie wählen: "))
(setq pt1 (cdr (assoc 10 (entget (car obj)))))
(setq pt2 (cdr (assoc 11 (entget (car obj)))))
(setq p_klick (car (cdr obj)))
(if (> (distance p_klick pt1) (distance p_klick pt2))
(progn
(setq p_temp pt1)
(setq pt1 pt2)
(setq pt2 p_temp)
(setq p_temp NIL)
)
)
(if
(OR
(= entsch "a")
(= entsch "A")
)
(progn
(while (setq ab (getreal "\nAbstand eigeben: "))
(setq osmode_save (getvar "osmode"))
(setvar "osmode" 0)
(command "_-insert" *name-block* (polar pt1 (angle pt1 pt2) ab) "" "" "")
(setvar "osmode" osmode_save)
)
)
(progn
(while (setq ab (getreal "\nAbstand eigeben: "))
(setq ab (+ ab hlp))
(setq osmode_save (getvar "osmode"))
(setvar "osmode" 0)
(command "_-insert" *name-block* (polar pt1 (angle pt1 pt2) ab) "" "" "")
(setq hlp ab)
(setvar "osmode" osmode_save)
)
)
)
)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP