Hallo Community
ich hab vor paar wochen den Befehl "Flatten" aus den Expresstools entdeckt. dieser Kann objekte in Linien und kurven konvertieren
ich könnte diesen vorallem gut gebrauchen um Splines in Polilinien und Kurven umzubauen.
aber der Befehl läst keine Einstellungen machen. Sprich man kann keine genauigkeit einstellen...
daher hab ich mir mal den Befehl genauer angeschaut... folgendermassen sieht der LISP-Ausdruck aus, welcher Splines umwandelt:
Code:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Takes a spline and creates a lwpolyline
;
(defun acet-flatn-spline ( e1 / na cxv lst x proplst ss na2 gp xt fuz lst2 )
(if (equal (type e1) 'ENAME)
(setq na e1
e1 (entget na)
);setq then
(setq na (cdr (assoc -1 e1)));setq else
);if
(setq cxv (acet-geom-z-axis)
lst (acet-geom-object-point-list na -1)
lst (mapcar '(lambda (x)
(acet-point-flat x 1 cxv)
)
lst
);mapcar
;lst (acet-geom-list-remove-straight-segs lst nil)
xt (acet-geom-list-extents lst)
xt (distance (car xt) (cadr xt))
fuz (acet-geom-calc-arc-error xt)
proplst (acet-general-props-get e1)
na2 (entlast)
);setq
(cond
((= (length lst) 2)
(setq gp (acet-general-props-get-pairs e1) ;; get general properties
e1 (list '(0 . "LINE") '(100 . "AcDbEntity")
(assoc 67 e1) (assoc 410 e1) (assoc 8 e1)
'(100 . "AcDbLine")
(cons 10 (trans (car lst) 1 cxv))
(cons 11 (trans (cadr lst) 1 cxv))
(cons 210 cxv)
);list
e1 (acet-general-props-set-pairs e1 gp)
);setq
(entmake e1)
);cond #1 draw a line
((setq lst2 (acet-geom-point-list-to-arc-list lst fuz))
(acet-geom-arc-list-to-pline
(list (assoc 67 e1) (assoc 410 e1) (assoc 8 e1) (cons 210 cxv))
lst2
)
);cond #2 create a pline with arcs
((assoc 210 e1)
(setq e1 (acet-flatn-orthogonal-object-elist na))
(entmake e1)
);cond #3
);cond close
(if (not (equal na2 (entlast)))
(progn
(setq ss (ssadd (entlast) (ssadd)))
(acet-general-props-set ss proplst)
(setq na (ssname ss 0))
);progn
(setq na nil)
);if
na
);defun acet-flatn-spline
meine frage nun... ich bin echt ein Neuling in Sachen lisp...
könnte man diesen Befehl etwas aufpeppen? eine genauigkeit angeben oder so? ich verstehe da nur Bahnhof aus diesem Codeschnippsel ^^
gruss byhomer
------------------
by_homer
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP