Guten Morgen,
ich habe ein merkwürdiges pljoin-Problem, beim Verbinden von Kurven.
Ich habe folgendes LISP-Programm:
(defun c:abc ()
(vl-load-com)
(Querschnitte(entlast)50) ; Abstand veränderbar
(ss-foreach(ssget"X"'((0 . "LINE"))) ; löscht Linien xy-Ebene
'(lambda(line)
(if(line-in-xy-plane? line)(entdel line))
)
)
(BKS_drehen)
(verb_Linien)
)
;.....................................................................
(defun get-bbox(ent / pmin pmax) ; erzeugt Querschnitte
(setq pmin(vlax-3d-point'(0 0 0)))
(setq pmax(vlax-3d-point'(0 0 0)))
(vlax-invoke-method
(vlax-ename->vla-object ent)
'getBoundingBox 'pmin 'pmax
)
(list
(vlax-safearray->list pmin)
(vlax-safearray->list pmax)
)
)
(defun newbies(lastent / retlist)
(while(setq lastent(entnext lastent))
(setq retlist(cons lastent retlist))
)
)
(defun streifen(ent plane ofs steps / ents lastent)
(repeat (1+ steps)
(setq lastent(entlast))
(apply'vlax-invoke-method
(append
(list(vlax-ename->vla-object ent))
(list 'SectionSolid)
(mapcar'vlax-3d-point plane)
)
)
(command"_explode"(entlast)) ; gibt' da eigentlich kein vlax-put-them-into-jail???
(setq ents(append ents(newbies lastent)))
(setq plane
(mapcar'(lambda(p)(mapcar'+ p ofs))plane)
)
)
ents
)
(defun Querschnitte(ent d / dimx dimz bb)
(setq bb(get-bbox ent))
(setq dimx(abs(-(caar bb)(caadr bb))))
(setq dimz(abs(-(caddar bb)(caddr(cadr bb)))))
(append
(streifen ent'((0 0 0)(0 1 0)(0 0 1))(list d 0 0)(fix(/ dimx d))) ;y/z-Ebene
)
)
;..................................
(defun ss-foreach(ss expr / i)
(if ss
(repeat(setq i(sslength ss))
((eval expr)(ssname ss(setq i(1- i))))
)
)
)
(defun line-in-xy-plane?(line / ) ; löscht alle Linien in x/y-Ebene
(and
(equal 0(caddr(cdr(assoc 10(entget line))))*epsilon*) ; die einen Z-Wert von 0 haben
(equal 0(caddr(cdr(assoc 11(entget line))))*epsilon*)
)
)
(setq *epsilon* 1e-8)
;.....................................................................
(defun BKS_drehen ( / )
(setq as (ssget "X" '((0 . "LINE"))))
(setq en (ssname as 0))
(command "_ucs" "_e" en)
)
;.....................................................................
;;;
;;; PLJOIN.LSP
;;; Copyright © 1999 by Autodesk, Inc.
;Set global for controling precision of internal point comparison.
(setq #acet-pljoin-prec 0.0000001)
;;;;;;;;;;;Hauptprogramm verb_Linien;;;;;;;;;;;;;;;;;;;;;;;;
(defun verb_Linien ( / flt ss fuzz st)
(acet-error-init
(list (list "cmdecho" 0
"highlight" (getvar "highlight")
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;.....HIER IST DER REST DES PLJOIN-SKRIPTES EINZUFÜGEN!!!!!!!!!!
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Wenn ich dieses Skript auf die angehängte Abbildung anwende, dann werden die Kruven nicht mit verbunden (s. rote Linien).
Was läuft da nicht richtig?
Denn gebe ich in der Commando-Zeile pljoin an und wähle manuell (bei richtigem Koordinatensystem)eine Kurve und eine Linie aus, so werden diese miteinander verbunden.
Viele Grüße
Andrea
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP