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

Carrinho de compras
Rolar para cima