Draw-Pline2

Esta rotina eu uso muito nos meus programas... sei que em VL é mais rápido, mas para criar blocos com VL complica... via entmake acabe sendo melhor.
Fica como exemplo de como criar polilinhas 2d e 3d via entmake:


(defun draw-pline2 (pts lay close? / elev)
(
setq elev (caddar pts))
(
dxf 5
(if (vl-every
'(lambda (x) (equal x elev))
(
mapcar 'caddr pts))
(
entmakex
(append
(mapcar
'cons
'(0 100 8 100 90 70 38)
(
list "LWPOLYLINE" "AcDbEntity"
lay "AcDbPolyline" (length pts)
(
if close? 1 0) (if elev elev 0)))
(
mapcar
'(lambda (x) (cons 10 x))
pts)))
(
progn
(entmake
(mapcar
'cons '(0 100 8 100 70)
(
list "POLYLINE" "AcDbEntity"
lay "AcDbPolyline"
(if close? 9 8))))
(
foreach x pts
(entmake
(list '(0 . "VERTEX")
'(100 . "AcDbEntity")
'(100 . "AcDbVertex")
'(100 . "AcDb3dPolylineVertex")
(
cons 10 x) '(70 . 32))))
(
entmakex '((0 . "SEQEND")
(
100 . "AcDbEntity")))
(
entlast)))))


tem esta também:


(defun draw-line (p1 p2 lay /)
(
dxf 5
(entmakex
(mapcar 'cons
'(0 8 10 11)
(
list "LINE"
(if (or (not lay)
(
= "" lay))
"0"
lay)
p1 p2)))))


mas esta desenha linhas... ah, prefiro que estas rotinas sempre devolvam o dxf 5 pois é mais prático para usar com xdatas

Deixe um comentário

Rolar para cima