hallo,
ich habe folgendes lisp von den afralisp-seiten und schon ein bißchen umgebaut.
es kann eine linie gezeichnet werden und immer dann wenn man sie verändert, wird die neue laenge ausgegeben. meine erweiterung zielt nun darauf hinaus, dass immer wenn ich die linie kopiere, der reaktor auch auf die neue linie anspringt.
(vl-load-com)
;****************************************************************************
(defun c:ld ()
(setq acadDocument (vla-get-activedocument (vlax-get-acad-object)))
(setq mspace (vla-get-modelspace acadDocument))
(setq apt (getpoint "Specify First Point: "))
(setq pt (getpoint "Specify next point: " apt))
(setq myLine (vla-addline mspace (vlax-3d-point apt)(vlax-3d-point pt)))
(princ "\nmy line : ")
(princ myline)
(princ (entget (entlast)))
(setq lineReactor
(vlr-object-reactor
(list myLine)
"Line Reactor"
'(
(:vlr-modified . print-length)
(:vlr-copied . kopiert))
)
)
(princ)
);defun
;******************************************************************************
(defun print-length (notifier-object reactor-object parameter-list)
(princ "\nnotifier-object : ")
(princ notifier-object)
(princ "\nreactor-object : ")
(princ reactor-object)
(princ "\nparameter-list : ")
(princ parameter-list)
(cond
((vlax-property-available-p notifier-object "Length")
(alert (strcat "The length is now " (rtos (vla-get-length notifier-object)))))
);cond
(princ)
);defun
;*******************************************************************************
(princ)
;*******************************************************************************
(defun kopiert (notifier-object reactor-object parameter-list)
(princ "\nnotifier-object : ")
(princ notifier-object)
(princ "\nreactor-object : ")
(princ reactor-object)
(princ "\nparameter-list : ")
(princ (car parameter-list))
(setq a (car parameter-list))
(princ "\nentity-name : ")
(princ (cdr (assoc -1 (entget a))))
;;; (princ "\nparameter-list-vlax : ")
;;; (princ (vlax-ename->vla-object (car parameter-list)))
(cond
((vlax-property-available-p notifier-object "Length")
(progn
(alert "Sie haben die Linie kopiert")
(setq lineReactor
(vlr-object-reactor
(list (vlax-ename->vla-object (cdr (assoc -1 (entget a)))))
"Line Reactor"
'(
(:vlr-modified . print-length)
(:vlr-copied . kopiert))
)
);setq
);progn
)
);cond
(princ)
);defun
;*******************************************************************************************
------------------
MfG
Frank
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP