Red de conocimiento informático - Aprendizaje de programación - lisp genera un rectángulo de cualquier forma

lisp genera un rectángulo de cualquier forma

El código es el siguiente: (defun?c:tes?(?/?amp;k1?amp;kw1?ss1) (vl-load-com) (princ?"\nPor favor seleccione un cerrado polilínea" ) (if?(setq?amp;kw1?(ssget?'((0?.?"LWPOLYLINE")?(70?.?1)))) (progn

(setq? ss1? '())

(mientras?(setq?amp;k1?(ssname?amp;kw1?0))

(setq?amp;kw1?(ssdel? amp;k1?amp;kw1)?ss1?(cons?amp;k1?ss1))

); while

(mapcar?'w1711202?ss1) ) ) (princ )

)

; Primitivas de proceso

(defun?w1711202?(obj?/?ang1?ang2?dis1?n?obj?p1?p2? p3 ?p4?ss1?ss2?x?y) (setq?n?(vlax-curve-getEndParam?obj)?ss1?'()) (mientras?(gt;?n?-1)?(setq?ss1 ? (contras?n?ss1)?n?(-?n?1))?) (setq?ss2?(mapcar?'(lambda?(x)?(vlax-curve-getDistAtParam?obj?x))? ss1 )

n?(caar?(vl-sort?(mapcar?'list?ss1?(mapcar?'-?(cdr?ss2)?ss2))?'(lambda?(x? y )?(gt;?(cadr?x)?(cadr?y)))))

p1?(vlax-curve-getPointAtParam?obj?n)

p2 ? (vlax-curve-getPointAtParam?obj?(1 ?n))

ang1?(ángulo?p1?p2)

ang2?( ?ang1?(*?pi? 0.5 ))

ss1?(mapcar?'(lambda?(x)?(vlax-curve-getPointAtParam?obj?x))?ss1)

ss1?(car? ( vl-sort?(mapcar?'(lambda?(x)?(lista?(distancia?(inters?p1?p2?x?(polar?x?ang2?20)?nil)?x)?x)) ? ss1)?'(lambda?(x?y)?(gt;?(car?x)?(car?y)))))

dis1?(car?ss1)

p4?(cadr?ss1)

p3?(inters?p1?p2?p4?(polar?p4?ang2?20)?nil)

ang2? ( ángulo?p3?p4)

ss1?(mapcar?'(lambda?(x)?(cons?10?x))?(lista?p1?p2?(polar?p2?ang2? dis1 )?(polar?p1?ang2?dis1)))

ss1?(append?(list?'(0?.?"LWPOLYLINE")?'(100?.?"AcDbEntity") ?'(10

0?.?"AcDbPolyline")?'(90?.?4)?'(70?.?1)?'(43?.?0)?'(38?.?0))?ss1) ) ( entmake?ss1)

)